卢骏 · 2020年07月10日

systemverilog的process类

process是sv的内置类,控制进程。该类的原型:

1.jpg

该类,不能调用new方法,如果调用new方法,会出现error。

 方法:

2.png

以下是一个例子:

3.jpg

4.jpg

创建了N个子进程,通过process::self()获取到当前运行进程的句柄。保存在job动态数组中。进程创建完毕后,主进程,调用wait,等待创建的子进程开始运行。
调用job[1]的wait方法,等待子进程1完成。
最后判断进程的状态,如果不是FINISHED状态,就调用kill方法给kill掉。
对于get_randstate和set_randstate方法,IEEE上是这么描述的:

5.jpg

6.jpg

大致意思,有一个RNG(random number generator) state,是一串字符串。可以将指定进程和该RNG进行关联。至于关联起来,有什么作用,目前还不了解。不过既然是random,那应该是和随机数产生有关系的。

以下测试代码:
7.png

执行结果:

8.jpg

通过precess的静态方法self,获取到当前进程对象,调用进程对象的status方法,获取到进程的状态,调用进程对象的get_randstate方法,获取到RNG值。

更多相关阅读

system verilog变量定义编译失败
dvteclipse创建新工程(五)
dvteclipse代码预处理(六)

原文首发于骏的世界博客
作者:卢骏
更多IC设计相关的文章请关注IC设计极术专栏,每日更新。

推荐阅读
关注数
20187
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息