不枉初心,砥砺前行

皮皮祥的博客

欢迎留言,评论

导航

Verilog disable 和break语句

如何中止任务或代码块的执行?

Verilog disable语句能够中止任务或代码块。 通常在以下场景中会使用disable语句:

1、在循环中执行“break”命令,跳过循环迭代,并退出循环

2、在任务完成之前终止任务

disable语句与语句块名称一起使用。 例如:

initial begin :block1
 begin : block2
 statement1 ;
//etc
disable block2 ;
statement5 ;
statement6 ;
end //of blcok2
statement7 ;
end // of block1

在上面的例子中,“block1”和“block2”是语句块名。如果遇到disable语句,则退出语句块2,即语句5和6不会被执行,从而去执行语句7。

使用disable语句的唯一限制是它只能在任务中使用,不能在函数中使用,因为它会使函数返回值无效。

SystemVerilog引入了break命令来退出循环。

如下所示:

module test_break ;
 integer i ;
 initial begin
 i = 10 ;
while(i) begin
 i-- ;
if(I == 5) begin
 break ;
end else
 $display(“I == %0d”,i) ;
end  //while
end //initial
endmodule //test_break

如果在某些条件下需要跳过当前循环,SystemVerilog添加了一个命令continue,它将直接跳转到当前循环结束。 例如,在以下代码中,会跳过变量i为奇数的循环。

module test_continue ; 
 integer i  ;
 initial begin
 i = 10 ;
 while(i) begin
 i-- ;
 if(i %2) begin
 //$display(“iodd = \t %0d” , i) ;
 continue ; 
end  else 
$display(“ieven = \t %0d” , i) ;
end //while
end //initial
endmodule //test continue
 

上述代码会输出:

ieven= 8 
ieven= 6
ieven= 4
ieven= 2 
ieven= 0

posted on 2022-09-06 09:40  皮皮祥  阅读(2616)  评论(0)    收藏  举报