CN112131806A - 验证设计的编译方法、电子设备及存储介质 - Google Patents
验证设计的编译方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112131806A CN112131806A CN202011332963.3A CN202011332963A CN112131806A CN 112131806 A CN112131806 A CN 112131806A CN 202011332963 A CN202011332963 A CN 202011332963A CN 112131806 A CN112131806 A CN 112131806A
- Authority
- CN
- China
- Prior art keywords
- design
- sub
- compiling
- type
- target sub
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
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)
- Stored Programmes (AREA)
Abstract
本公开提供一种验证设计的编译方法、电子设备及存储介质,所述验证设计与多个子设计关联。该编译方法包括:在所述多个子设计中确定目标子设计的类型;根据所述目标子设计的类型,确定与所述目标子设计的类型对应的编译单元;以及利用所述编译单元对所述目标子设计进行编译。
Description
技术领域
本公开涉及计算机软件技术领域,尤其涉及一种验证设计的编译方法、电子设备及存储介质。
背景技术
在集成电路的验证领域,仿真一般是指将验证设计进行编译之后在计算机上运行,以对设计的各种功能进行仿真测试。验证设计可以采用软件编程语言或硬件描述语言进行描述,通常包括多种不同类型的子设计,例如,包括待测设备(Device Under Test,简称DUT)和测试平台(Testbench)。
然而,在对验证设计进行编译时,一般采用一个编译器对整个验证设计进行优化和编译或者对整个验证设计的各子设计依次进行优化和编译。单一编译器无法适应性地对具体的子设计进行优化和编译,并且任何一个子设计被修改之后,都需要对整个验证设计进行重新编译,这些降低了编译效率。
发明内容
有鉴于此,本公开提出了一种验证设计的编译方法、电子设备及存储介质。
本公开的第一方面,提供了一种验证设计的编译方法,其中,所述验证设计与多个子设计关联,所述编译方法包括:在所述多个子设计中确定目标子设计的类型;根据所述目标子设计的类型,确定与所述目标子设计的类型对应的编译单元;以及利用所述编译单元对所述目标子设计进行编译。
本公开的第二方面,提供了一种电子设备,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以进行第一方面所述的方法。
本公开的第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子装置的一组指令,该组指令用于使所述电子装置执行第一方面所述的方法。
本公开实施例提供的验证设计的编译方法、电子设备及存储介质,根据目标子设计的类型确定对应的编译单元并利用该编译单元对目标子设计进行编译,使得验证设计的各子设计可以利用与其类型对应的编译单元来分别进行编译,从而在对任一子设计进行修改之后只需要利用该子设计对应的编译单元对该子设计进行重新编译即可,而不再需要对验证设计的整体进行重新编译,提高了编译效率。
附图说明
为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A示出了本公开实施例所提供的一种示例性电子设备的结构示意图。
图1B示出了根据本公开实施例的示例性编译器的示意图。
图2示出了根据本公开实施例的示例性仿真工具的示意图。
图3A示出了根据本公开实施例的示例性编译装置的示意图。
图3B示出了根据本公开实施例的示例性设计的示意图。
图3C示出了根据本公开实施例的示例性编译指令的示意图。
图3D示出了根据本公开实施例的另一示例性设计的示意图。
图3E示出了根据本公开实施例的又一示例性设计的示意图。
图3F示出了根据本公开实施例的一个示例性编译装置的示意图。
图3G示出了根据本公开实施例的另一个示例性编译装置的示意图。
图3H示出了根据本公开实施例的示例性编译单元的示意图。
图4示出了本公开实施例所提供的一种示例性方法的流程示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
在验证设计中,待测设备(Device Under Test,简称DUT)和测试平台(Testbench)在设计上有着较大区别,使得编译器在对验证设计进行编译时,通常需要对验证设计进行相应的优化。但是由于现有的编译器是一次性完整地编译验证设计,因此,在进行设计优化时,编译器可能会尝试根据测试平台的优化方法对待测设备进行优化,并在优化失败后再根据待测设备的优化方法去优化待测设备,导致编译效率不高。类似地,优化测试平台的时候也存在这样的问题。
此外,在一些场景下,待测设备或待测设备的某个模块的设计可能需要反复修改,而每次修改待测设备或待测设备的某个模块之后,总是要重新编译包含修改后的待测设备(或其某个模块)的整个验证设计。也就是说,即使只是部分修改了待测设备的设计,整个验证设计也都会被重新编译。这降低了编译的效率。
鉴于此,本公开实施例提供了一种验证设计的编译方法,其中,所述验证设计与多个子设计关联,所述编译方法包括:在所述多个子设计中确定目标子设计的类型;根据所述目标子设计的类型,确定与所述目标子设计的类型对应的编译单元;以及,利用所述编译单元对所述目标子设计进行编译。本公开实施例提供的验证设计的编译方法,根据目标子设计的类型确定对应的编译单元并利用该编译单元对目标子设计进行编译,使得验证设计的各子设计可以利用与其类型对应的编译单元来分别进行编译,从而在对任一子设计进行修改之后只需要利用该子设计对应的编译单元对该子设计进行重新编译即可,而不再需要对验证设计的整体进行重新编译,提高了编译效率。
图1A示出了本实施例所提供的一种电子设备100的结构示意图。电子设备100例如可以是计算机主机。该电子设备100可以包括:处理器102、存储器104、网络接口106、***接口108和总线110。其中处理器102、存储器104、网络接口106和***接口108通过总线110实现彼此之间在设备内部的通信连接。
处理器102可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(Application Specific Integrated Circuit,ASIC)或者一个或多个集成电路。处理器102可以用于执行与本公开描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1A所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。例如,如图1A所示,存储的数据可以包括程序指令(例如,用于实现本公开的技术方案的程序指令)以及待处理的数据(例如,存储器104可以存储在编译过程产生的临时代码)。处理器102也可以访问存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为经由网络向电子设备100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
***接口108可以配置为将电子设备100与一个或多个***装置连接,以实现信息输入及输出。例如,***装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线110可以被配置为在电子设备100的各个组件(例如处理器102、存储器104、网络接口106和***接口108)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述设备仅示出了处理器102、存储器104、网络接口106、***接口108和总线110,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本公开实施例方案所必需的组件,而不必包含图中所示的全部组件。
图1B示出了根据本公开实施例的示例性编译器120的示意图。
编译器120可以基于待编译的计算机代码来生成目标代码的计算机程序。待编译的计算机代码又可以称为源代码。通常,编写源代码的源语言是高级编程语言。高级编程语言可以例如是C++、Java等软件编程语言或VHDL、Verilog、SystemVerilog等硬件描述语言。目标代码则可以是例如汇编代码、机器码等。
编译器120例如可以存储在图1A所示的存储器104中,并且由处理器102执行。
如图1B所示,编译器120可以包括前端122、中端124以及后端126。
前端122可以用于根据具体的源语言来分析源代码的词法、语法、语义。
在源代码的词法、语法、语义分析完成后,中端124可以将源代码转换为中间表示(或中间代码),并可以优化该中间表示。例如,中端124可以移除无用的代码、移除不可访问的代码、清除未使用的变量等。优化可以包括机器相关的优化和机器无关的优化。其中,机器相关的优化,例如,可以是对测试平台(Testbench)的优化,并可以利用一些测试平台的特性来帮助优化。机器无关的优化,例如,可以是待测设备(Device Under Test,简称DUT)的优化。优化后的中间表示则可以被传递给后端126进行进一步处理。
后端126可以根据目标处理器(例如,图1A的处理器102)的架构来进一步优化中间表示,并生成目标代码。通常,目标代码是机器码。
可以理解的是,编译器的结构不限于图1B的示例。例如,前端122和中端124可以被合称为编译器的前端。图2示出了根据本公开实施例的仿真工具200的示意图。仿真工具200可以是运行在电子设备100上的计算机程序。
在芯片设计领域,通常可以利用仿真工具对一个设计进行仿真。仿真工具例如可以是芯华章科技股份有限公司出品的GalaxSim仿真工具。图2示出的示例性仿真工具200可以包括编译器120和仿真器210。编译器120可以将设计202编译为目标代码204,仿真器210可以根据目标代码204进行仿真,并将仿真结果206输出。例如,仿真工具200可以将仿真结果(例如,仿真波形图)经由图1A的***接口108输出到输出设备上(例如,显示在显示器上)。
在一些实施例中,设计202可以是一个用SystemVerilog语言编写的验证环境,例如Universal Verification Methodology(UVM)环境。通过利用仿真工具200仿真设计202,可以构建一个UVM环境,并可以在该UVM环境中对一个待测设备(Device Under Test,简称DUT)进行验证。
本公开的实施例提供了一种用于提高编译效率的编译装置。
图3A示出了根据本公开实施例的编译装置300的示意图。
如图3A所示,编译装置300可以包括分析单元304以及若干编译单元306a-306c。
编译装置300可以将设计302编译成目标代码308。设计302可以与多个子设计(或模块)关联。该设计302,例如,可以是一个验证设计。图3B示出了根据本公开实施例的设计的示意图。设计302可以包括若干子设计3022a-3022c。子设计3022a、3022b或3022c可以是待测设备(Device Under Test,简称DUT)、待测设备的一个或多个模块、程序包(Package)或测试平台(Testbench)。可以理解的是,这里仅是示例性地对子设计进行了例举,但是在具体实施过程中,该设计还可以包括验证该设计时所必需或可选的其他子设计。在一些实施例中,设计302及其子设计3022a-3022c可以采用同一种语言进行描述,例如,采用VHDL、Verilog、SystemVerilog等硬件描述语言进行描述。
编译装置300的分析单元304可以先在多个子设计中确定一个目标子设计(例如,子设计3022a),并可以进一步确定该目标子设计的类型。子设计的类型可以包括类型310a-310c,例如,类型310a可以是待测设备类型,类型310b可以是测试平台类型,类型310c可以是程序包类型。例如,子设计3022a的类型可以是待测设备类型,子设计3022b的类型可以是测试平台类型,子设计3022c的类型可以是程序包类型。可以理解的是,子设计的类型不限于上述310a-310c,而是可以根据实际应用而包括更多的类型。
在一些实施例中,如图3A所示,确定目标子设计的类型可以是根据来自用户的编译指令312确定所述目标子设计的类型。例如,以芯华章科技股份有限公司出品的GalaxSim仿真工具的GalaxSim环境为例,来自用户的编译指令312可以是如图3C所示的形式。
图3C示出了根据本公开实施例的示例性编译指令312。编译指令312可以包括文件参数3122和类型参数3124。
文件参数3122(例如,“tb.v”)可以指示包括待编译的目标子设计的源文件。在图3C的例子中,文件参数3122指示该目标子设计的源文件的名称为tb.v。
类型参数3124(例如,“testbench”)可以是用户指定的编译参数,指示了目标子设计的类型。在图3C的例子中,类型参数3124指示tb.v是一个测试平台类型的子设计。因此,根据编译指令312中的类型参数3124,可以确定目标子设计的类型。
其他示例性编译指令还可以包括如下形式。
GalaxSim dut.v _dir DUT_LIB -dut
GalaxSim pak.v _dir PAK_LIB -pak
其中,“dut.v”为文件参数,指示该子设计的源文件的名称为dut.v,“-dut”为类型参数,亦即用户指定的编译参数,指示了目标子设计的类型,即指示dut.v是一个待测设备类型的子设计;“pak.v”为文件参数,指示该子设计的源文件的名称为pak.v,“-pak”为类型参数,亦即用户指定的编译参数,指示了目标子设计的类型,即指示pak.v是一个程序包类型的子设计。
在一些实施例中,编译指令312还可以包括目录参数3126(例如,“_dir TB_LIB”)。目录参数3126可以指示编译后的文件(例如,.o文件)可以存放在TB_LIB这个目录下面。
又例如,在上述示例中,_dir DUT_LIB指示编译后的文件可以存放在DUT_LIB目录下,_dir PAK_LIB指示编译后的文件可以存放在PAK_LIB目录下。
可以理解的是,在必要时,来自用户的编译指令312还可以进一步包括其他参数。
在一些实施例中,确定目标子设计的类型还可以通过分析目标子设计的特征,并根据目标子设计的特征来确定目标子设计的类型。
例如,编译装置300的分析单元304可以识别设计302中的子设计(例如,待测设备、测试平台或程序包)的特征,进而根据该特征确定子设计的类型。在一些实施例中,该特征可以是设计302中的特定描述,因此,可以通过识别设计302的代码来确定子设计的类型。
图3D示出了根据本公开实施例的另一示例性设计302的示意图。
如图3D所示,设计302包括多个子设计,多个子设计中包括待测设备3022和测试平台3024。例如,当子设计为待测设备3022(或其一个或多个模块)时,该子设计一般是可以被综合的(synthesized),因此,根据该子设计的描述可以确定其类型为待测设备类型;又比如,当子设计为测试平台时,由于测试平台通常包括初始化块30242(initial block)、赋值语句30244(assign statement)等用于构建测试环境的特定描述,因此是不可综合的,从而可以通过识别该子设计中的特定描述来确定其类型。由此可见,编译装置300的分析单元304通过识别子设计的描述或特定描述,进而可以判断子设计的类型。
在一些实施例中,该特征还可以是在设计302或子设计3022a、3022b或3022c的描述中添加的编译参数(例如,“-testbench”),用以确定目标子设计的类型。
图3E示出了根据本公开实施例的又一示例性设计302的示意图。
如图3E所示,设计302包括多个子设计,多个子设计中包括待测设备3022、测试平台3024和程序包3026。每个子设计可以分别包括各自的编译参数,例如,待测设备3022包括编译参数30222(例如,“-dut”),测试平台3024包括编译参数30246(例如,“-testbench”)、程序包3026包括编译参数30262(例如,“-pak”)。编译装置300的分析单元304在识别子设计中的编译参数之后,可以进一步确定该子设计对应的类型。
在确定目标子设计的类型之后,编译装置300可以根据目标子设计的类型,确定与所述目标子设计的类型对应的编译单元。
例如,在前述示例中,用户指定的编译参数为“-testbench”,因此,编译装置300可以根据编译参数知道目标子设计的类型为测试平台类型(例如,图3A的类型310b),进而可以确定与测试平台类型对应的编译单元(例如,图3A的编译单元306b)。再比如,当编译装置300通过识别目标子设计的特征而得知其类型时,也可以确定目标子设计对应的编译单元。
在一些实施例中,编译单元可以是专用于编译某一类型的子设计的编译单元。例如,如图3A所示,当目标子设计的类型为类型310a(例如,待测设备类型)时,与目标子设计的类型对应的编译单元可以是编译单元306a,当目标子设计的类型为类型310b(例如,测试平台类型)时,与目标子设计的类型对应的编译单元可以是编译单元306b,当目标子设计的类型为类型310c(例如,程序包类型)时,与目标子设计的类型对应的编译单元可以是编译单元306c。可以理解的是,这里仅是示例性地对子设计类型和编译单元的对应关系进行了列举,但是在具体实施过程中,该设计还可以包括验证该设计时所必需或可选的其他子设计,因此,该编译装置300也可以包括与这些子设计对应的编译单元。
在确定目标子设计对应的编译单元之后,编译装置300可以利用确定的编译单元(例如,图3A的编译单元306a、306b或306c)对目标子设计进行编译。
在一些实施例中,对目标子设计进行编译的过程可以包括分析目标子设计的词法、语法、语义,将目标子设计转换为中间表示(或中间代码),并优化该中间表示,生成目标子设计对应的目标代码。
在一些实施例中,编译单元可以是专用于编译某一类型的子设计的一个编译器或一个编译器中的一个编译流程。
图3F示出了根据本公开实施例的一个示例性编译装置300的示意图。在该编译装置300中,编译单元可以是专用于编译某一类型的子设计的一个编译器306a’、306b’或306c’。
当编译单元为编译器时,编译指令312可以是如下形式。
testbench_compiler tb.v
这样,就明确采用测试平台类型对应的编译器(testbench_compiler)来编译测试平台(tb.v)。
类似地,编译指令312还可以是如下形式。
dut _compiler dut.v
pak _compiler pak.v
其中,dut _compiler和pak _compiler分别可以是编译待测设备(dut.v)的编译器和编译程序包(pak.v)的编译器。
图3G示出了根据本公开实施例的另一个示例性编译装置300的示意图。在该编译装置300中,编译单元可以是一个编译器306中专用于编译某一类型的子设计的编译流程306a”、306b”或306c”。
在一些实施例中,利用编译单元对目标子设计进行编译可以进一步包括根据编译参数调用与该编译参数对应的编译单元,来对目标子设计(例如,测试平台、待测设备或程序包)进行编译。其中,该编译参数可以是来自用户的编译指令312中的编译参数(例如,图3C的类型参数3124),也可以是设计302中添加的编译参数(例如,图3E的编译参数30222、30246或30262)。
在一些实施例中,利用所述编译单元对所述目标子设计进行编译可以进一步包括根据所述目标子设计的类型,利用所述编译单元对所述目标子设计进行优化。
图3H示出了根据本公开实施例的编译单元306a的示意图。
如图3H所示,编译单元306a可以进一步包括前端3062a、中端3064a和后端3066a。其中,前端3062a可以用于根据子设计的具体源语言来分析子设计的词法、语法、语义。在子设计的词法、语法、语义分析完成后,中端3064a可以将子设计转换为中间表示(或中间代码),并可以优化该中间表示。后端3066a可以根据中间表示生成子设计的编译后文件。
由此可见,在对子设计进行编译的过程中,编译单元306a的中端3064a可以对子设计进行优化。并且,由于该编译单元306a是根据该子设计的类型所选择的编译单元,因此,该编译单元306a可以基于子设计的类型采用该子设计对应的优化方法来对该子设计进行优化,而可以不再利用其他类型子设计对应的优化方法来优化该子设计,从而避免了无用的优化过程。
识别子设计的类型可以通过识别子设计的特征来完成,因此,在一些实施例中,利用编译单元对目标子设计进行优化可以进一步包括利用所述编译单元基于所述目标子设计的特征对所述目标子设计进行优化。该特征,例如,可以是子设计中的特定描述,还可以是子设计的描述中添加的编译参数。
在一些实施例中,不同类型的子设计,其优化方法可能不同。例如,待测设备反映了设计的硬件结构,因此可以采用一些对电路拓扑结构进行优化的方法来对待测设备进行优化。再比如,测试平台是测试用例的流程,更接近于计算机语言,因此可以采用一些对编译语言进行优化的方式来对测试平台进行优化。
经过优化的子设计,可以通过后端3066a生成相应的编译后文件,并可被存储在相应的库。
按照上述流程对设计302中的各个子设计3022a-3022c完成编译后,可以进一步将对应于子设计的库链接成最终的编译后文件。链接库的代码可以是如下形式。
GalaxSim -o sim _sharelib TB_LIB DUT_LIB PAK_LIB
通过上述指令,将每个单独编译产生的.o文件链接形成最终的编译后文件,亦即目标代码308。
由于每个单独的子设计(例如,子设计3022a-3022c)并非完整设计(例如,设计302),例如,有些信号可能存在未赋值的情况。因此,在这个阶段,可以将前期产生的存在不完全编译的代码在这个阶段实现完全编译。
至此,完成了一个包括多个子设计(例如,待测设备、测试平台和程序包)的完整的验证设计的编译。
本公开实施例提供的编译装置300,通过将设计切分为多个子设计,并根据子设计的类型分别设置对应的编译单元对其进行编译,使得不同类型的子设计(例如,测试平台、待测设备或程序包)可以分别进行编译,从而当用户仅对某个子设计(例如,tb.v)进行修改时,无需再次编译其他子设计(例如,dut.v和pak.v),从而实现快速有效的编译优化。
图4示出了本公开实施例所提供的一种示例性方法的流程示意图。
本公开实施例提供的验证设计的编译方法400,其中,所述验证设计(例如,图3A的设计302)与多个子设计(例如,图3B的子设计3022a-3022c)关联,所述编译方法400可以包括以下步骤。
在步骤402,可以在所述多个子设计中确定目标子设计的类型(例如,图3A的类型310a-310c)。在一些实施例中,所述多个子设计的类型包括待测设备类型、程序包类型或测试平台类型。
在一些实施例中,所述在所述多个子设计中确定目标子设计的类型进一步包括:根据来自用户的编译指令(例如,图3A的编译指令312)确定所述目标子设计的类型。
在一些实施例中,所述编译指令包括指示所述目标子设计的类型的编译参数(例如,图3C的类型参数3124),并且所述利用所述编译单元对所述目标子设计进行编译进一步包括:根据所述编译参数调用与所述编译参数对应的编译单元(例如,图3A的编译单元306a、306b或306c)。
在一些实施例中,所述在所述多个子设计中确定目标子设计的类型进一步包括:分析所述目标子设计的特征(例如,图3D的初始化块30242或赋值语句30244,或者,图3E的编译参数30222、30246、30262);以及根据所述目标子设计的特征来分别确定所述目标子设计的类型。
在步骤404,可以根据所述目标子设计的类型,确定与所述目标子设计的类型对应的编译单元(例如,图3A的编译单元306a、306b或306c)。
在一些实施例中,所述编译单元为:一个编译器(例如,图3F的编译器306a’、306b’或306c’),或者,一个编译器(例如,图3G的编译器306)中的编译流程(例如,图3G的编译流程306a”、306b”或306c”)。
在步骤406,可以利用所述编译单元对所述目标子设计进行编译。
在一些实施例中,所述利用所述编译单元对所述目标子设计进行编译进一步包括:根据所述目标子设计的类型,利用所述编译单元(例如,图3H的编译单元306a)对所述目标子设计进行优化。
在一些实施例中,所述利用所述编译单元对所述目标子设计进行优化进一步包括:利用所述编译单元基于所述目标子设计的特征对所述目标子设计进行优化。
本公开实施例提供的编译方法,通过将设计切分为多个子设计,并根据子设计的类型分别设置对应的编译单元对其进行编译,使得不同类型的子设计(例如,测试平台、待测设备或程序包)可以分别进行编译,从而当用户仅对某个子设计(例如,tb.v)进行修改时,无需再次编译其他子设计(例如,dut.v和pak.v),从而实现快速有效的编译优化。
需要说明的是,本公开的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
本公开实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述对本公开特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。 在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (7)
1.一种验证设计的编译方法,其中,所述验证设计与多个子设计关联,所述编译方法包括:
在所述多个子设计中确定目标子设计的类型;
根据所述目标子设计的类型,确定与所述目标子设计的类型对应的编译单元;以及
利用所述编译单元对所述目标子设计进行编译;
其中,所述在所述多个子设计中确定目标子设计的类型进一步包括:
分析所述目标子设计的特征;以及
根据所述目标子设计的特征来分别确定所述目标子设计的类型。
2.根据权利要求1所述的方法,其中,所述多个子设计的类型包括待测设备类型、程序包类型或测试平台类型。
3.根据权利要求1所述的方法,其中,所述利用所述编译单元对所述目标子设计进行编译进一步包括:
根据所述目标子设计的类型,利用所述编译单元对所述目标子设计进行优化。
4.根据权利要求3所述的方法,其中,所述利用所述编译单元对所述目标子设计进行优化进一步包括:
利用所述编译单元基于所述目标子设计的特征对所述目标子设计进行优化。
5.根据权利要求1所述的方法,其中,所述编译单元为:
一个编译器,或者
一个编译器中的编译流程。
6.一种电子设备,包括:
存储器,用于存储一组指令;以及
至少一个处理器,配置为执行该组指令以进行如权利要求1至5任意一项所述的方法。
7.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子装置的一组指令,该组指令用于使所述电子装置执行权利要求1至5任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011332963.3A CN112131806A (zh) | 2020-11-25 | 2020-11-25 | 验证设计的编译方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011332963.3A CN112131806A (zh) | 2020-11-25 | 2020-11-25 | 验证设计的编译方法、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112131806A true CN112131806A (zh) | 2020-12-25 |
Family
ID=73852094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011332963.3A Pending CN112131806A (zh) | 2020-11-25 | 2020-11-25 | 验证设计的编译方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112131806A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023123111A1 (zh) * | 2021-12-29 | 2023-07-06 | 华为技术有限公司 | 编译方法以及用于编译的装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030007643A1 (en) * | 2001-07-09 | 2003-01-09 | Liat Ben-Zur | Apparatus and method for installing a decryption key |
CN108334313A (zh) * | 2017-12-27 | 2018-07-27 | 苏州中晟宏芯信息科技有限公司 | 用于大型soc研发的持续集成方法、装置及代码管理*** |
CN110716946A (zh) * | 2019-10-22 | 2020-01-21 | 北京锐安科技有限公司 | 特征规则匹配库的更新方法、装置、存储介质及电子设备 |
-
2020
- 2020-11-25 CN CN202011332963.3A patent/CN112131806A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030007643A1 (en) * | 2001-07-09 | 2003-01-09 | Liat Ben-Zur | Apparatus and method for installing a decryption key |
CN108334313A (zh) * | 2017-12-27 | 2018-07-27 | 苏州中晟宏芯信息科技有限公司 | 用于大型soc研发的持续集成方法、装置及代码管理*** |
CN110716946A (zh) * | 2019-10-22 | 2020-01-21 | 北京锐安科技有限公司 | 特征规则匹配库的更新方法、装置、存储介质及电子设备 |
Non-Patent Citations (1)
Title |
---|
勇往直前996: "Qt Creator Pro文件根据不同编译器自动选择对应的第三方库", 《HTTPS://BLOG.CSDN.NET/WEIXIN_38293850/ARTICLE/DETAILS/102738416》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023123111A1 (zh) * | 2021-12-29 | 2023-07-06 | 华为技术有限公司 | 编译方法以及用于编译的装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112287569B (zh) | 用于仿真逻辑***设计的方法、电子设备及存储介质 | |
CN112632880B (zh) | 用于逻辑***设计的编译方法、电子设备及存储介质 | |
CN112597064B (zh) | 对程序进行仿真的方法、电子设备及存储介质 | |
CN113742221A (zh) | 生成测试用例的方法、电子设备及存储介质 | |
CN112434478B (zh) | 仿真逻辑***设计的虚拟接口的方法及相关设备 | |
CN115422866A (zh) | 用于在仿真器上仿真逻辑***设计的方法及相关设备 | |
CN114548027A (zh) | 在验证***中追踪信号的方法、电子设备及存储介质 | |
CN117910398A (zh) | 仿真逻辑***设计的方法、电子装置和存储介质 | |
CN112131806A (zh) | 验证设计的编译方法、电子设备及存储介质 | |
CN112232003B (zh) | 对设计进行仿真的方法、电子设备及存储介质 | |
CN115470125B (zh) | 基于日志文件的调试方法、设备以及存储介质 | |
CN113760751B (zh) | 生成测试用例的方法、电子设备及存储介质 | |
CN113377597B (zh) | 仿真***以及存储、读取仿真数据的方法 | |
CN114912396A (zh) | 基于虚拟接口实现逻辑***设计的物理接口的方法及设备 | |
CN114328062B (zh) | 校验缓存一致性的方法、装置和存储介质 | |
CN112506806B (zh) | 用于调试程序的方法、电子设备及存储介质 | |
CN115688643A (zh) | 仿真逻辑***设计的方法、设备及存储介质 | |
CN112989736B (zh) | 用于检测修改设计的错误实例的方法、设备及存储介质 | |
CN114169287B (zh) | 生成验证环境的连接示意图的方法、电子设备及存储介质 | |
US20240241809A1 (en) | Methods, electronic devices and storage media for executing assertions | |
CN115470737B (zh) | 生成数据流图的方法、电子设备及存储介质 | |
CN116861829B (zh) | 用于定位逻辑***设计中错误的方法、电子设备 | |
CN115828805A (zh) | 分割逻辑***设计的方法、设备及存储介质 | |
CN110489885B (zh) | 运算方法、装置以及相关产品 | |
CN117172168B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201225 |
|
RJ01 | Rejection of invention patent application after publication |