CN114548025A - 解决物理设计长线时序延迟的自动化脚本编写及使用方法 - Google Patents
解决物理设计长线时序延迟的自动化脚本编写及使用方法 Download PDFInfo
- Publication number
- CN114548025A CN114548025A CN202210266806.XA CN202210266806A CN114548025A CN 114548025 A CN114548025 A CN 114548025A CN 202210266806 A CN202210266806 A CN 202210266806A CN 114548025 A CN114548025 A CN 114548025A
- Authority
- CN
- China
- Prior art keywords
- line
- coordinate
- inv
- script
- added
- 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/39—Circuit design at the physical level
- G06F30/396—Clock trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2117/00—Details relating to the type or aim of the circuit design
- G06F2117/10—Buffer insertion
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)
- Architecture (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开了一种解决物理设计长线时序延迟的自动化脚本编写及使用方法,其特征在于,包括以下步骤:设置逻辑连接脚本;设置主脚本;在floorplan阶段找出待优化的时序违例路径;根据待优化的时序违例路径的信息,设置起始点、终点、拐点的参数;基于逻辑连接脚本和主脚本,根据不同的设计工艺,更换缓冲器BUF、反相器INV的标准单元参数的设置,更换***缓冲器BUF、反相器INV的横纵向距离的设置,选择所需要的参数;在布局布线前,在布局布线PR工具里完成优化。本发明应用于芯片数字物理设计布局布线阶段,以解决先进工艺下越来越大的线延迟带来的影响,针对物理层面上的长路径,使线延迟最低。
Description
技术领域
本发明涉及半导体技术领域,特别涉一种解决物理设计长线时序延迟的自动化脚本编写及使用方法。
背景技术
随着半导体工艺进展到40nm、28nm及更低,芯片设计中物理层面的时序满足成为设计难点。实践发现,物理设计布线后,线延迟带来的影响远远大于逻辑设计本身所包含的标准单元所带来的影响。虽然自动布局布线工具能够实现优化,但是针对特殊要求或时序紧张的路径,需要物理设计工程师逐条进行人工优化。如果路径数量多,则会造成很大的工作量,延长设计周期。
发明内容
为了解决上述技术问题,本发明提供一种设计周期短,优化效率高的解决物理设计长线时序延迟的自动化脚本编写及使用方法。
本发明解决上述问题的技术方案是:一种解决物理设计长线时序延迟的自动化脚本编写及使用方法,包括以下步骤:
步骤S1:设置逻辑连接脚本,针对时序违例路径,通过设定起始点、终点、拐点,判断缓冲器BUF标准单元的添加定位和连接、反相器INV标准单元的添加定位和连接,保证逻辑一致性;
步骤S2:设置主脚本,设定时序违例路径的全局变量;
步骤S3:在floorplan阶段找出待优化的时序违例路径;
步骤S4:根据待优化的时序违例路径的信息,以及设计的布局规划,设置起始点、终点、拐点的参数,设置待优化的时序违例路径的线名和所连接的终点标准单元端口名;
步骤S5:基于逻辑连接脚本和主脚本,根据不同的设计工艺,更换缓冲器BUF、反相器INV的标准单元类型,更换所***的缓冲器BUF、反相器INV之间的横纵向间距,选择所需要的参数;
步骤S6:在布局布线前,在布局布线PR工具里完成优化。
上述解决物理设计长线时序延迟的自动化脚本编写及使用方法,步骤S1中,逻辑连接脚本对需要优化的线路径的优化逻辑为,找到这条线所接的起点和终点的坐标,根据坐标值来计算;优先判断上下左右的走线方向,再根据起点和终点的坐标计算出路径长度,结合设置的间距来***优化时序的标准单元;因此首先设置该时序违例路径的起点和终点坐标;设置的变量如下:路径起始点x坐标x_begin,路径起始点y坐标y_begin,路径终点x坐标x_end,路径终点y坐标y_end;
为了适应具体版图FloorPlan的情况,设置中间的拐点,如果需要进行分支,也可以通过拐点实现;需要注意的是,因为是拐点,所以每两个点之间的连线,该线段起点终点必须做到横平竖直,拐点变量设置为:拐点x坐标x_trunk*,拐点y坐标y_trunk*;上述的*为任意序号,用于区分多个拐点时表示不同变量。
上述解决物理设计长线时序延迟的自动化脚本编写及使用方法,步骤S1中,在后端物理设计中,如果在进行floorplan后,时序违例路径的起点和终点坐标都已经固定,那么就直接设定具体的值,如果无法确定,则通过dbget的形式来找出相对应的坐标,为的定制路径提供可实行的方案。
上述解决物理设计长线时序延迟的自动化脚本编写及使用方法,步骤S1中,判断缓冲器BUF标准单元的添加定位和连接、反相器INV标准单元的添加定位和连接的过程为:
(1)根据线段长度来计算出需要***的反相器数量:
首先通过起点和终点的坐标进行上下左右四个方向的判断,然后根据距离和设置的间距计算得出反相器对数a,因为反相器必须成对添加,才能保证逻辑的一致性,但是不能保证的是,路径长度正好满足以固定间距成对***反相器后,剩余的长度不会超过规定的长度,所以对a进行取整,设为b(int(a)),后续***的INV对数即为b,对b进行判断,如果(a-b)大于规定的长度,***一个缓冲器BUF,如果(a-b)小于规定的长度,则不***;
(2)设定循环逻辑:
循环的逻辑为,当满足循环条件时,加入一组反相器INV和其连接线net,将当前变量所对应的反相器INV与上一个变量的反相器进行连接,并根据变量计算得出这对反相器的坐标位置,位置的计算通过在起始坐标上累加相应数量的要求距离得出,因此在循环外提前加入一组反相器INV和其连接线net;
考虑到降低转换时间对延迟的影响,在起始位置加入一个缓冲器BUF,再添加第一对反相器INV;起始位置设为起始单元的边上;在将缓冲器BUF和第一对反相器INV这三个标准单元与起始单元连接后,最后一个标准单元,即第二个反相器的输出端不连,在之后的判断中进行连接;
缓冲器BUF的坐标通过计算得出,当横向并由左至右添加时:
第一个BUF的x坐标即为x1,y坐标即为y1;
第一个INV的x坐标即为x1+distance_x,y坐标即为y1;
第二个INV的x坐标即为x1+2*distance_x,y坐标即为y1;
distance_x为设定的横向间距;其他朝向同理推得;
并且设置一个特殊的字符target的缩写tar来对添加的标准单元和线进行命名,使用终点标准单元名和其端口名组成的字符;
因为所添加的标准单元和线需要独有的命名,这样可保证,在使用中不会出现重复的名字导致脚本无法执行;
命名如下:
第一个BUF名:[expr$trunk_num]_BUF_0_$tar
第一个INV名:[expr$trunk_num]_INV0_0_$tar
第二个INV名:[expr$trunk_num]_INV1_0_$tar
trunk_num指第几段线段,INV0_0指第0对INV的第0个INV,INV1_0指第0对INV的第一个INV;
在加入一组反相器INV后,进行判断,共有三种情况,这三种情况下,终止线都设为相同的名字,从而保证一致性,方便后续执行;
以下所有单元位置的计算都以横向并由左至右添加时得出,其他朝向同理更换为加减或由计算x换为计算y推得;
1)a-1<0.5
这种情况下,在最开始的一组INV后直接结束,加入终止线;
2)0.5<=a-1<1
这种情况下,加入一个缓冲器后直接结束,加入终止线;
缓冲器BUF的x坐标为x1+2*distance_x+distance_x,y坐标即为y1;
3)1<=a-1
这种情况下,通过循环去判断加入的反相器INV数量;
循环的判断条件为
for{set i 0}{i<($a-2)}{incr i}{…………}
即设置i初始值为0,当满足i<a-2的时候,将i加上1,即由0变为1,并执行大括号内省略号的命令,执行完后重新进行判定i是否小于a-2,如果还满足,则继续加1,即由1变为2,一直到判断不满足为止;
大括号内执行的命令包括:
一)设置变量num=i+1;
二)设置last_cell:[expr$trunk_num]_INV1_[expr$i]_$tar;
三)设置postfix[expr$i+1]_$tar;
即成对添加的第一个INV的名字为:[expr$trunk_num]_INV0_postfix,第二个INV的名字为[expr$trunk_num]_INV1_postfix,发现上面所设置的last_cell,即为在最开始时添加的三个标准单元中连接关系最后的那级INV;即可实现循环内添加的INV与之前添加的INV的连接关系;而第一个INV的x坐标为$x1+(2*($num+1)-1)*$distance_x,y坐标为y1;第二个INV的x坐标为$x1+2*($num+1)*$distance_x,y坐标为y1;
而其末尾是否需要追加BUF,分为两种情况:
I)a-b<0.5
这种情况下,在循环后直接结束,加入终止线;
II)0.5<=a-b
这种情况下,加入一个缓冲器后直接结束,加入终止线;
缓冲器BUF的x坐标为循环中最后一个INV的x坐标加上distance_x,y坐标为y1;而加入的缓冲器BUF的命名建议与情况2)时加入的缓冲器一致;所有条件下设置的终止线的名字一致,这样可在发生需要第二段线段的时候作为初始线;
(3)设定线段之间的连接方式:
每段线段都是用以上(1)和(2)的单段逻辑去执行,而除了起始所连接的线有所不同之外,其余都是一致的,所以将第一段的终止线设为第二段的起始线,实现线段间的连接,从而实现优化路径的转向;第二、第三段……路径,以此类推;
当出现某一线段小于两倍间距时,有两种方案:
第一种:不对该线段执行添加,改为手动添加一个BUF和一条net,将手动添加的BUF和net与该线段的前一线段和后一线段连接起来;
第二种:直接将该线段的前一线段和后一线段连接起来,忽略该线段,保证当前线段的水平或竖直即可。
上述解决物理设计长线时序延迟的自动化脚本编写及使用方法,步骤S2中,主脚本对于所选用BUF、INV的类型,以及横纵向间距的具体大小,连线的属性,通过设置单一变量来进行试验,选择最优方案;
所有逻辑连接脚本中命令需要的设定的全局变量,需要优化的线名begin_net;优化线逻辑连接输出端的标准单元tar_cell;输出端标准单元与该线相接的端口名tar_term;设定的横向间距distance_x;设定的纵向间距distance_y;设定的缓冲器类型BUF_cell;设定的反相器类型INV_cell;都通过设置为变量,来将其移动到主脚本中一起设置,从而实现对这些变量的统一修改,保证不会遗漏的同时,又能够固化逻辑连接脚本,不再对其进行修改,避免修改造成逻辑连接脚本无法执行。
上述解决物理设计长线时序延迟的自动化脚本编写及使用方法,步骤S2中,逻辑连接脚本中是以线段的模式去计算,所以在主脚本中也按线段区分,来多次调用逻辑连接脚本,线段的起点终点设置如下:线段起点x坐标x1;线段起点y坐标y1;线段终点x坐标x2;线段终点y坐标y2。
上述解决物理设计长线时序延迟的自动化脚本编写及使用方法,步骤S2中,为了更好地降低线延迟,后端物理设计中对绕线属性进行调整,因此也在主脚本中对绕线属性进行设置,绕线属性为:关于多倍线宽多倍间距的参数设置NDR;NDR规则执行力度设置NDR_effort;最高绕线层设置top_route_layer;最低绕线层设置bottom_route_layer;工具自动绕线时满足最高最低绕线层设置的力度pre_layer_effort;权重参数net_weight。
上述解决物理设计长线时序延迟的自动化脚本编写及使用方法,步骤S3中,在布局布线前,即floorplan阶段就根据布局规划进行时序优化,代替后续工具的自动优化,实现最优的时序优化。
上述解决物理设计长线时序延迟的自动化脚本编写及使用方法,步骤S5中,所添加的标准单元以所优化的时序违例路径的相关信息命名,具有唯一性,不会出现命名重复导致脚本失败的情况。
本发明的有益效果在于:
1、本发明具体应用于芯片数字物理设计布局布线阶段,以解决先进工艺下越来越大的线延迟带来的影响,针对物理层面上的长路径,使线延迟最低,本发明的脚本分为两层:一层为主脚本,设置关于优化对象的全局变量,如线名、线宽、单元类型等;另一层为逻辑连接脚本,实现标准单元的添加定位、标准单元的连接,保证逻辑一致性,可以在使用中不进行任何修改。
2、本发明的脚本可以通过设定缓冲器Buffer、反相器Inverter之间的间距,布线的线宽、同层线的线间距以及缓冲器反相器的单元类型来具体实现降低线延迟的效果,因为是脚本形式,且该脚本所需设置的变量都预先设置为全局环境变量,所以在对该脚本相关变量进行修改时,只需要修改很少几处。因此,在找到最优解的过程中,可以通过控制变量法调整相关变量,达到快速地迭代。并且在后期具体布局布线阶段中,因为变量清晰明确,又可能因为会有多次使用不同上述变量的情况,该固定化脚本可以结合布局布线工具的相关命令,如INNOVUS的dbget等,和TCL语法中的循环语句,达到对后端布局布线流程的固定,使后续迭代更加快速和不易犯错。
3、本发明还可以运用于对关键时钟树做定制化处理,手动做时钟树,降低时钟路径上的延迟,易于满足建立时间要求。或者对需要平衡的多个模块或存储体等做平衡,包括地址、数据、时钟的平衡,从而满足读写要求等。
附图说明
图1为本发明的流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步的说明。
如图1所示,一种解决物理设计长线时序延迟的自动化脚本编写及使用方法,包括以下步骤:
步骤S1:设置逻辑连接脚本,针对时序违例路径,通过设定起始点、终点、拐点,判断缓冲器BUF标准单元的添加定位和连接、反相器INV标准单元的添加定位和连接,保证逻辑一致性。
逻辑连接脚本对需要优化的线路径的优化逻辑为,找到这条线所接的起点和终点的坐标,根据坐标值来计算;优先判断上下左右的走线方向,再根据起点和终点的坐标计算出路径长度,结合设置的间距来***优化时序的标准单元;因此首先设置该时序违例路径的起点和终点坐标;设置的变量如下:路径起始点x坐标x_begin,路径起始点y坐标y_begin,路径终点x坐标x_end,路径终点y坐标y_end;
为了适应具体版图FloorPlan的情况,设置中间的拐点,如果需要进行分支,也可以通过拐点实现;需要注意的是,因为是拐点,所以每两个点之间的连线,该线段起点终点必须做到横平竖直,拐点变量设置为:拐点x坐标x_trunk*,拐点y坐标y_trunk*;上述的*为任意序号,用于区分多个拐点时表示不同变量。
在后端物理设计中,如果在进行floorplan后,时序违例路径的起点和终点坐标都已经固定,那么就直接设定具体的值,如果无法确定,则通过dbget的形式来找出相对应的坐标,为的定制路径提供可实行的方案。
判断缓冲器BUF标准单元的添加定位和连接、反相器INV标准单元的添加定位和连接的过程为:
(1)根据线段长度来计算出需要***的反相器数量:
首先通过起点和终点的坐标进行上下左右四个方向的判断,然后根据距离和设置的间距计算得出反相器对数a,因为反相器必须成对添加,才能保证逻辑的一致性,但是不能保证的是,路径长度正好满足以固定间距成对***反相器后,剩余的长度不会超过规定的长度,所以对a进行取整,设为b(int(a)),后续***的INV对数即为b,对b进行判断,如果(a-b)大于规定的长度,***一个缓冲器BUF,如果(a-b)小于规定的长度,则不***;
(2)设定循环逻辑:
循环的逻辑为,当满足循环条件时,加入一组反相器INV和其连接线net,将当前变量所对应的反相器INV与上一个变量的反相器进行连接,并根据变量计算得出这对反相器的坐标位置,位置的计算通过在起始坐标上累加相应数量的要求距离得出,因此在循环外提前加入一组反相器INV和其连接线net;
考虑到降低转换时间对延迟的影响,在起始位置加入一个缓冲器BUF,再添加第一对反相器INV;起始位置设为起始单元的边上;在将缓冲器BUF和第一对反相器INV这三个单元与起始单元连接后,最后一个单元,即第二个反相器的输出端不连,在之后的判断中进行连接;
缓冲器BUF的坐标通过计算得出,当横向并由左至右添加时:
第一个BUF的x坐标即为x1,y坐标即为y1;
第一个INV的x坐标即为x1+distance_x,y坐标即为y1;
第二个INV的x坐标即为x1+2*distance_x,y坐标即为y1;
distance_x为设定的横向间距;其他朝向同理推得;
并且设置一个特殊的字符target的缩写tar来对添加的标准单元和线进行命名,使用终点标准单元名和其端口名组成的字符;
因为所添加的标准单元和线需要独有的命名,这样可保证,在使用中不会出现重复的名字导致脚本无法执行;
命名如下:
第一个BUF名:[expr$trunk_num]_BUF_0_$tar
第一个INV名:[expr$trunk_num]_INV0_0_$tar
第二个INV名:[expr$trunk_num]_INV1_0_$tar
trunk_num指第几段线段,INV0_0指第0对INV的第0个INV,INV1_0指第0对INV的第一个INV;
在加入一组反相器INV后,进行判断,共有三种情况,这三种情况下,终止线都设为相同的名字,从而保证一致性,方便后续执行。
以下所有单元位置的计算都以横向并由左至右添加时得出,其他朝向同理更换为加减或由计算x换为计算y推得;
1)a-1<0.5
这种情况下,在最开始的一组INV后直接结束,加入终止线;
2)0.5<=a-1<1
这种情况下,加入一个缓冲器后直接结束,加入终止线;
缓冲器BUF的x坐标为x1+2*distance_x+distance_x,y坐标即为y1;
3)1<=a-1
这种情况下,通过循环去判断加入的反相器INV数量;
循环的判断条件为
for{set i 0}{i<($a-2)}{incr i}{…………}
即设置i初始值为0,当满足i<a-2的时候,将i加上1,即由0变为1,并执行大括号内省略号的命令,执行完后重新进行判定i是否小于a-2,如果还满足,则继续加1,即由1变为2,一直到判断不满足为止;
大括号内执行的命令包括:
一)设置变量num=i+1;
二)设置last_cell:[expr$trunk_num]_INV1_[expr$i]_$tar;
三)设置postfix[expr$i+1]_$tar;
即成对添加的第一个INV的名字为:[expr$trunk_num]_INV0_postfix,第二个INV的名字为[expr$trunk_num]_INV1_postfix,发现上面所设置的last_cell,即为在最开始时添加的三个标准单元中连接关系最后的那级INV;即可实现循环内添加的INV与之前添加的INV的连接关系;而第一个INV的x坐标为$x1+(2*($num+1)-1)*$distance_x,y坐标为y1;第二个INV的x坐标为$x1+2*($num+1)*$distance_x,y坐标为y1;
而其末尾是否需要追加BUF,分为两种情况:
I)a-b<0.5
这种情况下,在循环后直接结束,加入终止线;
II)0.5<=a-b
这种情况下,加入一个缓冲器后直接结束,加入终止线;
缓冲器BUF的x坐标为循环中最后一个INV的x坐标加上distance_x,y坐标为y1;而加入的缓冲器BUF的命名建议与情况2)时加入的缓冲器一致;所有条件下设置的终止线的名字一致,这样可在发生需要第二段线段的时候作为初始线。
(3)设定线段之间的连接方式:
每段线段都是用以上(1)和(2)的单段逻辑去执行,而除了起始所连接的线有所不同之外,其余都是一致的,所以将第一段的终止线设为第二段的起始线,实现线段间的连接,从而实现优化路径的转向;第二、第三段……路径,以此类推;
当出现某一线段小于两倍间距时,有两种方案:
第一种:不对该线段执行添加,改为手动添加一个BUF和一条net,将手动添加的BUF和net与该线段的前一线段和后一线段连接起来;
第二种:直接将该线段的前一线段和后一线段连接起来,忽略该线段,保证当前线段的水平或竖直即可。
步骤S2:设置主脚本,设定时序违例路径的全局变量。
主脚本对于所选用BUF、INV的类型,以及横纵向间距的具体大小,连线的属性,通过设置单一变量来进行试验,选择最优方案;
针对TCL脚本环境,简单地进行说明。预先设定具体字符串的值,如set a1,后续使用$a来直接读取1这个值,这个方法的好处是:修改时只要修改最初set的值,不管在脚本中用到多少次a,这次修改使后面所有的a都做出相应改动,不用逐个修改;
所有逻辑连接脚本中命令需要的设定的全局变量,需要优化的线名begin_net;优化线逻辑连接输出端的标准单元tar_cell;输出端标准单元与该线相接的端口名tar_term;设定的横向间距distance_x;设定的纵向间距distance_y;设定的缓冲器类型BUF_cell;设定的反相器类型INV_cell;都通过设置为变量,来将其移动到主脚本中一起设置,从而实现对这些变量的统一修改,保证不会遗漏的同时,又能够固化逻辑连接脚本,不再对其进行修改,避免修改造成逻辑连接脚本无法执行。如设置横向间距distance_x,在主脚本里设置set distance_x200,而在逻辑连接脚本中所有需要使用这个具体的横向间距200的地方,都可以调用$distance_x这个值,来替代200这个具体值。
逻辑连接脚本中是以线段的模式去计算,所以在主脚本中也按线段区分,来多次调用逻辑连接脚本,线段的起点终点设置如下:线段起点x坐标x1;线段起点y坐标y1;线段终点x坐标x2;线段终点y坐标y2。
为了更好地降低线延迟,后端物理设计中对绕线属性进行调整,因此也在主脚本中对绕线属性进行设置,使用逻辑也很简单。示例参考的布局布线工具为INNOVUS,其中对线属性设置的命令为setNetattribute,所以绕线属性为:关于多倍线宽多倍间距的参数设置NDR;NDR规则执行力度设置NDR_effort;最高绕线层设置top_route_layer;最低绕线层设置bottom_route_layer;工具自动绕线时满足最高最低绕线层设置的力度pre_layer_effort;权重参数net_weight。
步骤S3:在floorplan阶段找出待优化的时序违例路径。
在布局布线前,即floorplan阶段就根据布局规划进行时序优化,代替后续工具的自动优化,实现最优的时序优化。
步骤S4:根据待优化的时序违例路径的信息,以及设计的布局规划,设置起始点、终点、拐点的参数,设置待优化的时序违例路径的线名和所连接的终点标准单元端口名。
步骤S5:基于逻辑连接脚本和主脚本,根据不同的设计工艺,更换缓冲器BUF、反相器INV的标准单元类型,更换所***的缓冲器BUF、反相器INV之间的横纵向距离的设置,选择所需要的参数。
所添加的标准单元以所优化的时序违例路径的相关信息命名,具有唯一性,不会出现命名重复导致脚本失败的情况。
步骤S6:在布局布线前,在布局布线PR工具里完成优化。
本发明还可更进一步运用,比如:
1.起始点和终点的坐标可以通过dbget命令获取,如[dbget[dbgettop.insts.name cell1–p1].pt_x]可以获得名字为cell1的单元的x坐标,y坐标则将pt_x换成pt_y。通过这种方法,可以将关键逻辑单元定位,不再需要手动的去确定坐标,减少人工工作量。更进一步,可以通过IP的Pin或者IO的Port去获取其连接的net名,找到该net的另一个连接单元,获取其坐标。关于坐标的获取方式很多,也能实现更智能的效果。
2.在该脚本外再包一层相关脚本,用于获取起点、终点坐标,获取起始线(begin_net),和目标cell和Term。可以用dbget获取需要优化的路径的关键单元。
3.可以将如第二段数量增加,在保证连接关系的情况下,实现路径分支。需要具体问题具体设置。能够运用于时钟树或总线分支等。
本发明还可用于对关键时钟树做定制化处理,手动做时钟树,降低时钟路径上的延迟,易于满足建立时间要求;或者对需要平衡的多个模块或存储体等做平衡,包括地址、数据、时钟的平衡,从而满足读写要求。
Claims (9)
1.一种解决物理设计长线时序延迟的自动化脚本编写及使用方法,其特征在于,包括以下步骤:
步骤S1:设置逻辑连接脚本,针对时序违例路径,通过设定起始点、终点、拐点,判断缓冲器BUF标准单元的添加定位和连接、反相器INV标准单元的添加定位和连接,保证逻辑一致性;
步骤S2:设置主脚本,设定时序违例路径的全局变量;
步骤S3:在floorplan阶段找出待优化的时序违例路径;
步骤S4:根据待优化的时序违例路径的信息,以及设计的布局规划,设置起始点、终点、拐点的参数,设置待优化的时序违例路径的线名和所连接的终点标准单元端口名;
步骤S5:基于逻辑连接脚本和主脚本,根据不同的设计工艺,更换缓冲器BUF、反相器INV的标准单元类型,更换所***的缓冲器BUF、反相器INV之间的横纵向间距,选择所需要的参数;
步骤S6:在布局布线前,在布局布线PR工具里完成优化。
2.根据权利要求1所述的解决物理设计长线时序延迟的自动化脚本编写及使用方法,其特征在于,步骤S1中,逻辑连接脚本对需要优化的线路径的优化逻辑为,找到这条线所接的起点和终点的坐标,根据坐标值来计算;优先判断上下左右的走线方向,再根据起点和终点的坐标计算出路径长度,结合设置的间距来***优化时序的标准单元;因此首先设置该时序违例路径的起点和终点坐标;设置的变量如下:路径起始点x坐标x_begin,路径起始点y坐标y_begin,路径终点x坐标x_end,路径终点y坐标y_end;
为了适应具体版图FloorPlan的情况,设置中间的拐点,如果需要进行分支,也可以通过拐点实现;需要注意的是,因为是拐点,所以每两个点之间的连线,该线段起点终点必须做到横平竖直,拐点变量设置为:拐点x坐标x_trunk*,拐点y坐标y_trunk*;上述的*为任意序号,用于区分多个拐点时表示不同变量。
3.根据权利要求2所述的解决物理设计长线时序延迟的自动化脚本编写及使用方法,其特征在于,步骤S1中,在后端物理设计中,如果在进行floorplan后,时序违例路径的起点和终点坐标都已经固定,那么就直接设定具体的值,如果无法确定,则通过dbget的形式来找出相对应的坐标,为的定制路径提供可实行的方案。
4.根据权利要求2所述的解决物理设计长线时序延迟的自动化脚本编写及使用方法,其特征在于,步骤S1中,判断缓冲器BUF标准单元的添加定位和连接、反相器INV标准单元的添加定位和连接的过程为:
(1)根据线段长度来计算出需要***的反相器数量:
首先通过起点和终点的坐标进行上下左右四个方向的判断,然后根据距离和设置的间距计算得出反相器对数a,因为反相器必须成对添加,才能保证逻辑的一致性,但是不能保证的是,路径长度正好满足以固定间距成对***反相器后,剩余的长度不会超过规定的长度,所以对a进行取整,设为b(int(a)),后续***的INV对数即为b,对b进行判断,如果(a-b)大于规定的长度,***一个缓冲器BUF,如果(a-b)小于规定的长度,则不***;
(2)设定循环逻辑:
循环的逻辑为,当满足循环条件时,加入一组反相器INV和其连接线net,将当前变量所对应的反相器INV与上一个变量的反相器进行连接,并根据变量计算得出这对反相器的坐标位置,位置的计算通过在起始坐标上累加相应数量的要求距离得出,因此在循环外提前加入一组反相器INV和其连接线net;
考虑到降低转换时间对延迟的影响,在起始位置加入一个缓冲器BUF,再添加第一对反相器INV;起始位置设为起始单元的边上;在将缓冲器BUF和第一对反相器INV这三个标准单元与起始单元连接后,最后一个标准单元,即第二个反相器的输出端不连,在之后的判断中进行连接;
缓冲器BUF的坐标通过计算得出,当横向并由左至右添加时:
第一个BUF的x坐标即为x1,y坐标即为y1;
第一个INV的x坐标即为x1+distance_x,y坐标即为y1;
第二个INV的x坐标即为x1+2*distance_x,y坐标即为y1;
distance_x为设定的横向间距;其他朝向同理推得;
并且设置一个特殊的字符target的缩写tar来对添加的标准单元和线进行命名,使用终点标准单元名和其端口名组成的字符;
因为所添加的标准单元和线需要独有的命名,这样可保证,在使用中不会出现重复的名字导致脚本无法执行;
命名如下:
第一个BUF名:[expr$trunk_num]_BUF_0_$tar
第一个INV名:[expr$trunk_num]_INV0_0_$tar
第二个INV名:[expr$trunk_num]_INV1_0_$tar
trunk_num指第几段线段,INV0_0指第0对INV的第0个INV,INV1_0指第0对INV的第一个INV;
在加入一组反相器INV后,进行判断,共有三种情况,这三种情况下,终止线都设为相同的名字,从而保证一致性,方便后续执行;
以下所有单元位置的计算都以横向并由左至右添加时得出,其他朝向同理更换为加减或由计算x换为计算y推得;
1)a-1<0.5
这种情况下,在最开始的一组INV后直接结束,加入终止线;
2)0.5<=a-1<1
这种情况下,加入一个缓冲器后直接结束,加入终止线;
缓冲器BUF的x坐标为x1+2*distance_x+distance_x,y坐标即为y1;
3)1<=a-1
这种情况下,通过循环去判断加入的反相器INV数量;
循环的判断条件为
for{set i 0}{i<($a-2)}{incr i}{…………}
即设置i初始值为0,当满足i<a-2的时候,将i加上1,即由0变为1,并执行大括号内省略号的命令,执行完后重新进行判定i是否小于a-2,如果还满足,则继续加1,即由1变为2,一直到判断不满足为止;
大括号内执行的命令包括:
一)设置变量num=i+1;
二)设置last_cell:[expr$trunk_num]_INV1_[expr$i]_$tar;
三)设置postfix[expr$i+1]_$tar;
即成对添加的第一个INV的名字为:[expr$trunk_num]_INV0_postfix,第二个INV的名字为[expr$trunk_num]_INV1_postfix,发现上面所设置的last_cell,即为在最开始时添加的三个标准单元中连接关系最后的那级INV;即可实现循环内添加的INV与之前添加的INV的连接关系;而第一个INV的x坐标为$x1+(2*($num+1)-1)*$distance_x,y坐标为y1;第二个INV的x坐标为$x1+2*($num+1)*$distance_x,y坐标为y1;
而其末尾是否需要追加BUF,分为两种情况:
I)a-b<0.5
这种情况下,在循环后直接结束,加入终止线;
II)0.5<=a-b
这种情况下,加入一个缓冲器后直接结束,加入终止线;
缓冲器BUF的x坐标为循环中最后一个INV的x坐标加上distance_x,y坐标为y1;而加入的缓冲器BUF的命名建议与情况2)时加入的缓冲器一致;所有条件下设置的终止线的名字一致,这样可在发生需要第二段线段的时候作为初始线;
(3)设定线段之间的连接方式:
每段线段都是用以上(1)和(2)的单段逻辑去执行,而除了起始所连接的线有所不同之外,其余都是一致的,所以将第一段的终止线设为第二段的起始线,实现线段间的连接,从而实现优化路径的转向;第二、第三段……路径,以此类推;
当出现某一线段小于两倍间距时,有两种方案:
第一种:不对该线段执行添加,改为手动添加一个BUF和一条net,将手动添加的BUF和net与该线段的前一线段和后一线段连接起来;
第二种:直接将该线段的前一线段和后一线段连接起来,忽略该线段,保证当前线段的水平或竖直即可。
5.根据权利要求4所述的解决物理设计长线时序延迟的自动化脚本编写及使用方法,其特征在于,步骤S2中,主脚本对于所选用BUF、INV的类型,以及横纵向间距的具体大小,连线的属性,通过设置单一变量来进行试验,选择最优方案;
所有逻辑连接脚本中命令需要的设定的全局变量,需要优化的线名begin_net;优化线逻辑连接输出端的标准单元tar_cell;输出端标准单元与该线相接的端口名tar_term;设定的横向间距distance_x;设定的纵向间距distance_y;设定的缓冲器类型BUF_cell;设定的反相器类型INV_cell;都通过设置为变量,来将其移动到主脚本中一起设置,从而实现对这些变量的统一修改,保证不会遗漏的同时,又能够固化逻辑连接脚本,不再对其进行修改,避免修改造成逻辑连接脚本无法执行。
6.根据权利要求5所述的解决物理设计长线时序延迟的自动化脚本编写及使用方法,其特征在于,步骤S2中,逻辑连接脚本中是以线段的模式去计算,所以在主脚本中也按线段区分,来多次调用逻辑连接脚本,线段的起点终点设置如下:线段起点x坐标x1;线段起点y坐标y1;线段终点x坐标x2;线段终点y坐标y2。
7.根据权利要求5所述的解决物理设计长线时序延迟的自动化脚本编写及使用方法,其特征在于,步骤S2中,为了更好地降低线延迟,后端物理设计中对绕线属性进行调整,因此也在主脚本中对绕线属性进行设置,绕线属性为:关于多倍线宽多倍间距的参数设置NDR;NDR规则执行力度设置NDR_effort;最高绕线层设置top_route_layer;最低绕线层设置bottom_route_layer;工具自动绕线时满足最高最低绕线层设置的力度pre_layer_effort;权重参数net_weight。
8.根据权利要求7所述的解决物理设计长线时序延迟的自动化脚本编写及使用方法,其特征在于,步骤S3中,在布局布线前,即floorplan阶段就根据布局规划进行时序优化,代替后续工具的自动优化,实现最优的时序优化。
9.根据权利要求7所述的解决物理设计长线时序延迟的自动化脚本编写及使用方法,其特征在于,步骤S5中,所添加的标准单元以所优化的时序违例路径的相关信息命名,具有唯一性,不会出现命名重复导致脚本失败的情况。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210266806.XA CN114548025A (zh) | 2022-03-17 | 2022-03-17 | 解决物理设计长线时序延迟的自动化脚本编写及使用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210266806.XA CN114548025A (zh) | 2022-03-17 | 2022-03-17 | 解决物理设计长线时序延迟的自动化脚本编写及使用方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114548025A true CN114548025A (zh) | 2022-05-27 |
Family
ID=81662913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210266806.XA Pending CN114548025A (zh) | 2022-03-17 | 2022-03-17 | 解决物理设计长线时序延迟的自动化脚本编写及使用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114548025A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115659901A (zh) * | 2022-09-07 | 2023-01-31 | 上海为旌科技有限公司 | 一种芯片物理设计的距离布线优化方法和装置 |
-
2022
- 2022-03-17 CN CN202210266806.XA patent/CN114548025A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115659901A (zh) * | 2022-09-07 | 2023-01-31 | 上海为旌科技有限公司 | 一种芯片物理设计的距离布线优化方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114548025A (zh) | 解决物理设计长线时序延迟的自动化脚本编写及使用方法 | |
CN106598564A (zh) | 一种自适应不同主板的bios实现方法、bios及主板 | |
CN116384322B (zh) | 一种fpga中可编程逻辑模块的连接方法、装置及电子设备 | |
CN102595184A (zh) | 智能电视自动化测试方法及*** | |
CN114117798A (zh) | 一种基于matlab的自动接口模型生成方法及*** | |
CN114492282A (zh) | 贯穿信号线布局处理方法及装置、芯片和存储介质 | |
CN111259614B (zh) | 优化鱼骨型时钟树金属走线的设计方法 | |
CN114239451A (zh) | 一种电源开关单元的连接关系优化方法和装置 | |
CN111737065B (zh) | 一种基于服务器接口测试的需求模型的接口测试方法及*** | |
US6643826B2 (en) | Semiconductor circuit connection data base and method of designing semiconductor circuit using the data base | |
CN103235849A (zh) | 电流驱动的集成电路自动布线方法及装置 | |
CN117057078A (zh) | 一种电气接线图生成方法、装置、设备及介质 | |
CN105320785A (zh) | 一种用于风电机组载荷计算的工况全自动生成方法及装置 | |
CN113743044B (zh) | 时序路径修正方法、装置、介质及芯片结构 | |
CN115438611A (zh) | 模块间构建时序图的方法、***、设备、介质 | |
CN115758980A (zh) | 一种基于自动串链脚本的低功耗物理设计布局方法 | |
CN112109919B (zh) | 一种强度试验加载点布局方法 | |
CN113791595A (zh) | 分散控制***测点数据导入方法、***、设备及介质 | |
CN114896941B (zh) | 一种时钟树的布局优化方法、优化装置和相关设备 | |
CN112383145B (zh) | 一种改善配电环网图成图效果的线路拆分方法及*** | |
CN110148927B (zh) | 一种应用于定值校核***的局域电网增量动态分区方法 | |
CN114417779A (zh) | 芯片连线方法及装置、计算机设备、计算机可读存储介质 | |
CN113886982B (zh) | 一种基于Isight优化平台的超静定约束方案寻优方法及装置 | |
CN118233486A (zh) | 一种物联网关智能适配光伏逆变器设备通讯协议的方法 | |
CN110991034B (zh) | 基于全并行嵌套bbdf的电力***暂态稳定仿真并行计算方法 |
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 |