首页 > 其他分享 >systemverilog中fork..join, join_any, join_none的用法和解析

systemverilog中fork..join, join_any, join_none的用法和解析

时间:2023-11-22 11:33:40浏览次数:23  
标签:fork none join .. 多线程 any

对fork.. join, join_any以及join_none的用法进行总结,以及整理下可能遇到的坑。

 

简单的说就是:

fork..join: 必须等到ment1,ment2,ment3全部执行完之后,ment4才可以执行。

fork..join_any: 等到ment1,ment2,ment3之中任何一个执行完毕之后,ment4才可以执行

fork..join_none: ment4的执行与否不依赖于ment1,ment2和ment3,他们可以同步执行。

 

在使用过程中经常需要多线程操作,多线程的正确写法为:

 

for(int i=0;i<3;i++)begin
    fork
        automatic idx = i
        begin
            `uvm_do(do[i]);
        end        
    join_none
end

 


这样就完成了一个简单的多线程,这里为什么要用automatic关键字定义idx,可以参考下面的详细解释。

局部数据存储 automatic作用

Verilog中由于任务中局部变量会使静态存储区,当在多个地方调用同一个任务时,不同线程之间会窜用这些局部变量。

Systemverilog中,module和program块中,缺省使用静态存储;如果想使用自动存储,需加入automatic关键词。

标签:fork,none,join,..,多线程,any
From: https://www.cnblogs.com/yanghonker/p/17848596.html

相关文章

  • Maybatis-Plus 数据库查询 lambdaQuery和mapper中EQ、NE、GT、LT、GE、LE、select、li
    Maybatis-PluslambdaQuery和mapper中EQ、NE、GT、LT、GE、LE的用法及详解实体当前实体如下,后续代码示例都用该实体;@Data@TableName("user_info")@ApiModel(value="UserInfo对象",description="")publicclassUserInfoimplementsSerializable{privatesta......
  • idea报错Java HotSpot(TM) 64-Bit Server VM warning Options -Xverifynone and -nove
    问题描述我的:IDEA的版本为:2021.3‍最近在使用idea运行SpringBoot时,idea总是显示报错信息,报错信息如下:‍​​‍解决方法‍第一步:选择下图的EditConfigurations‍​​‍第二步:在跳转出的界面中找到Modifyoptions这个选项,点进去‍​​‍第......
  • left join on后面 加条件 与 where后面加条件的区别
    本文主要讲解leftjoinon和where的区别,以及用法首先数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。在使用leftjoin时,on和where条件的区别如下:1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边......
  • org.elasticsearch.client.transport.NoNodeAvailableException: None of the configu
    org.elasticsearch.client.transport.NoNodeAvailableException:Noneoftheconfigurednodesareavailableelasticsearch有两个端口:http_port和transport.tcp.port①http_port是ES节点与外部通讯使用的端口。它是http协议的RESTful接口(各种CRUD操作都是走的该端口)默认9200......
  • python:第十九章:数据类型之None
    一,什么是None?None表示空值,其类型为NoneType,内存中值为None的对象是同一个实例123456789#None的类型print("None的类型:",type(None)) #输出<class'NoneType'> #值为None的对象是同一个实例,#由于内存None只有一个,所以aisb的结果为True......
  • Python 中将 None 转换为 0
    如何在Python中将None转换为0–码微(mwell.tech)some_number=Noneresult=some_numberor0print(result)#......
  • 多线程threading模块(二)daemon和join的区别
    PythonVersion:3.10.12案列一:最简洁的情况,在多线程代码中不开启daemon或join功能。importthreadingimporttimeloop_count=5defcount_num(num):print('子线程<{}>开始运行'.format(num))forxinrange(10):time.sleep(x)print('子线程<{}>结束......
  • KET.Application 报错:pywintypes.com_error: (-2147221005, '无效的类字符串', None,
    电脑突然有一天调用KET.Application总是报错,代码:importwin32com.clientxcl=win32com.client.DispatchEx("KET.Application")xcl.Quit()报错:pywintypes.com_error:(-2147221005,'无效的类字符串',None,None)WIN11系统,最新版WPSAI,之前用的好好的,不知道最近卸载了......
  • var a = parseInt([0,0,1,0,0].join('')+1) a的值为
    vara=parseInt([0,0,1,0,0].join('')+1)a的值为A2B101C1001DNaN正确答案:C官方解析:"00100"+1="001001"再转换为整数为1001vara=parseInt([0,0,1,0,0].join('')+1)//join()方法将数组转为字符串,并用指定的分隔符进行分割[0,0,1,0,0].join(""......
  • Left Join,Right Join,Inner Join与where连接的区别
    概述连表是SQL常用的操作,但是连表不一样,得到的结果也不一样(在数据量大的时候尤为明显),这里就是对关联表中一些筛选用的关键字的具体区别做了一个详细的梳理。首先准备两张表,分别是tb_student和tb_class表 tb_class表:tb_student表:一、内连接1、隐式内连接:把连接条件放......