下冰雹 · 2023年07月18日

ICer,这5种bug你是不是经常遇到?

在你们的工作中都遇到过哪些bug呢?下面这些你见过没?

1. 复位同步化问题

image.png

错误的地方:在时钟上升沿处处理复位信号,但未同步复位信号到时钟域,可能导致复位信号的抖动或同步问题。

2.未初始化的寄存器的问题

image.png

错误的地方:未对寄存器 reg1 和 reg2 进行初始化,初始值未定义,可能导致未知的行为和仿真结果。

3. 异步信号同步问题

image.png

错误的地方:直接将异步信号 async_signal 用于时钟边沿触发的逻辑中,没有进行同步处理,可能导致元数据冲突和时序问题。

4. 不完整的数据路径

image.png

错误的地方:在数据路径中,信号 d 通过与门的连接计算得出,但未将 d 直接连接到输出 c。这可能导致输出 c 未能正确反映数据路径的结果,导致逻辑错误或意外行为。

5. 不正确的信号赋值顺序

image.png

错误的地方:在信号赋值时,赋值顺序不正确,导致信号之间的依赖关系混乱,可能导致逻辑错误或不一致的行为。

6.逻辑错误

image.png

错误的地方:在逻辑运算中,使用了错误的操作符,导致逻辑功能与预期不符。

7. 时序插入问题

image.png

错误的地方:在时序逻辑中,对计数器值进行判断时,条件错误地设置为 counter == 4,而实际上应该是 counter == 3。这会导致时序行为出现问题。

8.非活跃信号处理

image.png

错误的地方:在处理信号时,缺少 else 分支,未能正确处理信号非活跃的情况,可能导致逻辑错误。

9. 组合逻辑环路

image.png

错误的地方:在连续赋值语句中,创建了组合逻辑环路,其中信号 b 依赖于信号 c,而信号 c 又依赖于信号 b,这会导致综合和仿真时的不确定行为。

还有哪些RTL中常见的bug,欢迎大家留言讨论。

作者:处芯积律
文章来源:处芯积律

推荐阅读

更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
20426
内容数
1310
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息