专栏首页陌上风骑驴看IC跟老驴一起学PR | init_design

跟老驴一起学PR | init_design

设好了《跟老驴一起学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 会报如下内容:

本文分享自微信公众号 - 陌上风骑驴看IC(MoShangFengQiLv),作者:陌上风骑驴

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 跟老驴一起学PR | 数据的输入

    前文《跟老驴一起学PR | Innovus 输入》阐述了 Innovus 所需要的输入数据有哪些,今天来学习如何将这些数据读入Innovus. 以前熟悉的工具,...

    老秃胖驴
  • SDC | set_data_check

    应@Fly 天 同学的要求,码一遍set_data_check, 关于SDC 有好几个兄弟号都写了很多,可以到『IC 技术圈』中找对应文章去看。

    老秃胖驴
  • 综合 | SDC 的读入与检查

    继续综合这一趴,顺着流程往下,今天码SDC 的读入与检查,前序回顾《综合 | 概述及 library 检查》《综合 | LEF, QRC, DEF》《综合 | ...

    老秃胖驴
  • 一个程序员重写一个旧系统的故事(二)

    最近又干了件吃力不讨好的事情,把公司一套旧系统的后台给重写了。有同学心里可能在嘀咕了,又重写系统,你怎么就这么仇视别的同事的工作成果,拿着公司给你的报酬,却做着...

    用户1608022
  • Kubernetes架构学习笔记

    Kubernetes是Google开源的容器集群管理系统,其提供应用部署、维护、 扩展机制等功能,利用Kubernetes能方便地管理跨机器运行容器化的应用,是...

    kubernetes中文社区
  • 各种IE(IE6-IE10)兼容问题一行代码搞定

    沈唁
  • SpringBoot系列教程之事务传递属性

    对于mysql而言,关于事务的主要知识点可能几种在隔离级别上;在Spring体系中,使用事务的时候,还有一个知识点事务的传递属性同样重要,本文将主要介绍7中传递...

    一灰灰blog
  • 【观点】用数据分析的方法来研究历史

    ▌量化历史 之前对历史的探究要么过于意识形态化,要么又过于侧重朝代史、政治史,就如电视古装戏几乎走不出宫廷斗争的话题;还有就是过于定性,停留在史料整理和描述性层...

    小莹莹
  • 面试总结

    周五去了一趟深圳某互联网金融面试,很遗憾吧,没过,听到没过的时候心都碎了,毕竟还是很想去这家公司的,之后还不要脸的问了“能不能再聊聊”,下楼之后,被二面的经理叫...

    Zephery
  • 看完这波3-5年Java程序员常问的高并发/缓存/高可用问题,甚是感叹

    总结下最近被问到最多的几类问题,发现在解决这些问题的时候收获还是非常大。往往提出一个好问题其实是最难的,但是大部分做技术的人都不敢问或不好意思问甚至担心会被别人...

    用户5546570

扫码关注云+社区

领取腾讯云代金券