在芯片物理设计中,最常见的一类组合逻辑单元莫过于缓冲器Buffer和反相器Inverter了。这一类单元在时序路径Timing Path、数据路径Data Path上有大量应用。本篇文章主要就缓冲器Buffer的基本结构和主要应用进行相关的讨论。
Buffer结构
buffer由偶数个反相器Inverter级联形成,因此其输出与输入相同。
A | Y |
---|---|
0 | 0 |
1 | 1 |
Buffer应用
buffer常见应用主要有以下两种:
- 增强驱动;
增强单元的驱动能力,即增强单元的带负载能力。
单元的负载常建模为Cload,负载过大例如fanout过多等,造成Cload过大,相同的输出电流下,Cload充电速度变慢,从而导致驱动单元的输出沿和负载单元的输入沿陡峭程度降低,即信号转换时间transition变大;
在数据路径中,若触发器reg之间的导线过长,导线本身作为负载,其电容电阻过大会导致data path delay过大;通过在reg 间插入多个buffer,打断长线,可以减小reg的负载电容,从而避免其transition过大的问题。在插入buffer的单元延时总和小于优化的信号转换时间时,对时序也完成了优化; - 优化时序;
芯片中的时钟信号常由驱动能力较强的buffer形成的时钟树clock tree,逐级驱动至芯片各角落的sink reg处。
时序要求主要有建立时间setup time和保持时间hold time两种。其中在setup时序优化中:若data path delay + tsu 大于clock path delay时,可以通过在clock path上插入clk buffer来满足setup要求,即对capture时钟进行delay;其中在hold时序优化中:若data path delay - hold 小于clock path delay时,可以通过在data path上插入buffer来满足hold要求;
小结
作为在物理设计中最常见的逻辑单元,buffer还有很多值得挖掘的点,这会在以后的文章中进行进一步的补充。