热度 19| ||
面对大规模的后端设计,尤其是flatten状态的chip top,到项目后期,由于某种因素造成的一定数量的drc,时间紧迫,为了能够尽快实现收敛,有没有办法让多个工程师一起参与,并行修drc来加快收敛?
答案是肯定的。在Innovus工具中,针对绕线相关的drc,(修改,删除,增加一些wire,via以及修改逻辑连线等)一直存在面对这样的局面的解决办法--Paralle Edit Flow。
这个flow的用法比较简单,用户友好,基本上三个命令就可以实现:start_parallel_edit, end_parallel_edit, read_parallel_edit_files
举例说明这个操作过程,比如有三个人参与并行修drc。
第一步,选取同一版db,三个人同事load起来,确定好各自要修的区域
user1 :
<CMD>start_parallel_edit -region {0 0 100 100}
change object (针对这个区域的drc,进行手动改线,删线等等操作)
<CMD> end_parallel_edit -out_file eco1.tcl
user2:
<CMD>start_parallel_edit -region {100 100 200 200}
change object (针对这个区域的drc,进行手动改线,删线等等操作)
<CMD> end_parallel_edit -out_file eco2.tcl
user3:
<CMD>start_parallel_edit -region {300 300 400 400}
change object (针对这个区域的drc,进行手动改线,删线等等操作)
<CMD> end_parallel_edit -out_file eco3.tcl
第二部=步,大家release出各自的eco文件,给top onwer进行导入
top owner:
load db
<CMD>start_parallel_edit
<CMD>read_parallel_edit_files -file {eco1.tcl, eco2.tcl, eco3.tcl}
<CMD>end_parallel_edit
理想的话,两步就完成了。但是,实际的项目中可能会有各种各样的意外出现,所以这里就介绍一下可能遇到的问题已经处理办法。
注意事项:
划分区域的时候尽量避免三个人的region有重叠部分
操作region边界的线的时候,尽量避免两个人重复操作到跨region的wire
万一有重复操作的动作,可以在read_parallel_edit_files的时候选择性的加option,-confilct_mode {only_one stop_all},选择只识别重复动作的第一个,或者遇到重复就停止
-ignore_error 忽略error。这个动作就可能导致有error的部分之后都不再被读进去.另外还有-check,-report_file等检查error的形式。
确保每个user的操作之后,top owner可以使用ecoRoute,而不会有其他问题出现。这一点需要几个人对齐。
这个流程操作简单,效率高,非常时候后期时间紧张的情况下使用。
另外,针对非wire相关的drc,多人fix的时候最好也是以脚本的形式release,放在paralle edit flow之后再吃,避免破坏了适用的db环境。