【Verilog基础】编写 RTL 代码时推荐的一些规范

本文介绍了Verilog编程中的一些最佳实践,包括在编写时序逻辑时使用非阻塞赋值,组合逻辑使用阻塞赋值,避免在一个always块中混合使用赋值方式,谨慎使用锁存器建模,以及每个always块对应单一变量赋值以防止多驱动错误,以提升代码的可读性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1) 在编写时序逻辑的代码时采用非阻塞赋值的方式

计算赋值号右手边的信号时,所有的变量值均是触发沿到来前的值,更新的赋值号左手边的信号作为触发沿后的值,并且保持到下一个触发沿到来时候,等待更新。这样,就可以使得在同一个块中非阻塞赋值语句不必要求出现的顺序,都是在全部进行赋值号右手边的信号计算后同时更新赋值号左手边的信号的值。非阻塞赋值可以简单的认为是赋予下一状态的值。

(2) 使用 always 块来编写组合逻辑的代码时要用阻塞赋值的方式

使用 always 块建立组合逻辑电路模型时不要忘记 always 块中的敏感列表一定要使用电平触发的方式,然后在 always 块中使用阻塞赋值语句就可以实现组合逻辑,这样做既简单且方针又快又好,这样的风格是值得推荐的。

(3) 在同一个 always 块中不要既要用非阻塞赋值又用阻塞方式赋值

在同一个 always 块中对同一个变量既进行阻塞赋值又进行非阻塞赋值会产生综合不可预测的结果,不是可综合的 Verilog 风格。

( 4) 虽然锁存器电路建模是我们不推荐的, 但是如果使用到要采用非阻塞赋值的方式。

使用非阻塞赋值实现时序逻辑,实现锁存器是最为安全的。

(5) 一个 always 块只一个变量进行赋值

因为 always 块是并行的,执行的顺序是随机的, 综合时会报多驱动的错误,所以严禁在多个

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ReCclay

如果觉得不错,不妨请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值