IC验证学霸笔记3—SV--线程(一)

1线程的使用

1.1程序和模块

•    线程即独立运行的程序。
•    线程需要被触发, 可以结束或者不结束。
•    在module中的initial和always,都可以看做独立的线程,它们会在仿真0时刻开始,而选择结束或者不结束。
•    硬件模型中由于都是always语句块 , 所以可以看成是多个独立运行的线程, 而这些线程会一直占用仿真资源, 因为它们并不会结束。
•    软件测试平台中的验证环境都需要由initial语句块去创建, 而在仿真过程中, 验证环境中的对象可以创建和销毁, 因此软件测试端的资源占用是动态的。 

2.线程的控制

2.1 fork.... join

2.2 fork...join_any



2.3 fork...join_none 

2.4 等待所有衍生线程

•    在SV中, 当程序中的initial块全部执行完毕, 仿真器就退出了。
•    如果我们希望等待fork块中的所有线程执行完毕再退出结束initial块, 我们可以使用wait fork语句来等待所有子线程结束。

2.5 停止单个线程

在使用了fork.. join_any或者fork... join_none以后,我们可以使用disable来指定需要停止的线程。

 2.6 停止多个线程

disable fork可以停止从当前线程中衍生出来的所有子线程。 

 2.7 停止被多次调用的任务

如果你给某—个任务或者线程指明标号, 那么当这个线程被调用多次以后 , 如果通过disable去禁止这个线程标号, 所有衍生的同名线程都将被禁止。

•    任务wait_for_time_out被调用了三次, 从而衍生了三个线程。
•    线程0在#2延时之后禁止了该任务,而由于三个线程均是“ 同名”线程, 因此这些线程都被禁止了, 最终也都没有完成。

注:优秀验证学员随堂笔记,已经征求到学生的同意,会持续给牛友们分享!
大家看完记得 一键三连!多多支持
#做项目##深度学习##转行转岗经验分享##芯片IC验证工程师##你为什么选择硬件行业#
全部评论
满满的笔试知识,写的非常清楚
点赞 回复 分享
发布于 2022-09-06 10:47 陕西

相关推荐

02-25 16:55
已编辑
北京工业大学 Java
211本,找日常实习的话,如果面向中厂的话,需要刷hot100么?因为之前从来没刷过,算法仅限于学校课程水平,准备3月投递简历,现在还需要背八股文,时间有些紧张,还需要刷算法题么?同时什么样的公司可以算是中厂呢?
程序员小白条:中大厂说的上名字的,必定要算法,hot100只是最基础的了,题库远不止100题捏,一般在300-400题量之间,算法=学校课程=简单题也做不出,多准备八股文和算法吧,其他项目可以放放,精刷算法就行了,花时间成长很快的
点赞 评论 收藏
分享
柱柱想躺平:这是好事啊
点赞 评论 收藏
分享
评论
1
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务