SystemVerilog验证 测试平台编写指南 第三章 过程语句和子程序

本文详细介绍了SystemVerilog中过程语句的改进,如for循环、自动递增符、标识符等。重点讲解了任务task和函数function的使用,包括void函数的定义,子程序参数的声明和传递方式,如C语言风格参数、参数方向、高级参数类型。此外,还探讨了子程序的返回、局部数据存储(自动存储和变量初始化)以及时间值的描述和处理。通过对SystemVerilog特性的解析,帮助读者更好地理解和应用该语言。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SystemVerilog在任务task和函数function方面做了很多的改进,使其更加接近于C语言,从而使代码的编写变得更加容易,尤其是在处理参数传递上面。

3.1 过程语句
SystemVerilog从C和C++中引用了很多操作符和语句。下面就来简单介绍几点。
1)for循环,在for循环中定义循环变量,它的作用范围仅限于循环内部,从而有助于避免一些代码漏洞。
for (int i=0;i<10;i++)
2)自动递增符/自动递减符,++/–,既可作前缀,也可作后缀。
3)标识符,可以在begin或fork语句中使用标识符,那么在相对应的end或join语句中放置相同的标号。同样,你也可以将标识符放在endmodule、endtask、endfunction等语句中。

initial
	begin:example
		......
	end:example

4)循环功能,相比于Verilog,循环功能增加了continue,用于在循环中跳过本轮循环剩下的语句而直接进入下一轮;增加了break,用于终止并跳出循环。

3.2 任务、函数以及void函数
在Verilog中,任务task和函数function之间有着明显的区别,其中task可以消耗时间而函数不能。SystemVerilog允许函数调用任务,但只能在由fork…join_none语句生成的线程中调用。
如果有一个不消耗时间的SystemVerilog任务,你应该把它定义成void函数,这种函数没有返回值。

function void print_state(........);
	......
endfunction

3.3 在子程序中去掉begin…end
在SystemVerilog中,begin…end变成可选项了,因为task…endtask和function…endfunct

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值