CN114912396A - 基于虚拟接口实现逻辑系统设计的物理接口的方法及设备 - Google Patents

基于虚拟接口实现逻辑系统设计的物理接口的方法及设备 Download PDF

Info

Publication number
CN114912396A
CN114912396A CN202210325964.8A CN202210325964A CN114912396A CN 114912396 A CN114912396 A CN 114912396A CN 202210325964 A CN202210325964 A CN 202210325964A CN 114912396 A CN114912396 A CN 114912396A
Authority
CN
China
Prior art keywords
interface
physical
virtual
virtual interface
physical interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210325964.8A
Other languages
English (en)
Inventor
尹家卫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xinhuazhang Technology Co ltd
Original Assignee
Xinhuazhang Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xinhuazhang Technology Co ltd filed Critical Xinhuazhang Technology Co ltd
Priority to CN202210325964.8A priority Critical patent/CN114912396A/zh
Publication of CN114912396A publication Critical patent/CN114912396A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

本公开提供一种基于虚拟接口实现逻辑系统设计的物理接口的方法及设备。该方法包括:确定在所述逻辑系统设计的一个模块中是否存在物理接口,所述物理接口包括至少一个物理信号;响应于所述模块中存在所述物理接口,根据所述物理接口的描述生成虚拟接口,所述虚拟接口包括与所述物理信号对应的至少一个变量;初始化所述虚拟接口以将所述虚拟接口关联到所述物理接口;以及基于所述虚拟接口仿真所述逻辑系统设计。

Description

基于虚拟接口实现逻辑系统设计的物理接口的方法及设备
技术领域
本公开涉及芯片验证技术领域,尤其涉及一种基于虚拟接口实现逻辑系统设计的物理接口的方法及设备。
背景技术
在逻辑系统设计的过程中,需要对逻辑系统设计进行测试和验证。被测试和验证的逻辑系统设计可以被称为待测设计(Device Under Test,DUT)。随着待测设计(DUT)复杂度的增加,测试平台(Testbench)与设计之间的连接通信变得更加复杂。
目前,用户采用Verilog端口描述的方式来建立测试平台与设计之间的信号连接,而为了简化模块之间的连接通信,SystemVerilog引入了物理接口(Interface)的概念。部分仿真器厂商基于跨模块引用(Cross Module Reference,简称XMR)实现物理接口。但在对设计进行仿真时,XMR处理模块不得不新增处理接口作为物理接口的处理逻辑,破坏了XMR处理模块的单一职责原则。同时,XMR处理模块也需要将接口成员引用等信息在编译时以文件等形式存储下来,并在运行时进行加载(patch),增加了时间消耗。
发明内容
有鉴于此,本公开提出了一种基于虚拟接口实现逻辑系统设计的物理接口的方法、设备及存储介质。
本公开第一方面,提供了一种基于虚拟接口实现逻辑系统设计的物理接口的方法,包括:确定在所述逻辑系统设计的一个模块中是否存在物理接口,所述物理接口包括至少一个物理信号;响应于所述模块中存在所述物理接口,根据所述物理接口的描述生成虚拟接口,所述虚拟接口包括与所述物理信号对应的至少一个变量;初始化所述虚拟接口以将所述虚拟接口关联到所述物理接口;以及基于所述虚拟接口仿真所述逻辑系统设计。
本公开第二方面,提供了一种基于虚拟接口实现逻辑系统设计的物理接口的设备,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以使得所述电子设备执行如第一方面所述的方法。
本公开第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子设备的一组指令,该组指令用于使所述电子设备执行如第一方面所述的方法。
本公开提供的一种基于虚拟接口实现逻辑系统设计的物理接口的方法和设备,通过使用虚拟接口实现模块之间的连接,使得仿真工具在对设计进行仿真时,接口处理模块无需新增处理接口,遵循了设计的单一职责原则。仿真工具也无需加载编译时额外预留的接口成员引用等信息,提高了运行速率。同时,虚拟接口与物理接口一一对应,可实现一定程度上的代码复用。
附图说明
为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本公开实施例的示例性设备的结构示意图。
图2示出了根据本公开实施例的示例性仿真工具的示意图。
图3A示出了根据本公开实施例的示例性逻辑系统设计的部分代码的示意图。
图3B示出了根据本公开实施例的示例性生成镜像类定义方法的示意图。
图3C示出了根据本公开实施例的包含虚拟接口的示例性代码的示意图。
图4示出了根据本公开实施例的连续赋值语句的示例性代码的示意图。
图5A示出了根据本公开实施例的包含嵌套接口实例的引用的示例性代码的示意图。
图5B示出了根据本公开实施例的涉及嵌套接口实例的引用的虚拟接口的部分示例性代码的示意图。
图6A示出了根据本公开实施例的示例性实现方法的示意图。
图6B示出了根据本公开实施例的示例性实现方法的流程图。
图6C示出了根据本公开实施例的针对连续赋值语句的示例性处理方法的流程图。
图6D示出了根据本公开实施例的涉及嵌套接口实例的引用的示例性处理方法的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
在逻辑系统的设计中,随着待测设计(DUT)复杂度的增加,测试平台与设计之间的连接通信变得更加复杂。现有技术中,用户采用Verilog端口描述的方式来建立测试平台与设计之间的信号连接。这种连接方式面临着连接信号数量巨大、连接容易出现错误等问题。为解决上述问题,SystemVerilog语言参考手册(Language Reference Manual,简称LRM)中引入了物理接口的概念。其中,物理接口封装了硬件端口信号及相关功能,使用一种高层次抽象的方法来简化模块之间的互联。
如上所述,在对设计进行仿真时,基于XMR实现的物理接口连接模块的方式会破坏设计的单一职责原则,以及增加时间消耗。
有鉴于上述问题,本公开提供一种基于虚拟接口实现逻辑系统设计的物理接口的方法和设备。
本公开提供的一种基于虚拟接口实现逻辑系统设计的物理接口的方法和设备,通过使用虚拟接口实现模块之间的连接,使得仿真工具在对设计进行仿真时,接口处理模块无需新增处理接口,遵循了设计的单一职责原则。仿真工具也无需加载编译时额外预留的接口成员引用等信息,提高了运行速率。同时,虚拟接口与物理接口一一对应,可实现一定程度上的代码复用。
图1示出了根据本公开实施例的示例性设备100的结构示意图。
设备100例如可以是主机计算机。设备100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中处理器102、存储器104、网络接口106和外围接口108可以通过总线110实现彼此之间在设备100内部的通信连接。
处理器102可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器、微控制器、可编程逻辑器件、数字信号处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或一个或多个集成电路。处理器102可以用于进行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。例如,如图1所示,存储的数据可以包括程序指令(例如,用于实现本公开的技术的程序指令)以及待处理的数据(例如,存储器104可以存储在编译过程产生的临时代码)。处理器102也可以访问存储的程序指令和数据,并且执行程序指令以对待处理的数据进行操作。存储器104可以包括非暂态计算机可读存储介质,例如易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为使设备100能够经由网络与一个或多个其他外部装置进行通信。该网络可以是能够传输和/或接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口108可以配置为将设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入装置以及显示器、扬声器、振动器、指示灯等输出装置。
总线110可以被配置为在设备100的各个组件(例如,处理器102、存储器104、网络接口106和外围接口108)之间传输信息,并且例如可以是内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
在一些实施例中,除了图1所示出的以及上述所描述的处理器102、存储器104、网络接口106、外围接口108和总线110之外,设备100还可以包括实现正常运行所需的一个或多个其他组件和/或实现本公开的实施例的解决方案所必需的一个或多个其他组件。在一些实施例中,设备100可能不包含图1中所示的一个或多个组件。
需要说明的是,尽管上述电子设备100的构成架构仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该电子设备100的构成架构还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述电子设备100的构成架构中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
图2示出了根据本公开实施例的示例性仿真工具200的示意图。仿真工具200可以是运行在电子设备100上的计算机程序。
在芯片设计领域,通常可以利用仿真工具对一个设计进行仿真。仿真工具例如可以是芯华章科技股份有限公司出品的GalaxSim仿真工具。图2示出的示例性仿真工具200可以包括编译器210和仿真器220。编译器210可以接收源代码204(例如,VHDL,Verilog、SystemVerilog等硬件描述语言),并编译为执行代码206(例如,机器码、汇编代码、软件代码等)。仿真器220可以根据执行代码206进行仿真,并将仿真结果208输出。例如,仿真工具200可以将仿真结果208经由图1的外围接口108输出到输出设备上(例如,显示在显示器上)。
在一些实施例中,仿真工具200接收到源代码204后,在模块的描述中检查到存在物理接口,进而可以根据该物理接口的描述生成与该物理接口对应的虚拟接口。
图3A示出了根据本公开实施例的示例性逻辑系统设计300的部分代码的示意图。
在一些实施例中,逻辑系统设计300可以包括物理接口“bus_if”的定义301、模块“test”的定义302、模块“dut”的定义303、以及顶层模块“top”的定义304。其中,物理接口“bus_if”的定义301中可以包括物理信号req和gnt。模块“test”的定义302中可以包括接口bus的端口声明3021、以及针对接口成员的写入和读取操作3022等。模块“dut”的定义303中可以包括接口bus的声明3031。顶层模块“top”的定义304可以包括两个模块的实例化声明3041。其中,接口实例i0以端口的方式连接并交换数据。
在一些实施例中,虚拟接口可以通过镜像类(mirror class)实现。
图3B示出了根据本公开实施例的示例性生成镜像类定义方法310的示意图。
在一些实施例中,针对一个物理接口320,仿真工具200可以相应地生成一个镜像类定义340。镜像类定义340的属性340a、340b以及340n可以与物理接口320中物理信号的变量成员320a、320b以及320n一一对应。同时,镜像类定义340中还可以记录与虚拟接口相关的额外信息342。其中,额外信息342可以包括物理接口的描述中变量成员的实际地址、信号值变(Value-Change)传播记录表信息等。
图3C示出了根据本公开实施例的包含虚拟接口的示例性代码320的示意图。
在一些实施例中,仿真工具200接收到示例性逻辑系统设计300后,可以使用词法、语法和语义分析等技术处理后得到抽象语法树的结点信息,通过遍历该结点信息,检查到模块“test”的定义302和模块“dut”的定义303中存在物理接口的声明3021和3031。仿真工具200可以对物理接口代码302和303进行改写(rewrite),得到虚拟接口代码362和363。其中,虚拟接口代码362和363中包括基于声明3021和3031的数据类型将物理接口改写为虚拟接口、以及修改端口方向为input类型,从而得到关于虚拟接口的端口声明3621和3631。仿真工具200可以在虚拟接口声明3621和3631前添加“input”、“virtual”等修饰关键字,用以表明该端口是虚拟接口,且该虚拟接口是输入型参数。该虚拟接口代码362中可以包括与物理接口代码301中的物理信号req和gnt对应的变量“req”和“gnt”。
由此,物理接口可以被改写为虚拟端口,其数据类型也发生了明显的变化。在一些实施例中,虚拟接口名称可以保持不变,也可以修改为与物理接口名唯一对应的接口名称。
在一些实施例中,模块中物理接口的描述中可以涉及连续赋值语句。其中,该连续赋值语句可以涉及该物理接口的一个变量成员的引用。针对物理接口中的连续赋值语句,本申请的实施例在进行虚拟接口改写时做出了进一步的改进。
图4示出了根据本公开实施例的连续赋值语句的示例性代码400的示意图。
在一些实施例中,示例性代码400可以包括物理接口“bus_if”的定义401、以及模块“test2”的定义402。其中,模块“test2”的定义402中可以包括物理接口bus、一个涉及接口成员bus.req引用的连续赋值语句4021、以及对接口成员值的修改操作4022。
在物理接口bus被改写为虚拟接口后,相应地,改写后的虚拟接口的描述中也存在连续赋值语句。其中,该连续赋值语句可以涉及该虚拟接口的一个变量的引用。
区别于静态的物理接口处理逻辑,由于虚拟接口本身是动态的,不允许出现在静态的连接赋值语句中,所以当接口成员引用在连续赋值中作为右值(load)时,为保证连续赋值语句的正常工作,可以进行如下处理。
在一些实施例中,仿真工具200可以对改写后的连续赋值语句进行解析,通过其抽象语法树结点信息分析出包含接口成员引用的表达式中的虚拟接口变量,将该接口成员引用在连续赋值中的连续赋值信息记录到该虚拟接口变量的连续赋值加载列表中。其中,该连续赋值信息可以包括该连续赋值语句的左值、右值、延迟、以及所在模块的至少一个。
根据该虚拟接口变量的连续赋值加载列表,仿真工具200可以注册传播函数(propagation function)。当仿真工具200执行非连续赋值语句对虚拟接口变量进行修改时,可以调用注册的该传播函数,执行连续赋值语句,根据该连续赋值加载列表中的信息可以将右值赋值给左值。
在一些实施例中,仿真工具200在生成虚拟接口后,可以初始化虚拟接口以将该虚拟接口与物理接口关联。
在一些实施例中,虚拟接口的初始化可以通过模块实例的端口连接进行。端口连接时,图3A的代码302中的物理接口bus作为高层连接(high-conn),可以将物理接口实例赋值给虚拟接口对象;图3C的代码362中的虚拟接口bus作为低层连接(low-conn),可以接收到待赋值的接口实例。其中,初始化操作可以包括为虚拟接口对象分配内存资源、记录镜像类属性与物理接口的描述中变量成员的映射关系、获取物理接口的描述中变量成员的实际地址、维护信号值变传播记录表信息等。
在SystemVerilog中,物理接口的本质是静态的,而虚拟接口具有动态的特性。所以在模块实例化时,非物理接口信号在端口连接时有可能会因其信号值的改变而触发信号值的传播(propagation)。其中,该非物理接口信号可以包括寄存器型(例如,reg型)、wire型、memory型等类型的普通信号。此时,根据端口声明顺序被改写后的虚拟接口可能还尚未与物理接口建立关联关系(即虚拟接口的初始化),这将会导致虚拟接口未初始化(uninitialized virtual interfaces)的问题。
为避免该问题,在一些实施例中,仿真工具200在处理端口连接时可以调整端口列表中物理接口的连接顺序。例如,仿真工具200可以在模块的描述中确定物理接口的连接顺序是否优先于该非物理接口。如果该物理接口的连接顺序未优先于该非物理接口,那么仿真工具200可以调整端口列表中该物理接口的连接顺序,以将该物理接口设置为优先于所述非物理接口的连接。这样,仿真工具200可以优先为端口列表中的物理接口建立端口连接,以便快速建立虚拟接口与物理接口的关联。仿真工具200可以在完成该模块中物理接口的连接之后,再连接非物理接口。
在一些实施例中,模块的描述中还可以包括嵌套接口实例的引用,即,对物理接口中其他接口类型的接口实例成员的引用。物理接口的接口实例因其静态的特性,无法在类(镜像类)中实例化;而虚拟接口是一种可以在类中实例化的数据类型。因此,仿真工具200可以对嵌套接口实例进行处理以初始化虚拟接口。基于该虚拟接口,仿真工具200可以完成嵌套接口实例与待测设计之间的通信。
图5A示出了根据本公开实施例的包含嵌套接口实例的引用的示例性代码500的示意图。
在一些实施例中,示例性代码500中可以包括物理接口“a_m_if”的定义501、物理接口“a_if”的定义502、模块“dut_1”的定义503、模块“dut_2”的定义504、以及顶层模块“top”的定义505。其中,物理接口“a_if”的定义502中可以包括一个接口“a_m_if” 类型的物理接口实例“m_if”、以及一个声明5021。模块“dut_1” 的定义503和模块“dut_2”的定义504中可以包括嵌套接口实例的引用5032和5042。
图5B示出了根据本公开实施例的涉及嵌套接口实例的引用500的虚拟接口的部分示例性代码510的示意图。
在一些实施例中,嵌套接口实例的引用可以通过设置虚拟接口变量的初始值(initial value)为该接口实例成员来建立该虚拟接口与物理接口实例的关联。仿真工具200可以在接口“a_if”的定义512中创建一个指向物理接口实例“m_if”的虚拟接口变量“_xepic_vi_intfInst_m_if”(如代码5121所示)。以及仿真工具200可以改写图5A的模块“dut_1”和模块“dut_2”中的端口声明5031和5041为虚拟接口5131和5141,以分别在模块“dut_1”和“dut_2”中生成虚拟接口vaif。
仿真工具200可以生成代码513中的虚拟接口vaif与代码503中的物理接口vaif的映射表。其中,该映射表可以包括代码503中的物理接口vaif、代码513中的虚拟接口vaif、代码503中的物理信号req、代码513中的变量“req”、该物理接口vaif和该虚拟接口vaif之间的映射关系、以及该物理信号req和变量“req”之间的映射关系等。
仿真工具200还可以生成代码514中的虚拟接口vaif与代码504中的物理接口vaif的映射表。
根据该映射表中的映射关系,仿真工具200可以使用该虚拟接口513和514替代该物理接口503和504,以将嵌套接口实例的引用5032和5042转变为基于虚拟接口的嵌套类对象的引用5132和5142。此后,基于虚拟接口vaif,仿真工具200可以完成嵌套接口实例与待测设计之间的通信。
在虚拟接口与物理接口关联后,在一些实施例中,仿真工具200还可以根据该物理接口的描述确定与该物理接口关联的物理操作。其中,该物理操作可以包括读取、写入、敏感列表中触发条件的评估、连续赋值、门级连接等。如图3A和图3C所示,仿真工具200可以通过生成系统函数以将代码3022所表示的物理接口的读写操作转换为代码3622所表示的虚拟接口的读写操作。仿真工具200对虚拟接口对象成员的操作可以影响与该虚拟接口关联的物理接口实例成员。
可以理解的是,仿真工具200还可以通过其他逻辑处理代码(例如,C++代码)将物理接口的物理操作转换为虚拟接口的虚拟操作。
在一些实施例中,仿真工具200可以将虚拟接口的虚拟操作编译为执行代码206,以及基于执行代码206,可以对该逻辑系统设计进行仿真。
这样,本公开实施例通过使用虚拟接口实现了模块之间的连接,降低了接口处理模块的逻辑复杂性;在运行时,仿真工具200也无需加载编译时额外预留的接口成员引用等信息,提高了运行速率。同时,本公开实施例中的虚拟接口与物理接口一一对应,可实现一定程度上的代码复用。
图6A示出了根据本公开实施例的示例性实现方法的示意图。
在一些实施例中,测试平台620与待测设计640通过物理接口320进行连接通信时,仿真工具200可以创建出与物理接口320相应的虚拟接口660。仿真工具200可以使用物理接口320的接口实例来初始化虚拟接口660,以建立虚拟接口660与物理接口320的关联。建立关联后,仿真工具200对虚拟接口660对象成员的读取(load)或写入(driver)等操作和对物理接口320实例相应成员的读取或写入等操作是相对应的。此后,该虚拟接口对象不再指向其它新的接口实例,且每一个物理接口唯一对应一个虚拟接口。
在另一些实施例中,测试平台620内部或待测设计640内部也可以通过物理接口320进行连接通信。仿真工具200还可以创建出与物理接口320相应的虚拟接口660。即,本公开不仅适用于测试平台与待测设计之间的接口的实现,也适用于测试平台内部或待测设计内部的接口的实现。
图6B示出了根据本公开实施例的示例性实现方法600的流程图。方法600可以由例如图1的设备100来执行,更具体地,可以由在设备100上运行的仿真工具200执行。方法600可以包括以下步骤。
在步骤S602,仿真工具200可以确定在逻辑系统设计(例如,图3A的逻辑系统设计300)的一个模块中是否存在物理接口(例如,图3A中的代码301),该物理接口包括至少一个物理信号(例如,图3A的代码301中的req和gnt)。
在步骤S604,响应于逻辑系统设计的模块中存在物理接口(例如,图3A的代码302中的接口bus),仿真工具200可以根据该物理接口的描述生成虚拟接口(例如,图3C的代码362中的接口bus)。该虚拟接口可以包括与该物理信号对应的至少一个变量(例如,图3C的代码362中的“req”和“gnt”)。
在一些实施例中,虚拟接口可以通过镜像类实现。仿真工具200可以生成与物理接口(例如,图3B中的物理接口320)对应的镜像类定义(例如,图3B中的镜像类定义340)。其中,镜像类定义可以包括与物理信号的变量成员(例如,图3B中的变量成员320a、320b以及320n)一一对应的属性(例如,图3B中属性340a、340b以及340n)。同时,镜像类定义还可以包括与虚拟接口相关的额外信息(例如,图3B中的额外信息342)。仿真工具200在接收到逻辑系统设计(例如,图3A的逻辑系统设计300)后,可以修改物理接口的描述(例如,图3A中的声明3021和3031)以生成虚拟接口(例如,图3C中的声明3621和3631)。
在一些实施例中,物理接口的描述中可以涉及连续赋值语句(例如,图4中的连续赋值语句4021)。该连续赋值语句可以引用一个接口成员(例如,图4的代码4021中的bus.req)。相应地,改写该物理接口的描述所得到的虚拟接口的描述中也涉及连续赋值语句,该连续赋值语句可以涉及该虚拟接口的一个变量的引用。为保证动态的虚拟接口中连续赋值语句的正常工作,可以将该连续赋值语句转换为连续赋值处理流程。
图6C示出了根据本公开实施例的针对连续赋值语句的示例性处理方法610的流程图。可以理解的是,处理方法610可以作为独立的方法执行,也可以作为方法600的一部分执行。
在步骤S612,根据该连续赋值语句,仿真工具200可以确定连续赋值信息作为虚拟接口的变量的加载列表中的元素。其中,该连续赋值信息可以包括该连续赋值语句的左值、右值、延迟、以及所在模块的至少一个。
在步骤S614,仿真工具200可以根据该加载列表注册传播函数。在该连续赋值语句被激活时,该传播函数根据该加载列表中的连续赋值信息可以将右值赋值给左值。
回到图6B,在步骤S606,仿真工具200可以初始化该虚拟接口以将该虚拟接口关联到该物理接口。在一些实施例中,虚拟接口的初始化可以通过模块实例的端口连接进行。
为避免虚拟接口未初始化的问题,在一些实施例中,仿真工具200在处理模块中的端口连接时可以调整端口列表中物理接口的连接顺序。例如,仿真工具200可以确定在模块的描述中该物理接口的连接顺序是否优先于非物理接口。响应于该物理接口的连接顺序未优先于该非物理接口,仿真工具200可以调整该模块的描述中物理接口的连接顺序,以将该物理接口设置为优先于该非物理接口连接。
在一些实施例中,模块的描述中还可以包括嵌套接口实例(例如,图5A的代码502中的接口实例“m_if”)的引用。涉及嵌套接口实例的引用的虚拟接口可以进一步被处理。
图6D示出了根据本公开实施例的涉及嵌套接口实例的引用的示例性处理方法620的流程图。可以理解的是,处理方法620可以作为独立的方法执行,也可以作为方法600的一部分执行。
在步骤S622,仿真工具200可以生成该虚拟接口与该物理接口的映射表。其中,该映射表可以包括该物理接口(例如,图5A的代码503中的物理接口vaif)、该虚拟接口(例如,图5B的代码513中的虚拟接口vaif)、该物理接口的至少一个物理信号(例如,图5A的代码503中的信号req)、该虚拟接口的至少一个变量(例如,图5B的代码513中的变量“req”)、该物理接口和该虚拟接口之间的映射关系、以及该至少一个物理信号和该至少一个变量之间的映射关系等。
在步骤S624,仿真工具200可以检查模块的描述中是否存在嵌套接口实例的引用(例如,图5A的代码5032和5042中的接口实例“m_if”的引用),以及该嵌套接口实例可以涉及该物理接口。
在步骤S626,响应于存在嵌套接口实例的引用,仿真工具200根据该映射表可以确定虚拟接口,以及使用该虚拟接口(例如,图5B中的代码513和514)替代该物理接口(例如,图5A中的代码503和504)。
在一些实施例中,仿真工具200还可以根据该物理接口的描述(例如,图3A中的代码3022)确定与该物理接口关联的物理操作(例如,读或写操作)。仿真工具200可以将该物理操作转换为该虚拟接口的虚拟操作(例如,图3C中代码3622所表示的读写操作)。该虚拟操作可以由仿真工具200生成系统函数来实现。
回到图6B,在步骤S608,仿真工具200可以基于该虚拟接口仿真该逻辑系统设计。在一些实施例中,仿真工具200可以将虚拟接口的虚拟操作编译为执行代码206,以及基于执行代码206,可以对该逻辑系统设计进行仿真。
本公开还提供了一种基于虚拟接口实现逻辑系统设计的物理接口的设备。该设备可以是图1所示的设备100。仿真工具200可以被配置为执行存储在存储器104中的计算机程序以实现与本公开一致的基于虚拟接口实现逻辑系统设计的物理接口的方法,诸如上述示例性方法之一(例如,图6B中所示的方法600或图6C所示的方法610或图6D所示的方法620)。此处不再赘述。
本公开还提供了一种非暂态计算机可读存储介质。非暂态计算机可读存储介质存储计算机程序。当由仿真工具200执行时,计算机程序使调试工具实现与本公开一致的基于虚拟接口实现逻辑系统设计的物理接口的方法,诸如上述示例性方法(例如,图6B中所示的方法600或图6C所示的方法610或图6D所示的方法620)。此处不再赘述。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述对本公开特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (10)

1.一种基于虚拟接口实现逻辑系统设计的物理接口的方法,包括:
确定在所述逻辑系统设计的一个模块中是否存在物理接口,所述物理接口包括至少一个物理信号;
响应于所述模块中存在所述物理接口,根据所述物理接口的描述生成虚拟接口,所述虚拟接口包括与所述物理信号对应的至少一个变量;
初始化所述虚拟接口以将所述虚拟接口关联到所述物理接口;以及
基于所述虚拟接口仿真所述逻辑系统设计。
2.根据权利要求1所述的方法,其中,初始化所述虚拟接口以将所述虚拟接口关联到所述物理接口进一步包括:
确定在所述模块的描述中所述物理接口的连接顺序是否优先于非物理接口;以及
响应于所述物理接口的连接顺序未优先于所述非物理接口,调整所述模块的描述中所述物理接口的连接顺序,以将所述物理接口设置为优先于所述非物理接口连接。
3.根据权利要求1所述的方法,其中,根据所述物理接口的描述生成虚拟接口进一步包括:
生成与所述物理接口对应的镜像类定义,所述镜像类定义包括与所述物理信号对应的属性;
修改所述物理接口的描述以生成所述虚拟接口。
4.根据权利要求1所述的方法,进一步包括:
根据所述物理接口的描述确定与所述物理接口关联的物理操作;
将所述物理操作转换为所述虚拟接口的虚拟操作,所述虚拟操作由系统函数实现。
5.根据权利要求3所述的方法,其中,修改所述物理接口的描述以生成所述虚拟接口进一步包括:
确定所述模块的描述中是否存在引用所述虚拟接口的一个变量的连续赋值语句;
响应于所述模块的描述中存在所述连续赋值语句,将所述连续赋值语句转换为连续赋值处理流程。
6.根据权利要求5所述的方法,其中,所述连续赋值处理流程包括:
根据所述连续赋值语句确定所述连续赋值语句的左值、右值、延迟、以及所述模块的至少一个作为所述虚拟接口的变量的加载列表中的元素;以及
根据所述加载列表注册传播函数,所述传播函数在所述连续赋值语句被激活时根据所述加载列表将所述右值赋值给所述左值。
7.根据权利要求1或2所述的方法,其中,初始化所述虚拟接口以将所述虚拟接口关联到所述物理接口进一步包括:
生成所述虚拟接口与所述物理接口的映射表,所述映射表包括所述物理接口、所述虚拟接口、所述物理接口的所述至少一个物理信号、所述虚拟接口的所述至少一个变量、所述物理接口和所述虚拟接口之间的映射关系以及所述至少一个物理信号和所述至少一个变量之间的映射关系。
8.根据权利要求7所述的方法,进一步包括:
确定所述模块的描述中是否存在嵌套接口实例,所述嵌套接口实例涉及所述物理接口;
响应于所述模块的描述中存在所述嵌套接口实例,将所述物理接口替换为所述虚拟接口,所述虚拟接口根据所述映射表确定。
9.一种基于虚拟接口实现逻辑系统设计的物理接口的电子设备,包括:
存储器,用于存储一组指令;以及
至少一个处理器,配置为执行所述一组指令以使得所述电子设备执行如权利要求1至8任一项所述的方法。
10.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子设备的一组指令,所述一组指令在被执行时使得所述电子设备执行权利要求1至8任一项所述方法。
CN202210325964.8A 2022-03-30 2022-03-30 基于虚拟接口实现逻辑系统设计的物理接口的方法及设备 Pending CN114912396A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210325964.8A CN114912396A (zh) 2022-03-30 2022-03-30 基于虚拟接口实现逻辑系统设计的物理接口的方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210325964.8A CN114912396A (zh) 2022-03-30 2022-03-30 基于虚拟接口实现逻辑系统设计的物理接口的方法及设备

Publications (1)

Publication Number Publication Date
CN114912396A true CN114912396A (zh) 2022-08-16

Family

ID=82762822

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210325964.8A Pending CN114912396A (zh) 2022-03-30 2022-03-30 基于虚拟接口实现逻辑系统设计的物理接口的方法及设备

Country Status (1)

Country Link
CN (1) CN114912396A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117439960A (zh) * 2023-12-21 2024-01-23 井芯微电子技术(天津)有限公司 支持接口复用和兼容虚拟网络互联的接口管理方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117439960A (zh) * 2023-12-21 2024-01-23 井芯微电子技术(天津)有限公司 支持接口复用和兼容虚拟网络互联的接口管理方法及系统
CN117439960B (zh) * 2023-12-21 2024-04-12 井芯微电子技术(天津)有限公司 支持接口复用和兼容虚拟网络互联的接口管理方法及系统

Similar Documents

Publication Publication Date Title
CN112287569B (zh) 用于仿真逻辑系统设计的方法、电子设备及存储介质
CN111931445A (zh) 用于调试逻辑系统设计的方法、仿真器及存储介质
US7353156B2 (en) Method of switching external models in an automated system-on-chip integrated circuit design verification system
CN112100957B (zh) 用于调试逻辑系统设计的方法、仿真器、存储介质
CN112597064B (zh) 对程序进行仿真的方法、电子设备及存储介质
CN112434478B (zh) 仿真逻辑系统设计的虚拟接口的方法及相关设备
CN114707453A (zh) 芯片功能的验证方法、装置、电子设备及存储介质
CN114912396A (zh) 基于虚拟接口实现逻辑系统设计的物理接口的方法及设备
CN111427782A (zh) 安卓动态链接库的运行方法、装置、设备及存储介质
CN113742221A (zh) 生成测试用例的方法、电子设备及存储介质
US10540466B1 (en) Systems and methods for streaming waveform data during emulation run
CN113283203A (zh) 用于仿真逻辑系统设计的方法、电子设备及存储介质
US9069900B2 (en) Method for determining whether a machine code instruction of a machine code program is executed in the machine code program
US20230055523A1 (en) Method, apparatus, and storage medium for generating test cases
CN112232003B (zh) 对设计进行仿真的方法、电子设备及存储介质
CN115827568B (zh) 获取逻辑系统设计的数据的方法、电子设备和存储介质
CN114328062B (zh) 校验缓存一致性的方法、装置和存储介质
CN116306392A (zh) 芯片仿真装置、方法、电子设备和存储介质
CN113377597B (zh) 仿真系统以及存储、读取仿真数据的方法
CN112131806A (zh) 验证设计的编译方法、电子设备及存储介质
CN112506806B (zh) 用于调试程序的方法、电子设备及存储介质
CN115688643A (zh) 仿真逻辑系统设计的方法、设备及存储介质
CN112885403A (zh) 一种Flash控制器的功能测试方法、装置及设备
CN112989736B (zh) 用于检测修改设计的错误实例的方法、设备及存储介质
CN113065302B (zh) 用于仿真逻辑系统设计的方法、仿真器及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination