我们传统的Physical DRC Signoff的步骤是怎么样的呢?首先,从ICC2中写出GDS文件。然后,merge standard cell,macro 等gds。再然后,用Physical Signoff 工具check DRC。最后,将DRC结果导入ICC2中分析。

   为什么我们的Physical DRC Signoff flow需要分为这么多步骤呢?根本原因在于P&R工具与Signoff工具check DRC之间存在mismatch。PR工具不能和signoff工具完美的一致的根本原因:P&R工具读入的techfile约束文件与SignoffDRC Runset件之间可能存在不一致,一个是实现过程中的相对快速iteration,一个是做最终的Gating;其次,P&R工具为了减小磁盘占用,提升速度(鱼和熊掌不能兼得),读入的是physicalframe 而不是gds文件。有时因为看不到macro/IP中的真实layer导致macro/IP边缘出现DRC不一致情况。

ICV作为业界signoff工具之一,在若干大客户那里已经得到了认可。同时从Synopsys和客户双方也在不断思索怎样通过这个进一步提升PhysicalDRC signoff的效率。我们知道ICV已经是一个主流的PhysicalVerify的工具之一。当我们实现ICC2与ICV的融合之后,就产生了神奇的效果。

Indesign ICV就是在ICC2中调用ICV,在内部自动merge gds,根据Signoff DRC Runset得到最准确的DRC结果。仅仅是check到最真实的DRC结果已经很让人惊喜了,Indesign ICV还支持自动修复功能(ADR)。IndesignICV 将根据最真实的DRC结果,调用ICC2的router引擎自动修复DRC。

Indesign ICV-风君雪科技博客

这么复杂的机制操作起来一定很复杂?一点也不。对于用户而言,只需简单配置环境后,简单的命令和app option便可以轻松跑起来。对于用户而言,调用ICV,merge gds,读入DRC Runset等等都是一个近似黑盒子(当然,用户可以在log和报告中查找到异常),不需要太费心便可以得到最真实的DRC结果了。

那runtime的情况呢?了解过Indesign ICV的原理之后就知道了,Indesign ICV 并没有额外的runtime消耗。相对于传统flow反而可以节省数据导入导出的时间。

说了这么多,感兴趣的技术大侠们一定迫不及待想知道如何在ICC2中使用IndesignICV了。

1.      我们需要在shell中配置ICV版本,强烈建议使用ICV-201806-SP2或更新的版本。

2.      打开一个ICC2 database。

3.      set_app_options -name signoff.physical.layer_map_file – value $map_file  (指定mapping file)

set_app_options -name signoff.check_drc.runset  -value $rule_deck  (指定ICVrule deck)

set_app_options -name signoff.check_drc.ignore_child_cell_errors  -value false  (设置为false的时候,ICV将会检查cell内部的DRC)

set_app_options -name signoff.physical.merge_stream_files  -value $gds_list  (指定gds list) 

4.      signoff_check_drc [-check_all_runset_layers  true/false][-select_rules xxx] [-unselect_rules xxx] [-coordinates xxx] [-excluded_coordinatesxxx]

该命令控制执行signoffDRC check。默认情况下自动进行所有rule的检查。同时,该命令也提供了灵活的控制option,支持针对指定layer,指定区域,指定rule等进行signoffDRC check,实现user 定制化的检查,

5.      signoff_fix_drc [-select_rulesxxx] [-unselect_rules xxx] [-coordinates xxx] [excluded_coordinates xxx][-start_repair_loop xxx] [-max_number_repair_loop xxx] [-nets xxx][-timing_preserve_setup_slack_threashold xxx]

该命令控制执行自动化的DRC修复 (ADR)。默认情况下自动进行所有metallayer 相关的DRC 修复。同时,该命令也提供了灵活的控制选项,支持针对指定区域,指定rule等进行DRC 修复。例如,-nets,用于指定保护某些net;-timing_preserve_setup_slack_threashold保护timingcritical net。