verilog 语法注意事项

    技术2024-11-03  29

    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,不能做计数器操作,只能进行逻辑组合,赋值;时序逻辑可以根据组合逻辑的信号量跳变进行计数器操作。

    Processed: 0.013, SQL: 9