iverlog

verilog if(0) if(1) 小技巧

拥有回忆 提交于 2020-03-01 05:46:49
本文主要介绍verilog if(0),if(1)给verilog进行语法修正的功能。 verilog的语法太简单,一直是我们诟病的地方所在,想实现一个功能有的时候必须敲上大段功能重复的代码段,有的时候只是其中的某个参量发生变化。这个时候懒惰的我们就会想出一种解决方案,好在verilog标准里(1995,2001)标准里都有对宏的支持。众所周知,宏的作用就是生成代码,有了宏的帮助我们就可以将大量重复的功能放入宏中,然后在程序中直接写上一句宏即可。这样做的好处是,对我们整体代码以及综合后的结果没有任何影响,因为宏在编译的时候就已展开。 ok利用宏已经可以解放我们少许工作量了。我模拟了下面这样的一个场景。 always @(posedge clk) begin case(counter) 32'd1: begin answer=1/3; signal=0;signal=1;end 32'd2: begin answer=2/3; signal=0;signal=1;end 32'd3: begin answer=3/3; signal=0;signal=1;end ... 32'd16: begin answer=16/3;signal=0;signal=1;end endcase end 不要去想这个例子的功能是什么,这个不是我们的重点,我想制造的就是每个case里面包含多句