SDC命令详解:使用set_drive命令进行约束

本文详细介绍了如何在静态时序分析中使用set_drive命令设置输入端口的驱动电阻,以及电阻值对驱动能力和输入延迟的影响。还涵盖了指定上升沿、下降沿以及最大最小条件的用法。尽管set_drive命令已过时,但仍作为知识点讲解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相关阅读

SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm=1001.2014.3001.5482


目录

        指定电阻值

        指定端口列表

        简单使用

        指定上升、下降沿

        指定最大最小、条件

        写在最后


        本章将讨论使用set_drive命令,它用于对输入端口的驱动能力建模(设置了端口对象的rise_drive、fall_drive、min_rise_drive、min_fall_drive属性)。首先需要说明的是,默认情况下,DC在STA时默认输入端口的转换时间是0,这对于大多数情况来说过于理想。如果想要移除驱动,使用remove_attribute命令。

        set_drive命令设置了驱动端口的上拉/下拉电阻,因此电阻值越大,意味着驱动能力越弱;电阻值越小,意味着驱动能力越强。

        本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。set_drive命令的BNF范式(有关BNF范式,可以参考以往文章)为:

set_drive 
    resistance port_list
    [-rise] [-fall] [-min] [-max]
    //注:该命令的port_list参数一定要放在resistance参数后           

指定电阻值

        resistance是一个非负的电阻值,代表了驱动输入端口的单元的输出电阻,它的单位要与工艺库中指定的电阻单位一致。

指定端口列表

        指定一个端口列表,包含输入端口或输入输出双向端口,如果有多于一个端口,需要使用引号或大括号包围。

简单使用

        以图1所示的电路图为例,首先在输入端口clk上定义一个时钟。

create_clock -period 10 [get_ports clk]

 图1 一个简单的例子

        接着在输入端口d、c上分别定义两个输入延迟,参考时钟为clk。

set_input_delay 0.5 -clock clk [get_ports d]
set_input_delay 0.5 -clock clk [get_ports c]

        下面的set_drive命令在输入端口d上设置了驱动电阻。

set_drive 1 [get_ports d]

        最后使用report_timing命令分别报告输入端口d、c到触发器的时序路径,记得使用-transition_time选项,结果如图2、图3所示。

图2 输入端口d的建立时间时序报告

 图3 输入端口c的建立时间时序报告

        从对比图2、图3可以看到,设置了驱动电阻的输入端口d的输入转换时间不再是0,而是0.0010980,这实际上是电阻乘以输入端口电容(与输入端口连接的线网的总电容)的结果。可以使用report_net -significant_digits 7 [get_nets d]命令查看输入端口d的电容,如图4所示。

图4 输入端口电容报告

        同时我们可以发现,输入端口的驱动电阻同时带来了新的输入延迟(这个延迟虽然是外部延迟,但没有归为input external delay),延迟值同样是0.0010980,计算方法与上面的转换时间一致。注意,这个延迟并没有包括在input external delay中,而是标记在端口上。

指定上升、下降沿

        -rise选项用于指定驱动作用于端口的上升沿、-fall选项用于指定驱动作用于端口的下降沿。如果这两个选项都没有指定,驱动同时作用于时钟的上升沿和下降沿(相当于它们同时指定)。

        下面的命令指定了端口c的上升沿驱动电阻为1。

set_drive -rise 1 [get_ports c]

        可以使用report_port -drive命令报告端口的驱动设置情况,如图5所示。

图5 端口驱动报告

         从图中我们可以发现,上面的命令只设置了最大延迟的输入端口c的上升沿驱动电阻,并没有设置最小条件,这个原因在下一节会说明。

指定最大、最小条件

        -max选项用于指定驱动作用于最大延迟分析(一般情况下,如果不开启on_chip_variation,这指的是建立时间检查),-min选项用于指定驱动作用于最小延迟分析(一般情况下,如果不开启on_chip_variation,这指的是保持时间检查)。如果这两个选项都没有指定,驱动条件只为最大延迟设置但在最小延迟分析时如果没有指定对应的电阻值则会使用最大延迟的电阻值,这点和以前的很多命令不一样,需要特别注意。

        下面的命令设置最小条件的输入端口c的上升沿驱动电阻为1,如图6所示。

set_drive -rise -min 1 [get_ports c]

图6 端口驱动报告

写在最后

        这个命令已经逐渐过时,不推荐使用,建议使用set_driving_cell命令或set_input_transition命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日晨难再

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值