Innovus——数据准备和验证

序言

后端设计的流程之前的博文——大规模数字设计的特点已经有过介绍。后端工作的目标就是实现一个不违反逻辑、物理和设计规则,满足或者超出时序要求的设计。因为后端直接面向流片,所以在确认时序满足前必须考虑所有的物理效应,比如金属填充】、金属耦合之类的。
时序收敛涉及一个完整的流程,包括布局、时序优化、时钟树综合(CTS)、布线和信号完整性(SI)检查。本篇先介绍开始设计前的数据准备工作。数据准备和验证的目标包括:

  • 确认 innovus 拥有完整且一致的设计数据集(所有库视图和版本一致);
  • 确保流程中用到的工具一致地解释时间约束;
  • 确保正确定义了逻辑上等效的单元;
  • 将原型和签核提取工具之间的寄生关联起来。

数据准备

时序库(Timing Library)

设计中用到的单元都必须在库中定义,如果需要分析多种延时工艺角(corner),每个单元都要在每种corner 下提取时序功耗特征。Innovus 支持 NLDM, ECSM, CCS 三种库格式,65nm 之后最好用 ECSM 或 CCS, 模型更精确,没有 NLDM 那么悲观,悲观度可减少5%~10%,这部分可参考之前的博文——数字电路时序分析基础

物理库(Physical Library)

每个单元必须在 LEF 或者 OpenAccess 格式文件中有抽象的版图定义。LEF 文件中可以定义一些非默认的布线规则,并且有一组优化过的通孔(via)用于布线,LEF 文件可参考之前的博文——LEF文件介绍及其生成。在读入 LEF 时,要先读入 Technology LEF 再读入其他 LEF,或者确保 LEF 里包含了 technology 部分。

网表(Verilog Netlist)

Innovus 要求输入的网表(.v 文件) unique,如果 netlist 没有做 uniquify 在读 netlist 之前可以将变量 “init_design_uniquify” 设成1,工具会在解析 netlist 时候自动做 uniquify。对于 master/clone partitioning 需要特别处理。有些客户基于特别需求要求输入的 netlist 不能有 assign 语句,可以在综合工具中将assign 删掉,如果 netlist 有 assign 没有被删掉,可以在 innovus 中用命令 remove_assigns 将其删掉,默认该命令会把 assign换成一条 net,但是有些 assign 直连了两个port,如果不加 buffer无法将其删掉,对于这种情况建议用 “remove_assigns -buffering” 将其替换成 buffer。其实在 Innouvs 优化过程中也会引入新的 assign, 如果不让 innovus 加入新的 assign 可以加变量:set init_remove_assigns 1

时序约束(Timing Constraints)

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.

RC 提取(Extraction)

innovus 使用 Quantus technology file 进行 RC 提取,用于65nm及以下的布线后寄生提取和32nm及以下的布线前后寄生提取。对于65nm之前的工艺基于 capacitance table(Captable) file 使用 innovus 自带提取器即可,但是 TQuantus、IQuantus 和签核 Quantus QRC 需要 Quantus tech file.

信号完整性分析库(SI library)

在 innovus 优化过程中需要对 SI 引起的 delay 跟 glitch 进行分析跟优化,这就需要读入 Noise Models,如 ECSMN 和 CCSN library,或者读入 cdB library.

时序分析MMMC设置

MMMC(Multi-Mode Multi-Corner)设置用于不同工作条件下的优化分析,定义了视图(view)用于建立和保持时间的分析,每个视图由不同的 operating mode 和 delay corner 定义,operating mode 是一系列 SDC 约束,delay corner 由 library set、operating conditions 和 RC corner 组成。

导入设计

数据验证

打开 innovus 后点击 File -> Import Design,填写各栏信息或者直接载入已经准备好的 global variables file(.globals文件)来导入库、网表和时序分析设置(对应命令:source XXX.globals),innovus 会运行 init_design 命令来检查数据并提示错误,点击 Tools -> Log Viewer 可以高亮查看 error 和 warning 信息。
导入设计后可以运行 check_design -all 命令检查库或设计数据是否有缺失或不一致,检查结果会保存到一个 text 文件中。
除了对设计的合理性进行检查之外,同样需要:

  1. 对 sdc 时序约束的一致性以及完整性进行检查,检查 sdc 约束是否有冲突以及缺失;输入命令check_timing
  2. 对 Design 在理想状态下(采用零互连延迟模型)的 Timing 做一个检查,一方面可以查看设计是否有可能完成时序收敛,另外也对 sdc 里面时序约束的情况做一个大致的了解。菜单栏中依次选择 Timing -> Report Timing 弹出 “Timing Analysis” 对话框,在 “Design Stage” 一栏选择 “Pre-Place”。

globals 脚本

一个 globals 脚本实例如下:

set defHierChar {
   /}
set locv_inter_clock_use_worst_derate false
set init_io_file {
   xxxx.io}
  • 10
    点赞
  • 136
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值