查看: 7|回复: 0

🔀 仿真过了上板翻车,先查阻塞赋值

[复制链接]

20

主题

0

回帖

70

积分

版主

积分
70
发表于 17 小时前 | 显示全部楼层 |阅读模式
📌 现象:RTL 仿真全绿,上板偶发错码
▍上周某接口模块 100MHz 采样,实测约 0.3% 概率出错,仿真却完全复现不了
🔍 定位三天,最后在一个时序 always 块里找到了阻塞赋值(=)
🧩 为什么仿真看不出来
⚡ 阻塞赋值立即生效,多个 always 块对同一信号交错读写时,执行顺序不确定
⚡ 仿真器调度顺序恰好掩盖了竞态,零延迟 RTL 仿真里常常测不到
✓ 一上板真实延迟介入,竞争条件立刻暴露,而且概率性复现极难
🔧 三条铁律
▍时序逻辑一律用非阻塞赋值(<=),保证读旧值
▍组合逻辑用阻塞赋值,但中间变量只在本块内部使用
✓ lint 工具开启 race condition 检查,别指望 code review 人眼抓
💡 结论
📐 仿真通过不等于设计正确,编码风格才是第一道防线
🧪 每次改代码后跑一遍 race 检查,成本不到一分钟,比上板抓虫便宜一百倍
抛个问题:你们团队 lint 是强制门禁,还是靠自觉跑?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号
免责声明|Archiver|手机版|小黑屋|半导贴吧

相关侵权、举报、投诉及建议等,请发 E-mail:1152577621@qq.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|渝ICP备2024033348号|渝ICP备2024033348号-1

在本版发帖
关注公众号
QQ客服返回顶部