DRC设计规则设置介绍-Design Compiler(四)

文章目录

        • 4.1 设计规则相关命令设置
          • 4.1.1 set_load(输出驱动强度)
          • 4.1.2 set_input_transition(输入驱动强度)
        • 参考文档

系列学习介绍DC相关知识,包括ASIC基本单元相关,DC指令工艺库脚本相关,后端综合实现相关等总结。本节包括Design 设计规则相关约束,内容有一些个人理解和各地方论坛总结学习,有不同认识欢迎探讨,fighting。

DRC: Design Rule Constraint/Check

4.1 设计规则相关命令设置
4.1.1 set_load(输出驱动强度)

set_load :set_load 是指output端口的负载,设置的值会影响输出到端口的net上的电容,从而影响相应的路径延时。主要是针对output port来的,如果是固定pad ,就是模拟个pcb上的电容,供STA使用。

set_output_delay是设定外面电路的delay,从而约束内部reg-to-out的path的delay的,set_load是约束最后一级输出能力的, 也就是约束最后一级要支撑这个load , 增加驱动能力,

set_load [expr {30.0/1000}] [get_ports B]
4.1.2 set_input_transition(输入驱动强度)

DRC设计规则设置介绍-Design Compiler(四)_第1张图片

一个Cell的延迟与两个内容有关,一个是Input Transition,另一个是Output Load。对于整个设计的输入端口(Input Port)而言,要想让逻辑综合工具(如DC)、布局布线工具(如ICC)、STA工具(如PT)精确计算输入端口后边驱动的单元的延迟,必须让工具知道输入端口的Transition时间。Transition时间越短(即越快Fast),Cell的延迟越小(从A端口到FF2的D端口延迟越小);反之,Transition越慢,从A端口到FF2的D端口的电路的延迟越大。因此需要为设计的输入端口定义驱动能力。

定义输入端口驱动能力的三种方法

  1. set_driving_cell命令用法

通过set_driving_cell命令来设置某个输入端口前面是什么驱动单元驱动它的,EDA工具会从指定的库中查找得出更加真实的Transition时间来代替零Transition。

set_driving_cell -lib_cell DFF1 -pin Q -no_design_rule [get_ports A]

应用于block level

  1. set_drive命令用法

set_drive命令通过为输入端口指定电阻值的方法来为其定义外部驱动强度。在逻辑综合工具进行优化期间,工具根据设置的驱动强度来计算由该输入端口驱动的逻辑电路的延迟。对于芯片级的设计(即顶层设计)而言,它的输入端口的驱动能力很难用工艺库中的某个具体单元去量化,因此一般在顶层通过set_drive命令定义输人电阻的大小,由于在顶层,要驱动的是负载较大的IO单元,故需要的驱动能力较强,典型的值是0.05,单位取工艺库中电阻的单位,一般为kΩ;

set_drive 2.0 {A B C}
set_drive 12.3 [all_inputs]
set_drive 0 {clk, reset}

多应用于chip level

  1. set_input_transition命令用法

用set_input_transition命令为输入端口指定一个固定的transition时间,工具会用该transition时间来计算它驱动的逻辑电路的延迟。对于顶层设计(Chip level的设计)而言,除了用set_drive命令之外,也可以使用set_input_transition命令来为其设置固定的transition时间,因为芯片外边一般存在驱动能力比较强的器件和大电容。在这种情况下,transition时间相对独立于当前设计中的电容。

set_input_transition 0.12 [get_ports A]

多应用于chip level

如果多种指定方式发生冲突,那么在工具中,最近使用的命令会覆盖先前的命令。

参考文档

【1】数字IC设计之综合工具Synopsys DC(3)

【2】[讨论]设置了output delay,再设置set_load还有很大意义吗?

【3】virtual clock作用是约束input delay和output delay,那么跟set_drive和set_load有何区别?

【4】[求助]set_load set_max_transtion 等设置

【5】!干货! 为设计指定输入驱动强度 set_driving_cell set_drive set_input_transition

你可能感兴趣的:(ASIC后端综合与实现,DRC,design,compile,输入驱动强度,输出驱动强度,设计规则)