仿真逻辑系统设计的虚拟接口的方法及相关设备转让专利
申请号 : CN202110100568.0
文献号 : CN112434478B
文献日 : 2021-04-27
发明人 : 沈辛平
申请人 : 芯华章科技股份有限公司
摘要 :
权利要求 :
1.一种仿真逻辑系统设计的虚拟接口的方法,包括:接收所述逻辑系统设计中虚拟接口的描述,所述虚拟接口用于与所述逻辑系统设计的物理接口交换数据,其中,所述虚拟接口包括第一端口,所述物理接口包括第二端口,并且所述虚拟接口的描述包括:所述虚拟接口的定义、或所述虚拟接口与所述物理接口的连接、或所述虚拟接口的第一端口的赋值;
基于所述虚拟接口的描述,在编译所述逻辑系统设计时生成与所述虚拟接口关联的句柄命令,所述句柄命令用于在运行所述逻辑系统设计时执行与所述虚拟接口相关的操作,所述句柄命令包括:用于初始化与所述第一端口对应的第一句柄的句柄初始化命令、或用于将所述第一句柄的值传递给所述第二端口的句柄连接命令、或用于向所述第一句柄赋值的句柄赋值命令;以及
基于所述与所述虚拟接口关联的句柄命令,对所述逻辑系统设计进行仿真;
其中,基于所述虚拟接口的描述,生成与所述虚拟接口关联的句柄命令进一步包括:基于所述虚拟接口的定义,生成用于初始化与所述第一端口对应的第一句柄的句柄初始化命令;或,基于所述虚拟接口与所述物理接口的连接,生成用于将所述第一句柄的值传递给所述第二端口的句柄连接命令;或,基于所述虚拟接口的第一端口的赋值,生成用于向所述第一句柄赋值的句柄赋值命令;
基于所述与所述虚拟接口关联的句柄命令,对所述逻辑系统设计进行仿真,进一步包括:响应于运行所述句柄初始化命令,初始化与所述第一端口对应的第一句柄;或,响应于运行所述句柄连接命令,将所述第一句柄的值传递给所述第二端口;或,响应于运行所述句柄赋值命令,向所述第一句柄赋值。
2.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1所述的方法。
3.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1所述方法。
说明书 :
仿真逻辑系统设计的虚拟接口的方法及相关设备
技术领域
背景技术
(Application Specific Integrated Circuit,简称ASIC)或者片上系统芯片(System‑On‑
Chip,简称SOC)的设计。因此,在仿真中被测试或验证的设计又可以称为待测设备(Device
Under Test,简称DUT)。
发明内容
换数据;基于所述虚拟接口的描述,生成与所述虚拟接口关联的句柄命令,所述句柄命令用
于在运行所述逻辑系统设计时执行与所述虚拟接口相关的操作;以及基于所述与所述虚拟
接口关联的句柄命令,对所述逻辑系统设计进行仿真。
法。
法。
虚拟接口相关的操作,如此,则无需在编译设计时消耗过多的系统资源来处理虚拟接口及
其相关的信号,也不用在编译阶段处理因为虚拟接口产生的复杂信号,从而节约了编译时
间和算力消耗。
附图说明
于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其
他的附图。
具体实施方式
及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包
括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举
的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语
并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该
相对位置关系也可能相应地改变。
计的物理接口交换数据;基于所述虚拟接口的描述,生成与所述虚拟接口关联的句柄命令,
所述句柄命令用于在运行所述逻辑系统设计时执行与所述虚拟接口相关的操作;以及基于
所述与所述虚拟接口关联的句柄命令,对所述逻辑系统设计进行仿真。本公开实施例通过
生成与虚拟接口关联的句柄命令,从而在运行逻辑系统设计时可以基于该句柄命令执行与
所述虚拟接口相关的操作。如此,则无需在编译设计时消耗过多的系统资源来处理虚拟接
口及其相关的信号,也不用在编译阶段处理因为虚拟接口产生的复杂信号,从而节约了编
译时间和算力消耗。
口108和总线110。其中处理器102、存储器104、网络接口106和外围接口108通过总线110实
现彼此之间在设备内部的通信连接。
成电路(Application Specific Integrated Circuit,ASIC)或者一个或多个集成电路。处
理器102可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可
以包括集成为单一逻辑组件的多个处理器。如图1A所示,处理器102可以包括多个处理器
102a、102b和102c。
令)以及待处理的数据(例如,存储器104可以存储在编译过程产生的临时代码)。处理器102
也可以访问存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储
器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包
括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储
棒等。
本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可
以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任
意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、
蜂窝网络芯片等的任意组合。
入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线(USB端口、PCI‑E总线)等。
他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本公开实施
例方案所必需的组件,而不必包含图中所示的全部组件。
言可以例如是C++、Java等软件编程语言或VHDL、Verilog、SystemVerilog等硬件描述语言。
目标代码则可以是例如汇编代码、机器码等。
的代码、清除未使用的变量等。优化后的中间表示则可以被传递给后端126进行进一步处
理。
以包括编译器120和仿真器210。编译器120可以将设计202编译为目标代码204,仿真器210
可以根据目标代码204进行仿真,并将仿真结果206输出。例如,仿真工具200可以将仿真结
果(例如,仿真波形图)经由图1A的外围接口108输出到输出设备上(例如,显示在显示器
上)。
递。在SystemVerilog中,由于物理接口的本质是静态的,而类和程序是动态的,所以无法在
类或程序中定义物理接口,只能在类或程序中定义虚拟接口作为参数来传递信号给物理接
口。
端口可以与物理接口的第二端口传递信号。在一些实施例中,虚拟接口的赋值3066可以是
向虚拟接口的第一端口(例如,端口vi.a)或第三端口(例如,端口vi.b)进行赋值,赋值还可
以进一步分为向虚拟接口写数据(例如,向端口vi.a写数据)和从虚拟接口读数据(例如,从
端口vi.b读数据)。通过代码300,将实际的物理接口与虚拟接口进行连接,并可以通过虚拟
接口读取物理接口的信号或向物理接口输出信号。
class)。例如,当编译器120处理虚拟接口vi时,可以相应地生成一个镜像类的定义并将其
实例化。
refassign)来实现。
中,$refassign是编译器120的系统任务,其会在系统任务中的第二个参数(例如,端口
top.i0.a或top.i0.b)发生变化时,将该第二个参数的值赋予系统任务中的第一个参数(例
如,镜像类vi_c.a或vi_c.b)。
实际的物理接口(例如,top.i0)来生成一个镜像类。这个过程本身是消耗系统资源的,例
如,编译器120的编译时间和算力。
reference,简称XMR)。然而,编译器120的系统任务$refassign处理XMR信号是非常有难度
的。
vi.a的变化,并在虚拟接口的端口vi.a对应的镜像类vi_c.a发生变化时进行相应的动作。
在现有技术中,由于是通过镜像类实现虚拟接口,在运行时(runtime)实际上检测的是ref
reg a类型的数据。而监控ref reg a的变化对于编译器而言则需要额外提供相应函数来实
现,加重了计算的负担和实现的难度。
口包括第二端口(例如,端口a)。设计406中的虚拟接口的描述4062可以包括虚拟接口的定
义3062、所述虚拟接口与所述物理接口的连接3064和所述虚拟接口的第一端口(例如,端口
vi.a)或第三端口(例如,端口vi.b)的赋值3066。基于虚拟接口的描述,该虚拟接口可以用
于与设计406的物理接口交换数据。例如,如图3A所示,该虚拟接口可以与设计406的顶层模
块top的物理接口连接并交换数据。
描述4062,生成与该虚拟接口关联的句柄(handle)命令。在一些实施例中,该句柄命令可以
是在编译器402对设计406进行编译的过程中生成的。
命令,用以在运行设计406的目标代码408时对句柄进行初始化。
应的第一句柄(例如,vpi_handle_vi_a)的句柄初始化命令422,也可以是用于初始化与虚
拟接口的第三端口(例如,vi.b)对应的第二句柄(例如,vpi_handle_vi_b)的句柄初始化命
令424。如图4B所示,句柄vpi_handle_vi_a和vpi_handle_vi_b被初始化为空。
口的端口的句柄连接命令,用以在运行设计406的目标代码408时完成虚拟接口与物理接口
之间的连接。
递给物理接口的第二端口(例如,top.i0.a)的句柄连接命令432,也可以是用于将第二句柄
(例如,vpi_handle_vi_b)的值传递给物理接口的第四端口(例如,top.i0.b)的句柄连接命
令434。
用以在运行设计406的目标代码408时向虚拟接口的端口对应的句柄进行赋值。
令440或450。其中,如图4D所示,句柄命令可以是用于向第一句柄(例如,vpi_handle_vi_a)
写数据的句柄赋值命令440;如图4E所示,句柄命令还可以是用于从第一句柄读数据的句柄
赋值命令450。
目标代码408中形成该句柄命令对应的表达4082(例如,汇编代码或机器码)。这样,仿真器
404后续在运行设计406对应的目标代码408时,可以根据该句柄命令在目标代码408中对应
的表达来执行与所述虚拟接口相关的操作。
404可以基于与虚拟接口关联的句柄命令(此时已被编译为目标代码408中与句柄命令对应
的表达4082)执行与虚拟接口相关的操作,从而对设计406进行仿真。
句柄进行初始化之后,可以对句柄进行赋值。因此,在初始化第一句柄或第二句柄之后,仿
真器404还可以运行句柄连接命令432或434,从而将第一句柄或第二句柄的值传递给物理
接口的第二端口或第四端口,进而建立虚拟接口的端口与物理接口的对应端口之间的连
接。在建立虚拟接口与物理接口的连接之后,仿真器404可以运行句柄赋值命令440或450,
从而向第一句柄赋值(例如,读数据或写数据)。类似地,也可以向第二句柄进行赋值,在此
不再赘述。
基于该句柄命令执行与所述虚拟接口相关的操作,如此,则不必在编译阶段引入镜像类,也
不存在编译阶段的信号传递,也避免了XMR信号的产生和相应的处理,从而节约了编译时间
和算力消耗。
子设备100上的仿真工具400执行。该方法500可以具体包括以下步骤。
逻辑系统设计的物理接口(例如,图3A的top.i0)交换数据。在一些实施例中,所述虚拟接口
可以包括第一端口(例如,图3A的vi.a),所述物理接口可以包括第二端口(例如,图3C的
top.i0.a)。并且所述虚拟接口的描述可以进一步包括:所述虚拟接口的定义(例如,图3A的
虚拟接口的定义3062)、所述虚拟接口与所述物理接口的连接(例如,图3A的虚拟接口与物
理接口的连接3064)、或所述虚拟接口的第一端口的赋值(例如,图3A的虚拟接口的第一端
口的赋值3066)。
相关的操作。
句柄命令之后对句柄命令进行编译以生成目标代码中对应的表达(例如,图4A的表达
4082)。
句柄初始化命令(例如,图4B的句柄初始化命令422或424)、用于将所述第一句柄的值传递
给所述第二端口(例如,图4C的端口top.i0.a或top.i0.b)的句柄连接命令(例如,图4C的句
柄连接命令432或434)、或用于向所述第一句柄赋值的句柄赋值命令(例如,图4D的句柄赋
值命令440或图4E的句柄赋值命令450)。
始化与所述第一端口对应的第一句柄的句柄初始化命令;基于所述虚拟接口与所述物理接
口的连接(例如,图3A的虚拟接口与物理接口的连接3064),生成用于将所述第一句柄的值
传递给所述第二端口的句柄连接命令;或,基于所述虚拟接口的第一端口的赋值(例如,图
3A的虚拟接口的第一端口的赋值3066),生成用于向所述第一句柄赋值的句柄赋值命令。
第一句柄;响应于运行所述句柄连接命令,将所述第一句柄的值传递给所述第二端口;或,
响应于运行所述句柄赋值命令,向所述第一句柄赋值。
场景的情况下,这多台设备中的一台设备可以只执行本公开的方法中的某一个或多个步
骤,这多台设备相互之间会进行交互以完成所述的方法。
例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求
示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并
行处理也是可以的或者可能是有利的。
令用于使所述计算机执行如上任一实施例所述方法。
其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器
(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器
(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读
存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或
其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如
上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。
以框图的形式示出装置,以便避免使本公开难以理解,并且这也考虑了以下事实,即关于这
些框图装置的实施方式的细节是高度取决于将要实施本公开的平台的(即,这些细节应当
完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的
示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节
的情况下或者这些具体细节有变化的情况下实施本公开。因此,这些描述应被认为是说明
性的而不是限制性的。
如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
含在本公开的保护范围之内。