3.1 过程语句
例3.1 新的过程语句和操作符
initial
begin : example
integer array[10],sum,j;
//在for语句中声明i
for(int i=0;i<10;i++)
array[i]=i;
//把数组里的元素相加
sum=array[9];
j=8;
do
sum+=array[j];
while(j--);
$display("Sum=%4d",sum);
end : example
例3.2 在读取文件时使用break和continue
initial begin
bit [127:0] cmd;
int file,c;
file=$fopen("commands.txt","r");
while(!$feof(file)) begin
c=$fscanf(file,"%s",cmd);
case(cmd)
"":continue;
"done":break;
...
endcase //case(cmd)
end
$fclose(file);
end
3.2 任务、函数以及void函数
在Verilog中:
1.任务和函数之间最重要的区别是:任务可以消耗时间,而函数不能。
2.函数里面不能待用#100之类的时延语句或者@(posedge clk)、wait(ready)的阻塞语句,也不能调用任务。
3.函数必须有返回值,且返回值必须被使用。
在SV中,允许函数调用任务,但只能在由fork...join_none语句