DC合成(1)的简单总结
* * * * * * * * * * * * * *设置_ DONT _触摸和设置_ DONT _触摸_网络* * * * * * * * * * * *
?
在合成的过程中,为了防止DC工具自动优化一些我们不希望他们优化的模块(比如CLK),我们通常会设置set_ideal_network和set _ don _ touch。我理解前者忽略了timing_report时的延迟,后者防止DC插入缓冲区。
那么,dont_touch的属性可以通过逻辑吗?
set_dont_touch和set_dont_touch_network有什么区别?为什么一般认为set_dont_touch_network会导致未知问题,不推荐使用?
对于ideal_net的这个属性,是否意味着直接忽略延迟,忽略DRC?如果clk设置为ideal_net,是不是就没必要设置dont_touch了?
我说的有点混乱。请给我技术支持。我很感激!!
=
Set _ don _ touch不通过逻辑,可用于单元、网络、参照和设计。你可以在任何你不想让DC碰它的地方使用它。
Set _ don _ touch _ network可以通过逻辑,可以用于时钟,引脚,或者端口,小于上述范围。当你对设计不是很熟悉的时候,这种属性可能会蔓延到你不想要的地方。
理想_网,顾名思义,就是把这个网完全理想化——无限的驱动能力,没有延迟。有时它与上面的命令一起使用。当你知道它们的意思时,如何使用它们取决于你的目的和你得到的结果。
?
对于Ideal_net属性,在设置时有一个no_propagate属性。有必要给网设置这个防止其穿越逻辑吗?所以如果我设置了一个pin,不加no_propagate,可以跨越逻辑吗?
在创建clock的时候,我看到它会自动设置为ideal_net,但是它还是会计算延迟。是因为时钟路径有逻辑原因吗?
=
集合_理想_网络=集合_理想_网络-不传播
如果用时钟网作为数据,会有延迟,因为挂在网上的clk管脚的负载不是理想网本身。
?
我一般理解,创建clk的时候,默认会是理想网,但是当clk连接到数据通路的时候,D端会考虑我的clk上的负载,但是不会影响clk的理想网的性质。
如果我的clk需要一个门来做门控,门控后的时钟也有很大的扇出,那么为了忽略延迟,我需要为门控后的clk重新定义理想网吗?因为理想网无法跨越逻辑。
=
如果你的CG集成了一个好的标准单位,它会自动继承ideal的属性。
* * * * * * * * * * * * * *设置_ DONT _触摸和设置_ DONT _触摸_网络* * * * * * * * * * * *
?
?
定时装置的输入端口到数据端口。
所需时间= T2+t latency-t确定性_ setup-t设置。
到达时间= t 1+t延迟+t输入_延迟+t逻辑2。
时序设备的输出引脚到输出端口
上图中:
所需时间= T2+t latency-toutput _ delay-tun肯定性_ setup。
到达时间= t 1+t latency+t cell+tlogic 5。
计时装置到计时装置
在小路上?细胞?延迟什么?输入_转换?然后呢。Output_load(包括fanout?pin?开?负载)的决定,这可以通过检查仪表读数来获得。
然后呢。网?延迟是什么?网?开?r,?c?决定了。布线前不知道实际布局?r,?c?多少钱?dc?根据互联模型(set_wire_load_model)?r,?丙.然后根据你得到的信息。r,?c?算算?网?Delay on: Net_delay=R*C*OC系数在哪里?OC?是否根据运行环境设置(set_opearting_conditions)?Rc树模型。
通用工艺库有三种运行环境,分别是最差、典型和最佳,分别是最差、典型和最差。
T=4,周期为4,Tdata为2,两个clk同时到达,slack=4-2=2,
设置检查意味着latch和lauch相隔一个时钟周期,而hold检查在同一时钟沿。
input_transition输入信号的转换时间可以采用两个约束:
1直接设置转换时间。
设置输入转换0.1[获取端口A]
2通过设置输入驱动能力,驱动能力越大,转换时间越短,驱动能力越小,转换时间越长。
Set_drive或set_driving_cell。
压摆率与转换时间的关系
首先我想解释一下,slew和transition其实不是独立的词。在许多教科书中,一般会出现两个短语,即压摆率和转换时间。
压摆率,信号变化的速率。
过渡时间,信号变化的持续时间。
在静态时序分析(STA)中,上升或下降波形通常由压摆率表示。转换时间用于记录该信号在两个电平之间的转换时间。
需要注意的是,转换时间实际上是压摆率的倒数。转换时间越长,压摆率越低,反之亦然。
上图显示了一些CMOS器件的输出波形。理想情况下,我们期望得到一个完美的方波,但这显然不够现实。实际上,由于电容的充放电,一个数字信号的波形往往有一个上升和下降的电压缓冲区间。
为了给这样的波形提供能量,我们近似使用线性上升或下降信号来模拟真实信号波形。需要注意的是,在真实的信号波形中,无论是上升还是下降,都会有一段时间的线性区域。
这个线性区域的起点和终点可能因为一些估计模型而不同。在STA中,我们有时会采用宽松的约束模式,比如20%/80%,10%/90%。
当然,我们也可以采用更激进的模式,比如30%/70%。
在线性时间序列模型中,通过时间序列单元的信号可能产生两个新的信号波形。
当输出信号的压摆率快于输入信号的压摆率时,即跃迁时间缩短,说明这个单元对这个信号起到了增强驱动的作用。
反之,当输出信号的压摆率比输入信号的压摆率慢时,跃迁时间变长,说明这个单元起到了削弱这个信号驱动的作用。可能的原因是该机组的输出带动了较大的负载。
因此,当我们要描述一个信号电平的变化时,记得用压摆率来表示速度,用跃迁时间来描述持续时间。
对于cell的延迟,根据input_transition和out_load对应的查找表计算dc。
对于网络的延迟,根据fanout_length和wire_load_model中的电阻、电容、面积的查找表来计算dc。
负载其实有两个概念,一个是阻性负载,当你提供足够的驱动力时才能正确输出,否则电压会错;另一种是容性负载,一般在系统中,与系统能运行的速度有关。
驱动力大的输出可以承载更大的负载。从这个意义上来说,认为驾驶=载重是可以理解的。但其实两个概念还是有一些区别的,侧重点不同。你上面也引用了“电路的负载容量是下一级负载(即电容)之和”,这是两个完全不同的维度,怎么可能相同呢?在系统设计中,假设你需要以10MHz的频率运行,你需要10mA的驱动力,那么在同样的容性负载上,你需要20mA的驱动力才能以20MHz的频率运行。
原文链接:blogs.com/lantingyu/p/10782978.html