systemverilog的process类

         processsv的内置类,控制进程。该类的原型:

clip_image002

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

         方法:

方法

说明

self()

获取当前进程的句柄

status()

获取当前进程的状态:

FINISH:该进程已经结束了

RUNNING 该进程正在运行

WAITING:  该进程等待阻塞条件

SUSPENDED 该进程停止了,等待resume

KILLED 该进程被强制kill

kill()

kill掉该进程以及该进程的子进程

await()

等待其他进程结束,不能在该进程中,调用该方法。

suspend()

挂起该进程

resume()

恢复该进程

srandom(int seed)

设置进程的随机种子

         以下是一个例子:

clip_image004

clip_image006

         创建了N个子进程,通过process::self()获取到当前运行进程的句柄。保存在job动态数组中。进程创建完毕后,主进程,调用wait,等待创建的子进程开始运行。

      调用job[1]wait方法,等待子进程1完成。

       最后判断进程的状态,如果不是FINISHED状态,就调用kill方法给kill掉。

         对于get_randstateset_randstate方法,IEEE上是这么描述的:

clip_image008

clip_image010

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

         以下测试代码:

clip_image011

         执行结果:

clip_image013

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

 

此条目发表在IC, 语言相关分类目录,贴了, 标签。将固定链接加入收藏夹。

1 则回应给 systemverilog的process类

  1. 匿名说:

    的点点滴滴

发表评论

电子邮件地址不会被公开。