RTL可综合风格:仿真能跑不等于有目标硬件
约 14 分钟
HDL描述硬件结构与并行行为,不是按行执行的软件。综合器只支持可映射结构;阻塞/非阻塞、组合敏感、位宽与有符号规则会造成仿真—综合差异。
时序与组合分离
时钟always块用非阻塞赋值描述寄存器同时更新;组合块用阻塞赋值并覆盖所有路径。混用可能让仿真顺序掩盖真实并行关系。
位宽与符号
无尺寸常量、拼接和算术扩展容易截断或符号扩展错误。显式声明signed、位宽和中间结果,针对最大最小值做断言。
锁存与组合环
组合输出未在所有路径赋值会推断锁存;变量组合依赖自己可能形成环。lint应作为入口门槛,但警告豁免需解释,不可一键关闭。
初始化
仿真initial值、FPGA配置初值和ASIC上电未知不是同一件事。可移植控制逻辑依赖明确复位或启动协议,不把测试平台初始化当硬件保证。
综合结果复核
查看推断RAM、DSP、锁存、时钟和面积报告。RTL文本短不表示电路小,除法、可变移位和大循环可能生成巨大组合逻辑。
综合警告要逐条分类:已理解并豁免的写入说明,其余作为失败处理。使用参数化generate时,用多个边界参数实例化,防止零宽、非2次幂和负索引只在罕见配置出现。
任务:对一段有位宽、锁存和赋值问题的RTL做lint—修复—综合—门级抽查。
小纸条
RTL仿真正确为什么仍可能综合出意外硬件?