WO2022198447A1 - 一种数字电路的综合方法及综合装置 - Google Patents
一种数字电路的综合方法及综合装置 Download PDFInfo
- Publication number
- WO2022198447A1 WO2022198447A1 PCT/CN2021/082428 CN2021082428W WO2022198447A1 WO 2022198447 A1 WO2022198447 A1 WO 2022198447A1 CN 2021082428 W CN2021082428 W CN 2021082428W WO 2022198447 A1 WO2022198447 A1 WO 2022198447A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- module
- synthesis
- dependency information
- external
- task
- Prior art date
Links
- 238000003786 synthesis reaction Methods 0.000 title claims abstract description 147
- 230000015572 biosynthetic process Effects 0.000 title claims abstract description 146
- 238000001308 synthesis method Methods 0.000 title abstract description 9
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000013461 design Methods 0.000 claims abstract description 25
- 230000002194 synthesizing effect Effects 0.000 claims abstract description 19
- 230000006870 function Effects 0.000 claims description 18
- 230000015654 memory Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- 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/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明提供一种数字电路的综合方法及综合装置,该方法包括:获取数字电路的RTL代码,所述RTL代码包括x个模块的RTL代码;所述模块是指数字电路中的基本设计单元;获取所述x个模块中各模块综合需要的依赖信息;所述依赖信息包括:模块的定义;根据所述依赖信息,确定对所述RTL代码进行综合需要执行的n个综合任务;所述n个综合任务与x个模块的RTL代码相对应;其中,x为大于或等于1,且小于或等于n的自然数,n为大于或等于1的自然数;通过多个处理器执行所述n个综合任务,并得到n个网表。以模块为单位提取单个模块综合需要的依赖信息,使得在对RTL代码进行综合时,可以生成多个综合任务,实现了最多同等数量的并行综合。
Description
本发明涉及集成电路技术领域,尤其涉及一种数字电路的高速综合方法及装置。
综合是指将行为描述为电路,通常是通过寄存器传输级描述的,转换为门级网表的过程。在芯片开发步骤中,寄存器传输级(register transter level,RTL)代码需要综合成网表,便于映射到具体硬件电路上。这个编译过程,对于大规模的芯片代码来说,往往需要很长的时间。
目前常见的可以提供RTL代码编译成网表的工具,均为串行或者少量并行处理,属于一种自顶向下的处理过程,需要耗费数小时到数天时间。
发明内容
有鉴于此,本申请实施例提供了一种数字电路的高速综合方法及装置,解决了综合并行度受单机资源限制,运行时间长的问题。
第一方面本发明申请实施例提供了一种数字电路的高速综合方法,该方法包括:获取数字电路的RTL代码,该RTL代码包括x个模块的RTL代码;其中,模块是指数字电路中的基本设计单元;获取x个模块中各模块综合需要的依赖信息;该依赖信息包括:模块的定义;根据获取的依赖信息,确定对RTL代码进行综合需要执行的n个综合任务;并且n个综合任务与x个模块的RTL代码相对应;其中,x为大于或等于1,且小于或等于n的自然数,n为大于或等于1的自然数;通过多个处理器执行所述n个综合任务,并得到n个网表。
也就是说,本申请实施例提供的数字电路高速综合方法,以模块为单位获取需要综合的RTL代码的依赖信息,使得可以根据需要综合的RTL代码文件生成多个综合任务,通过将生成的多个综合任务分给多个处理器执行,以实现最多同等数量的并行综合,摆脱了单一服务器的资源限制,提高了综合速度。
在一个可能的实施方式中,依赖信息还包括:模块中的外部传入参数、模块用到的宏定义或模块的外部依赖信息中的至少一种;其中,外部依赖信息是指在当前模块中使用并 定义在当前模块外部的信息;外部依赖信息包括:接口、包、结构体、函数或任务中的至少一种。
在一个可能的实施方式中,当获取的待综合模块的依赖信息中包括至少两套外部传入参数时,根据待综合模块的每一套外部传入参数生成一个综合任务;其中,任意两套外部传入参数之间,存在至少一个参数的取值是不相同的,待综合模块为x个模块中的一个模块;当获取的待综合模块的依赖信息中不包含外部传入参数或只包含一套外部传入参数时,该待综合模块生成一个综合任务。
也就是说,在该实现方式中,同一个模块因为传入参数不同,而能实现不同的功能,通过将每一套外部传入参数生成一个待综合任务,保证了每一个待综合任务所对应的每一个模块所能实现的功能不同。
在一个可能的实施方式中,该方法还包括:对依赖信息进行存储;对所述依赖信息进行存储,并对存储的每一套外部传入参数的模块名进行修改。
也就是说,在该实现方式中,同一个模块中的不同外部传入参数可以实现不同的功能,因此,在以模块为单位获取依赖信息,并存储该依赖信息时,通过修改每一套外部传入参数的模块名,来保证不同套参数所对应的模块实现的功能不同。
在一个可能的实现方式中,该方法还包括:在生成网表时,根据预先存储的每一套外部传入参数对应的模块名,对网表中的模块名进行修改。
也就是说,在该实现方式中,通过修改网表中相同的模块名,保证了RTL文件中任意两个模块所实现的功能不同。
在一个可能的实现方式中,通过多个处理器执行n个综合任务包括:多个处理器在同一时刻分别执行一个不同的综合任务,当任意一个处理器中的综合任务完成以后,切换到下一个还未执行的综合任务直到最后一个综合任务完成。
也就是说,在该实现方式中,通过多个处理器在同一个时刻处理不同的综合任务,实现了多个待综合任务的并行处理。
在一个可能的实现方式中,获取的依赖信息不包括当前模块中例化的子模块的定义,当所述处理器在执行综合任务时,将没有子模块定义信息的子模块保留到网表中。
也就是说,在该实现方式中,获取的是模块层次的依赖信息,并且在执行综合任务时,在遇到没有子模块定义时,将子模块保留到网表中,不报错,使得综合任务可以继续执行。
第二方面,本发明申请实施例提供了一种数字电路的综合装置,包括:第一处理器、 第二处理器、存储器;其中,存储器用于存储计算机指令;第一处理器用于根据所述指令执行以下步骤:获取数字电路的RTL代码,该RTL代码包括x个模块的RTL代码;其中,模块是指数字电路中的基本设计单元;获取x个模块中各模块综合需要的依赖信息;该依赖信息包括:模块的定义;根据获取的依赖信息,确定对RTL代码文件进行综合需要执行的n个综合任务;n个综合任务与x个模块的RTL代码相对应;其中,x为大于或等于1,且小于或等于n的自然数,n为大于或等于1的自然数;第一处理器还用于和第二处理器共同执行n个综合任务,并得到n个网表。
在一种可能的实现方式中,该依赖信息还包括:模块中的外部传入参数、模块用到的宏定义以及模块的外部依赖信息中的至少一种;其中,外部依赖信息是指在当前模块中使用,并定义在当前模块外部的信息;外部依赖信息包括:接口、包、结构体、函数、任务中的至少一种。
在一种可能的实现方式中,当获取的待综合模块的依赖信息中包括至少两套外部传入参数时,第一处理器还执行:根据待综合模块中的每一套外部传入参数生成一个综合任务;其中,任意两套外部传入参数之间,存在至少一个参数的取值是不相同的,其中待综合模块为x个模块中的一个模块;当获取的待综合模块的依赖信息中不包含外部传入参数或只包含一套外部传入参数时,第一处理器还执行:根据待综合模块生成一个综合任务。
在一种可能的实现方式中,当待综合模块的依赖信息包括至少两套外部传入参数时,第一处理器还执行:对该依赖信息进行存储,并对存储的每一套外部传入参数的模块名进行修改。
在一种可能的实现方式中,在生成网表时,第一处理器和第二处理器还执行:根据预先存储的每一套外部传入参数对应的模块名,对网表中的模块名进行修改。
在一种可能的实现方式中,第一处理器和所述第二处理器在同一时刻分别执行一个综合任务,当任意一个处理器中的综合任务完成以后,切换到下一个还未执行的综合任务直到最后一个综合任务完成。
在一种可能的实现方式中,获取的依赖信息中不包括当前模块中例化的子模块的定义,当第一处理器和所述第二处理器在执行综合任务时,将没有子模块定义信息的值模块保留到网表中。
可以理解的是,第二方面提供的装置用于执行第一方面提供的方法,因此,其所能达到的有益效果可以参考前述相应的有益效果。
第三方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质包括计算机 指令,当计算机指令在终端上运行时,使得终端执行第一方面中所提供的方法。
第四方面,本申请实施例提供了一种包含指令的计算机程序产品,当指令在计算机上运行时,使得所述计算机执行第一方面中提供的方法。
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为一种数字电路综合方法的流程图;
图2为本发明申请实施例提供的一种数字电路综合装置的结构示意图;
图3为本发明申请实施例提供的一个从RTL级到门级转化的实例的结果示意图;
图4为本发明申请实施例提供的又一种数字电路综合装置的结构示意图;
图5为本发明申请实施例提供的一种数字电路的综合方法的流程图;
图6为本发明申请实施例提供的一种获取各个模块综合需要的依赖信息的流程图;
图7为本发明申请实施例提供的处理器在执行综合任务时的处理流程图;
图8为本发明申请实施例提供的一种利用综合工具进行综合的流程示意图;
为了使本申请实施例的目的、技术方案和有点更加清楚,下面将结合附图,对本申请实施例中的技术方案进行描述。
在本申请实施例中的描述中,“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应该被解释为比其他实施例或设计方案更优选或更具有优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词在以具体方式呈现相关概念。
在本申请实施例的描述汇总,属于“和/或”,仅仅是一种描述关联对象的关联关系,标识可以存在三种关系,例如A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个屏幕终端是指两个或两个以上的屏幕终端。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
逻辑综合是指使用综合工具,根据芯片制造商提供的基本电路单元库,将硬件描述语言描述的RTL级电路转换为电路门级网表的过程。目前常见的可以提供RTL代码编译成网表的工具,均为串行或者少量并行处理,属于一种自顶向下的处理过程,需要耗费数小时到数天时间。如图1所示,图1提供了一种自顶向下的逻辑综合的流程图,包括步骤S101-步骤S104。
步骤S101,输入RTL文件列表。
在一个可能的实施例中,RTL文件列表Filelist的内容为a.v和b.v。对应的文件a.v为:
文件b.v为:
步骤S102,串行解析RTL列表中的文件内容。
按顺序读取文件a.v和文件b.v,并识别出文件a.v和文件b.v内的依赖信息。
步骤S103,根据解析出的RTL列表中的文件内容,进行综合。
在进行综合时执行串行的综合,或者经过一定程度切分后,有少量的并行综合,其并行综合的数量不超过工作站单机支持的并行数。
步骤S104,输出网表。
对文件a.v和文件b.v进行并行综合处理,其输出的网表内容为:
module a(clk,rst,x1,x2,y);
input clk;
input rst;
input x1;
input x2;
output reg y;
DFF y_tmp(.D(net1),.C(clk),.R(net2),.S(1’b0),.Q(y));
AND inst1(.A(x2),.B(net3),.Y(net4));
…
endmodule
在图1所提供的技术方案中,综合只能运行在单独的服务器上,它的最大并行度受资源的限制。因此,其带来的影响是综合大规模设计代码时,运行时间会非常久。
图2为本发明申请实施例提供的一种数字电路的综合处理装置的结构图,如图2所示,该综合处理装置包括:第一处理器201、第二处理器202和存储器203。这些元 件可以连接到内部总线,也可以通过单独的布线彼此连接。
存储器203用于存储需要进行综合的RTL代码。其中,RTL代码中包括了x个模块的RTL代码,x为大于或等于1的自然数。
需要说明的是,RTL(register transfer level)是指以寄存器传输级将行为描述为电路,是一种对同步数位电路的抽象模型,这种模型是根据数字信号在硬件寄存器、存储器、组合逻辑和总线等逻辑单元之间的流动,以及其逻辑代数运作方式来确定的。模块(module)是数字电路中的基本设置单元,其主要目的是封装数字硬件对象的数据、功能和时序。在一个示例中,模块是从“module”关键字开始,到“endmodule”关键字结束,所包括的所有内容。
第一处理器201从存储器203中获取RTL代码文件,并以模块为单位获取各模块综合需要的依赖信息。然后根据获取的依赖信息确定对获取的RTL代码进行综合需要执行的n个综合任务,n个综合任务中的每一个综合任务都与一个模块的RTL代码相对应。其中,n为大于或等于1且大于或等于x的自然数。
在一个可能的实施例中,第一处理201在获取综合各个模块需要的依赖信息以后,还需要将获取的依赖信息存储到存储器203中。
第一处理器201还用于和第二处理器202一起执行n个综合任务,并得到n个网表。
具体地,第一处理器201和第二处理器202在同一个时刻分别执行一个不同的综合任务,当任意一个处理器中的综合任务完成以后,切换到下一个还未执行的综合任务,直到最后一个综合任务完成。
在一个可能的实施例中,第一处理器201可以为多核处理器,可以通过该处理器中的多个线程来并行执行n个综合任务,以实现线程级别的并行计算。具体地,第一处理器201包括4个物理内核,通过超线程技术,用一个物理核模拟两个虚拟核,即第一处理器201为一个4核8线程的处理器。在执行综合任务时,第一处理器201可以同时执行8个综合任务。
在一个可能的实施例中,第一处理器201和第二处理器202均为多核处理器,在执行n个综合任务时,可以通过第一处理201和第二处理器202中的多个线程来并行执行n个综合任务。
在一个可能的实施例中,第一处理器201为多核处理器,第二处理器202为单核处理器。在执行n个综合任务时,可以通过第一处理器201中的多个线程和第二处理 器202来并行执行n个综合任务。
在一个可能的实施例中,对一个比较器进行综合。其中,比较器的RTL的代码描述如下:
module magnitude_comparator(A_gt_B,A_It_B,A_eq_B,A,B)
output A_gt_B,A_It_B,A_ea_B;
input[3:0]A,B;
assign A_gt_B=(A>B); //A大于B
assign A_It_B=(A<B); //A小于B
assign A_eq_B=(A==B); //A等于B
endmodule
将上述实施例中的RTL代码转化为门级的示例得到的比较器如图3所示,在图3中包括两个4位的输入信号A和B,输入信号A和B不会出现x或z态。在verilog中,z对应高阻态,x对应不确定状态。
在一个可能的实施例中,如图4所示的数字电路综合装置还可以包括:第三处理器204、第四处理器205。第一处理器201、第二处理器202、第三处理器204和第四处理器205在同一个时刻分别执行至少一个综合任务,当任意一个处理器中的综合任务完成以后,切换到下一个综合任务,直到最后一个综合任务完成。具体地,当如图4所示的数字电路综合装置中的某一个处理器为单核处理器时,该处理器每次执行一个综合任务。当其中某一个处理器为多核处理器时,该处理器在同一时刻执行的综合任务的个数与其所具有的线程个数相同。
在一个可能的实施例中,除了如图2和图4所示的电路综合装置中的处理器执行综合任务以外,还可以将n个综合任务分配到其他综合装置上进行执行,以使其他综合装置上的处理器与如图2或图4中所示的电路综合装置中的处理器并行执行n个综合任务。
在本发明申请实施例中还提供了一种数字电路的综合方法,主要是将RTL代码综合成网表。在本发明申请实施例中以SystemVerilog编写的RTL代码为例进行说明。
图5为本发明申请实施例提供的一种数字电路的综合方法,如图5所示,该综合方法包括:
步骤S501:获取数字电路的RTL代码,该RTL代码中包括x个模块的RTL代码。
其中,模块是SystemVerilog设计的基本构造单元。在一个可能的示例中,一个模 块可以表示低级数字组件,如简单的与门或整个复杂的数字系统。
在另一个可能的示例中,一个模块可以在非常详尽的层次、非常抽象的层次或两者混合的层次表示功能和时序。如模块可以实例化其他设计元素,从而创建一个层次化的设计。具体地,模块中可以包含:参数、接口、包、结构体等成员的实例,而接口、包、结构体等自身的定义是在模块外部的。
步骤S502:获取x个模块中各个模块综合需要的依赖信息。
各个模块综合需要的依赖信息包括:模块的定义、及模块中的外部传入参数、模块用到的宏定义或模块的外部依赖信息中的至少一种。其中,模块的定义信息是指可以用于识别该模块或者表征该模块功能的信息,如模块名、模块中的内容。模块用到的宏定义是指模块中使用到的宏的名称和取值。需要说明的是,模块的定义是每一个模块都存在的,即在获取各模块的依赖信息时,各模块的定义信息是必不可少。而对于模块中的外部传入参数、模块用到的宏定义以及模块的外部依赖信息,当目标模块中存在该部分信息时,则进行获取,当目标模块不存在时,则可以不用获取。
在一个可能的实施例中,获取各个模块综合需要的依赖信息的步骤如图6所示,包括:
步骤S5021,获取每个模块用到的宏定义。
在一个可能的示例中,按照先后顺序读取RTL文件列表,读到每个文件路径时,打开文件按顺序读文件内容,其中识别出RTL代码中各模块包含的宏定义的过程如下:
+define+Y //这一行定义了一个宏,名字是Y,没有取值
1.v //这一行列出了一个设计文件,名字是1.v
2.v //这一行列出了一个设计文件,名字是2.v
1.v内容:
`define A 1 //这一行定义了一个宏,名字是A,取值是1
`deifne Z 10 //这一行定义了一个宏,名字是Z,取值是10
2.v内容:
`undef A //这一行删除了一个宏,名字是A
`define B 2 //这一行定义了一个宏,名字是B,取值是2
module C();//这一行定义了模块C,读到本行时,识别到module名:C、生效状态 宏定义的宏定义有:Z等于10、B等于2、Y没有取值。宏定义A因为在2.v最后删除了所以无效。
.... //其余module内容和宏定义提取无关,略过
endmodule //这一行结束了模块C的声明
`undef B //这一行删除了一个宏,名字是B
`define C 3 //这一行定义了一个宏,名字是C,取值是3
module D(); //这一行定义了module D,读到本行时,识别到module名:D、生效状态宏定义的宏定义有:Z等于10、C等于3、Y没有取值。宏定义B因为在2.v前面删除了,所以无效。
..... //其余module内容和宏定义提取无关,略过
endmodule //这一行结束了module D的声明
步骤S5022,获取每个模块的外部传入参数。
模块的外部传入参数(parameter)是指通过模块的端口传入的外部传入参数。具体地,模块的端口可以通过外部传入的参数改变其位宽,即可以通过传不同的参数来实现模块端口的定制化。
在一个可能的示例中,在RTL代码中有如下描述:
module1 #(.paramater1(value1),.parameter2(value2))inst1(.port1(wire1),
.port2(wire2));//这一行的含义是,定义了一个模块,模块名字为module1,模块的外部传入参数是parameter1=value1,parameter2=value2,模块的例化名是inst1,模块的端口port1接在连线wire1上,模块的端口port2接在连线wire2上。
module1 #(.paramater1(value3),.parameter2(value4))inst2(.port1(wire3),
.port2(wire4));//这一行的含义是,定义了一个模块,模块名字为module1,模块的外部传入参数是parameter1=value3,parameter2=value4,模块的例化名是inst2,模块的端口port1接在连线wire3上,模块的端口port2接在连线wire4上。
对于上述module1的实例inst1,识别第一套参数parameter1=value1,parameter2=value2;
对于上述module1的实例inst2,识别第二套参数parameter1=value3,parameter2=value4。
步骤S5023,获取每个模块的模块定义信息。
在一个可能的实施例中,RTL代码中包括文件top.v,其包含的内容为:
module a(); //定义了module a的开始
…
endmodule //定义了module a的结束
module top(); //定义了module top的开始
a u_a(); //定义了module a的一个实例,其名字是u_a
endmodule //定义了module top的结束
那么识别为两个独立的module定义:
第一个module是:
module a();
…
endmodule
第二个module是:
module top();
a u_a();
endmodule
步骤S5024,获取模块的外部依赖信息。
模块的外部依赖信息是指,在目标模块中使用并定义在目标模块外部的信息。具体地,可以包括:接口、包、结构体、函数或任务中的至少一种。其中,“接口(interface)”是SystemVerilog中的数据类型,其主要作用是简化模块之间的连接。“包(package)”是SystemVerilog中的一种类型,它能够把相关的变量声明和定义组合在一起。“结构体(struct)”也是SystemVerilog中的一种类型,其内部是各种变量的集合。“函数(function)”是SystemVerilog中的一种定义子程序的方式,它不消耗仿真时间,有返回值。“任务(task)”是SystemVerilog中的一种定义子程序的方式,它消耗仿真时间,没有返回值。
在一个可能的示例中,获取模块的外部依赖信息的过程如下:
识别完module依赖的外部信息结果,就是module a依赖了function value,task add,package m,interface if0,并且能够从module外部提取出这些依赖信息的定义。
需要说明的是,在获取各个模块综合需要的依赖信息时,可以执行步骤S5021、 步骤S5022、步骤S5023、步骤S5024中的一个或多个步骤,且在步骤S5021、步骤S5022、步骤S5023、步骤S5024之间没有先后顺序。
在获取各个模块综合需要的依赖信息以后,还需要对获取的依赖信息进行存储。在一个可能的实施例中,以RTL代码所包含的x个模块中的一个模块作为目标模块进行说明。当获取的目标模块的依赖信息中不包括外部传入参数信息或者只包括一套外部传入参数信息时,将该模块的所有依赖信息作为一套依赖信息进行存储。其中,存储的依赖信息对应的名字为目标模块的模块名。
当获取的目标模块依赖信息中包括至少两套外部传入参数时,将目标模块的依赖信息作为至少两套依赖信息进行存储。在一个可能的示例中,以目标模块的依赖信息中包括两套外部传入参数进行举例说明。
当获取的目标模块的依赖信息中包括两套外部传入参数时,将目标模块的依赖信息作为两套依赖信息进行存储。其中每一套依赖信息中均包括了一套外部传入参数,以及获取的目标模块的依赖信息中除外部传入参数信息以外的其他依赖信息。即在将目标模块的依赖信息存储为两套依赖信息时,两套依赖信息之间除了外部传入参数信息不同以外,其他依赖信息完全相同。进一步地,在将目标模块的依赖信息存储为两套依赖信息时,还需要对两套依赖信息在存储时使用的模块名进行修改,以保证存储器上所存储的每一套依赖信息所使用的模块名均不相同。
如步骤S5022中的一个实施例,在获取目标模块的外部依赖信息时,识别出module1的实例inst1,识别第一套参数parameter1=value1,parameter2=value2。识别出module1的实例inst2,识别第二套参数parameter1=value3,parameter2=value4。在存储时,在将第一套外部传入参数进行存储时,将module1的名字改为module1_P1。在将第二套外部传入参数进行存储时,将module1的名字改为module1_P2。
步骤S503:根据获取的各个模块的依赖信息,确定对RTL代码进行综合需要执行的n个综合任务。
根据获取的依赖信息中的外部传入参数信息,来确定对RTL代码进行综合需要执行的综合任务。当待综合模块的依赖信息中包括至少两套外部传入参数时,该待综合模块中的每一套外部传入参数对应生成一个综合任务。其中待综合模块的依赖信息中的任意两套外部传入参数之间,存在至少一个参数的取值是不相同的。当待综合模块的依赖信息中不包含外部传入参数或只包含一个外部传入参数时,该待综合模块对应生成一个综合任务。
在一个可能的示例中,将步骤S5022中的一个示例中的模块module1作为待综合模块,在识别该模块时,对于module1的实例inst1识别出第一套外部传入参数parameter1=value1,parameter2=value2。对于module1的实例inst2识别出第二套外部传入参数parameter1=value3,parameter2=value4。然后针对第一套外部传入参数和第二套外部传入参数分别生成一个综合任务。
在一个可能的示例中,对待综合模块module2的描述如下:
module2#(.paramater1(value1),.parameter2(value2))inst1(.port1(wire1),.port2(wire2));//这一行的含义是,定义了一个模块,模块名字为module2,模块的外部传入参数是parameter1=value1,parameter2=value2,模块的例化名是inst1,模块的端口port1接在连线wire1上,模块的端口port2接在连线wire2上。
在识别待综合模块module2时,对于module2的实例inst1识别出外部传入参数parameter1=value1,parameter2=value2。那么针对待综合模块module2对应的生成一个综合任务。
步骤S504:通过多个处理器执行n个综合任务,并得到n个网表。
通过多个处理器并行执行n个综合任务,其中多个处理器可以是指如图4所示的综合装置上的一个处理器中的多个处理器核,也可以指如图2或图4所示的综合装置上的多个处理器还可以指多个如图4所示的综合装置和如图2所示的综合装置提供的多个处理器,其中每一个综合装置具有至少一个处理器,每一个处理器至少包括一个物理内核。
在一个可能的实施例中,通过多个处理器并行执行n个综合任务的处理时,任意一个处理器执行综合任务的流程如图7所示,包括:
步骤S701,判断待执行的综合任务是否为空,如果待执行的综合任务为空,则结束当前程序,如果待执行的综合任务不为空,则执行步骤S702。
步骤S702,获取一个综合任务,并执行该综合任务。
处理器在执行综合任务时,一般采用综合工具进行综合。在本发明申请实施例中,使用综合工具进行数字电路逻辑综合由3部分组成,即综合=转化(translation)+优化(optimization)+映射(mapping)。
在一个可能的实施例中,使用综合工具进行综合的流程如图8所示,包括:
步骤S801,加载库文件;该库文件包括:单元库、连接库、符号库、综合库中的一种或多种。
步骤S802,加载综合需要的任务信息以及综合该任务需要的依赖信息。
步骤S803,对需要综合的任务施加设计约束。
在一个可能的示例中,对需要综合的任务施加的设计约束包括:时序和面积约束、电路的环境属性、时序和负载在不同模块之间的分配以及时序分析。
在进行时序约束时需要约束电路中所有的时序路径,使其延迟符合设计要求。具体地,可以将时序路径分为三类:输入到寄存器的路径、寄存器到寄存器之间的路径以及寄存器到输出的路径。对输入到寄存器的路径的时序约束主要通过定义输入时延来实现,输入时延是指被综合模块外的寄存器触发的信号在到达被综合模块之前经过的时延。对寄存器到寄存器之间的路径的时序约束主要通过定义时钟约束来实现。对输出路径的时序约束主要通过定义输出延时来实现。输出延时是指本电路端口到达本电路之外电路触发器所需要的时延。
步骤S804,执行加载的综合任务;包括:根据加载的库文件、依赖信息和所施加的设计约束对需要综合的任务进行综合。
步骤S805,输出综合结果。
在本申请实施例中,在RTL代码仿真通过以后,就开始进行综合,综合时需要接入约束和设计属性信息。综合工具根据这些约束将RTL模块综合成门级网表,然后分析综合后的网表是否满足约束条件。
在一个可能的实施例中,针对步骤S804,在使用综合工具进行综合时,其综合的过程具体包括:
第一步:将HDL代码转换为通用的布尔门阵列。这个库中的器件没有时序和负载的特性,它仅仅是综合工具用来表示器件的一个符号。
第二步,根据设计工程师对电路与其功能的要求,对第一步产生的网表施加时序、功耗和面积等各方面的约束。
第三步,将电路按照设计的约束优化和综合,使其能满足设计的目标或约束,并且映射到特定厂家目标工艺库的逻辑器件,此时的网表中包含了厂家的工艺参数。
在一个可能的实施例中,在将综合后的电路按照设计的约束优化和综合后,还包括:
第四步,产生各种设计报告,设计工程师可以通过这些报告分析评估这些网表是否满足预期要求。若不满足预期要求,可对设计约束或者RTL进行修改直到满足需求为止。
第五步,将满足设计需求的门级网表保存到文件中。
步骤S703,修改当前所执行的综合任务的输出网表中的模块名。
每一个综合任务都对应一套依赖信息,因此修改当前所执行的综合任务的输出网表中的模块名包括:根据预先存储的当前所执行的综合任务对应的依赖信息在存储器中存储时 使用的模块名来修改网表中的模块名。
在一个可能示例中,以下面的代码为例进行说明,
module1 #(.paramater1(value1),.parameter2(value2))inst1(.port1(wire1),.port2(wire2));
在综合后输出的网表中,变为:
module1_P1 inst1(.port1(wire1),.port2(wire2));
需要说明的是,在获取歌模块综合需要的依赖信息时,获取的只是模块层次的依赖信息,不包括当前需要综合的模块中例化的子模块的定义。在执行综合任务时,遇到没有子模块定义的子模块时,直接将该子模块保留在网表中,不报错。以使得综合任务可以继续执行。即在对上述module1进行综合时,将子模块的实例inst1保留到网表中。
步骤S704,输出网表,并继续执行步骤S701。
在本发明申请实施例中,提供了一种数字电路的综合方法,在对RTL代码进行综合时,以模块为单位提取单个模块综合需要的依赖信息,使得在对RTL代码进行综合时,可以生成多个综合任务,并且可以将多个综合任务分布到多个服务器上执行,即通过分布式计算实现超大规模并行。进一步地,在典型的大规模芯片中,模块的个数数以万计,以模块为单位进行综合,可以实现最多同等数量的并行综合,摆脱了单一服务器的资源限制,提高了综合速度。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (16)
- 一种数字电路的综合方法,其特征在于,包括:获取数字电路的RTL代码,所述RTL代码包括x个模块的RTL代码;所述模块是指数字电路中的基本设计单元;获取所述x个模块中各模块综合需要的依赖信息;所述依赖信息包括:模块的定义;根据所述依赖信息,确定对所述RTL代码进行综合需要执行的n个综合任务;所述n个综合任务与x个模块的RTL代码相对应;其中,x为大于或等于1,且小于或等于n的自然数,n为大于或等于1的自然数;通过多个处理器执行所述n个综合任务,并得到n个网表。
- 根据权利要求1所述的方法,其特征在于,所述依赖信息还包括:模块中的外部传入参数、模块用到的宏定义或模块的外部依赖信息中的至少一种;所述外部依赖信息是指在当前模块中使用并定义在当前模块外部的信息;所述外部依赖信息包括:接口、包、结构体、函数或任务中的至少一种。
- 根据权利要求1-2任一项所述的方法,其特征在于,当获取的待综合模块的依赖信息中包括至少两套外部传入参数时,所述根据所述依赖信息,确定对所述RTL代码进行综合需要执行的n个综合任务包括:根据所述待综合模块的每一套外部传入参数生成一个综合任务;其中,任意两套外部传入参数之间,存在至少一个参数的取值是不相同的,所述待综合模块为x个模块中的一个模块;当获取的待综合模块的依赖信息中不包含外部传入参数或只包含一套外部传入参数时,所述根据所述依赖信息,确定对所述RTL代码进行综合需要执行的n个综合任务包括:所述待综合模块生成一个综合任务。
- 根据权利要求3所述的方法,其特征在于,当所述待综合模块的依赖信息中包括至少两套外部传入参数时,所述方法还包括:对所述依赖信息进行存储,并对存储的每一套外部传入参数的模块名进行修改。
- 根据权利要求4所述的方法,其特征在于,所述方法还包括:在生成网表时,根据预先存储的每一套外部传入参数对应的模块名,对网表中的模块名进行修改。
- 根据权利要求1-2任一项所述的方法,其特征在于,所述通过多个处理器执行n个综合任务包括:所述多个处理器在同一时刻分别执行一个综合任务,当任意一个处理器中的综合任务 完成以后,切换到下一个还未执行的综合任务直到最后一个综合任务完成。
- 根据权利要求1所述的方法,其特征在于,所述依赖信息不包括当前模块中例化的子模块的定义,当所述处理器在执行综合任务时,将没有子模块定义信息的子模块保留到网表中。
- 一种数字电路综合装置,其特征在于,包括:多个处理器和存储器;所述存储器用于存储计算机指令;所述多个处理器中的一个处理器用于根据所述指令执行以下步骤:获取数字电路的RTL代码,所述RTL代码包括x个模块的RTL代码;所述模块是指数字电路中的基本设计单元;获取所述x个模块中各模块综合需要的依赖信息;所述依赖信息包括:模块的定义;根据所述依赖信息,确定对所述RTL代码文件进行综合需要执行的n个综合任务;所述n个综合任务与x个模块的RTL代码相对应;其中,x为大于或等于1,且小于或等于n的自然数,n为大于或等于1的自然数;所述多个处理器还用于共同执行所述n个综合任务,并得到n个网表。
- 根据权利要求8所述的装置,其特征在于,所述依赖信息还包括:模块中的外部传入参数、模块用到的宏定义以及模块的外部依赖信息中的至少一种;所述外部依赖信息是指在当前模块中使用,并定义在当前模块外部的信息;所述外部依赖信息包括:接口、包、结构体、函数、任务中的至少一种。
- 根据权利要求8-9任一项所述的装置,其特征在于,当获取的待综合模块的依赖信息中包括至少两套外部传入参数时,所述第一处理器还执行:根据所述模块中的每一套外部传入参数生成一个综合任务;其中,任意两套外部传入参数之间,存在至少一个参数的取值是不相同的,所述待综合模块为x个模块中的一个模块;当获取的待综合模块的依赖信息中不包含外部传入参数或只包含一套外部传入参数时,所述第一处理器还执行:所述待综合模块生成一个综合任务。
- 根据权利要求10所述的装置,其特征在于,当所述待综合模块的依赖信息包括至少两套外部传入参数时,所述第一处理器还执行:对所述依赖信息进行存储,并对存储的每一套外部传入参数的模块名进行修改。
- 根据权利要求11所述的装置,其特征在于,在生成网表时,所述多个处理器还执行:根据预先存储的每一套外部传入参数对应的模块名,对网表中的模块名进行修改。
- 根据权利要求8-9任一项所述的装置,其特征在于,所述多个处理器还执行:所述多个处理器在同一时刻分别执行一个综合任务,当任意一个处理器中的综合任务完成以后,切换到下一个还未执行的综合任务直到最后一个综合任务完成。
- 根据权利要求8所述的装置,其特征在于,所述依赖信息不包括当前模块中例化的子模块的定义,当所述多个处理器在执行综合任务时,将没有子模块定义信息的值模块保留到网表中。
- 一种计算机存储介质,其特征在于,所述计算机存储介质包括计算机指令,当所述计算机指令在终端上运行时,使得终端执行权利要求1-7中任一项所述的方法。
- 一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1-7中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202180086370.XA CN116745770A (zh) | 2021-03-23 | 2021-03-23 | 一种数字电路的综合方法及综合装置 |
PCT/CN2021/082428 WO2022198447A1 (zh) | 2021-03-23 | 2021-03-23 | 一种数字电路的综合方法及综合装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/082428 WO2022198447A1 (zh) | 2021-03-23 | 2021-03-23 | 一种数字电路的综合方法及综合装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022198447A1 true WO2022198447A1 (zh) | 2022-09-29 |
Family
ID=83396223
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2021/082428 WO2022198447A1 (zh) | 2021-03-23 | 2021-03-23 | 一种数字电路的综合方法及综合装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116745770A (zh) |
WO (1) | WO2022198447A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116542190A (zh) * | 2023-06-02 | 2023-08-04 | 英诺达(成都)电子科技有限公司 | 用户设计综合方法、装置、设备、介质及产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106709116A (zh) * | 2015-11-17 | 2017-05-24 | 深圳市博巨兴实业发展有限公司 | 一种生成rtl级ip核方法及装置 |
CN107368643A (zh) * | 2017-07-13 | 2017-11-21 | 湖南中云飞华信息技术有限公司 | 基于rtl的模块划分方法、装置及终端设备 |
CN112270148A (zh) * | 2020-10-16 | 2021-01-26 | 山东云海国创云计算装备产业创新中心有限公司 | 一种门级网表生成方法及相关装置 |
CN112528583A (zh) * | 2020-12-18 | 2021-03-19 | 广东高云半导体科技股份有限公司 | 多线程综合方法及用于fpga开发的综合系统 |
-
2021
- 2021-03-23 WO PCT/CN2021/082428 patent/WO2022198447A1/zh active Application Filing
- 2021-03-23 CN CN202180086370.XA patent/CN116745770A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106709116A (zh) * | 2015-11-17 | 2017-05-24 | 深圳市博巨兴实业发展有限公司 | 一种生成rtl级ip核方法及装置 |
CN107368643A (zh) * | 2017-07-13 | 2017-11-21 | 湖南中云飞华信息技术有限公司 | 基于rtl的模块划分方法、装置及终端设备 |
CN112270148A (zh) * | 2020-10-16 | 2021-01-26 | 山东云海国创云计算装备产业创新中心有限公司 | 一种门级网表生成方法及相关装置 |
CN112528583A (zh) * | 2020-12-18 | 2021-03-19 | 广东高云半导体科技股份有限公司 | 多线程综合方法及用于fpga开发的综合系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116542190A (zh) * | 2023-06-02 | 2023-08-04 | 英诺达(成都)电子科技有限公司 | 用户设计综合方法、装置、设备、介质及产品 |
CN116542190B (zh) * | 2023-06-02 | 2023-09-01 | 英诺达(成都)电子科技有限公司 | 用户设计综合方法、装置、设备、介质及产品 |
Also Published As
Publication number | Publication date |
---|---|
CN116745770A (zh) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7788625B1 (en) | Method and apparatus for precharacterizing systems for use in system level design of integrated circuits | |
Airiau et al. | Circuit synthesis with VHDL | |
US7472361B2 (en) | System and method for generating a plurality of models at different levels of abstraction from a single master model | |
US9652570B1 (en) | Automatic implementation of a customized system-on-chip | |
US6192504B1 (en) | Methods and systems for functionally describing a digital hardware design and for converting a functional specification of same into a netlist | |
US7743352B2 (en) | Computer implemented method of high-level synthesis for the efficient verification of computer software | |
US8386973B2 (en) | Behavioral synthesis apparatus, method, and program having test bench generation function | |
Große et al. | Quality-driven SystemC design | |
Lavagno et al. | Design of embedded systems | |
Simpson | FPGA design | |
Christensen et al. | Wire sorts: A language abstraction for safe hardware composition | |
WO2022198447A1 (zh) | 一种数字电路的综合方法及综合装置 | |
Wagner et al. | Strategies for the integration of hardware and software IP components in embedded systems-on-chip | |
Cai et al. | Comparison of Specfic and SystemC languages for system design | |
Ebeid et al. | HDL code generation from UML/MARTE sequence diagrams for verification and synthesis | |
US6952817B1 (en) | Generating hardware interfaces for designs specified in a high level language | |
Mehta et al. | SystemVerilog Assertions | |
Balarin et al. | Metropolis: A design environment for heterogeneous systems | |
Chu et al. | A New Design Methodology for Composing Complex Digital Systems | |
Villar et al. | Synthesis applications of VHDL | |
US8447581B1 (en) | Generating simulation code from a specification of a circuit design | |
US20230114858A1 (en) | Circuit design simulation and clock event reduction | |
Kangas | Methods and implementations for automated system on chip architecture exploration | |
Vivenzio | Advanced High-performance Bus (AHB) architecture verification | |
Mohamed | HW/SW Co-Exploration and Co-Design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 21932078 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 202180086370.X Country of ref document: CN |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 21932078 Country of ref document: EP Kind code of ref document: A1 |