verilog 语法注意事项

1. 变量赋值或比较需要等位宽,进行严格约束,如  reg [7:0] param;  initial param = 8'h87;    (最好不要写 param = 135;)

2. verilog 中使用case ,if  else , 或其他逻辑语句时需要保证语句的完整性,如 if 后需要跟随 else ; case 内需要包含default,保证程序块执行分支完整,否则可能会造成造成块内赋值语句执行错误(仿真正确,片上实际执行错误)

3.Verilog 需要仔细检查变量是否在仅在一个always块中进行赋值,多个always块中赋值在block design 设计中并不会倍检测出来,仿真时可能功能正常,实际片上执行功能异常

4.在非时钟同步情况下,条件语句内赋值,所有分支最好都包含该赋值语句,即使保持原值也需要写入,防止赋值语句引发问题。

如三段式状态机。红色框内语句必须存在,保证next_state可以稳定在当前状态,如果缺失会造成状态机跳转不正确,状态机多跳状态。

5. ila 调试vhdl只能监控输入或buf,不能监控out端口

6.组合逻辑,即没有时钟约束的process,不能做计数器操作,只能进行逻辑组合,赋值;时序逻辑可以根据组合逻辑的信号量跳变进行计数器操作。

7.reg 赋值,initial 初始化仿真有效,生成bit文件后不生效,需要用clk赋值,wire可直接初始化赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值