一种基于智能分析的芯片设计方法
技术领域
本发明涉及芯片设计
技术领域
,尤其是一种基于智能分析的芯片设计方法。背景技术
半导体技术、工艺经过几十年的发展,由最初的半导体分立元件晶体管发展到今天的超大规模集成电路。伴随着半导体技术、工艺的发展,集成电路的设计技术也经历了由最初的计算机辅助设计工具发展到今天的完整的集成电路设计自动化流程(ElectronicDesign Automation),尤其是上个世纪九十年代综合技术的发明和应用,使得集成电路的设计从设计思想的描述到最终的物理实现整体设计流程的自动化成为可能。
目前常用的FPGA芯片和ASIC芯片的设计流程类似,以利用EDA(Electronicdesign automation,电子设计自动化)开发软件和编程工具对FPGA芯片进行开发的过程为例,EDA开发软件的开发流程主要包括用户设计输入、逻辑综合、装箱、布局、布线、时序分析和码流生成等操作。其中,逻辑综合过程用于将输入的用户设计(RTL级描述文件)转化为器件网表,主要包括读入、翻译、优化和映射四个过程,第一步读入RTL级描述文件,第二步将RTL级描述文件转换成通用电路(与具体工艺无关),第三步对通用电路根据设计目标优化电路结构,第四步将优化后的电路结构映射到FPGA芯片对应的目标工艺库,选择合适的目标工艺库中的元件来实现优化后的电路结构,从而得到适合该FPGA芯片的器件网表。
随着半导体工艺的飞速发展,芯片设计容量也相应不断扩大,如何快速准确的将用户设计正确地转换成数字系统并成功地安装在芯片上,提高超大容量FPGA/ASIC设计的处理效率和优化水平,给与芯片配套的设计软件提出了重大挑战。
发明内容
本发明人针对上述问题及技术需求,提出了一种基于智能分析的芯片设计方法,本发明的技术方案如下:
一种基于智能分析的芯片设计方法,该方法包括:
获取RTL级描述文件,对RTL级描述文件中的描述语句进行解析并识别得到若干个器件组,每个器件组是通过至少两个具有预定关联的描述语句和/或至少一个符合预定语句特征的描述语句表示的电路结构,将所有器件组加入包含若干个原型器件的映射库中;
基于映射库对RTL级描述文件进行逻辑综合处理得到逻辑网表,逻辑网表包括若干个绑定单元和若干个独立逻辑单元,绑定单元基于映射库中的一个器件组映射得到且内部绑定映射库中的若干个原型器件,每个独立逻辑单元分别基于映射库中的一个原型器件映射得到;
以逻辑网表中的绑定单元和独立逻辑单元作为最小处理单元在待设计芯片上进行装箱、布局和布线,并完成对待设计芯片的芯片设计。
其进一步的技术方案为,当两个描述语句中的信号逻辑相关时,和/或,两个描述语句属于RTL级描述文件中同一个预定块语句内的语句时,确定两个描述语句具有预定关联。
其进一步的技术方案为,当两个描述语句存在至少一个相同的输入信号,和/或,其中一个描述语句的输出信号是另一个描述语句的输入信号时,确定两个描述语句中的信号逻辑相关。
其进一步的技术方案为,当两个描述语句包括在同一个预定过程语句形成的过程块内时;和/或,当两个描述语句包括在构成预定语法结构的语句组之间时;和/或,当两个描述语句包括在同一个循环语句形成的循环结构内时;确定两个描述语句属于同一个预定块语句内的语句。
其进一步的技术方案为,当描述语句中存在至少一个运算符且描述语句的输入信号的位宽大于一位时,确定描述语句符合预定语句特征。
其进一步的技术方案为,对RTL级描述文件中的描述语句进行解析并识别得到若干个器件组,包括:
针对RTL级描述文件中的每个过程块分别建立一个候选器件组并将具有预定关联的各个候选器件组进行合并;
将表达式语句划分到具有预定关联的候选器件组中;对于未划分到任何候选器件组中的表达式语句,针对至少两个具有预定关联的表达式语句建立一个候选器件组;
直接将建立得到的所有候选器件组作为识别得到的器件组,或者,对每个候选器件组中由预定语法结构的语句组形成的块语句单独拆分形成一个候选器件组后将建立得到的所有候选器件组作为识别得到的器件组。
其进一步的技术方案为,利用并行运算资源对RTL级描述文件中的器件组分别进行逻辑综合处理。
其进一步的技术方案为,一个器件组中包括以通用电路模型和/或局部网表形式存在的电路结构,以通用电路模型形式存在的电路结构表示具有预设架构的宏单元,以局部网表形式存在的电路结构表示除所有具有预设架构的宏单元之外的电路结构。
其进一步的技术方案为,一个器件组中还包括其他识别得到的器件组。
其进一步的技术方案为,具有预设架构的宏单元包括N比特算数运算单元、N比特多路选择器、N比特比较器、存储单元、数字信号处理单元、控制电路单元以及微处理器单元中的至少一种。
其进一步的技术方案为,在基于映射库对RTL级描述文件中的一个器件组进行逻辑综合处理时:
对器件组中以局部网表形式存在的电路结构进行逻辑优化后,绑定映射到映射库中的原型器件;
和/或,对器件组中以通用电路模型存在的电路结构直接绑定映射到映射库中的原型器件。
其进一步的技术方案为,以逻辑网表中的绑定单元和独立逻辑单元作为最小处理单元在待设计芯片上进行装箱、布局和布线,包括:
将逻辑网表中的绑定单元和独立逻辑单元装入待设计芯片内的各个物理基本单元中完成装箱;
将装有同一个绑定单元的各个物理基本单元作为一个箱、将其余装有独立逻辑单元的一个物理基本单元作为一个箱,以箱为最小处理单元在待设计芯片上进行布局;
完成布局后,以各个原型器件为最小处理单元进行布线。
其进一步的技术方案为,RTL级描述文件以Verilog、System Verilog以及VHDL中的任意一种描述语言编写得到。
其进一步的技术方案为,待设计芯片为FPGA芯片或ASIC芯片。
本发明的有益技术效果是:
本申请公开了一种基于智能分析的芯片设计方法,该方法在RTL层级识别有关联或者特定的描述语句创建器件组,由原型器件层级向更高层级的抽象和提升,将该器件组加入映射库后基于器件组进行后续的综合逻辑处理以及装箱布局布线,从而可以减少处理单元数量和数据规模,而且可以最大限度地使用并行处理的计算资源,来提高超大容量芯片设计的处理能力和效率,而且可以帮助后续设计流程提高效率和品质。
附图说明
图1是本申请的芯片设计方法的信息流处理示意图。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步说明。
本申请公开了一种基于智能分析的芯片设计方法,请参考图1所示的流程图,该方法包括如下步骤:
一、获取RTL级描述文件。可选的,本申请中的RTL级描述文件以Verilog、SystemVerilog以及VHDL中的任意一种描述语言编写得到。
对RTL级描述文件中的描述语句进行解析并识别得到若干个器件组,每个器件组是通过至少两个具有预定关联的描述语句和/或至少一个符合预定语句特征的描述语句表示的电路结构。其中,上述所说的描述语句为单个表达式语句或者形成预定块语句的语句组,单个语句比如常见的assign赋值语句,预定块语句的定义请见如下(1.2)。其中:
(1)当两个描述语句中的信号逻辑相关时,和/或,两个描述语句属于RTL级描述文件中同一个预定块语句内的语句时,确定两个描述语句具有预定关联。
(1.1)两个描述语句之间的信号逻辑相关性根据描述语句所涉及到的信号来确定,在一个实施例中,当两个描述语句存在至少一个相同的输入信号,和/或,其中一个描述语句的输出信号是另一个描述语句的输入信号时,确定两个描述语句中的信号逻辑相关。
比如:描述语句1“assign t1=a5&a6&a7&a8&a9&a10”用于对t1进行赋值,输入信号包括a5、a6、a7、a8、a9和a10。
描述语句2“assign t2=(!a5)&(!a6)&(!a7)&(!a8)&(!a9)|(!a10)”用于对t2进行赋值,输入信号也包括a5、a6、a7、a8、a9和a10。
描述语句3“assign x=((a1&a2|a3&a4)&t1)|(((!a3)&(!a4)|(!a1)&(!a2))&t2)”用于对x赋值,输入信号包括a1、a2、a3、a4、t1和t2。
在该举例中,由于描述语句1和描述语句2的输入信号存在交集,因此这描述语句1和描述语句2的信号逻辑相关。由于t1和t2都用于驱动x,因此描述语句3与描述语句1和描述语句2的信号都逻辑相关。
(1.2)在另一个实施例中,当两个描述语句包括在同一个预定过程语句形成的过程块内时,和/或,当两个描述语句包括在构成预定语法结构的语句组之间时,和/或,当两个描述语句包括在同一个循环语句形成的循环结构内时,确定两个描述语句属于同一个预定块语句内的语句。
可选的,预定过程语句包括RTL级描述文件中的always语句、generate内和、initial语内中的至少一种。构成预定语法结构的语句组包括if/else语句组和begin/end语句组中的至少一种。循环语句包括for语句、repeat语句、while语句和forever语句中的至少一种。
(2)当描述语句中存在至少一个运算符且描述语句的输入信号的位宽大于一位时,确定描述语句符合预定语句特征。其中,描述语句的输入信号包括一个或多个,运算符包括算数运算符、赋值运算符和关系运算符中的至少一种,算数运算符包括加(+)、减(-)、乘(*)、除(/)和取模(%)中的至少一种,相等关系操作符包括等于(==)和不等于(!=)中的至少一种,关系运算符包括大于(>)、小于(<)、大于等于(>=)和小于等于(<=)中的至少一种。比如,记为“a+b”且a和b均为64位宽的信号的描述语句符合预定语句特征。再比如,记为“if((a+b)>(c+d))y=0”且a、b、c、d的位宽均大于1的描述语句符合预定语句特征。
本申请中确定得到的一个器件组中包括以通用电路模型和/或局部网表形式存在的电路结构,以通用电路模型形式存在的电路结构表示具有预设架构的宏单元。可选的,具有预设架构的宏单元包括N比特算数运算单元、N比特多路选择器、N比特比较器、存储单元、数字信号处理单元、控制电路单元以及微处理器单元中的至少一种,需要说明的是,上述提到的N比特只是泛指,不代表各个器件的信号位宽需要相等。其中,算数运算单元包括加法器、减法器、乘法器、除法器和累加器中的至少一种,存储单元包括BRAM、ROM、RAM中的至少一种,数字信号处理单元包括数字滤波器和DSP中的至少一种,控制电路单元包括FSM(Finite State Machine,有限状态机),微处理器单元包括CPU、GPU、MPU中的至少一种。这些具有预设架构的宏单元都是一些常用的高层级模块,可以记为primitive cell,每个宏单元的架构预先配置设定形成,因此可以直接以通用电路模型的形式存在。除了形成宏单元的电路结构之外,器件组还包括一些随机组合逻辑,这些随机组合逻辑不形成任何预设架构的宏单元,因此以网表的形式存在,因此以局部网表形式存在的电路结构表示除所有具有预设架构的宏单元之外的电路结构。所以,本申请中的器件组既可以包括宏单元也可以包括随机组合逻辑,是比常规的宏单元更高级、电路复杂度更高的模块。可选的,一个器件组中还包括其他识别得到的器件组,也即器件组之间可以存在包含嵌套关系。比如以简单的举例,假设一个器件组是由一个符合预定语句特征的描述语句“if((a+b)>(c+d))y=0”表示的电路结构,则这个器件组嵌套两个加法器(a+b和c+d)和一个比较器(比较a+b和c+d)。
本申请一个实施例提供的识别器件组的方法为:针对RTL级描述文件中的每个过程块分别建立一个候选器件组并将具有预定关联的各个候选器件组进行合并。其中,过程块为always块或process块,具有预定关联的各个候选器件组是指内部包含存在信号逻辑相关的描述语句的候选器件组和/或包含属于同一个预定块语句内的描述语句的候选器件组。将表达式语句划分到具有预定关联的候选器件组中,表达式语句通常指assign赋值语句,当候选器件组中存在与表达式语句存在信号逻辑相关和/或属于同一个预定块语句内的描述语句时,确定该候选器件组与表达式语句具有预定关联,并将候选器件组归入。
比如对于如下过程块建立一个候选器件组,t1和t2由上述(1.1)中的举例中的描述语句1和描述语句2确定,a1和a2为输入信号,由于t1和t2为该always块的条件语句的输入信号,因此t1的赋值语句和t2的赋值语句与该候选器件组中的条件语句存在信号逻辑相关,所以将描述语句1和描述语句1划分到该候选器件组中。对于未划分到任何候选器件组中的表达式语句,针对至少两个具有预定关联的表达式语句建立一个候选器件组,表达式语句之间的预定关联与上述情况(1)中的预定关联类似,在此不再赘述,也即表达式语句可能未被吸收到任何过程块的候选器件组中,而是与其他存在预定关联的表达式语句一起构成独立的候选器件组。
在得到所有候选器件组后,可以直接将建立得到的所有候选器件组作为识别得到的器件组。或者可以进一步对每个候选器件组进行拆分,也即对每个候选器件组中由预定语法结构的语句组形成的块语句单独拆分形成一个候选器件组后将建立得到的所有候选器件组作为识别得到的器件组。比如可以在一个always块对应的候选器件组中通过识别case结构或if/else结构来识别MUX和ROM等宏单元单独创建作为一个嵌套在always块对应的候选器件组内的候选器件组,从而后续减轻上一层级的器件组的优化负担。
在识别得到所有器件组后,将所有器件组加入包含若干个原型器件的映射库中。映射库是现有对待设计芯片进行工艺映射时需要使用到的库,其内部包含若干个原型器件,常见的原型器件比如LUT和寄存器等等。本申请在常规的映射库的基础上,加入了上述识别得到的器件组。其中,待设计芯片为FPGA芯片或ASIC芯片。
二、基于映射库对RTL级描述文件进行逻辑综合处理得到逻辑网表,逻辑网表包括若干个绑定单元和若干个独立逻辑单元,绑定单元基于映射库中的一个器件组映射得到且内部绑定映射库中的若干个原型器件,每个独立逻辑单元分别基于映射库中的一个原型器件映射得到。
在基于映射库对RTL级描述文件中的一个器件组进行逻辑综合处理时:对器件组中以局部网表形式存在的电路结构进行逻辑优化后,绑定映射到映射库中的原型器件。和/或,对器件组中以通用电路模型存在的电路结构直接绑定映射到映射库中的原型器件。也即对于以局部网表形式存在的随机组合逻辑,需要进行逻辑优化后做绑定映射,而以通用电路模型存在的电路结构不参与传统意义上的逻辑优化,这是因为这些以通用电路模型存在的电路结构所形成的宏单元是常用的结构,根据芯片上的资源,我们可以直接构建最优映射的物理实现,例如对N选一的多路选择器,N比特加法器等,可以直接确定最佳的实现架构,因此无需以通用逻辑网表的形式参与逻辑优化。具体的优化、绑定映射的过程与现有做法类似,在此不再赘述。
由于对RTL级描述文件中的每个器件组的逻辑综合处理是相对独立的,因此可以利用并行运算资源对RTL级描述文件中的器件组分别进行逻辑综合处理,并行运算资源比如多线程,以提高整体设计流程处理超大容量设计的能力。
三、以逻辑网表中的绑定单元和独立逻辑单元作为最小处理单元在待设计芯片上进行装箱、布局和布线,并完成对待设计芯片的芯片设计。
具体的:将逻辑网表中的绑定单元和独立逻辑单元装入待设计芯片内的各个物理基本单元中完成装箱,由于以绑定单元为最小处理单元而非以内部的原型器件为最小处理单元,因此可以提高装箱的效率和精准度。将装有同一个绑定单元的各个物理基本单元作为一个箱、将其余装有独立逻辑单元的一个物理基本单元作为一个箱,以箱为最小处理单元在待设计芯片上进行布局。由于以箱为最小处理单元而非以物理基本单元为最小处理单元,因此可以提高布局的效率和处理超大容量设计的能力。完成布局后,取消绑定单元的边界,以各个原型器件为最小处理单元进行布线。
比如识别得到的一个器件组为16选一多路选择器,逻辑综合处理后对应的绑定单元包括4个LUT6和3个MUXF2,按照常规做法,需要针对4个LUT6和3个MUXF2进行装箱、布局和布线,而在达到装箱这一步时,要想从待设计芯片内众多的LUT中选出4个LUT6比较困难、选出3个MUXF2同理。而按照本申请的做法,以包含4个LUT6和3个MUXF2的绑定单元作为一个整体进行装箱,大大减小了装箱以及后续布局布线的难度,而且大大减少了需要处理的数量。
再比如识别得到的一个器件组为64选一多路选择器,常规的做法需要处理17个LUT6、8个MUXF7和4个MUXF8共29个原型器件,而利用本申请的做法进行高层次的抽象提升后,直接处理一个绑定单元即可,这是29对1的效率提升,为处理超大容量芯片设计提高效率。
再比如识别得到的一个器件组为64位宽累加器,输入信号有时钟信号、时钟使能信号、异步高位置零信号、累加器初始化控制信号、累加器初始化数据、累加器输入数据accumulate_in[63:0],输出信号是accumulate_out[63:0]。常规的做法需要处理196个IO缓冲器、64个LUT4、63个LUT2、64个D触发器、16个进位链单元和1个时钟信号缓冲器共404个原型器件,而利用本申请的做法进行高层次的抽象提升后,直接处理一个绑定单元即可,这是404对1的效率提升,为处理超大容量芯片设计提高效率。
以上所述的仅是本申请的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。