仿真逻辑系统设计的虚拟接口的方法及相关设备转让专利

申请号 : CN202110100568.0

文献号 : CN112434478B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 沈辛平

申请人 : 芯华章科技股份有限公司

摘要 :

本公开提供一种仿真逻辑系统设计的虚拟接口的方法及相关设备。该方法包括:接收所述逻辑系统设计中虚拟接口的描述,所述虚拟接口用于与所述逻辑系统设计的物理接口交换数据;基于所述虚拟接口的描述,生成与所述虚拟接口关联的句柄命令,所述句柄命令用于在运行所述逻辑系统设计时执行与所述虚拟接口相关的操作;以及,基于所述与所述虚拟接口关联的句柄命令,对所述逻辑系统设计进行仿真。

权利要求 :

1.一种仿真逻辑系统设计的虚拟接口的方法,包括:接收所述逻辑系统设计中虚拟接口的描述,所述虚拟接口用于与所述逻辑系统设计的物理接口交换数据,其中,所述虚拟接口包括第一端口,所述物理接口包括第二端口,并且所述虚拟接口的描述包括:所述虚拟接口的定义、或所述虚拟接口与所述物理接口的连接、或所述虚拟接口的第一端口的赋值;

基于所述虚拟接口的描述,在编译所述逻辑系统设计时生成与所述虚拟接口关联的句柄命令,所述句柄命令用于在运行所述逻辑系统设计时执行与所述虚拟接口相关的操作,所述句柄命令包括:用于初始化与所述第一端口对应的第一句柄的句柄初始化命令、或用于将所述第一句柄的值传递给所述第二端口的句柄连接命令、或用于向所述第一句柄赋值的句柄赋值命令;以及

基于所述与所述虚拟接口关联的句柄命令,对所述逻辑系统设计进行仿真;

其中,基于所述虚拟接口的描述,生成与所述虚拟接口关联的句柄命令进一步包括:基于所述虚拟接口的定义,生成用于初始化与所述第一端口对应的第一句柄的句柄初始化命令;或,基于所述虚拟接口与所述物理接口的连接,生成用于将所述第一句柄的值传递给所述第二端口的句柄连接命令;或,基于所述虚拟接口的第一端口的赋值,生成用于向所述第一句柄赋值的句柄赋值命令;

基于所述与所述虚拟接口关联的句柄命令,对所述逻辑系统设计进行仿真,进一步包括:响应于运行所述句柄初始化命令,初始化与所述第一端口对应的第一句柄;或,响应于运行所述句柄连接命令,将所述第一句柄的值传递给所述第二端口;或,响应于运行所述句柄赋值命令,向所述第一句柄赋值。

2.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1所述的方法。

3.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1所述方法。

说明书 :

仿真逻辑系统设计的虚拟接口的方法及相关设备

技术领域

[0001] 本公开涉及数据处理技术领域,尤其涉及一种仿真逻辑系统设计的虚拟接口的方法及相关设备。

背景技术

[0002] 在集成电路的验证领域,仿真一般是指将设计进行编译之后在计算机上运行,以对设计的各种功能进行仿真测试。设计可以是,例如,用于供专门应用的集成电路
(Application Specific Integrated Circuit,简称ASIC)或者片上系统芯片(System‑On‑
Chip,简称SOC)的设计。因此,在仿真中被测试或验证的设计又可以称为待测设备(Device 
Under Test,简称DUT)。
[0003] 然而,在对设计进行仿真时,若设计中存在虚拟接口,编译该设计将存在处理困难和消耗资源的问题。

发明内容

[0004] 有鉴于此,本公开提出了一种仿真逻辑系统设计的虚拟接口的方法及相关设备。
[0005] 本公开第一方面,提供了一种仿真逻辑系统设计的虚拟接口的方法,包括:接收所述逻辑系统设计中虚拟接口的描述,所述虚拟接口用于与所述逻辑系统设计的物理接口交
换数据;基于所述虚拟接口的描述,生成与所述虚拟接口关联的句柄命令,所述句柄命令用
于在运行所述逻辑系统设计时执行与所述虚拟接口相关的操作;以及基于所述与所述虚拟
接口关联的句柄命令,对所述逻辑系统设计进行仿真。
[0006] 本公开第二方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的方
法。
[0007] 本公开第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行第一方面所述的方
法。
[0008] 本公开实施例提供的仿真逻辑系统设计的虚拟接口的方法及相关设备,通过生成与虚拟接口关联的句柄命令,从而在运行逻辑系统设计时可以基于该句柄命令执行与所述
虚拟接口相关的操作,如此,则无需在编译设计时消耗过多的系统资源来处理虚拟接口及
其相关的信号,也不用在编译阶段处理因为虚拟接口产生的复杂信号,从而节约了编译时
间和算力消耗。

附图说明

[0009] 为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开,对
于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其
他的附图。
[0010] 图1A示出了本公开实施例所提供的一种电子设备的结构示意图。
[0011] 图1B示出了根据本公开实施例的示例性编译器的示意图。
[0012] 图2示出了根据本公开实施例的仿真工具的示意图。
[0013] 图3A示出了一段示例性代码的示意图。
[0014] 图3B示出了另一段示例性代码的示意图。
[0015] 图3C示出了又一段示例性代码的示意图。
[0016] 图4A示出了本公开实施例所提供的一种仿真工具的结构示意图。
[0017] 图4B示出了根据本公开实施例的一种示例性句柄命令的示意图。
[0018] 图4C示出了根据本公开实施例的另一种示例性句柄命令的示意图。
[0019] 图4D示出了根据本公开实施例的又一种示例性句柄命令的示意图。
[0020] 图4E示出了根据本公开实施例的再一种示例性句柄命令的示意图。
[0021] 图5示出了本公开实施例所提供的示例性方法的流程示意图。

具体实施方式

[0022] 为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
[0023] 需要说明的是,除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以
及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包
括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举
的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语
并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该
相对位置关系也可能相应地改变。
[0024] 本公开实施例提供了一种仿真逻辑系统设计的虚拟接口的方法及相关设备。该方法包括:接收所述逻辑系统设计中虚拟接口的描述,所述虚拟接口用于与所述逻辑系统设
计的物理接口交换数据;基于所述虚拟接口的描述,生成与所述虚拟接口关联的句柄命令,
所述句柄命令用于在运行所述逻辑系统设计时执行与所述虚拟接口相关的操作;以及基于
所述与所述虚拟接口关联的句柄命令,对所述逻辑系统设计进行仿真。本公开实施例通过
生成与虚拟接口关联的句柄命令,从而在运行逻辑系统设计时可以基于该句柄命令执行与
所述虚拟接口相关的操作。如此,则无需在编译设计时消耗过多的系统资源来处理虚拟接
口及其相关的信号,也不用在编译阶段处理因为虚拟接口产生的复杂信号,从而节约了编
译时间和算力消耗。
[0025] 图1A示出了本实施例所提供的一种电子设备100的结构示意图。电子设备100例如可以是计算机主机。该电子设备100可以包括:处理器102、存储器104、网络接口106、外围接
口108和总线110。其中处理器102、存储器104、网络接口106和外围接口108通过总线110实
现彼此之间在设备内部的通信连接。
[0026] 处理器102可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集
成电路(Application Specific Integrated Circuit,ASIC)或者一个或多个集成电路。处
理器102可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可
以包括集成为单一逻辑组件的多个处理器。如图1A所示,处理器102可以包括多个处理器
102a、102b和102c。
[0027] 存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。例如,如图1A所示,存储的数据可以包括程序指令(例如,用于实现本公开的技术方案的程序指
令)以及待处理的数据(例如,存储器104可以存储在编译过程产生的临时代码)。处理器102
也可以访问存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储
器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包
括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储
棒等。
[0028] 网络接口106可以配置为经由网络向电子设备100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、
本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可
以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任
意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、
蜂窝网络芯片等的任意组合。
[0029] 外围接口108可以配置为将电子设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输
入设备以及显示器、扬声器、振动器、指示灯等输出设备。
[0030] 总线110可以被配置为在电子设备100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器‑存储器总线)、外部
总线(USB端口、PCI‑E总线)等。
[0031] 需要说明的是,尽管上述设备仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其
他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本公开实施
例方案所必需的组件,而不必包含图中所示的全部组件。
[0032] 图1B示出了根据本公开实施例的示例性编译器120的示意图。
[0033] 编译器120可以基于待编译的计算机代码来生成目标代码的计算机程序。待编译的计算机代码又可以称为源代码。通常,编写源代码的源语言是高级编程语言。高级编程语
言可以例如是C++、Java等软件编程语言或VHDL、Verilog、SystemVerilog等硬件描述语言。
目标代码则可以是例如汇编代码、机器码等。
[0034] 编译器120例如可以存储在图1A所示的存储器104中,并且由处理器102执行。
[0035] 如图1B所示,编译器120可以包括前端122、中端124以及后端126。
[0036] 前端122可以用于根据具体的源语言来分析源代码的词法、语法、语义。
[0037] 在源代码的词法、语法、语义分析完成后,中端124可以将源代码转换为中间表示(或中间代码),并可以优化该中间表示。例如,中端124可以移除无用的代码、移除不可访问
的代码、清除未使用的变量等。优化后的中间表示则可以被传递给后端126进行进一步处
理。
[0038] 后端126可以根据目标处理器(例如,图1A的处理器102)的架构来进一步优化中间表示,并生成目标代码。通常,目标代码是机器码。
[0039] 可以理解的是,编译器的结构不限于图1B的示例。例如,前端122和中端124可以被合称为编译器的前端,或者,中端124和后端126可以被合称为编译器的后端。
[0040] 图2示出了根据本公开实施例的仿真工具200的示意图。仿真工具200可以是运行在电子设备100上的计算机程序。
[0041] 在芯片设计领域,通常可以利用仿真工具对一个设计进行仿真。仿真工具例如可以是芯华章科技股份有限公司出品的GalaxSim仿真工具。图2示出的示例性仿真工具200可
以包括编译器120和仿真器210。编译器120可以将设计202编译为目标代码204,仿真器210
可以根据目标代码204进行仿真,并将仿真结果206输出。例如,仿真工具200可以将仿真结
果(例如,仿真波形图)经由图1A的外围接口108输出到输出设备上(例如,显示在显示器
上)。
[0042] 图3A示出了关于虚拟接口的示例性代码300的示意图。
[0043] 如图3A所示,代码300可以包括物理接口的定义302、模块的定义304和程序的定义306。该程序可以是模块top的测试程序。
[0044] 在SystemVerilog中,虚拟接口(virtual interface)是一种指向物理接口的指针。通常,以类的形式来提供连接点,从而使得物理接口中的信号可以通过虚拟接口来传
递。在SystemVerilog中,由于物理接口的本质是静态的,而类和程序是动态的,所以无法在
类或程序中定义物理接口,只能在类或程序中定义虚拟接口作为参数来传递信号给物理接
口。
[0045] 因此,程序的定义306还可以包括虚拟接口(例如,接口vi)的定义3062、虚拟接口与物理接口(例如,接口top.i0)的连接3064、虚拟接口的赋值3066。
[0046] 在一些实施例中,虚拟接口与物理接口的连接3064可以是虚拟接口的第一端口(例如,端口vi.a)与物理接口的第二端口(例如,端口a)之间的连接,使得虚拟接口的第一
端口可以与物理接口的第二端口传递信号。在一些实施例中,虚拟接口的赋值3066可以是
向虚拟接口的第一端口(例如,端口vi.a)或第三端口(例如,端口vi.b)进行赋值,赋值还可
以进一步分为向虚拟接口写数据(例如,向端口vi.a写数据)和从虚拟接口读数据(例如,从
端口vi.b读数据)。通过代码300,将实际的物理接口与虚拟接口进行连接,并可以通过虚拟
接口读取物理接口的信号或向物理接口输出信号。
[0047] 在现有技术中,为了实现虚拟接口与物理接口之间通过传递参数而实现信号传递的功能,在编译代码300时,编译器120还可以创建一个与虚拟接口对应的镜像类(mirror 
class)。例如,当编译器120处理虚拟接口vi时,可以相应地生成一个镜像类的定义并将其
实例化。
[0048] 图3B示出了镜像类的示例性代码310的示意图。如图3B所示,镜像类可以表示为intf_C,代码310可以包括镜像类的定义312和镜像类的实例化314。
[0049] 在完成镜像类的定义和实例化之后,编译器120在编译图3A的测试程序时,可以将虚拟接口与物理接口的连接过程(例如,vi = top.i0)通过编译器120的系统任务(例如,$
refassign)来实现。
[0050] 图3C示出了通过系统任务实现虚拟接口与物理接口的连接的示例性代码320的示意图。如图3C所示,代码320可以包括对镜像类的示例vi_c的初始化322和系统任务324,其
中,$refassign是编译器120的系统任务,其会在系统任务中的第二个参数(例如,端口
top.i0.a或top.i0.b)发生变化时,将该第二个参数的值赋予系统任务中的第一个参数(例
如,镜像类vi_c.a或vi_c.b)。
[0051] 这样,编译器120就完成了对虚拟接口的实现。
[0052] 基于前面所述,编译器120为了实现虚拟接口的功能,需要创建一个镜像类(例如,intf_C)。这个镜像类是根据参与赋值的实际的物理接口来创建的。因此,每次都需要根据
实际的物理接口(例如,top.i0)来生成一个镜像类。这个过程本身是消耗系统资源的,例
如,编译器120的编译时间和算力。
[0053] 在一些情形下,编译器120可能采用分割编译的技术,而分割编译一般会将待测设备(DUT)与测试平台(testbench)分开进行编译,这会引入跨模块引用信号(cross module 
reference,简称XMR)。然而,编译器120的系统任务$refassign处理XMR信号是非常有难度
的。
[0054] 此外,引用类类型(ref)的实现也很复杂。
[0055] 由于这些问题的存在,导致编译器120在实现虚拟接口功能时效率并不高,并且实现方式较为复杂。例如,在SystemVerilog语法中,可以通过@ vi.a来检测虚拟接口的端口
vi.a的变化,并在虚拟接口的端口vi.a对应的镜像类vi_c.a发生变化时进行相应的动作。
在现有技术中,由于是通过镜像类实现虚拟接口,在运行时(runtime)实际上检测的是ref 
reg a类型的数据。而监控ref reg a的变化对于编译器而言则需要额外提供相应函数来实
现,加重了计算的负担和实现的难度。
[0056] 鉴于此,本公开实施例提供了一种仿真逻辑系统设计的虚拟接口的仿真工具及方法。
[0057] 图4A示出了本公开实施例所提供的仿真工具400的示例性结构示意图。
[0058] 与仿真工具200类似,仿真工具400可以包括编译器402和仿真器404。
[0059] 编译器402可以接收设计406。其中,设计406可以是包括虚拟接口的描述4062的代码300。例如,如图3A所示,所述虚拟接口可以包括第一端口(例如,端口vi.a),所述物理接
口包括第二端口(例如,端口a)。设计406中的虚拟接口的描述4062可以包括虚拟接口的定
义3062、所述虚拟接口与所述物理接口的连接3064和所述虚拟接口的第一端口(例如,端口
vi.a)或第三端口(例如,端口vi.b)的赋值3066。基于虚拟接口的描述,该虚拟接口可以用
于与设计406的物理接口交换数据。例如,如图3A所示,该虚拟接口可以与设计406的顶层模
块top的物理接口连接并交换数据。
[0060] 为了使设计406中的相关信号可以动态地通过虚拟接口传递到物理接口,在编译器402接收到设计406并获得虚拟接口的描述4062之后,编译器402可以基于该虚拟接口的
描述4062,生成与该虚拟接口关联的句柄(handle)命令。在一些实施例中,该句柄命令可以
是在编译器402对设计406进行编译的过程中生成的。
[0061] 在一些实施例中,在检测到设计406中的虚拟接口的定义3062时,编译器402可以基于该虚拟接口的定义3062,生成用于初始化与虚拟接口的端口对应的句柄的句柄初始化
命令,用以在运行设计406的目标代码408时对句柄进行初始化。
[0062] 图4B示出了根据本公开实施例的一种示例性句柄命令420的示意图。在一些实施例中,如图4B所示,句柄命令420可以是用于初始化与虚拟接口的第一端口(例如,vi.a)对
应的第一句柄(例如,vpi_handle_vi_a)的句柄初始化命令422,也可以是用于初始化与虚
拟接口的第三端口(例如,vi.b)对应的第二句柄(例如,vpi_handle_vi_b)的句柄初始化命
令424。如图4B所示,句柄vpi_handle_vi_a和vpi_handle_vi_b被初始化为空。
[0063] 在一些实施例中,在检测到设计406中的虚拟接口与物理接口的连接3064时,编译器402还可以基于虚拟接口与物理接口的该连接3064,生成用于将句柄的值传递给物理接
口的端口的句柄连接命令,用以在运行设计406的目标代码408时完成虚拟接口与物理接口
之间的连接。
[0064] 图4C示出了根据本公开实施例的又一种示例性句柄命令430的示意图。在一些实施例中,如图4C所示,句柄命令430可以是用于将第一句柄(例如,vpi_handle_vi_a)的值传
递给物理接口的第二端口(例如,top.i0.a)的句柄连接命令432,也可以是用于将第二句柄
(例如,vpi_handle_vi_b)的值传递给物理接口的第四端口(例如,top.i0.b)的句柄连接命
令434。
[0065] 在一些实施例中,在检测到设计406中的虚拟接口的端口的赋值3066时,编译器402还可以基于虚拟接口的端口的赋值,生成用于向端口对应的句柄赋值的句柄赋值命令,
用以在运行设计406的目标代码408时向虚拟接口的端口对应的句柄进行赋值。
[0066] 图4D和图4E分别示出了根据本公开实施例的示例性句柄命令440和450的示意图。在一些实施例中,如图4D和图4E所示,句柄命令可以是用于向第一句柄赋值的句柄赋值命
令440或450。其中,如图4D所示,句柄命令可以是用于向第一句柄(例如,vpi_handle_vi_a)
写数据的句柄赋值命令440;如图4E所示,句柄命令还可以是用于从第一句柄读数据的句柄
赋值命令450。
[0067] 编译器402对设计406进行编译之后,可以得到目标代码408。而在编译设计406的过程中,当生成句柄命令之后,编译器402还可以进一步对句柄命令进行编译以在编译后的
目标代码408中形成该句柄命令对应的表达4082(例如,汇编代码或机器码)。这样,仿真器
404后续在运行设计406对应的目标代码408时,可以根据该句柄命令在目标代码408中对应
的表达来执行与所述虚拟接口相关的操作。
[0068] 在编译器402对设计406完成编译之后,仿真器404可以运行目标代码408以完成设计406的仿真进而输出仿真结果410。进一步地,仿真器404在运行目标代码408时,仿真器
404可以基于与虚拟接口关联的句柄命令(此时已被编译为目标代码408中与句柄命令对应
的表达4082)执行与虚拟接口相关的操作,从而对设计406进行仿真。
[0069] 在一些实施例中,仿真器404可以运行句柄初始化命令422或424,从而初始化与虚拟接口的第一端口(例如,vi_a)或第三端口(例如,vi_b)对应的第一句柄或第二句柄。在对
句柄进行初始化之后,可以对句柄进行赋值。因此,在初始化第一句柄或第二句柄之后,仿
真器404还可以运行句柄连接命令432或434,从而将第一句柄或第二句柄的值传递给物理
接口的第二端口或第四端口,进而建立虚拟接口的端口与物理接口的对应端口之间的连
接。在建立虚拟接口与物理接口的连接之后,仿真器404可以运行句柄赋值命令440或450,
从而向第一句柄赋值(例如,读数据或写数据)。类似地,也可以向第二句柄进行赋值,在此
不再赘述。
[0070] 这样,仿真器404在运行(runtime)阶段就可以基于句柄命令完成与虚拟接口相关的操作。
[0071] 本公开实施例提供的仿真逻辑系统设计的虚拟接口的方法的仿真工具,由于在编译阶段预先生成了与虚拟接口关联的句柄命令,从而可以仅在运行设计对应的目标代码时
基于该句柄命令执行与所述虚拟接口相关的操作,如此,则不必在编译阶段引入镜像类,也
不存在编译阶段的信号传递,也避免了XMR信号的产生和相应的处理,从而节约了编译时间
和算力消耗。
[0072] 图5示出了本公开实施例所提供的仿真逻辑系统设计的虚拟接口的示例性方法500的流程示意图。方法500可以由图1A的电子设备100执行。例如,方法500可以由运行在电
子设备100上的仿真工具400执行。该方法500可以具体包括以下步骤。
[0073] 在步骤502,仿真工具400可以接收逻辑系统设计(例如,图4A的设计406)中虚拟接口(例如,图3A的vi)的描述(例如,图4A的描述4062)。其中,所述虚拟接口可以用于与所述
逻辑系统设计的物理接口(例如,图3A的top.i0)交换数据。在一些实施例中,所述虚拟接口
可以包括第一端口(例如,图3A的vi.a),所述物理接口可以包括第二端口(例如,图3C的
top.i0.a)。并且所述虚拟接口的描述可以进一步包括:所述虚拟接口的定义(例如,图3A的
虚拟接口的定义3062)、所述虚拟接口与所述物理接口的连接(例如,图3A的虚拟接口与物
理接口的连接3064)、或所述虚拟接口的第一端口的赋值(例如,图3A的虚拟接口的第一端
口的赋值3066)。
[0074] 在步骤504,仿真工具400可以基于所述虚拟接口的描述,生成与所述虚拟接口关联的句柄命令。其中,所述句柄命令用于在运行所述逻辑系统设计时执行与所述虚拟接口
相关的操作。
[0075] 在一些实施例中,仿真工具400可以基于所述虚拟接口的描述,在编译所述逻辑系统设计时生成与所述虚拟接口关联的句柄命令。此外,仿真工具400还可以进一步地在生成
句柄命令之后对句柄命令进行编译以生成目标代码中对应的表达(例如,图4A的表达
4082)。
[0076] 在一些实施例中,所述句柄命令包括:用于初始化与所述第一端口(例如,图4B的端口vi.a或vi.b)对应的第一句柄(例如,图4B的vpi_handle_vi_a或vpi_handle_vi_b)的
句柄初始化命令(例如,图4B的句柄初始化命令422或424)、用于将所述第一句柄的值传递
给所述第二端口(例如,图4C的端口top.i0.a或top.i0.b)的句柄连接命令(例如,图4C的句
柄连接命令432或434)、或用于向所述第一句柄赋值的句柄赋值命令(例如,图4D的句柄赋
值命令440或图4E的句柄赋值命令450)。
[0077] 在一些实施例中,基于所述虚拟接口的描述,生成与所述虚拟接口关联的句柄命令进一步包括:基于所述虚拟接口的定义(例如,图3A的虚拟接口的定义3062),生成用于初
始化与所述第一端口对应的第一句柄的句柄初始化命令;基于所述虚拟接口与所述物理接
口的连接(例如,图3A的虚拟接口与物理接口的连接3064),生成用于将所述第一句柄的值
传递给所述第二端口的句柄连接命令;或,基于所述虚拟接口的第一端口的赋值(例如,图
3A的虚拟接口的第一端口的赋值3066),生成用于向所述第一句柄赋值的句柄赋值命令。
[0078] 在生成句柄命令之后,在步骤506,仿真工具400可以基于所述与所述虚拟接口关联的句柄命令,对所述逻辑系统设计进行仿真。
[0079] 在一些实施例中,基于所述与所述虚拟接口关联的句柄命令,对所述逻辑系统设计进行仿真,进一步包括:响应于运行所述句柄初始化命令,初始化与所述第一端口对应的
第一句柄;响应于运行所述句柄连接命令,将所述第一句柄的值传递给所述第二端口;或,
响应于运行所述句柄赋值命令,向所述第一句柄赋值。
[0080] 需要说明的是,本公开的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式
场景的情况下,这多台设备中的一台设备可以只执行本公开的方法中的某一个或多个步
骤,这多台设备相互之间会进行交互以完成所述的方法。
[0081] 需要说明的是,上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施
例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求
示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并
行处理也是可以的或者可能是有利的。
[0082] 基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指
令用于使所述计算机执行如上任一实施例所述方法。
[0083] 本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或
其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器
(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器
(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读
存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或
其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
[0084] 上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
[0085] 所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例
或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如
上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。
[0086] 另外,为简化说明和讨论,并且为了不会使本公开难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以
以框图的形式示出装置,以便避免使本公开难以理解,并且这也考虑了以下事实,即关于这
些框图装置的实施方式的细节是高度取决于将要实施本公开的平台的(即,这些细节应当
完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的
示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节
的情况下或者这些具体细节有变化的情况下实施本公开。因此,这些描述应被认为是说明
性的而不是限制性的。
[0087] 尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例
如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
[0088] 本公开旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包
含在本公开的保护范围之内。