CN112632880A - 用于逻辑系统设计的编译方法、电子设备及存储介质 - Google Patents
用于逻辑系统设计的编译方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112632880A CN112632880A CN202011580430.7A CN202011580430A CN112632880A CN 112632880 A CN112632880 A CN 112632880A CN 202011580430 A CN202011580430 A CN 202011580430A CN 112632880 A CN112632880 A CN 112632880A
- Authority
- CN
- China
- Prior art keywords
- node
- tree structure
- system design
- logic system
- format file
- 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.)
- Granted
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/323—Translation or migration, e.g. logic to logic, hardware description language [HDL] translation or netlist translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
Abstract
本说明书一个或多个实施例提供一种用于逻辑系统设计的编译方法、电子设备及存储介质。该逻辑系统设计包括在多个层级分布的多个模块,该方法包括:获取与所述逻辑系统设计对应的第一标准延迟格式文件;根据所述标准延迟格式文件中的多个信号的描述,生成与所述逻辑系统设计对应的树结构,所述树结构包括由多个节点构成的多个分支;生成与所述多个分支分别对应的多个代码,用于代替所述第一标准延迟格式文件中的多个信号的描述以生成第二标准延迟格式文件;以及基于所述第二标准延迟格式文件和所述树结构来编译所述逻辑系统设计。
Description
技术领域
本说明书一个或多个实施例涉及计算机软件技术领域,尤其涉及一种用于逻辑系统设计的编译方法、电子设备及存储介质。
背景技术
在集成电路的验证领域,仿真一般是指将逻辑系统设计进行编译之后在计算机上运行,以对逻辑系统设计的各种功能进行仿真测试。对于用计算机来仿真硬件的逻辑系统设计而言,仿真软件无法提供实际硬件运行时的时序特征信息,需要利用标准延迟格式文件提供额外的时序特征信息来实现对实际运行时序特征进行仿真。
标准延迟格式文件中包括与逻辑系统设计中多个模块相对应的信号,在现有技术中利用标准延迟格式文件进行仿真时根据文件中信号描述格式顺序依次查找模块地址,这样的方式对于同一模块地址会重复查找多次,大大增加了仿真编译时间,降低工作执行效率。
发明内容
有鉴于此,本说明书一个或多个实施例的目的在于提出一种用于逻辑系统设计的编译方法、电子设备及存储介质。
本公开的第一个方面,提供了一种用于逻辑系统设计的编译方法,其中,所述逻辑系统设计包括在多个层级分布的多个模块,所述方法包括:获取与所述逻辑系统设计对应的第一标准延迟格式文件,所述标准延迟格式文件包括由所述多个模块以层级关系描述的多个信号,所述多个信号形成多对信号,所述标准延迟格式文件进一步包括所述多对信号之间的延迟值;根据所述标准延迟格式文件中的多个信号的描述,生成与所述逻辑系统设计对应的树结构,所述树结构包括由多个节点构成的多个分支;生成与所述多个分支分别对应的多个代码,用于代替所述第一标准延迟格式文件中的多个信号的描述以生成第二标准延迟格式文件;以及基于所述第二标准延迟格式文件和所述树结构来编译所述逻辑系统设计。
本公开的第二方面,提供了一种电子设备,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以进行第一方面所述的方法。
本公开的第三方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子装置的一组指令,该组指令用于使所述电子装置执行第一方面所述的方法。
本公开实施例提供的用于逻辑系统设计的编译方法、电子设备及存储介质,根据第一标准延迟格式文件中多个信号的表述生成与逻辑系统设计对应的树结构,利用树结构中多个分支对应的多个代码替代第一标准延迟格式文件中的多个信号描述生成第二标准延迟格式,基于所述第二标准延迟格式文件和所述树结构来编译所述逻辑系统设计,能够避免对同一模块地址的多次重复查找的情况,极大减少仿真编译工作中查找模块地址的工作量,缩短仿真编译工作时间,提高编译工作效率。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A示出了本公开实施例所提供的一种示例性电子设备的结构示意图。
图1B示出了根据本公开实施例的示例性编译器的示意图。
图2示出了根据本公开实施例的示例性仿真工具的示意图。
图3A示出了根据本公开实施例的示例性标准延迟格式文件的示意图。
图3B示出了根据本公开实施例的与逻辑系统设计对应的示例性树结构的示意图。
图3C示出了根据本公开实施例的的示例性标准延迟格式文件的示意图。
图4示出了本公开实施例所提供的一种用于逻辑系统设计的示例性编译方法的流程示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本说明书一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本说明书一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
在对逻辑系统设计进行仿真编译时,仿真软件无法提供实际硬件运行的时序特征信息,如信号传递的延迟信息、时序偏差信息等。因此需要利用标准延迟格式文件(standard delay format,SDF)来提供额外的时序特征信息,以实现对硬件逻辑系统设计的实际运行时序特征进行仿真。
现有的标准延迟格式文件中包括与逻辑系统设计中多个模块相对应的信号,并利用这些信号对逻辑系统设计中的时序特征信息进行描述,一个示例性的信号传递延迟描述如下:
INTERCONNECT top.s1.s2.a=>top.s1.s2.s3.b 10
其中,“INTERCONNECT”为表示信号传递延迟的指令,top.s1.s2.a表示 top模块的一个子模块s1的一个子模块s2中的一个端点a处的信号, top.s1.s2.s3.b表示top模块的一个子模块s1的一个子模块s2的一个子模块 s3中的一个端点b处信号。在本公开中,端点a或b也被视为逻辑系统设计的一个模块。因此,此示例性描述的含义为定义了从端点模块a到端点模块 b之间的信号传递延迟为10个时间单位,其中时间单位的值(例如,1纳秒、 1皮秒等)也通过所述标准延迟格式文件SDF定义。
利用现有标准延迟格式文件进行编译时按照文件描述依次查找多个信号相应模块的地址,以上述信号传递延迟描述为例,首先依次查找top、s1、s2、 a的模块地址,再依次查找top、s1、s2、s3、b的模块地址,其中重复查找了 top、s1、s2的模块地址,这样的方式对于同一模块地址会重复查找多次,在整个标准延迟格式文件中会存在大量的模块地址重复查找的情况,大大增加了仿真编译时间,降低工作执行效率。此外,由于每个模块的名称都需要用字符串类型的数据来存储,且大型的逻辑系统设计所包括的模块层级数量巨大,这使得现有的使用模块名称描述信号的方式会占用大量的存储空间。
鉴于此,本公开实施例提供了一种用于逻辑系统设计的编译方法,其中,所述逻辑系统设计包括在多个层级分布的多个模块,所述方法包括:获取与所述逻辑系统设计对应的第一标准延迟格式文件,所述标准延迟格式文件包括由所述多个模块以层级关系描述的多个信号,所述多个信号形成多对信号,所述标准延迟格式文件进一步包括所述多对信号之间的延迟值;根据所述标准延迟格式文件中的多个信号的描述,生成与所述逻辑系统设计对应的树结构,所述树结构包括由多个节点构成的多个分支;生成与所述多个分支分别对应的多个代码,用于代替所述第一标准延迟格式文件中的多个信号的描述以生成第二标准延迟格式文件;以及基于所述第二标准延迟格式文件和所述树结构来编译所述逻辑系统设计。本公开提供的用于逻辑系统设计的编译方法,根据第一标准延迟格式文件中多个信号的表述生成与逻辑系统设计对应的树结构,利用树结构中多个分支对应的多个代码替代第一标准延迟格式文件中的多个信号描述生成第二标准延迟格式,基于所述第二标准延迟格式文件和所述树结构来编译所述逻辑系统设计,能够避免对同一模块地址的多次重复查找的情况,极大减少仿真编译工作中查找模块地址的工作量,缩短仿真编译工作时间,提高编译工作效率。
图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可以执行单个代码基本块的局部代码优化与多个代码基本块的全局优化,删除不必要的代码行、对代码语句序列进行调整、对代码指令中运算分量顺序进行调整等。优化后的中间表示则可以被传递给后端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可以是一个用Verilog语言或VHDL 语言等硬件描述语言编写的具有特定逻辑运算功能的硬件数字逻辑系统,例如按照预期功能和技术指标而专门设计的集成电路。
在一些实施例中,逻辑系统设计202包括在多个层级分布的多个模块。其中,模块是逻辑系统设计202中的基本描述单位,用于描述逻辑系统设计 202中的功能单元或结构以及模块间的通信端口等,例如,可以是条件判断功能模块、计算功能模块、通用宏单元模块(计数器、ALU、CPU等)或通用器件模块(与非门、三态门等)、通信接口模块等。
逻辑系统设计202中的多个模块根据设计层次与结构关系分布在不同层级。例如,通常而言,多个模块中的顶层模块对应于整个逻辑系统设计202,处于最上层级。顶层模块可以包括多个功能单元模块(如计算功能模块、条件判断模块、信息获取模块等),功能单元模块作为顶层模块的子模块处于第二层级。每个功能单元模块可以包括多个通用宏单元模块(计数器、ALU、CPU 等),通用宏单元模块作为功能单元模块的子模块处于第三层级。每个通用宏单元模块包括多个通用器件单元模块(与非门、三态门等),通用器件单元模块作为通用宏单元模块的子模块处于第四层级。每个通用器件单元模块包括多个输入输出端口模块,端口模块作为通用器件单元模块的子模块处于第五层级。可以理解的是,在逻辑系统设计202中可以按照不同设计方式对多个模块的设计层次与结构关系进行设计,多个模块可以有多种不同的层级分布关系。
仿真工具200可以获取与逻辑系统设计202对应的第一标准延迟格式文件。第一标准延迟格式文件可以包括多个延迟描述语句,用于为逻辑系统设计202提供时序特征信息(例如,信号传递的延迟、时序偏差等等)。延迟描述语句可以包括定义指令、信号以及延迟值。
图3A示出了根据本公开实施例的示例性标准延迟格式文件300的示意图。如图3A所示,标准延迟格式文件300包括了用于描述3对信号间的延迟值的延迟描述语句。以延迟描述语句310为例,延迟描述语句310包括定义指令(“INTERCONNECT”)、信号“top.s1.s2.a”、信号“top.s1.s2.s3.b”与延迟值(“10”)。其中,定义指令用于表示该延迟描述语句所提供的时序特征信息类型,“INTERCONNECT”表示信号传递延迟。信号“top.s1.s2.a”和信号“top.s1.s2.s3.b”,如上所述,表示对应模块处的信号。该示例性延迟描述语句 310表示一对信号之间的信号传递延迟为10个时间单位。标准延迟格式文件中还可以对时间单位进行定义,例如可将时间单位定义为1ns,则两个目标模块之间的信号传递延迟为10ns。可以理解的是,延迟值可以是任何指定的延迟值,时间单位也可以是其他时间长度,如1s、1ms等,而不限于前述示例说明的1ns。如信号“top.s1.s2.a”与信号“top.s1.s2.s3.b”的描述,延迟描述语句中的信号可以由多个模块(例如,模块top、s1、s2、s3、a、b)以层级关系描述。
因为标准延迟格式文件300中延迟描述语句的多个信号按照层级关系顺序排列,仿真工具200可以根据标准延迟格式文件300中的多个信号的描述,生成与所述逻辑系统设计202对应的树结构。在一些实施例中,仿真工具200 可以先根据多个信号应生成多个树节点,并根据多个信号的描述顺序确定对应模块的层级关系以对多个树节点的层次进行调整。
图3B示出了根据本公开实施例的与逻辑系统设计202对应的示例性树结构320的示意图。
在一些实施例中,仿真工具200可以根据标准延迟格式文件300中多个模块的层级关系生成上述树结构320。例如,根据信号“top.s1.s2.a”,可以先生成树节点top并确定该树节点为根节点,接着生成树节点s1并确定该树节点为根节点top的子节点,再生成树节点s2并确定该树节点为树节点s1的子节点,最后生成树节点a并确定该树节点为树节点s2子节点,也是树结构 320的一个叶子节点,从而形成这条以模块a为叶子节点的分支322。
类似地,根据图3A的信号“top.s1.s2.s3.b”、“top.s1.s4.s5.c”、“top.s1.s4.d”、“top.s1.s4.s5.e”,可以分别生成树结构320的分支322~326。
树结构320可以以树状的数据结构存储在内存中,其中,树结构320的每个节点可以用于存储对应模块在内存中的地址。模块在内存中的地址可以通过编译逻辑系统设计202来产生。可以理解的是,当树结构320刚生成时,各个节点尚未存储任何地址信息。
在标准延迟格式文件300中,信号(例如,top.s1.s2.a)的描述是用模块的名称基于多个模块的层级关系来实现。由于名称的存储需要使用字符串类型的数据,这使得标准延迟格式文件300的存储体积庞大。为了减少存储空间的占用,仿真工具200可以对树结构320中的每个分支进行编码,利用分支编码来替代第一标准延迟格式文件中相应的信号对描述以生成第二标准延迟格式文件。
图3C示出了根据本公开实施例的示例性标准延迟格式文件330的示意图。
由于图3B的树结构320中的每个分支都与标准延迟格式文件300中的一个信号对相对应,仿真工具200可以为每个信号对相应的分支生成分支代码,利用分支代码来表示对应信号并替代标准延迟格式文件300中的信号,从而生成描述内容简单的标准延迟格式文件330。
作为一个示例,如图3C所示,用分支代码“322”表示“top.s1.s2.a”,用分支代码“323”表示“top.s1.s2.s3.b”,用分支代码“324”表示“top.s1.s4.s5.c”,用分支代码“325”表示“top.s1.s4.d”,用分支代码“326”表示“top.s1.s4.s5.e”。
在树结构320中,每个分支都只存在一个叶子节点,所以可以用叶子节点来代表该叶子节点所属的分支。在一些实施例中,树结构320的各个叶子节点在内存中相对于树结构320的首地址的偏移被用作分支代码。也就是说,仿真工具200可以生成与树结构320的多个节点分别对应的多个代码。
以图3B为例,假定树结构320在内存中的地址为ADDR(也就是树结构320的首地址),那么叶子节点“top.s1.s2.a”的内存地址为ADDR+322,叶子节点“top.s1.s2.s3.b”的内存地址为ADDR+323,叶子节点“top.s1.s4.s5.c”的内存地址为ADDR+324,叶子节点“top.s1.s4.d”的内存地址为ADDR+325,叶子节点“top.s1.s4.s5.e”的内存地址为ADDR+326。因此,树结构320的分支代码分别为322~326。
通过使用分支代码来替代标准延迟格式文件300的信号描述可以生成图 3C的标准延迟格式文件330。例如,使用分支代码“322”表示“top.s1.s2.a”。
分支代码可以选用非字符串类型的编码。在一些实施例中,非字符串类型可以是整数类型、短整数类型或长整数类型。
仿真工具200可以基于标准延迟格式文件330和树结构320来编译逻辑系统设计202。其中,仿真工具200可以将多个模块地址存储到树结构320 的对应节点。
标准延迟格式文件330用于在编译逻辑系统设计202时为逻辑系统设计 202提供延迟信息,包括两目标模块之间的信号传递延迟。因此,需要确定目标模块的地址。编译逻辑系统设计202时,仿真工具200可以获取多个模块的地址存储在树结构320的多个对应树节点中,之后根据标准延迟格式文件330中分支代码在树结构320中确定目标模块所在分支,并根据分支中多个树节点所存储的模块地址确定目标模块地址来编译逻辑系统设计202。
为了将逻辑系统设计202的各个模块的地址相应地存储到树结构320的各个节点中,仿真工具200可以遍历树结构320中的所有节点并相应地存储对应的模块地址。
在一些实施例中,仿真工具200可以在树结构320中依次遍历多个分支。例如,仿真工具200可以确定一个分支,并相应地处理该分支。通常,处理分支包括从叶子节点向根节点遍历该分支的多个节点。例如,仿真工具200 可以确定叶子节点(图3B中分支323的叶子节点“b”)是否存储有对应模块 (例如,端点top.s1.s2.s3.b)的地址。响应于该叶子节点未存储有对应模块的地址,确定该叶子节点的父节点(也就是,图3B中分支323的节点“s3”)是否存储有对应模块的地址。这样,仿真工具200可以进一步确定分支323的节点“s3”是否存储有对应模块的地址。若分支323是完全空白的分支,则仿真工具200会遍历到根节点“top”。当仿真工具200确定根节点“top”也未存储对应模块的地址时,仿真工具200相应地读取top模块在内存中的地址并存储到节点“top”中。仿真工具200还依次自上而下地将分支323的各个节点所对应的模块的地址存储到相应的节点中,直到叶子节点“b”被存储对应模块的地址。
在一些实施例中,分支324的各个节点均已经存储了相应的地址。也就是说,节点“top”、“s1”、“s4”、“s5”、“d”均已经存储了相应的地址。此时,当仿真工具200开始遍历分支325时,仿真工具200可以沿着从叶子节点像根节点的方向遍历,并且发现节点“e”和“s5”没有存储相应的地址,然后继续向上遍历节点“s4”,并且确定节点“s4”是否存储有对应模块的地址。由于此时节点“s4”已经存储有对应模块的地址,那么响应于节点“s4”存储有对应模块的地址,仿真工具200可以转而沿着从根节点向叶子节点的方向,向下遍历并获取与节点“s4”的子节点(也就是,节点“s5”)对应的模块的地址,并且将该地址存储到节点“s5”中。仿真工具200可以继续向该子节点的子节点存储对应模块的地址,直至分支325的叶子节点被存储对应模块的地址。
也就是说,仿真工具200可以从一个分支的叶子节点向上遍历该分支的所有节点,直到发现某个节点已经存储了对应模块的地址或者遍历到了根节点。然后,仿真工具可以从该已经存储了对应模块的地址的节点的子节点(或者从根节点)开始自上而下依次向每个节点存储对应模块的地址。
在一些实施例中,仿真工具200可以从树结构320中选取并初始化一个分支,从而使得该分支的各个节点都被填充对应模块的地址。初始化一个分支例如可以包括获取与该分支的一节点对应的模块的地址;以及获取与该节点的子节点对应的模块的地址。通常,初始化一个分支可以自上而下地的依次向节点填充对应模块的地址。例如,可以从根节点向子节点依次填充对应模块的地址。
图4示出了本公开实施例所提供的一种用于逻辑系统设计的示例性编译方法的流程示意图。
本公开实施例提供一种用于逻辑系统设计的编译方法400。该编译方法 400可以由图1A所示的电子设备100执行。例如,由在电子设备100上运行的编译器120执行。其中,所述逻辑系统设计(例如,图2中的逻辑系统设计 202)包括在多个层级分布的多个模块(例如,top模块、子模块s1、子模块s2、端点a之类)。所述方法400可以包括以下步骤。
在步骤402,编译器120可以获取与所述逻辑系统设计对应的第一标准延迟格式文件(例如,图3A中的标准延迟格式文件300)。所述标准延迟格式文件可以包括由所述多个模块以层级关系描述的多个信号(例如,图3A中的“top.s1.s2.a”、“top.s1.s2.s3.b”、“top.s1.s4.d”、“top.s1.s4.s5.c”、“top.s1.s4.s5.e”)。所述多个信号形成多对信号。所述标准延迟格式文件进一步可以包括所述多对信号之间的延迟值(例如,图3A中的“10”、“20”、“30”)。
在步骤404,编译器120可以根据所述标准延迟格式文件中的多个信号的描述,生成与所述逻辑系统设计对应的树结构(例如,图3B中的树结构320)。所述树结构可以包括由多个节点(例如,图3B中的top、s1、s2、s3、s4、s5、 a、b、c、d、e)构成的多个分支(例如,图3B中的分支322~326)。在一些实施例中,所述逻辑系统设计的多个模块可以包括顶层模块(例如,top模块)。所述树结构中的多个节点可以包括与所述顶层模块对应的根节点(例如,图 3B中的节点top)。
在一些实施例中,所述树结构的多个节点可以用于分别存储所述逻辑系统设计的多个模块的地址。模块在内存中的地址可以通过编译逻辑系统设计来产生。
在一些实施例中,编译器120可以遍历树结构中的多个分支,依次对多个分支进行初始化。例如,可以从根节点向子节点依次获取对应模块地址并存储到相应节点中。也就是是说,初始化一个分支可以包括获取与该分支的一节点对应的模块地址;以及获取与该节点的子节点对应的模块地址。
在一些实施例中,编译器120可以遍历树结构中的多个分支,依次对多个分支进行处理。例如,可以从一个分支的叶子节点向上遍历该分支的所有节点,直到发现某个节点已经存储了对应模块的地址或者遍历到了根节点。然后,仿真工具可以从该已经存储了对应模块的地址的节点的子节点(或者从根节点)开始自上而下依次向每个节点存储对应模块的地址。也就是说,处理一个分支可以包括确定该分支的一节点中是否存储有对应模块的地址,响应于该节点未存储有对应模块的地址,确定该节点的父节点是否存储有对应模块的地址;响应于该节点存储有对应模块的地址,获取该节点的子节点对应的模块地址。
在步骤406,编译器120可以生成与所述多个分支分别对应的多个分支代码(例如,图3B中的“322”、“323”、“324”、“325”、“326”),用于代替所述第一标准延迟格式文件中的多个信号的描述以生成第二标准延迟格式文件 (例如,图3C中的标准延迟格式文件330)。分支代码可以选用非字符串类型的编码。在一些实施例中,可以生成与树结构的多个节点分别对应的多个代码。这些代码可以是所述多个节点的地址相对于树结构的首地址的偏移。相应地,在一些实施例中,分支代码可以是各个分支的叶子节点的地址相对于树结构的首地址的偏移。
在步骤408,编译器120可以基于所述第二标准延迟格式文件和所述树结构来编译所述逻辑系统设计。其中,可以获取多个模块的地址存储在树结构的对应节点,之后根据所述第二标准延迟格式文件中的分支代码在树结构中确定目标模块所在分支,并根据分支中多个树节点所存储的模块地址确定目标模块地址来编译逻辑系统设计。
本公开实施例提供的用于逻辑系统设计的编译方法、电子设备及存储介质,根据第一标准延迟格式文件中多个信号的表述生成与逻辑系统设计对应的树结构,利用树结构中多个分支对应的多个代码替代第一标准延迟格式文件中的多个信号描述生成第二标准延迟格式,基于所述第二标准延迟格式文件和所述树结构来编译所述逻辑系统设计,能够避免对同一模块地址的多次重复查找的情况,极大减少仿真编译工作中查找模块地址的工作量,缩短仿真编译工作时间,提高编译工作效率。
需要说明的是,本说明书一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本说明书一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本公开实施例还提供存储了指令的计算机可读存储介质。该指令在被电子设备执行时用于进行上述方法。该计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述对本公开特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本说明书一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本说明书一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本说明书一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本说明书一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本说明书一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种用于逻辑系统设计的编译方法,其中,所述逻辑系统设计包括在多个层级分布的多个模块,所述方法包括:
获取与所述逻辑系统设计对应的第一标准延迟格式文件,所述标准延迟格式文件包括由所述多个模块以层级关系描述的多个信号,所述多个信号形成多对信号,所述标准延迟格式文件进一步包括所述多对信号之间的延迟值;
根据所述标准延迟格式文件中的多个信号的描述,生成与所述逻辑系统设计对应的树结构,所述树结构包括由多个节点构成的多个分支;
生成与所述多个分支分别对应的多个代码,用于代替所述第一标准延迟格式文件中的多个信号的描述以生成第二标准延迟格式文件;以及
基于所述第二标准延迟格式文件和所述树结构来编译所述逻辑系统设计。
2.根据权利要求1所述的方法,其中,所述树结构的多个节点用于分别存储所述逻辑系统设计的多个模块的地址,所述多个模块包括顶层模块,所述树结构的多个节点包括与所述顶层模块对应的根节点。
3.根据权利要求2所述的方法,其中,基于所述第二标准延迟格式文件和所述树结构来编译所述逻辑系统设计进一步包括:
将所述多个模块的地址存储到所述树结构的对应节点。
4.根据权利要求3所述的方法,其中,将所述多个模块的地址存储到所述树结构的对应节点进一步包括:
在所述多个分支中,初始化第一分支,所述初始化第一分支包括:
获取与所述第一分支的第一节点对应的模块的地址;以及
获取与所述第一节点的子节点对应的模块的地址。
5.根据权利要求3或4所述的方法,其中,将所述多个模块的地址存储到所述树结构的对应节点进一步包括:
在所述多个分支中,处理第二分支,所述处理第二分支包括:
确定所述第二分支的第二节点是否存储有对应模块的地址;
响应于所述第二节点未存储有对应模块的地址,确定所述第二节点的父节点是否存储有对应模块的地址,或者
响应于所述第二节点存储有对应模块的地址,获取与所述第二节点的子节点对应的模块的地址。
6.根据权利要求5所述的方法,其中,所述第二节点是叶子节点。
7.根据权利要求1所述的方法,其中,生成与所述多个分支分别对应的多个代码进一步包括:
生成与所述树结构的多个节点分别对应的多个代码。
8.根据权利要求4所述的方法,其中,
所述第一分支的第一节点是所述树结构的根节点。
9.一种电子设备,包括:
存储器,用于存储一组指令;以及
至少一个处理器,配置为执行该组指令以进行如权利要求1至8任意一项所述的方法。
10.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储电子装置的一组指令,该组指令用于使所述电子装置执行权利要求1至8任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011580430.7A CN112632880B (zh) | 2020-12-28 | 2020-12-28 | 用于逻辑系统设计的编译方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011580430.7A CN112632880B (zh) | 2020-12-28 | 2020-12-28 | 用于逻辑系统设计的编译方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112632880A true CN112632880A (zh) | 2021-04-09 |
CN112632880B CN112632880B (zh) | 2023-04-14 |
Family
ID=75325835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011580430.7A Active CN112632880B (zh) | 2020-12-28 | 2020-12-28 | 用于逻辑系统设计的编译方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112632880B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112989736A (zh) * | 2021-04-23 | 2021-06-18 | 芯华章科技股份有限公司 | 用于检测修改设计的错误实例的方法、设备及存储介质 |
CN113420520A (zh) * | 2021-06-25 | 2021-09-21 | 海光信息技术股份有限公司 | 集成电路装置设计仿真方法、装置、设备和可读存储介质 |
CN113918322A (zh) * | 2021-09-09 | 2022-01-11 | 芯华章科技股份有限公司 | 在内存中动态存储逻辑系统设计的仿真数据的方法及设备 |
CN114237578A (zh) * | 2021-11-05 | 2022-03-25 | 芯华章科技股份有限公司 | 显示逻辑系统设计的目标模块的方法及相关设备 |
CN115293076A (zh) * | 2022-04-21 | 2022-11-04 | 芯华章科技股份有限公司 | 生成电路的方法、电子设备及存储介质 |
CN115291963A (zh) * | 2022-06-17 | 2022-11-04 | 芯华章科技股份有限公司 | 配置硬件资源的方法、电子设备及存储介质 |
CN115827636A (zh) * | 2022-12-19 | 2023-03-21 | 芯华章科技(厦门)有限公司 | 存储及从波形数据库读取逻辑系统设计的仿真数据的方法 |
CN117077602A (zh) * | 2023-10-12 | 2023-11-17 | 北京芯愿景软件技术股份有限公司 | 集成电路分析方法和装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7047175B1 (en) * | 2001-11-16 | 2006-05-16 | Synopsys, Inc. | System and method for enhancing the speed of dynamic timing simulation using delay assessment at compile time |
US20130036473A1 (en) * | 2011-08-01 | 2013-02-07 | Apple Inc. | System and method for branch function based obfuscation |
US20160078154A1 (en) * | 2014-09-17 | 2016-03-17 | Realtek Semiconductor Corp. | Digital circuit design method and associated computer program product |
CN105447215A (zh) * | 2014-09-24 | 2016-03-30 | 瑞昱半导体股份有限公司 | 数字电路设计方法及相关的系统 |
CN105527857A (zh) * | 2014-10-21 | 2016-04-27 | 三星电子株式会社 | 操作补偿延迟的仿真器的方法及用于执行该方法的装置 |
CN107256303A (zh) * | 2017-06-06 | 2017-10-17 | 西安电子科技大学 | 快速获取数字门级电路内部节点仿真状态的方法 |
US10460059B1 (en) * | 2015-06-23 | 2019-10-29 | Cadence Design Systems, Inc. | System and method for generating reduced standard delay format files for gate level simulation |
CN111931445A (zh) * | 2020-10-09 | 2020-11-13 | 芯华章科技股份有限公司 | 用于调试逻辑系统设计的方法、仿真器及存储介质 |
-
2020
- 2020-12-28 CN CN202011580430.7A patent/CN112632880B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7047175B1 (en) * | 2001-11-16 | 2006-05-16 | Synopsys, Inc. | System and method for enhancing the speed of dynamic timing simulation using delay assessment at compile time |
US20130036473A1 (en) * | 2011-08-01 | 2013-02-07 | Apple Inc. | System and method for branch function based obfuscation |
US20160078154A1 (en) * | 2014-09-17 | 2016-03-17 | Realtek Semiconductor Corp. | Digital circuit design method and associated computer program product |
TW201612782A (en) * | 2014-09-17 | 2016-04-01 | Realtek Semiconductor Corp | Digital circuit design method and associated computer program product |
CN105447215A (zh) * | 2014-09-24 | 2016-03-30 | 瑞昱半导体股份有限公司 | 数字电路设计方法及相关的系统 |
CN105527857A (zh) * | 2014-10-21 | 2016-04-27 | 三星电子株式会社 | 操作补偿延迟的仿真器的方法及用于执行该方法的装置 |
US10460059B1 (en) * | 2015-06-23 | 2019-10-29 | Cadence Design Systems, Inc. | System and method for generating reduced standard delay format files for gate level simulation |
CN107256303A (zh) * | 2017-06-06 | 2017-10-17 | 西安电子科技大学 | 快速获取数字门级电路内部节点仿真状态的方法 |
CN111931445A (zh) * | 2020-10-09 | 2020-11-13 | 芯华章科技股份有限公司 | 用于调试逻辑系统设计的方法、仿真器及存储介质 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112989736A (zh) * | 2021-04-23 | 2021-06-18 | 芯华章科技股份有限公司 | 用于检测修改设计的错误实例的方法、设备及存储介质 |
CN112989736B (zh) * | 2021-04-23 | 2022-06-03 | 芯华章科技股份有限公司 | 用于检测修改设计的错误实例的方法、设备及存储介质 |
CN113420520A (zh) * | 2021-06-25 | 2021-09-21 | 海光信息技术股份有限公司 | 集成电路装置设计仿真方法、装置、设备和可读存储介质 |
CN113420520B (zh) * | 2021-06-25 | 2024-01-23 | 海光信息技术股份有限公司 | 集成电路装置设计仿真方法、装置、设备和可读存储介质 |
CN113918322A (zh) * | 2021-09-09 | 2022-01-11 | 芯华章科技股份有限公司 | 在内存中动态存储逻辑系统设计的仿真数据的方法及设备 |
CN114237578A (zh) * | 2021-11-05 | 2022-03-25 | 芯华章科技股份有限公司 | 显示逻辑系统设计的目标模块的方法及相关设备 |
CN115293076A (zh) * | 2022-04-21 | 2022-11-04 | 芯华章科技股份有限公司 | 生成电路的方法、电子设备及存储介质 |
CN115293076B (zh) * | 2022-04-21 | 2024-03-22 | 芯华章科技股份有限公司 | 生成电路的方法、电子设备及存储介质 |
CN115291963A (zh) * | 2022-06-17 | 2022-11-04 | 芯华章科技股份有限公司 | 配置硬件资源的方法、电子设备及存储介质 |
CN115827636A (zh) * | 2022-12-19 | 2023-03-21 | 芯华章科技(厦门)有限公司 | 存储及从波形数据库读取逻辑系统设计的仿真数据的方法 |
CN117077602A (zh) * | 2023-10-12 | 2023-11-17 | 北京芯愿景软件技术股份有限公司 | 集成电路分析方法和装置 |
CN117077602B (zh) * | 2023-10-12 | 2024-02-09 | 北京芯愿景软件技术股份有限公司 | 集成电路分析方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112632880B (zh) | 2023-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112632880B (zh) | 用于逻辑系统设计的编译方法、电子设备及存储介质 | |
CN112287569B (zh) | 用于仿真逻辑系统设计的方法、电子设备及存储介质 | |
US9495501B1 (en) | Large cluster persistence during placement optimization of integrated circuit designs | |
JP6345814B2 (ja) | 高位合成を用いて高効率のエントロピーデコーダを実装するための方法、hlsツール、および記憶媒体 | |
CN112597064B (zh) | 对程序进行仿真的方法、电子设备及存储介质 | |
CN114780100B (zh) | 编译方法、电子设备及存储介质 | |
CN112434478B (zh) | 仿真逻辑系统设计的虚拟接口的方法及相关设备 | |
CN113283203A (zh) | 用于仿真逻辑系统设计的方法、电子设备及存储介质 | |
CN115293076B (zh) | 生成电路的方法、电子设备及存储介质 | |
CN113760751B (zh) | 生成测试用例的方法、电子设备及存储介质 | |
CN107729601B (zh) | 仿真过程中配置ram的方法、装置及计算机存储介质 | |
CN112232003B (zh) | 对设计进行仿真的方法、电子设备及存储介质 | |
CN115688643A (zh) | 仿真逻辑系统设计的方法、设备及存储介质 | |
CN112733478B (zh) | 用于对设计进行形式验证的装置 | |
CN113806431A (zh) | 一种传输仿真数据的方法、电子系统及存储介质 | |
CN115470125A (zh) | 基于日志文件的调试方法、设备以及存储介质 | |
CN112131806A (zh) | 验证设计的编译方法、电子设备及存储介质 | |
CN114912396A (zh) | 基于虚拟接口实现逻辑系统设计的物理接口的方法及设备 | |
CN114328062A (zh) | 校验缓存一致性的方法、装置和存储介质 | |
Decaluwe | MyHDL manual | |
CN112989736B (zh) | 用于检测修改设计的错误实例的方法、设备及存储介质 | |
CN114185396A (zh) | 设计的时钟域转换方法、验证系统及存储介质 | |
CN115827568B (zh) | 获取逻辑系统设计的数据的方法、电子设备和存储介质 | |
CN115470737B (zh) | 生成数据流图的方法、电子设备及存储介质 | |
CN114169287B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |