System Verilog与功能验证之过程语句

System Verilog与功能验证之过程语句System Verilog过程语句(1)赋值语句(2)条件选择语句(3)循环语句(4)跳转语句(5)子程序调用(6)事件控制1、赋值语句四类阻

欢迎大家来到IT世界,在知识的湖畔探索吧!

System Verilog过程语句

(1)赋值语句

(2)条件选择语句

(3)循环语句

(4)跳转语句

(5)子程序调用

(6)事件控制

1、赋值语句四类

阻塞赋值:使用 = ;

非阻塞赋值:使用 <= ;

自加/自减赋值:使用 ++/– ;

过程连续赋值语句:使用 assign/deassign、force/release;

例子:

initial begin

logic data;

logic data_out;

logic data_test;

data_out <= 1’b1; //阻塞赋值

data_test = 1’b1; //阻塞赋值

data_test ++ ; //变量自加

data_test — ; //变量自减

assign data = data_test; //连续赋值

data = 1’b0; //不会改变data的数值

deassign data; //去除连续赋值

data = 1’b0; //data数值生效

force data = 1’b1; //强制赋值

release data; //释放

end

2、控制结构

2.1、条件语句:if……else……和case

case要求分支表达式和case条件表达式做全等比较(===),而不是逻辑比较(==)

System Verilog提供了casex和casez

casex:case条件表达式中所有的x值都不参与比较;

casez:case条件表达式中所有的x和z值都不参与比较。

2.2、循环语句

2.2.1、for循环

System Verilog条件了声明for循环控制变量的能力,在循环内产生一个本地变量,其他并行循环不会偶然地影响这个循环控制变量。

例子:两个for循环分别在循环内产生本地变量i

initial begin

loop1:

for(int i=0,i<=10,i++)

$display(“loop1 i is %d\n”,i);

#1;

end

initial begin

loop2:

for(int i=10,i>=0,i–)

$display(“loop2 i is %d\n”,i);

#1;

end

System Verilog允许初始声明或赋值语句可以是一个或者多个用逗号分隔的语句。

例子:

for(int i=0,j=0;i*j<=50;i++,j++)

$display(“Value i*j is %d\n”, i*j);

2.2.2、while循环语句

while循环语句执行循环结构,直至条件表达式为假。若一开始为假,循环语句永远不会执行。

例子:计算reg中1的个数

module while_example();

initial

begin

logic [07:00] reg_test;

logic [07:00] cnt ;

reg_test = 8’b1011_0100;

cnt = 0;

while(reg_test)

begin

if(reg_test[0])

cnt ++ ;

$display(“cnt value is %d”,cnt);

reg_test >>= 1;

//reg_test = reg_test >> 1;

$display(“reg_test value is %b”,reg_test);

end

end

endmodule

System Verilog与功能验证之过程语句

2.2.3、do……while循环语句

do……while语句在循环体的结束处评估循环语句,至少循环一次。

2.2.4、repeat循环语句

repeat循环对循环体执行固定的次数。表达式被评估为未知或者高阻,那么应该认为是零次,不应执行循环体。

2.2.5、forever循环语句

例子:forever生成时钟

forever #10ns

clk = ~clk;

2.2.6、foreach循环语句

foreach循环语句指定数组后,程序会逐个遍历数组成员。

例子:遍历字符数组

string words[3] = ‘{“hello”,”world”,”moonin”};

initial begin

foreach(words[i])

$display(“words %d is %s\n”,i,words[i]);

end

System Verilog与功能验证之过程语句

3、跳转语句

System Verilog增加跳转语句:break、continue和return。

break:跳出本次循环体

continue:跳转到本次循环体的尾部

return(条件):退出一个函数并返回函数值

return:退出一个任务或空函数

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/35231.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信