![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Cadence(Innovus+QRC)
文章平均质量分 51
以cadence innovus工具为主的学习内容
拾陆楼
资深ICer,IC技术圈成员,拾陆楼知识星球与CSDN创作者
展开
-
IC后端设计中的shrink系数设置方法
一般scale factor都是在RC model(itf、tluplus、nxtgrd等)文件中设置好的,但不排除一些工艺使用的与pre shrink工艺相同的规则文件,需要人为在后端环境中手动设置,RC model文件中设置好后,环境中重复设置会报错,工具会给出提示,已经有过设置了,工具会忽略人为设置或者需要删除环境中的设置重新跑。qrc文件是可以从ict文件转换的来,通过阅读ict文件,找到layout scale设置来确定是不是需要手动设置scale factor。原创 2024-07-11 09:59:22 · 616 阅读 · 0 评论 -
innovus:database(enc.dat)中丢失ccopt文件夹怎么办?
source一下ccopt spec 文件重新saveDesign就可以了。还有个办法,从别的有ccopt目录的database里拷贝过来也可以直接用。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-07-10 14:48:20 · 112 阅读 · 0 评论 -
innovus:ignore pin的设置与作用
在生成spec后工具会提示ignore pin的reson是user,即用户自定义,这里ignore pin同样作为sink type的一种,也就是说它就是clock tree的终点,后面的都不会按照clock 属性去检查。把ignore pin设置在combination cell上也一样,工具会把combination cell当终点,这点跟ICC2不同,需要注意。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-07-08 09:58:07 · 370 阅读 · 0 评论 -
innovus:设置instance padding
前面文章讲到如何设置各种padding的方法,有星球小伙伴问道,为什么设置了padding工具仍然没有按照指定的间距摆放。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-07-08 09:42:55 · 229 阅读 · 0 评论 -
innovus:如何解决大小写重名问题
ICC2中可以使用change_name统一大小写,让net/inst/port/module name没有冲突,对应的innovus也有update_name命令来解决大小写冲突问题,防止lvs出错。一般会让大写的net name后面加个后缀_1,_2,比如NET1_1。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-07-08 09:37:50 · 127 阅读 · 0 评论 -
innovus:通过dbGet获取指定边上的port
$edge代表指定边"0 1 2 3 ...",以矩形为例,原点在左下角,0就代表左边,1代表上边。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?这里需要注意的是terms与{之间需要有空格。原创 2024-07-08 09:17:57 · 153 阅读 · 0 评论 -
innovus:报告skew group平均tree长度脚本
通常给top做cts时需要反标clock network delay,也就是block内平均的tree长。以下是报告平均长度的脚本。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-07-03 13:40:07 · 509 阅读 · 0 评论 -
innovus:timing报告的精度如何设置
report_timing,report_net,report_cell_instance_timing,report_clocks的报告都可以用这个修改精度,最大是8。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-07-03 10:11:02 · 283 阅读 · 0 评论 -
innovus如何写出floorplan信息
innovus defOut默认不会保存scan chain信息,需要价-scanChain才行。writeFPlanScript比saveFPlan可操作行更强,需要写出去的用-selected或者-section {block pins io_pad boundary ...}写出去即可。有fence/region等placement constraints的设计需要用saveFPland的方式保存,其中instance部分,physical only cell是会写进去的。原创 2024-06-20 15:35:15 · 204 阅读 · 0 评论 -
ecoAddRepeater -loc与-offLoadAtLoc的区别
如上图,1234为四个input term,在红圈的位置插一个buf,如果使用-loc,那么这个buf的输出驱动的就还是1234四个input,如果使用-offLoadAtLoc那么这个buf就只驱动1这一个input term。都是指定插buf/inv物理位置,区别在于前者用于插buf/inv驱动原始net所有的input term,后者用来驱动部分input term,具体驱动哪些是根据buf/inv线上位置而言的。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-06-20 14:09:12 · 569 阅读 · 0 评论 -
innovus:如何设置timing报告格式
在flow中添加如下设置即可设置好timing report的格式。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-06-20 13:44:58 · 453 阅读 · 0 评论 -
innovus:route secondary pg pin
route secondary pg pin,如果max_fanout>1工具会先绕到trunk上,这里不建议把fanout设置太大,会有ir问题,如果=1,工具会直接绕到pg grid上,比如power rail或stripe。#设置ndr rule,具体绕线层次跟signal绕线层次相同即可,考虑aon power stripe层次,可以进一步限制层次范围,如果只对welltap或endcap pg pin绕线,可以不做第三步的ndr。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-06-13 15:02:39 · 395 阅读 · 0 评论 -
如何获知lib cell的用途
除了databook可以查询cell的用途外,还可以通过在pr工具中获取lib cell属性的方法知晓其用途。通过看is_xxx,获取其信息,是否是buf/inv,是否是组合逻辑,是否是时序器件等等。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?分析办法原理与ICC2一致。原创 2024-06-13 14:52:12 · 70 阅读 · 0 评论 -
setOptMode -holdTargetSlack与-holdSlackFixingThreshod
holdTargetSlack与-holdSlackFixingThreshod这两个option都是针对hold slack的,前者限制slack的目标,默认是0,也就是说工具尽可能会收敛时序,后者默认是-10000,意思是violation大于这个10000都不去修,用户可以自行限制这个阈值,让工具不去修一些violation比较大的path。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-06-13 14:45:44 · 346 阅读 · 0 评论 -
innovus:max_delay与path adjustment
一些过约束的path,比如端口in/out上的时序,我们需要让它更乐观以免过修浪费资源,反而让需要clean的path没修干净。这时候我们常用set_path_adjust_group和set_path_adjust命令。sdc中通常也会对input/output 端口做max delay约束(report中以path delay形式存在),让data path长度合乎要求,这个值和path group adjustment是可以同时存在的。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-06-04 15:50:32 · 513 阅读 · 0 评论 -
innovus:update_rc_factor失效原因解析
讲到这问题就很明了了,这位同学使用了qrc文件,默认的effort level是medium,然而update rc factor只设置对应low的rc factor,所以update前后,timeDesign没有任何变化。2)设置两个值,对应的是effortLevel low和medium的rc factor,此时high level对应的rc factor是默认的1。1)postroute部分只指定一个值时,对应的是setExtractMode -effortLevel low的rc factor。原创 2024-05-22 15:07:25 · 376 阅读 · 0 评论 -
innovus:reclaimArea优化面积
工具在绕线前后由于线上延迟计算的差异,前后修hold会有一些过修的delay cell可以通过reclaimArea删掉,当然setup余量足够的path也可以通过这个命令进行down size。innovus推荐使用optDesign优化面积,对应需要设置setOptMode -reclaimArea true。在route后可以用-maintainHold选项让工具考虑hold 余量。当然,工具也提供单独的优化命令: reclaimArea。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-05-09 14:38:27 · 462 阅读 · 0 评论 -
innovus:手工做tree如何route clock tree
手工长tree调整 clock cell位置后,要进行clock route可以使用route_ccopt_clock_tree_nets命令,但这个时候会报告。只需要简单运行一下ccopt_design -check_prerequisites就行了,这个命令不长tree,只做分析。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-04-17 15:31:31 · 496 阅读 · 0 评论 -
innovus:NRDB-2276 special net route layer与NanoRouteMode route layer冲突问题解决方法
NanoRouteMode中设置绕线层次2-6,但是被动到的special net有8-11的preferred route layer,这个层次可能是create_route_type+set_ccopt_property -net_type 定义的。二者绕线层次范围有冲突,导致在调整过这条net后再绕线就会提示失败。然后再下route_design 等route命令去绕别的net。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-04-17 15:27:13 · 389 阅读 · 0 评论 -
innovus:postRoute阶段删除冗余的hold buffer
这里的hold buffer不全是post route修hold的结果,也有可能来自post cts阶段,如何删除这些path有timing margin的冗余buffer呢?setOptMode -postRouteAreaReclaim holdAndSetupAware (默认是none,工具不会做area reclaim)在timing signoff阶段会遇到局部因为hold buffer过多密度过高无法进行size cell/insert buffer的情况。原创 2024-04-17 14:54:15 · 498 阅读 · 0 评论 -
innovus:addRepeaterByRule用法
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?addRepeaterByRule不管transition/timing violation,只根据约束的length/cap/fanout等等去给net 插buffer。原创 2024-04-12 09:47:42 · 410 阅读 · 0 评论 -
innovus:add text脚本
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-04-02 11:52:52 · 446 阅读 · 0 评论 -
innovus:streamOut gds中pg text带有冒号(:)解决办法
streamOut后查看layout,发现部分PG text后面加了冒号,比如VDD: / VSS:。当然,这个问题还有另一种解决办法,就是通过脚本给terminal打text再streamOut。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-04-02 11:21:40 · 506 阅读 · 0 评论 -
innovus:IMPSP_9099 / IMPSP9100问题解析
这个 -place_global_ignore_scan 要设置成false才行,如果不耽误跑就不需要管这个error了,如果跑不下去,建议断开scan 信号的连接。工具检测到网表里用了scan DFF(有Si So pin),而且连接了,但你又没吃scan def,所以要报错。#下面脚本替换一下scan_in pin的名字就行。更多学习内容请关注「拾陆楼」知识星球。原创 2024-03-27 10:22:56 · 538 阅读 · 0 评论 -
innovus:setExtractRCMode -effortLevel
l medium- 调用 Turbo QRC (TQRC) extraction engine。l high- 调用Integrated QRC (IQRC) extraction engine。IQRC有更强的性能和精度,建议在ECO之后使用。l low -调用native detailed extraction engine,与指定-engine postRoute相同。l signoff -调用Standalone Quantus QRC extraction engine。原创 2024-03-27 10:20:11 · 397 阅读 · 0 评论 -
innovus:如何用命令实现多边形floorplan
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-03-11 09:32:04 · 965 阅读 · 0 评论 -
innovus:place阶段useful skew的作用
工具在ccopt_design时会使用useful skew去优化时序,这个值可能过于保守,于是在preCTS阶段可以使用如下命令让工具在maxAllowedDelay范围内写一个set_clock_latency的sdc出来。insertion_delay的设置的来源有三个。其中之一就是来自place阶段计算的useful skew(保存在xx.dat/mmmc/views/xx/latency.sdc中的set_clock_latency)我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-02-26 09:38:12 · 781 阅读 · 0 评论 -
innovus:insert Power Switch失败,报告not covered by a row问题解析
这个问题就是switch找不到可以放置的row,分析就从两方面入手,一方面从voltage area下手,一方面从row和site入手。检查发现voltage area设置正确,row也存在,只不过lef里缺少对应switch的双倍高的site。更多学习内容请关注「拾陆楼」知识星球。原创 2024-01-11 13:22:43 · 569 阅读 · 0 评论 -
innovus:如何写出switch的连接关系
保存floorplan时,switch的连接关系写不出来,于是搞了一个脚本,用来写出指定instance各signal pin的连接关系。参考下面脚本,这个proc需要你提供instance name,然后会把pin的关系写出来,先addNet再attachTerm。更多学习内容请关注「拾陆楼」知识星球。原创 2024-01-11 13:14:41 · 755 阅读 · 0 评论 -
innovus:setEcoMode -batchMode
innovus工具推荐在下eco command(ecoChangeCell ecoAddRepeater ecoDeleteRepeater)之前使用setEcoMode -batchMode true,因为batchMode模式能批量处理eco command,只需要update timing一次,不然执行大量eco command需要更多run time。需要注意的是在下eco command之后,需要退出batch Mode不然后续refinePlace没办法执行。原创 2024-01-08 09:42:53 · 823 阅读 · 0 评论 -
set_ccopt_property基本用法备忘录(下)
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-01-04 13:47:59 · 943 阅读 · 0 评论 -
innovus:Patch Wire(补丁线)
1)选中wire ,shift+A使用Edit Route功能,F3打开edit route对话框。线道Create Patch Wire,设置好层次和宽度。在修补一些min area的drc时,会有一些danling wire的drc冒出来,为了避免这些假错,可以使用工具patch wire功能。2)沿着选中的wire画线即可。如下图,patch wire和regular wire是能看出区别的。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2024-01-04 11:53:29 · 741 阅读 · 0 评论 -
innovus:如何使用Stretch Wire拉伸wire宽度
如题,innovus在拉伸wire时,长度和宽度需要单独控制,既拉伸长度时只能拉长度,拉宽度时也只能拉伸宽度,这时候需要做两个设置,如下图所示。F3打开Edit Route对话框,找到Misc - Stretch/Cut 把Unrestricted Wire Width勾上即可。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?1)打开Stretch Wire Width开关。2)设置Edit Route。原创 2024-01-04 11:25:11 · 577 阅读 · 0 评论 -
innovus:refresh CTS
如果CTS结果不满意,需要重新做CTS,有没有办法不退出工具,重新启动placement阶段的database,重新做CTS吗?我们只需要清除掉驱动单元和clock net上的一些fixed/dontTouch属性就可以直接运行CTS了。# 取消选中net的dontTouch属性。# 取消选中单元的dontTouch属性。# 对选中的net属性设为unknown。# 清除clock tree上的驱动单元。# 清除已经选中的信息。# 清除已经选中的信息。# 清除已经选中的信息。# 选中所有驱动单元。原创 2023-12-29 14:16:41 · 620 阅读 · 0 评论 -
innovus:ccopt_design -check_prerequisites
ccopt_design -check_prerequisitessites类似与ICC2的report_clock_setting命令,可以报告clock tree需要用到的clock cell list/target 约束等等,详细内容可以通过解读log获取以下几方面信息。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2023-12-27 08:51:47 · 469 阅读 · 0 评论 -
innovus:addInst用法
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2023-12-26 15:46:25 · 641 阅读 · 0 评论 -
innovus:floorplan阶段插spare cell利用率大于1的问题分析(IMPSP-5526)
这是由于使用了placeSpareModule -uti -stepx -stepy 命令,导致插的太多利用率爆掉了,这个方法好处是插的均匀,坏处是不容易预估利用率,其他加spare的方法可以看上面文章链接。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2023-12-22 17:50:58 · 536 阅读 · 0 评论 -
如何控制mem/ip出pin在pin的正中间
原理是提供pin boundary,在pin shape周围加routing blockage,限制工具只能在正中间出pin走线。无论是ICC2还是innovus都不提供这样的功能,如果有这样的要求就需要通过脚本实现,这里提供一个参考脚本。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2023-12-21 09:55:58 · 914 阅读 · 0 评论 -
innovus:saveNetlist写LVS网表
std cell / mem等cell仅保留端口信息,其实本来也只有端口,内部信息还是要merge cdl(spice网表),这样能压缩网表大小。这里的$CapCell指的是Decap这种有MOS管的Physical Only Cell。inculde power ground为了写出pg pin,尤其是衬底。#删除空module,防止lvs时source有但layout找不到对应期间。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2023-12-19 10:17:48 · 1067 阅读 · 0 评论 -
innovus:ecoPlace/ecoRoute如何节省run time
工具在做ecoPlace/ecoRoute时时间总是很长,下面推荐一些option可以节省run time,简单来说不需要工具在eco是考虑时序等问题。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?原创 2023-12-19 10:05:37 · 704 阅读 · 1 评论