1. 建立时间和保持时间:数字电路设计的生命线
我刚接触数字电路设计时,经常遇到一个奇怪的现象:代码仿真完全正确,但烧录到FPGA后却出现随机错误。后来才发现,这往往是建立时间和保持时间违规导致的亚稳态问题。建立时间(Setup Time)和保持时间(Hold Time)是数字电路设计中最为基础却又至关重要的时序概念,直接关系到整个系统的稳定性和可靠性。
简单来说,建立时间就是在时钟有效沿(上升沿或下降沿)到来之前,数据信号必须保持稳定的最小时间。好比开会时,你需要在会议开始前几分钟到场做好准备,否则就会错过重要内容。保持时间则是在时钟有效沿到来之后,数据信号还需要保持稳定的最小时间,就像会议结束后还需要几分钟整理笔记,过早离场可能会导致信息记录不完整。
在实际的Verilog设计中,虽然我们无法直接编码这些时序参数,但必须深刻理解其原理,否则就像开车不懂交通规则,迟早会出事故。接下来我将通过实际案例,带你深入理解这两个概念的本质和实战应用。
2. 建立时间与保持时间的深层原理
2.1 从D触发器内部结构理解时序要求
要真正理解建立时间和保持时间,我们需要深入到D触发器的内部结构。一个典型的上升沿D触发器由6个与非门组成,其中G1-G4构成维持阻塞电路,G5-G6组成RS触发器。
当时钟为低电平时,G2和G3门被关闭,触发器保持当前状态。当时钟从低变高时,G2和G3门打开,数据开始传输。但数据在到达G2/G3之前需要经过G4/G1门,这个路径的延迟就是建立时间的来源——时钟到来前,数据必须提前准备好,以补偿这些门延迟。
同样,数据被采样后需要传输到RS触发器进行锁存,这个过程中经过G2/G3门产生的延迟就是保持时间的来源——时钟到来后,数据还需要保持稳定一段时间,确保正确锁存。
2.2 时序公式的详细解读
建立时间约束的公式为:Tclk ≥ Tcq + Tcomb + Tsu - Tskew
- Tclk:时钟周期,决定了系统的工作速度
- Tcq:寄存器时钟端到Q端的延迟,即触发器的响应时间
- Tcomb:组合逻辑延迟,数据在逻辑门之间的传输时间
- Tsu:建立时间,器件固有的时序要求
- Tskew:时钟偏移,同一时钟到达不同触发器的时间差异
保持时间约束的公式为:Tcq + Tcomb ≥ Thd + Tskew
- Thd:保持时间,器件固有的时序要求
这两个公式看似简单,却包含了数字时序设计的全部精髓。建立时间约束决定了系统能跑多快,而保持时间约束确保了数据不会丢失。
3. 静态时序分析与时序约束编写
3.1 使用PrimeTime进行STA分析
静态时序分析(STA)是验证时序收敛的核心手段。与动态仿真不同,STA不需要测试向量,而是直接分析所有时序路径的最坏情况。我在项目中最常用的是Synopsys的PrimeTime工具,其基本流程如下:
首先读入设计网表和库文件:
read_verilog design.v
read_db technology.lib
然后创建时钟和约束:
create_clock -period 10 -name clk [get_ports clk]
set_clock_uncertainty 0.5 [get_clocks clk]
最后进行时序分析并生成报告:
report_timi


2021

被折叠的 条评论
为什么被折叠?



