APR Recipe

时间:2023-03-09 16:55:10
APR Recipe

1,  pt fix 后生成的 icctcl,回到 icc source 后,如果需要eco_route,建议先关掉 timing_driven,因为 icc 与 pt 看到的 timing 情况一般都有 mismatch,所以如果开了 timing_driven,可能在 icc eco_route 后,在 pt 中看到新的 violation。关闭 timing_driven 方法:

set_route_zrt_detail_options  -timing_driven false

route_zrt_eco  -reroute modified_nets_first_then_others  -max_detail_route_iterations 5

2,  绕线完成后首先要检查是否有short,有较多short 就说明没有绕通,没必要往下做了,先回头找原因。CalibreDRC 不会去检查short,DRC主要检查绕线spacing 、 min area、density; LVS 如果出问题,一般主要是power 或者short,先确认ICC error browser 中是否有short存在。

3. 从 designer 那边拿到的sdc,需要先修改掉一些内容,主要包括: set_wire_load,set_voltage,set_clock_uncertainty,set_operating_condition  等等,因为这些设定只是针对一个scenario条件的,而后端一般会用到多个scenario,在 set_mcmm 步骤会针对不同 scenario 做不同的设定,所以需要在 sdc 中删去这些设定。

4. 完成place 阶段后,需要检查几个指标:timing,utilization, cell density, route congestion。其中 cell density 可直接查看 density map,而 congestion 可用 report_congestion 报出横纵两个方向的routing overflow。查看这些参数的目的就是提前预估当前的 floorplan,chip size 是否合理,能否做的出来。

5. 在做 PNS 时,如果发现执行命令却没有任何结果,首先考虑是不是没有 pg nets, nets 属性是不是 power/ground(方法: get_nets DVDD 如果可以抓到,就是 signal,如果不能抓到,再用 get_nets  -all  DVDD ,如果可以抓到,就是pg net了),然后检查有没有 derive_pg_connection ( 方法:直接看 std cell 的pg pin 的owner net,如果没有net,就是没有做 derive_pg ) ,总之就是一定要确保有pg nets,并且与 std cell pg pin 在逻辑上有连接,这样才能接着去做物理连接。

6. 修timing 时,如果data已经没什么可修了,那就要考虑改 tree,改 tree 需要注意先看看launch clock 和 capture clock 的 last common pin,只能改 last common pin 之后的那一段tree,因为前面的 tree 都是 common path ,改了会同时影响 launch 和 capture,等于没修。查看 last common pin 可以用 PT report_timing,ICC 好像没法报出来。

6. to be continued……

|--------------------------------------------|