systemverilog的process类
0赞
发表于 2017/3/19 22:39:37
阅读(7142)
process是sv的内置类,控制进程。该类的原型:
该类,不能调用new方法,如果调用new方法,会出现error。
方法:
方法 |
说明 |
self() |
获取当前进程的句柄 |
status() |
获取当前进程的状态: FINISH:该进程已经结束了 RUNNING:该进程正在运行 WAITING:该进程等待阻塞条件 SUSPENDED:该进程停止了,等待resume KILLED:该进程被强制kill了 |
kill() |
kill掉该进程以及该进程的子进程 |
await() |
等待其他进程结束,不能在该进程中,调用该方法。 |
suspend() |
挂起该进程 |
resume() |
恢复该进程 |
srandom(int seed) |
设置进程的随机种子 |
以下是一个例子:
创建了N个子进程,通过process::self()获取到当前运行进程的句柄。保存在job动态数组中。进程创建完毕后,主进程,调用wait,等待创建的子进程开始运行。
调用job[1]的wait方法,等待子进程1完成。
最后判断进程的状态,如果不是FINISHED状态,就调用kill方法给kill掉。
对于get_randstate和set_randstate方法,IEEE上是这么描述的:
大致意思,有一个RNG(random number generator) state,是一串字符串。可以将指定进程和该RNG进行关联。至于关联起来,有什么作用,目前还不了解。不过既然是random,那应该是和随机数产生有关系的。
以下测试代码:
执行结果: