1. 后仿真中的延时问题概述
在数字电路和系统设计中,后仿真是验证设计功能正确性的关键环节。所谓"后仿真",是指在完成逻辑综合和布局布线后,基于实际器件特性和布线延迟进行的仿真验证。与功能仿真不同,后仿真需要考虑真实的物理延迟,这也是许多设计在功能仿真通过却在硬件实现时出现问题的根源。
延时问题主要分为两类:传输延迟(Transport Delay)和惯性延迟(Inertial Delay)。这两种延迟模型在仿真中表现出完全不同的行为特性,理解它们的区别对于准确预测电路行为至关重要。
注意:混淆传输延迟和惯性延迟是导致后仿真失败的最常见原因之一,特别是在高速设计或对时序要求严格的场合。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 传输延迟与惯性延迟的本质区别
2.1 传输延迟的特性分析
传输延迟,顾名思义,模拟的是信号在传输路径上的纯时间延迟。其核心特点是:
- 任何输入变化(无论持续时间多短)都会在延迟时间后反映在输出端
- 输出波形严格复制输入波形,只是时间上整体后移
- 适用于模拟信号在长导线或通过缓冲器链传播的情况
在Verilog中,传输延迟通常用"#delay"表示:
verilog复制assign #5 out = in; // 5个时间单位的传输延迟
2.2 惯性延迟的物理本质
惯性延迟则模拟了实际电路元件的惯性特性,其关键特征包括:
- 只有持续时间足够长的输入变化才会传递到输出端
- 短于器件响应时间的脉冲会被"过滤"掉
- 模拟了实际门电路需要积累足够能量才能改变状态的现象
惯性延迟在Verilog中的典型表示:
verilog复制assign #5 out = in; // 当in变化持续时间≥5单位时才会传播
2.3 两种延迟的对比实验
通过一个简单的仿真实验可以直观展示两者的区别:
verilog复制module delay_demo;
reg in;
wire transport_out, inertial_out;
// 传输延迟实例
assign #5 transport_out = in;
// 惯性延迟实例
assign #5 inertial_out = in;
initial begi
