1. 时钟为什么建模?
背景:
默认情况下,即使一个时钟要驱动很多寄存器,DC也不会在时钟连线上加clock buffer。Clock buffer 或时钟树,一般由后端工具完成。为了准确的描述时钟树,使综合结果与版图的结果匹配,需要为时钟树建模。
Set_clock_uncertainty、set_clock_latency 、set_clock_transtion
理想的时钟网络latency、skew、transition默认是零。时钟网络还是理想的,但是原来的零值,由这些命令中指定的值替代。
Set_clock_uncertainty ——模拟skew和jitte之和
set_clock_latency —— 模拟 时钟源延迟或连线延迟
set_clock_transtion —— 模式转换时间
2 说明两点
Set_clock_uncertainty —setup 0.5 给时钟赋予建立时间
Set_clock_transition —setup 给时钟赋予上升转换时间。
两个都有setup选项,但是不是一回事。
set_clock_latency –source :时钟源延迟,指时钟信号从其实际时钟原地到设计中时钟定义点的传输时间(P94会体会到)。
set_clock_latency : 时钟信号从其定义的点到寄存器时钟引脚的传输时间。
(1) Set_input_delay,和set_output_delay
是通过设置外部电路的延迟,来用时钟周期相减,计算留给内部要综合电路的做大延迟。
注意:1)设置的数值是外部的数值,
2)最大延迟是,内部要综合电路的最大延迟
3)只作用于同步电路,内部和外部时钟一致,而不适用于异步打拍的电路。
(2) 建立时间预算
背景:如果不知道外部输入延迟和外部输出的建立要求,则需要通过建立时间预算time budget,为输入/输出口设置约束。
一般假设:输入和输出的内部电路仅仅用了时钟的40%(即ts=tt=40%),还有20%富裕量包括tclkq+tsetp。
注:
1)因此需知道,通过time budget如何设置值?
设置值为60%Tperiod,也就是留给内部的Tn+Tsetup 只有40%。
2)如果模块划分,以寄存器输出进行划分,时间预算将变得简单。
但是实际中很少完全这样划分。
Set_input_delay –max clktoq