read_mmmc 读入viewDefinition 文件;
read_physical 读入tlef 跟lef;
read_netlist 读入网表;
read_power_intent 读入CPF 或1801 文件。
Innovus 文档中并没有写init_design 背后的过程,Genus 文档正好有这部分,从逻辑上看Innovus init_design 的过程应该类似:
检查lib 跟lef 一致性,如:某个cell 在LEF 里有在timing lib 里没有,工具会报ENCSYC-2 的警告;
做netlist check, 如:检查设计中是否有unresolved 的instance; 检查设计是否unique;
SDC check, 如:是否有不支持的非SDC 命令,是否有找不到的object, Object 类型是否错误,StartPoint 跟EndPoint 是否有效等。此外要特别注意这几个SDC 命令:set_ideal_network, 在综合时不想优化某些high fanout net 通常都会将其设成ideal 但是到了PR 阶段,就必须要将这些ideal 拿掉让工具去做buffering; set_propagated_clock 在CTS 之前如果设了这个命令,会阻止工具对时序逻辑做优化;set_dont_use, set_dont_touch, 要确保每一个设定都有据可依;set_clock_uncertainty, 在PR 的每个阶段uncertainty 的值都可能不同,所以最好在flow 中run 相应的优化命令之前先将uncertainty reset 掉再设置对应stage 所需的uncertainty 值;
Extraction 文件检查,要确保QRC 跟LEF 对应,要确保routing layer count, widths, spacings, pitches 都保持一致,要确保RC 抽取的温度正确等;
Innovus 不依赖lib cell 的footprint 而是function 定义来确定哪些cell 功能相等,init_design 会识别库中可用的组合逻辑、时序逻辑、buffer, inverter, Delay cell 等,可以用命令check_footprint 做更详细的检查。
做PR 应该跟做综合一样,在开始优化之前一定要清干净输入数据的所有问题,除了init_design 做的check 之前,最好用check_timing 跟check_design 做更详细的检查。
check_design 可check :
check_timing 会报如下内容: