时序路径:时序路径的组成与四种基本类型
好,咱们今天聊聊时序路径。这玩意儿,说白了就是STA分析的基本单元。你想想看,整个芯片里成千上万的寄存器,它们之间怎么传递数据?就是靠这些路径。
我记得刚入行那会儿,带我的老工程师跟我说:“小子,搞懂路径,STA你就学会了一半。”当时我不信,后来踩了不少坑才明白——这话一点不假。
时序路径的三大要素
一条完整的时序路径,由三部分组成:
- 起点(Startpoint):数据从哪里出发
- 组合逻辑(Combinational Logic):数据经过的中间电路
- 终点(Endpoint):数据最终到达哪里
嗯,就这么简单。但实际项目中,这三个要素的细节可不少。
起点
起点通常是时序单元的时钟引脚。具体来说:
- 触发器的时钟引脚(CK pin)
- 输入端口(Input Port)
我个人习惯把输入端口也当作起点。为什么?因为数据从芯片外部进来,它没有前一级的时序信息,STA工具只能从输入端口开始算。
终点
终点是数据被捕获的地方:
- 触发器的数据输入引脚(D pin)
- 输出端口(Output Port)
这里有个坑——我曾经以为只有寄存器D端才算终点。后来发现,输出端口也是终点,因为外部电路要用你的数据,你得保证它按时到达。
组合逻辑
起点和终点之间,就是组合逻辑。包括:
- 与门、或门、非门等基本门电路
- 多路选择器(MUX)
- 加法器、比较器等运算单元
- 各种连线(Net)
说白了,就是一堆逻辑门串在一起。路径越长,延迟越大,时序越紧张。
核心要点:一条路径 = 起点 + 组合逻辑 + 终点。缺一不可。
四种基本路径类型
STA把路径分成四类。这四种类型,覆盖了芯片里所有的时序检查场景。
| 类型 | 起点 | 终点 | 典型场景 |
|---|---|---|---|
| 输入到寄存器 | 输入端口 | 寄存器D端 | 片外数据进入芯片 |
| 寄存器到寄存器 | 寄存器CK端 | 寄存器D端 | 内部流水线 |
| 寄存器到输出 | 寄存器CK端 | 输出端口 | 数据送出芯片 |
| 输入到输出 | 输入端口 | 输出端口 | 纯组合路径 |
1. 输入到寄存器路径
这种路径从输入端口开始,经过组合逻辑,到达寄存器的D端。
你想想看,外部信号什么时候到达?不确定。所以我们需要约束输入延迟(input delay),告诉工具:信号大概在时钟沿之后多久才稳定。
我在项目中遇到过一个问题——输入延迟设得太乐观,结果芯片回来后,外部数据总是采错。后来把input delay放宽了0.5ns,问题就解决了。
2. 寄存器到寄存器路径
这是最常见的路径。一个寄存器的Q端输出,经过组合逻辑,送到下一个寄存器的D端。
STA工具会检查:
- 建立时间(setup):数据必须在下一个时钟沿之前到达
- 保持时间(hold):数据必须在时钟沿之后保持稳定
说白了,就是看数据能不能在时钟周期内跑完这段路。
小技巧:如果setup违例,可以插流水线(加寄存器)。如果hold违例,可以加buffer延迟。但别乱加——我曾经为了修hold,加了太多buffer,结果setup反而更差了。
3. 寄存器到输出路径
从寄存器的CK端开始,经过组合逻辑,到达输出端口。
这种路径需要约束输出延迟(output delay)。外部电路需要多少时间才能采到你的数据?这个时间就是output delay。
嗯,这里要注意:output delay是相对于时钟沿的。如果设得太小,外部电路可能来不及采数据。
4. 输入到输出路径
这种路径没有寄存器,直接从输入端口到输出端口。纯组合逻辑。
说实话,这种路径在同步设计中不太常见。但有些特殊场景会用到,比如异步复位信号、一些控制信号。
我曾经在一个项目中,把复位信号设计成了输入到输出路径。结果STA报了一堆违例——因为复位信号没有时钟约束。后来加了虚拟时钟(virtual clock)才搞定。
警告:输入到输出路径没有时钟沿约束,STA工具默认不做检查。你必须手动添加set_max_delay或set_input_delay/set_output_delay约束。否则,这条路径就是“裸奔”状态。
路径分析的底层逻辑
你可能会问:为什么STA要分这四种路径?
原因很简单——每种路径的约束方式不同。
- 寄存器到寄存器:靠时钟周期约束
- 输入到寄存器:靠input delay + 时钟周期
- 寄存器到输出:靠output delay + 时钟周期
- 输入到输出:靠set_max_delay或input/output delay组合
说白了,STA工具就是沿着这些路径,一条一条地算延迟,然后跟约束做比较。超了就报违例,没超就通过。
我个人习惯,在写约束之前,先画一张路径图。把所有的起点、终点、组合逻辑标出来。这样写约束的时候,心里有数,不容易漏。
嗯,今天就聊到这儿。下一章咱们聊聊时钟约束——这可是STA的“灵魂”。