pt修改之后,返回做ICC的步骤
我在ICC中最终的版本上,执行pt中做的修改之后,执行了以下命令,
legalize_placement;
route_zrt_eco;
derive_pg_connection -power_net VDD -ground_net VSS
derive_pg_connection -power_net VDD -ground_net VSS -tie
verify_zrt_route;
verify_lvs
ICC中的DRC是过的,LVS出现一个floating的port,发现是某个寄存器的QN端,我没有理会
然后输出icc.pg.v和gds
利用ICC得到的gds和icc.pg.v转换出来的cdl做lvs,但是lvs结果不正确,发现layout中比source中多了不少net,不知上述步骤漏掉了哪些步?
意思是没eco之前lvs是clean的?如果不是,先考虑reference spice 的问题
最初的icc结果中,lvs也有一个floating的port,但calibre中lvs是过的。
eco之后,在icc中lvs也是有一个floating的port,好像是加法器的CO端,这次calbre中lvs就显示source比layout多了instance和nets,这么看应该是网表更新了,而layout感觉上没更新似的。
后来发现在write gds时,-cells选项没有改,依然是指定的design(eco之后另外把cell存成了design_pt),更改之后,用calbre做lvs,发现只有一个错误了,就是部分PMOS的衬底b的net没有和VDD连接上。之后,我在ICC中运行derive_pg_connection,结果显示电源地都是连好的,verify_lvs也没有报出除了那个floating port之外的错,多次重新输出gds和icc.pg.v,最终calibre的lvs结果一直不变,不知该从哪方面入手解决这个问题?
也许是calibre的使用问题,
不过lvs的原因有很多,怎么说呢
derive_pg_connection -power_net VDD -ground_net VSS -tie
如果確定要下這個command
建議下完之後再下個eco route,
因為這個command會將logic 1'b0 tie到pg rail,
會需要重繞
不過一般來說pt fix hold有沒有下這個應該無所謂
要看原因可能還是要看看lvs report.
只是從你這個flow看來會可能發生這個問題.
我发现是stardard filler的问题。
在将pt中的修改在ICC中执行之后,没有先将stardard filler remove掉,结果导致N阱不连续,存在不少的间距错误,这在导入cadence中,用calibre做drc才发现。
后来我先remove掉stardard filler,然后在legalize_placement完新插入的buffer之后,再重新插入stardard filler,之后ICC输出的结果就OK了。
derive_pg_connection这个命令,是在有插入新的器件或是placement发生移动之后,都执行的,不然在ICC中做lvs就会报错,不会把那些新加入器件的VDD和VSS与design中的VDD和VSS当做相同的net。 不知道这个理解是否正确,做法是否合适?
另外,在pt之后做eco,如果用了route opt或route_zrt_detail等命令,这会不会把新加入的buffer给优化掉呢?
great post