CN110489814A - 一种通过在代码中提取数据流辅助芯片布局规划的方法 - Google Patents
一种通过在代码中提取数据流辅助芯片布局规划的方法 Download PDFInfo
- Publication number
- CN110489814A CN110489814A CN201910683472.4A CN201910683472A CN110489814A CN 110489814 A CN110489814 A CN 110489814A CN 201910683472 A CN201910683472 A CN 201910683472A CN 110489814 A CN110489814 A CN 110489814A
- Authority
- CN
- China
- Prior art keywords
- input
- output port
- module
- chip
- data flow
- 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
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开一种通过在代码中提取数据流辅助芯片布局规划的方法,通过RTL代码或是门级网表查找各模块的数据走向,方便设计人员的选择所需知道其数据流走向的模块;进而找到与所指定模块有数据交互的其他模块,并通过图表的形式呈现各模块的数据交互关系,减少了整个设计流程中因设计者提供设计说明文件和前后端沟通时产生的时间;再通过数据走向得到摆放输入输出端口的脚本,减少后端工程师布局规划的时间,加快设计速度。
Description
技术领域
本发明属于电子设计自动化EDA领域,具体涉及一种通过在代码中提取数据流辅助芯片布局规划的方法。
背景技术
集成电路在日常生活中扮演着越来越重要的角色,是人们信息生活的基础,但随着工艺的发展,器件特征尺寸越来越小,芯片的设计规模越来越大,VLSI的整个设计周期就变得越来越长。而芯片的周期长短直接影响着芯片的设计成本,市场竞争力等,关乎着整个设计的成功与否,所以在设计的过程中必须提高自动化程度来加速设计的速度。
而当前人们对于数字电路中电子设计自动化的研究,大都是对前后端各个阶段使用的工具进行内部算法优化,提高工具的计算效率,从而加速前端逻辑设计时功能仿真和门级综合速度,提高后端物理实现过程中工具在一些重要步骤上的计算效率,或者还能***设计的功耗,面积,阻塞程度,DRC数量,时序收敛等情况,便于后端工程师在现阶段的设计上进行优化。
而实际的工程中,由于当前芯片设计的流程越来越完善,设计步骤变得越来越多,人员分工越来越细,从事不同阶段电路设计的人员彼此之间是不清楚各自所做的具体工作,对于后端设计的人来说,他们是不清楚设计中数据流走向的,而这一信息在其做版图的布局规划时是必须要的,而通常后端工程师是通过阅读前端工程师所写的设计描述文件再与前端工程师沟通获取这一信息,而这就会造成了两者的信息交互的过程中大量的时间的浪费,降低了整个工程的设计效率。
然而,后端工程师所需要的各种层次的模块与模块之间,单元与单元之间的数据连接关系都可以从RTL代码和门级网表中自动提取到,可以根据代码中模块的各个端口可以找到与之有连接关系的模块,这种端口连接关系其实就是数据交互关系,两者之间就存在后端所需要的数据流,并且可以把这种关系用图像的方式自动体现出来。
因此,在前端工程师设计完电路之后,自动拿到各个层次中各个模块或单元的数据流的走向辅助后端人员制定更好的布局规划,或者更是在后端物理实现过程中根据芯片形状和用户规定的端口摆放需求自动得到布局布线工具能直接使用的脚本就变得很有意义,因为这会大大减少了整个工程中因前端工程师提供设计说明文件和与后端沟通时产生的大量时间。
发明内容
本发明的目的是提供一种通过在代码中提取数据流辅助芯片布局规划的方法,能够提高芯片设计时布局规划的效率。
本发明采用的技术方案是,一种通过在代码中提取数据流辅助芯片布局规划的方法,通过RTL代码或是门级网表查找各模块的数据走向,进而找到与所指定模块有数据交互的其他模块,并通过图表的形式呈现各模块的数据交互关系;再通过输入输出端口之间的数据走向得到摆放输入输出端口的脚本。
本发明的特点还在于:
具体按照以下步骤实施:
步骤1、如图1所示,通过Python的Tkinter模块设计图形化界面,在该图形化界面上选择指定模块;
步骤2、通过Python语言对各模块内的RTL代码和门级网表进行处理得到指定模块的输入输出信号,通过查找其输入输出信号在代码中再次出现的地方,得到与指定模块有连接关系的其他模块,该连接关系即为数据走向;
步骤3、通过Python的SchemDram模块得到关于指定模块与其他模块的数据走向的图表;
步骤4、分别在图形化界面上设置每一模块输入输出端口的排布需求,再根据输入输出间的数据流向,输出摆放输入输出端口的脚本。
步骤1图形化界面包括:设计层次选择、所选择对象、chip或block的长、chip或block的宽、每个输入输出端口所隔的距离、左边输入输出端口的个数、右边输入输出端口的个数、上边输入输出端口的个数、下边输入输出端口的个数、产生数据流图按键、产生摆放输入输出脚本按键。
步骤4排布需求包括:chip或block的长、chip或block的宽、每个输入输出端口所隔的距离、左边输入输出端口的个数、右边输入输出端口的个数。
步骤4具体过程为:
步骤4.1、在图形化界面上分别输入每个模块的chip或block的长、chip或block的宽、每两个输入输出端口之间的距离、每边输入输出端口的个数,参数传输接口将这些参数传到位置计算模块中,位置计算模块根据根据图表上各输入输出端口间数据流向将所有的输入输出端口进行分组;
步骤4.2、先计算包涵时钟输入端那组的所有输入输出端口的位置,将chip或block的长除以二得到时钟输入端的位置坐标,按照每组输入输出端口所隔的距离依次向上向下交叠展开得出这组端口中其他端口的位置坐标;
当这该组输入输出端口数超过单边允许摆放的端口数,还未计算出位置坐标的端口将会交叠地算到上下边接近原侧的位置上;
如果该组输入输出端口数小于单边允许摆放的端口数,其它组的端口就会算到原侧这边;
步骤4.3、重复步骤4.2计算其余各组的输入输出端口的位置坐标,输出摆放输入输出端口的脚本。
输入输出端口为IO或pin。
本发明的有益效果是:
本发明一种通过在代码中提取数据流辅助芯片布局规划的方法,在前端设计完电路之后,自动快速拿到RTL级或门级下顶层或单独某个模块或单元的数据流走向来辅助后端做布局规划,并且还在后端设计流程中根据输入输出位置的需求,直接得到后端工具可以直接使用的摆放输入输出端口的脚本,提高物理设计中布局规划阶段的效率。
附图说明
图1是本发明中用户操作的图形化界面图;
图2是本发明在代码中提取数据流的思维导图;
图3是本发明中生成的模块之间数据流走向的示意图;
图4是本发明中生成的做平面规划时能直接使用的摆放IO脚本。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明一种通过在代码中提取数据流辅助芯片布局规划的方法,通过各模块中产生数据流信息获得各模块的数据交互关系,减少了整个设计流程中因设计者提供设计说明文件和前后端信息交流的过程中产生的大量时间。
本发明提供一种通过在代码中提取数据流辅助芯片布局规划的方法,通过RTL代码或是门级网表查找各模块的数据走向,进而找到与所指定模块有数据交互的其他模块,并通过图表的形式呈现各模块的数据交互关系;再通过输入输出端口之间的数据走向得到摆放输入输出端口的脚本。
具体按照以下步骤实施:
步骤1、通过Python的Tkinter模块设计图形化界面,在该图形化界面上选择指定模块;
图形化界面包括:设计层次选择、所选择对象、chip或block的长、chip或block的宽、每个IO或pin所隔的距离、左边IO或pin的个数、右边IO或pin的个数、上边IO或pin的个数、下边IO或pin的个数、产生数据流图按键、产生摆放IO或pin脚本按键。
步骤2、通过Python语言对各模块内的RTL代码和门级网表进行处理得到指定模块的输入输出信号,通过查找其输入输出信号在代码中再次出现的地方,得到与指定模块有连接关系的其他模块,该连接关系即为数据走向;
步骤3、通过Python的SchemDram模块得到关于指定模块与其他模块的数据走向的图表;
步骤4、分别在图形化界面上设置IO或pin的排布需求,根据图表上各模块的位置和数据流向,输出各模块的IO或pin脚本;
排布需求包括:chip或block的长、chip或block的宽、每个IO或pin所隔的距离、左边IO或pin的个数、右边IO或pin的个数。
具体过程为:
步骤4.1、在图形化界面上分别输入每个模块的chip或block的长、chip或block的宽、每两个输入输出端口之间的距离、每边输入输出端口的个数,参数传输接口将这些参数传到位置计算模块中,位置计算模块根据根据输入输出间数据流向将所有的输入输出端口进行分组;
步骤4.2、先计算包涵时钟输入端那组的所有输入输出端口的位置,将chip或block的长除以二得到时钟输入端的位置坐标,按照每组输入输出端口所隔的距离依次向上向下交叠展开得出这组端口中其他端口的位置坐标;
当这该组输入输出端口数超过单边允许摆放的端口数,还未计算出位置坐标的端口将会交叠地算到上下边接近原侧的位置上;
如果该组输入输出端口数小于单边允许摆放的端口数,其它组的端口就会算到原侧这边。
步骤4.3、重复步骤4.2计算其余各组的端口的位置坐标,输出各模块的输入输出端口脚本。
实施例
采用本发明一种通过在代码中提取数据流辅助芯片布局规划的方法对某型号具有四个模块的芯片提取数据流,首先采用如图1的图形化界面,第一栏是针对设计层次的选择,有两个选项,分别是RTL级和门级,选择对不同层级的设计进行操作就会得到相应的数据流关系图,后端设计人员可以根据需求进行选择;第二栏是选择操作对象,可以选择顶层和特定的模块或单元,选择前者时会对设计的顶层提取数据关系图,选择后者时需要在填空栏输入层次化名称。几栏是为产生摆放IO或pin的脚本而设置的,需要输入chip或block的长和宽,每个IO或pin所隔的距离,每边IO或pin的个数。
通过Python语言对各模块内的RTL代码和门级网表进行处理,通过搜索端口连接线出现的其他位置找到与指定模块有信号连接关系的其他模块,如果选择的是顶层的话工具就会依次提取其下所有模块的数据走向,如图2所示,由图可以看出,Top/U0(.out01(net01)中net01与Top/U1(.out01(net01)中net01相匹配,说明两个模块有连接关系,Top/U0与Top/U1之间存在数据走向。
通过Python的SchemDram模块得到关于指定模块与其他模块的数据走向的框图,如图3所示,顶层下的四个模块U0,U1,U3,U4有数据交互关系,U0会有数据传送到U1和U3中,U1会有数据传送到U4中,U3会有数据传送到U4中,后端工程师拿到此图可以更方便进行布局规划,减少整个设计流程中因电路设计者提供设计说明文件和前后端沟通时产生的大量时间。
在图形化界面上分别输入每个模块的chip或block的长、chip或block的宽、每两个输入输出端口之间的距离、每边输入输出端口的个数,参数传输接口将这些参数传到位置计算模块中,位置计算模块根据根据图表上各模块的位置和数据流向将所有的输入输出端口进行分组;
先计算包涵时钟输入端那组的所有输入输出端口的位置,将chip或block的长除以二得到时钟输入端的位置坐标,按照每组输入输出端口所隔的距离依次向上向下交叠展开得出这组端口中其他端口的位置坐标;
当这该组输入输出端口数超过单边允许摆放的端口数,还未计算出位置坐标的端口将会交叠地算到上下边接近原侧的位置上;
如果该组输入输出端口数小于单边允许摆放的端口数,其它组的端口就会算到原侧这边。
其中对IO进行的计算针对的是层级化流程中顶层布局规划和扁平化流程中整个设计的布局规划而设置的,对pin进行的计算是针对层级化流程中的模块级的布局规划而设置的。
重复计算其余各组的端口的位置坐标,输出各模块的输入输出端口脚本,该脚本提供给后端工程师直接使用。
通过上述方式,本发明一种通过在代码中提取数据流辅助芯片布局规划的方法,提供了一套图形化界面,方便设计人员的选择所需知道其数据流走向的模块,在前端设计完电路之后,自动快速拿到RTL级或门级下顶层或单独某个模块或单元的数据流走向来辅助后端做布局规划,并且还在后端设计流程中根据输入输出位置的需求,直接得到后端工具可以直接使用的摆放输入输出端口的脚本,减少了整个设计流程中因设计者提供设计说明文件和前后端沟通时产生的时间;所发明还能依据后端扁平化或层次化设计过程中顶层的输入输出之间或者模块级的pin之间的数据交互关系,根据用户的布局需求直接产生布局布线工具做物理实现时能直接使用的摆放IO的脚本,减少后端工程师布局规划的时间,加快设计速度;提高物理设计中布局规划阶段的效率。
Claims (6)
1.一种通过在代码中提取数据流辅助芯片布局规划的方法,其特征在于,通过RTL代码或是门级网表查找各模块的数据走向,进而找到与所指定模块有数据交互的其他模块,并通过图表的形式呈现各模块的数据交互关系;再通过输入输出端口之间的数据走向得到摆放输入输出端口的脚本。
2.根据权利要求1所述一种通过在代码中提取数据流辅助芯片布局规划的方法,其特征在于,具体按照以下步骤实施:
步骤1、通过Python的Tkinter模块设计图形化界面,在该图形化界面上选择指定模块;
步骤2、通过Python语言对各模块内的RTL代码和门级网表进行处理得到指定模块的输入输出信号,通过查找其输入输出信号在代码中再次出现的地方,得到与指定模块有连接关系的其他模块,该连接关系即为数据走向;
步骤3、通过Python的SchemDram模块得到关于指定模块与其他模块的数据走向的框图;
步骤4、分别在图形化界面上设置每一模块输入输出端口的排布需求,再根据输入输出间的数据流向,输出摆放输入输出端口的脚本。
3.根据权利要求2所述一种通过在代码中提取数据流辅助芯片布局规划的方法,其特征在于,步骤1所述图形化界面包括:设计层次选择、所选择对象、chip或block的长、chip或block的宽、每个输入输出端口所隔的距离、左边输入输出端口的个数、右边输入输出端口的个数、上边输入输出端口的个数、下边输入输出端口的个数、产生数据流图按键、产生摆放输入输出脚本按键。
4.根据权利要求2所述一种通过在代码中提取数据流辅助芯片布局规划的方法,其特征在于,步骤4所述排布需求包括:chip或block的长、chip或block的宽、每个输入输出端口所隔的距离、左边输入输出端口的个数、右边输入输出端口的个数。
5.根据权利要求3所述一种通过在代码中提取数据流辅助芯片布局规划的方法,其特征在于,步骤4具体过程为:
步骤4.1、在图形化界面上分别输入每个模块的chip或block的长、chip或block的宽、每两个输入输出端口之间的距离、每边输入输出端口的个数,参数传输接口将这些参数传到位置计算模块中,位置计算模块根据根据图表上各输入输出端口间数据流向将所有的输入输出端口进行分组;
步骤4.2、先计算包涵时钟输入端那组的所有输入输出端口的位置,将chip或block的长除以二得到时钟输入端的位置坐标,按照每组输入输出端口所隔的距离依次向上向下交叠展开得出这组端口中其他端口的位置坐标;
当这该组输入输出端口数超过单边允许摆放的端口数,还未计算出位置坐标的端口将会交叠地算到上下边接近原侧的位置上;
如果该组输入输出端口数小于单边允许摆放的端口数,其它组的端口就会算到原侧这边;
步骤4.3、重复步骤4.2计算其余各组的输入输出端口的位置坐标,输出摆放输入输出端口的脚本。
6.根据权利要求2所述一种通过在代码中提取数据流辅助芯片布局规划的方法,其特征在于,所述输入输出端口为IO或pin。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910683472.4A CN110489814B (zh) | 2019-07-26 | 2019-07-26 | 一种通过在代码中提取数据流辅助芯片布局规划的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910683472.4A CN110489814B (zh) | 2019-07-26 | 2019-07-26 | 一种通过在代码中提取数据流辅助芯片布局规划的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110489814A true CN110489814A (zh) | 2019-11-22 |
CN110489814B CN110489814B (zh) | 2022-09-27 |
Family
ID=68547587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910683472.4A Active CN110489814B (zh) | 2019-07-26 | 2019-07-26 | 一种通过在代码中提取数据流辅助芯片布局规划的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110489814B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112668273A (zh) * | 2020-11-18 | 2021-04-16 | 北京智芯微电子科技有限公司 | 芯片io布局的方法及装置、soc芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999039288A2 (en) * | 1998-01-30 | 1999-08-05 | Tera Systems, Inc. | Method and system for creating optimized physical implementations from high-level descriptions of electronic design |
CN104063559A (zh) * | 2014-07-08 | 2014-09-24 | 领佰思自动化科技(上海)有限公司 | 大规模集成电路分布计算的布局合法化方法及其*** |
CN105574245A (zh) * | 2015-12-11 | 2016-05-11 | 中国航空工业集团公司西安航空计算技术研究所 | 高效率模拟电路版图设计流程方法 |
-
2019
- 2019-07-26 CN CN201910683472.4A patent/CN110489814B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999039288A2 (en) * | 1998-01-30 | 1999-08-05 | Tera Systems, Inc. | Method and system for creating optimized physical implementations from high-level descriptions of electronic design |
CN104063559A (zh) * | 2014-07-08 | 2014-09-24 | 领佰思自动化科技(上海)有限公司 | 大规模集成电路分布计算的布局合法化方法及其*** |
CN105574245A (zh) * | 2015-12-11 | 2016-05-11 | 中国航空工业集团公司西安航空计算技术研究所 | 高效率模拟电路版图设计流程方法 |
Non-Patent Citations (2)
Title |
---|
张志鹏等: "一款深亚微米射频SoC芯片的后端设计与实现", 《微处理机》 * |
韩晓霞等: "基于.25um工艺的层次式时间驱动的版图设计", 《电路与***学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112668273A (zh) * | 2020-11-18 | 2021-04-16 | 北京智芯微电子科技有限公司 | 芯片io布局的方法及装置、soc芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN110489814B (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104573169B (zh) | 以自动流水线操作能力设计集成电路的方法和工具 | |
Farrahi et al. | Activity-driven clock design | |
US8661396B1 (en) | DSP design system level power estimation | |
CN109684755A (zh) | 一种数模混合芯片异步电路全定制方法及*** | |
CN108010103A (zh) | 复杂河道地形快速精细生成方法 | |
WO2014186803A1 (en) | Automated layout for integrated circuits with nonstandard cells | |
CN106919769A (zh) | 一种基于多层次方法和赋权超图的层次式fpga布局布线方法 | |
CN111027266A (zh) | 一种多个fpga的设计分割的方法、***、存储介质及终端 | |
Kim et al. | Pulser gating: A clock gating of pulsed-latch circuits | |
Martins et al. | Analog Integrated Circuit Design Automation | |
CN115470747B (zh) | 一种实现时序快速收敛的时钟树综合方法 | |
Chai et al. | Circuitnet: An open-source dataset for machine learning applications in electronic design automation (eda) | |
Shen et al. | An effective gated clock tree design based on activity and register aware placement | |
CN102147829A (zh) | 一种ic功能验证方法 | |
CN110489814A (zh) | 一种通过在代码中提取数据流辅助芯片布局规划的方法 | |
CN108920825A (zh) | 一种基于IP核的SoC可视化设计方法 | |
Meuli et al. | Majority-based design flow for AQFP superconducting family | |
CN117610491A (zh) | 一种芯片设计方法、装置、设备及计算机可读存储介质 | |
US20050039152A1 (en) | Timing path detailer | |
Wang et al. | Power minimization by clock root gating | |
CN105550459A (zh) | 一种asic设计时钟网络提取*** | |
Minnella et al. | Mix & Latch: An Optimization Flow for High-Performance Designs With Single-Clock Mixed-Polarity Latches and Flip-Flops | |
Vaishnav et al. | Delay-optimal clustering targeting low-power VLSI circuits | |
CN105718702B (zh) | 一种Def库与3D集成电路bookshelf库转换的方法 | |
CN107609576A (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 |