罗风 · 2021年07月06日

跟老驴一起学PR | Innovus 输入

基于两个事实——工作需求,码文需求 —— 从今儿开始,老驴要系统地学习一下PR,从innovus 的user guide 开始,同时会找个不大不小的设计实操,会将学习笔记发到驴号,这部分内容太过初级,适合于小朋友跟老驴这种从头开始学习的老不懂。

111.jpg

上图是Innovus foundation flow user guide 中的流程图,涵盖了整个PR 过程,今儿从PR 对输入的要求开始,PR 对输入数据的要求跟综合大同小异,关键的部分有:

  • Timing libraries: Innovus 支持NLDM, ECSM, CCS 三种库格式,65nm 之后最好用ECSM 或CCS, 模型更精确,没有NLDM 那么悲观,悲观度可减少5%~10%;通常PR 都要Multi mode Multi corner 同时优化,要保证不同view 之间库的一致性;
  • Physical libraries: Innovus 支持LEF 跟OA <OpenAccess> 两种物理信息描述格式,到目前为止,老驴只用过LEF 还未接触过OA, PR 工具对物理库的要求要比综合工具更严苛,在Genus 中如果某个逻辑库单元没有对应的物理库单元,工具会自动将对应的逻辑库单元设为dont use, 而在Innovus 中如果缺了某个物理库单元工具会报错。同时要为Routing 定义 Non-Default Rules <NDRs>, NDR 可以在LEF 中定义也可以用Innovus 的命令add_ndr 在流程中定义。跟综合一样在读入LEF 时,要先读入technology lef 再读入其他LEF, 要跟library vendor 或foundry 确定拿到的LEF 是最新的,在Tech-lef 中要有routing 用到的所有VIA 的定义,如果没有,可以用innovus 的命令setGenerateViaMode 来产生。
  • netlist: Innovus 要求输入的netlist 是uniquified 的,如果netlist 没有做uniquify 在读netlist 之前可以将变量"init_design_uniquify" 设成1, 工具会在解析netlist 时候自动做uniquify. 对于master/clone partitioning 需要特别处理。有些客户基于特别需求要求输入的netlist 不能有assign 语句,可以在Genus 中用命令:remove_assign_without_optimization 加对应的option 将assign 删掉,如果netlist 有assign 没有被删掉,可以在innovus 中用命令remove_assigns 将其删掉,默认该命令会把assign 换成一条net, 但是有些assign 直连了两个port 如果不加buffer 无法将其删掉,对于这种情况建议用"remove_assigns -buffering" 将其替换成buffer; 其实在Innouvs 优化过程中也会引入新的assign, 如果不让innovus 加入新的assign 可以加变量:set init_remove_assigns 1.
  • 约束:包括SDC 跟用户对设计的约束,如果用的是综合写出来的SDC 且在综合时做了过约,在读入SDC 之前需要修改过约值,另外对于SDC 中的ideal network 跟dont touch network 也要修改,如在综合时可能没修某些DFT 或reset 信号,但在PR 时需要对这些信号做buffering 就需要将对应的ideal 或dont touch 属性去掉,如果在init_design 之后加额外约束需要先执行:set_interactive_constraint\_modes [all_constraint_modes -active] 再加对应的命令。除了SDC 命令之外,还有一些约束如dont use 跟dont touch, 这些命令不是SDC 的命令是针对design 中object 设的命令,加的时候不需要设interactive_constraint_modes.
  • Extraction: QRC 文件 <Quantus technology file> 用于RC 抽取,65nm 之前的工艺用Captable 文件即可,但是到了65nm 之后Captable 的精确度已经不够,所以强烈推荐用QRC 文件,在Innovus 的不同阶段会用不同的RC 抽取引擎来抽RC 如TQuantus, IQuantus 等。
  • Signal Intergrity Libs: 在innovus 优化过程中需要对SI 引起的delay 跟glitch 进行分析跟优化,这就需要读入Noise Models, 如ECSMN 和CCSN library, 或者读入cdB library.
  • ViewDefinition: 定义multi-Mode Multi-corner, 需要定义library_set, operation condition, timing condition, rc_corner, delay_corner, constraint_mode, analysis_view,  相互关系如下图所示:

222.jpg

Innovus 输入所需要的文件,跟输入端的设置可以总结为:

333.jpg

作者:陌上风骑驴
原文链接:https://mp.weixin.qq.com/s/lpfbg-1UtXuONnEsKstD\_g
微信公众号:
陌上风.jpg

相关文章推荐

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
20180
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息