特权同学

Testbench——关于变量的定义

0
阅读(1734) 评论(0)

在编写testbench时,关于变量的定义常犯的错误就是将一个定义的全局变量应用到了两个不同的always块中(如例1所示),那么由于这两 个always块独立并行的工作机制,很可能会导致意想不到的后果。

例1:

integer i;

 

always  begin

for (i = 0; i < 32; i = i + 1) begin

              ………

end

end

 

always  begin

for (i = 0; i < 32; i = i + 1) begin

              ……

end

end

 

       实际上,在verilog中(编写testbench时),如果在begin end之间定义了always的块名,那么你可以如 例2一样申明变量。这样两个always块里的变量i就互不相关,也就不会 产生不可预料的结果了。

例2:

always

begin:  block_l

integer i;

for (i = 0; i < 32; i = i + 1) begin

……

end

end

 

always

begin:  block_2

integer i;

for (i = 15; i >= 0; i = i - 1) begin

……

end

end

 

       除此以外,在verilog中的function和task也支持类似上面的局部变量 定义。