拾陆楼
资深ICer,IC技术圈成员,拾陆楼知识星球与CSDN创作者
展开
-
ICC2:分析时序的神器 analyze_design_violations
ICC2 分析时序使用analyze timing violations命令原创 2022-06-29 13:10:46 · 2009 阅读 · 0 评论 -
ICC2 user guide(三)Clock Tree Synthesis
ICC2(三)Clock Tree Synthesis user guide解析原创 2022-06-07 22:56:54 · 8277 阅读 · 1 评论 -
ICC2 user guide (一) Preparing the Design
ICC2 Preparing the Design部分user guide解读原创 2022-06-05 16:03:33 · 3854 阅读 · 2 评论 -
ICC2 user guide(二)Placement and Optimization
ICC2 place阶段user guide原创 2022-05-25 21:48:27 · 7766 阅读 · 0 评论 -
Milkway脚本示例
Milkway用来做ICC/DC工具的物理参考库,其中frame相当于图形化的lef,这里分享一个Milkway的脚本。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-11-06 15:58:38 · 33 阅读 · 0 评论 -
pg lib的信息及产生pg lib的三种方法
pg lib相比basic lib会多几方面pg 信息。除了pg arc(pg pin)以外,liberty还提供电压值,以及pmk cell的power_down_function功能相关信息。1.电压值除了常见的primary pg还有secondary pg和衬底。2.pg arc后端需要去做redhawk功耗分析,需要pg liberty提供pg arc,如果没有pg arc就需要手动去写custom lib代替3.pmk cell的power_down_function。原创 2024-11-06 15:42:11 · 137 阅读 · 0 评论 -
innovus:Clock Gating Check设置与报告
看图后发现,在设置clock gating check之前报告也会有clock gating check的值,这个就是因为timing library中会像reg一样定 library setup time值,如下图。我们常用set_clock_gating_check -setup去过约束Place阶段reg2cgate的时序,以防CTS后由于tree不平导致的时序违例。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-10-18 11:51:28 · 267 阅读 · 0 评论 -
innovus:设置长tree用的delay corner
ICC2长tree的active scenario是用set_scenario_status -active true命令设置的,innovus的active scenario(view)是set_analysis_view中-setup和-hold设置的,每个阶段可以通过set_analysis_view去配置不同view,使用update_analysis_view去更新view的sdc和delay corner。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-10-18 10:28:51 · 63 阅读 · 0 评论 -
innovus:ccopt_design分段长tree操作
这步don't touch保证后面完整cts尽量不会动到已经长过的tree。需要给sub tree手写一个spec,参考create_ccopt_clock_tree_spec -file的写法,只写create_ccopt_clock_tree和skew group部分就行。原创 2024-10-15 14:49:13 · 240 阅读 · 0 评论 -
innovus:ccopt_design先长部分clock tree操作
这步结束后不需要对sub clock tree设置don't touch,因为后面会ignore这个clock。如果只是需要先长部分clock再长剩下的,那就需要用到set_ccopt_property opt_ignore。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-10-15 14:06:48 · 80 阅读 · 0 评论 -
innovus:set_clock_latency与insertion_delay
当1ns clock latency设置在capture上,在report_timing报告中体现在other end arrival time以及capture clock path的Arrival Time上。因为-1ns的insertion delay存在,所以skew group报告中显示的Arrival (ns)是减1ns的结果,即1.819-1=0.819 ns。CTS阶段create_ccopt_clock_tree_spec之后,spec中会产生对应的insertion_delay命令。原创 2024-10-10 14:53:33 · 121 阅读 · 0 评论 -
ICC2:voltage area visual mode
使用 Voltage Areas Visual Mode 可以高亮与选择select power domains, level shifters,isolation cells, 和其他 power domains相关的cell。点击Reload按钮加载Voltage Areas Visual Mode,右键选择直方图中voltage area或cell可以改变其highlight颜色或者进行选择操作。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-10-08 13:52:21 · 58 阅读 · 0 评论 -
innovus:如何报告SI
报告SI首先要设置si aware,报告si可以用report_timing和reportDelayCalculation两种方式。设置report_timing报告格式,其中incr_delay就代表crosstalk。然后用report_timing update 一下延迟信息。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-09-25 15:29:59 · 213 阅读 · 0 评论 -
xtop:如何debug fail reason
报告violation path (start/endpoint),summary (各scenario wns/tns),以及violation endpoints。fix_xx_violations之后,工具会报告fail reason summary,通过man reason_name可以获知fail原因,进而debug。原创 2024-09-20 15:38:29 · 92 阅读 · 0 评论 -
xtop:pt dmsa环境下如何写出timing data file
报告方式是在pt session下source官方提供的脚本,用打包命令获取报告,在pt dmsa下没办法用report_scenario_data_for_icexploer -scenario_name $scenario_list。#gba分析不需要report_pba_data_for_icexploer。需要加remote_execute{... ...}才行。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-09-20 14:53:38 · 213 阅读 · 0 评论 -
xtop:multi_driven_net与incomplete_timing_cell fail reason 分析
man multi_driven_net”可以得知,这个问题是multi driven结构引起的,使用命令“get_failed_pins -reason multi_driven_net”,获取violation pin。“man incomplete_timing_cell”可以得知,这个fail reason的原因是缺少timing library cell,检查并补全后这个错误就显示了。这里选择的解决方法是修改lib文件,把inout改成input,重新lib2idb。通过这种方法解决了问题。原创 2024-09-20 14:42:15 · 179 阅读 · 0 评论 -
physical verification:dummy blockage(dummy exclude layer)添加方法
另外,如果使用icv加dummy metal的话,ICC2 create routing blockage时可以使用普通绕线层,不用指定dummy exclude layer,因为这一层在innovus/ICC2使用的lef和tf文件中很少有定义。innovus可以使用create routing blockage的方式添加,同样的,layer name都需要添加dummy exclude layer才行。dummy blockage的作用是阻止工具添加dummy metal。使用命令也是可以的。原创 2024-09-19 11:13:09 · 307 阅读 · 0 评论 -
innovus:使用antenna cell修复antenna问题的脚本
参考这个脚本,你也可以改成在net上插buffer,这里的violation报告在M4上,使用时自行修改。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-09-18 10:57:38 · 110 阅读 · 0 评论 -
formality:antenna cell被看做black box引起的verify failed原因分析
跑formality对比pr前后网表一致性时发现verify failed,打开gui,trace failed的点发现pr后的网表因为在clock tree上插入了antenna cell,而antenna cell此时是black box,导致clock tree无法trace到clock source。如果改liberty会比较麻烦,最后选择额外读取一个antenna cell的手写网表,提供一个假的模型。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-09-18 10:44:23 · 190 阅读 · 0 评论 -
ICC2:对指定信号线设置ndr rule
route_group -nets xx可以在route_auto前先去绕指定net,这个net可以是pg net ,也就是secondary pg pin的绕线。route_eco -nets xx可以在postroute之后使用ndr rule重新route指定net。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?然后,设置对应net的ndr rule。首先,要创建ndr rule。原创 2024-09-09 11:15:20 · 132 阅读 · 0 评论 -
实现report_timing -throught clock_pin的脚本
已知一条timing path的start/endpoint,他们的clock path路径不唯一,想获取经过指定clock pin的timing报告就需要写脚本处理。如果单纯想获取指定launch/capture直接report_clock_timing -thought C -to A/CK即可,这个命令是考虑derate的。举例来说,需要获取经过指定launch path上clock cell的timing报告。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-09-09 10:55:40 · 173 阅读 · 0 评论 -
xtop:net反标失败错误分析
回答这个问题我们要理解xtop的sta data只是读取pt等sta分析工具的timing报告,所以反标rc的行为是发生在sta分析工具这边。理解这个行为后就可以去pt这边debug了,看parasitic log就好,100%都没反标上只有spef没读进去这一个原因。跑xtop读取sta data数据时报错,提示net没有被反标。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-09-05 10:32:20 · 133 阅读 · 0 评论 -
xtop:write_design_change后netlist与physical不对应问题解决办法
xtop在write_design_change后,将产生的netlist.txt和physical.txt分别读入pr中,读取physical.txt报告没有找到。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-09-05 10:24:50 · 219 阅读 · 0 评论 -
innovus:如何让部分sink长到target insertion delay的长度
target_insertion_delay让工具长到指定长度,真实计算方式是target_insertion_delay ± ½ target_skew。原创 2024-08-30 14:16:37 · 432 阅读 · 0 评论 -
innovus:Create Core Rows与Cut Core Rows
使用cut core row与create core row可以创建一个独立的区域,如下图。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-30 13:56:46 · 425 阅读 · 0 评论 -
ICC2:mark_clock_tree与application_fixed
cts之后或者mark_clock_trees后,clock cell的physical status属性就变成了application_fixed,这时如果再手动插buffer/inv上去,属性仍旧是placed,需要重新mark_clock_tree。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-26 17:55:38 · 152 阅读 · 0 评论 -
innovus:report_area和reportGateCount报告module面积的差异
这两个命令都不适合报告与physical only相关的面积信息,使用默认的就好,因为如果physical only cell在顶层,没有任何hier层次的physical only cell使用report_area -physical也报告不出来。report_area默认是只包含logic cell的,这和reportGateCount是一样的,如果report_area使用了-include_physical的option,那就会把对应层次的physical only cell也算进去。原创 2024-08-26 15:19:31 · 177 阅读 · 0 评论 -
PT:如何获取net的Delta delay信息
要看全部net的delta delay可以用get_attribute [get_nets xx] annotated_delay_delta_min/annotated_delay_delta_max。报告里有一栏annotated max rise/fall net delta delay: xx arc delay: yy。xx就是Delta delay,yy值得是incr包含net delay和Delta delay。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-23 10:00:47 · 273 阅读 · 0 评论 -
ICC2:如何计算双孔率(total double via conversion rate)
使用checkRoute可以报告total double via conversion rate,报告里会展示double via数量和总数量(不包含power via)。脚本统计的话,via有一个via_type的属性能分辨单双孔。这个算出来的值就是checkRoute看到的via数量。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-22 14:34:29 · 96 阅读 · 0 评论 -
ICC2:insertion delay会拉长同一skew group其他sink吗?
效果如下图,在generate clock的位置设置了skew group,让后面的sink不与master clock下的其他sink balance,紫色的ff就是设置balance points的ff。所以结论就是:insertion delay不会拉长同一skew group下的其他sink。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-21 15:15:33 · 135 阅读 · 0 评论 -
innovus:检查并配置pStatus的方法
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-20 10:29:48 · 58 阅读 · 0 评论 -
innovus:像ICC2一样设置placement label
ICC2有placement label/placement rule功能,能控制各种类型cell 之间的spacing规则,包括top和bottom edge的spacing。innovus也有相同的功能,以下示例方便大家了解用法。我们需要给所有OAI* cell之间设置一个spacing rule,让他们不要上下或者挨着。效果如下图,这个spacing指的是同一边的间距,不是cell间距。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-19 10:56:55 · 243 阅读 · 0 评论 -
timing derate失效,cppr为0原因分析
setup violation path的cppr为0,report_crpr只有slow corner异常fast corner却是正常的。可以看到,ss corner的set_time_derate -early 给了一个大于1的值,就是这个错误导致工具把cppr值看做0的。究其原因是set_timing_derate设置出了问题。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-14 15:04:55 · 175 阅读 · 0 评论 -
ICC2:使用Gui摆floorplan—Macro Placement Assistant
这个Macro placement assistant功能还支持检查floorplan rule(set_floorplan_area_rule / set_floorplan_enclosure_rule / set_floorplan_halo_rule / set_floorplan_spacing_rule / set_floorplan_width_rule / set_floorplan_length_rule)我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-14 10:59:33 · 320 阅读 · 0 评论 -
ICC2:如果获取timing path的last common point
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?除此外,还可以获取crpr的值。原创 2024-08-14 10:55:24 · 89 阅读 · 0 评论 -
innovus:report_timing如何显示last common point
ICC2工具report_timing会自动显示last common points,方便找到capture和launch的clock common path,innovus需要单独加设置才行。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-13 11:56:19 · 121 阅读 · 0 评论 -
ICC2:分段长tree进阶版教程
对sub tree设置更严苛的skew要求。原创 2024-08-08 10:47:53 · 180 阅读 · 0 评论 -
ICC2:检查漏tree的脚本
前面写了innovus检查clock 漏tree的脚本,ICC2的脚本也相差不多,只需要替换少部分命令就行。原理就是检查clock pin有没有clock 定义。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-07 17:06:01 · 66 阅读 · 0 评论 -
innovus:检查漏tree的脚本
sdc漏掉了一些时钟定义导致register没有长tree,clock tree上出现非ndr绕线以及不同VT的cell甚至是dly cell,可以通过如下脚本search出缺少始终定义的register。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-07 15:30:19 · 287 阅读 · 0 评论 -
ICC2:多个skew group的sink有重叠会怎样?
多个 skew group之间有重叠的部分是会被后定义的skew group覆盖的,比如skew group sg2包含skew group sg1所有的sink,那么在定义skew group时先定义sg2后定义sg1,report_clock_skew_group可以看到sg2只报含去除sg1 sink的部分,反过来,先定义sg1后定义sg2,report_clock_skew_group看到的sg1就是空的。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-08-07 11:45:26 · 137 阅读 · 0 评论