Testbench——关于变量的定义:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
在编写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也 支持类似上面的局部变量定义。
文章评论(0条评论)
登录后参与讨论