前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟老驴一起学PR | init_design

跟老驴一起学PR | init_design

作者头像
老秃胖驴
发布2020-11-06 13:31:18
3.3K0
发布2020-11-06 13:31:18
举报
文章被收录于专栏:陌上风骑驴看IC陌上风骑驴看IC

设好了《跟老驴一起学PR | 数据的输入》文中提到的一坨init_XX 变量之后,下一步就是执行init_design. 在innovus 中saveDesign 会写出一个.globals 的文件,在这个文件中有控制变量跟这一坨init_XX 变量。执行init_design 命令,会发生:

  • 数据读入;
  • 数据解析及绑定;
  • 数据质量检查。

数据读入


在Innovus log 里扒拉了一下,数据的读书顺序是:

  • read_mmmc 读入viewDefinition 文件;
  • read_physical 读入tlef 跟lef;
  • read_netlist 读入网表;
  • read_power_intent 读入CPF 或1801 文件。

数据解析及绑定


Innovus 文档中并没有写init_design 背后的过程,Genus 文档正好有这部分,从逻辑上看Innovus init_design 的过程应该类似:

  • Power Domain Creation: 如果是多电压域设计,解析了CPF 或1801 文件后,工具会将设计跟power Domain 做绑定;
  • Power Domain Binding to Delay Corners, 如果是多电压域设计,不同的Power Domain 可能需要link 到不同的library 上去做优化,对于这种情况在create_delay_corner 时会将不同的power domain 关联到不同的library_set 上,如:create_delay_corner -name LVBABA -timing_condition { lib_set_1 PD1@lib_set_2 PD2@lib_set_3 }; 在init_design 的这一步工具会将对应的library 跟power domain 绑定好。
  • Power Domain Object Processing, 将library 跟对应的power domain 绑定好之后,工具会去解析对应的low power rules 以确定需要用到的low Power cells 如:State retention, iso cells, level shifters.
  • Loading of Libraries, 读入所有active analysis view 所需要的库文件。
  • Timing Constraint Loading, 读入SDC 文件。

数据质量检查


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 会报如下内容:
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陌上风骑驴看IC 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档