sv 中循环的实现

sv 中循环的实现

sv 中循环和C C++ 中的类似,常用的for while…do

C 中的for

int i;
for (i=0;i<10;i++)
{
.....
}

可以使用continue 跳过本次循环中的剩余部分,直接进入下次循环。

 int i;
 for (i=0;i<10;i++)
 {
 ....
 if(i==1)
 continue;
 .....
 }

可以使用break 跳出循环,放弃剩余的循环执行。

 int i;
 for (i=0;i<10;i++)
 {
 ....
 if(i==1)
 break;
 .....
 }

可以使用return 跳出函数,放弃剩余的循环执行。

int i;
for (i=0;i<10;i++)
{
....
if(i==1)
break;
.....
}

SV 中的for 循环

int i;
for (i=0;i<10;i++)
begin

.....


end

可以使用continue 跳过本次循环中的剩余部分,直接进入下次循环。

int i;
for (i=0;i<10;i++)
begin
....
if(i==1)
continue;
.....
end

可以使用break 跳出循环,放弃剩余的循环执行。

int i;
for (i=0;i<10;i++)
begin
....
if(i==1)
break;
.....
end

SV 对for 循环进行了扩展,可以使用两个参数
for(int a=0,b=0;a+b<10;a++)
begin

end
对于在同一initial 中操作同一变量的循环可以通过加标号规定作用域,解决对同一数据操作的风险。

for (int i=0;i<10;i++)
{
.....
}
loop2: for (int i=0;i<10;i++)
{
.....
}

C 中while-do 循环

对比 for 和 while-do 循环可以互相替代,仅仅while-do的变化更多一些,某些情景更适合。 while-do :先判
断条件,后执行do{},这时可以省略do

 while(1)
 do{
 ...
 }

do-while: do中内容先执行,while()中判断是否继续执行do{}

do{
...
}
while(1)

SV 中的while-do

while-do :先判断条件,后执行do{},这时可以省略do

 while(1)
 begin
 ...
 end

do-while: do中内容先执行,后中判断while()是否继续执行do{}

do
begin
...
end
while(1)

SV 特有的foreach()

 int a[3] = {1,1,1};
 foreach(a[j])
 $display(j,a[j]);

j 是定义出来的循环的变量,变量最大值就是数据成员数量