抖动(Jitter)
偏斜(Skew)
{signal:
[
{name:
't1', wave:
'1.0..1..0..1..0', period: 1, node:
'.....a'},
{name:
't2', wave:
'10101', period: 3, node:
'..b'}
], edge:
[
'a~b skew'
]}
扇出
扇出:单个逻辑门能够驱动的数字信号数量。一个典型的TTL逻辑门有10个扇出信号 扇入:单个逻辑门被驱动的数字信号数量,扇入越大,表示该模块被更多的上级模块共享
静态时序分析
{signal:
[
{name:
'clk', wave:
'01..0..1..0', period: 1, node:
'.a.....h'},
{name:
'clk_reg1', wave:
'0.1..0..1..0', period: 1, node:
'..b'},
{name:
'data', wave:
'2..3.....4..', period: 1, node:
'...c', data:
['d1',
'd2',
'd3']},
{name:
'comb', wave:
'2...3.....4..', period: 1, node:
'....d.....g', data:
['d1',
'd2',
'd3']},
{name:
'clk_reg2', wave:
'0.1..0..1..0', period: 1, node:
'......e.f'},
], edge:
[
'a~b Tclk1',
'b~c Tco',
'c~d Tcomb',
'd~e setup stack',
'e<-|->f Tsu',
'f~g Th',
'h~f Tclk2'
]}
a:launch edge,静态时序分析的起点,第一个寄存器的有效沿f:latch edge,静态时序分析的终点,数据锁存的有效沿Tclk1,Tclk2:时钟到达两级触发器的偏斜(skew)Tco:Clock-to-Output Delay,有效沿开始后到数据从触发器输入到输出的时间Tcomb:组合逻辑时延Tsu、Tsetup:建立时间,触发器有效沿到来之前,数据需要保持稳定的最小时间Th、Thold:保持时间:触发器有效沿到来之后,数据需要保持稳定的最小时间Data Arrival Time:数据到达下一个触发器的时间,a + Tclk1 + Tco + TcombClock Arrival Time:时钟到达下一个触发器的时间,h + Tclk2setup slack:建立时间裕量,数据要比有效沿早到Tsu,等有效沿到了,还要维持Thold,这样系统才是稳定的setup slack = Clock Arrival Time - Data Arrival Timesetup slack = (T + Tclk2)-(Tclk1 + Tco + Tcomb - Tsu)>= 0,其中T是时钟周期
最高频率
(T + Tclk2)-(Tclk1 + Tco + Tcomb - Tsu)>= 0(1),数据要提前时钟有效沿Tsu到达Tco + Tcomb <= Th(2),数据在有效沿来临后,从触发器输入端D传到输出端Q,要经历Tco(b->c),这段时间输入数据不能变,经历Tcomb(c->d),输入端D的数据也不能变,因为组合逻辑电平敏感,传过了组合逻辑才可以变化,所以(Tco + Tcomb)要小于保持时间频率越高,T越小,(Tco + Tcomb)要变小才能满足(1),(Tco + Tcomb)太小,不能满足(2),这个存疑,不过大多数时候是建立时间违背,也就是Tcomb太复杂,建立时间不够
建立时间违背时的解决方案
降低频率,提高T调整布局布线修改组合逻辑,降低复杂度,插入流水线等重新设计时钟树改变工艺,减少器件或通路延时
https://wavedrom.com/editor.html https://blog.csdn.net/fzhykx/article/details/80172034