天天看点

010 静态时序分析

抖动(Jitter)

010 静态时序分析

偏斜(Skew)

010 静态时序分析
{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'
]}
           
010 静态时序分析

扇出

扇出:单个逻辑门能够驱动的数字信号数量。一个典型的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'
]}
           
010 静态时序分析
  • 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 + Tcomb
  • Clock Arrival Time:时钟到达下一个触发器的时间,h + Tclk2
  • setup slack:建立时间裕量,数据要比有效沿早到Tsu,等有效沿到了,还要维持Thold,这样系统才是稳定的
  • setup slack = Clock Arrival Time - Data Arrival Time
  • setup 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

继续阅读