在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1448|回复: 3

[求助] SV线程的知识求助

[复制链接]
发表于 2019-5-5 16:19:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 静心聆听 于 2019-5-5 16:30 编辑

今日在写验证平台时,突然想到一个问题:如何根据宏来创建动态个数的线程?
例子:网上有一种做法,不知到正确与否
`define NUM 10
   
fork
  begin : isolating_thread
    for(int index=0;index<NUM;index++)begin : for_loop
      fork
      int idx=index;
        begin
            `ovm_do_on(sequence_inst,p_sequencer.my_sqr[idx]);
        end
      join_none;
    end : for_loop
  wait fork;
  end : isolating_thread
join
若不对,请大神详述这两个fork的作用,谢谢了。
在这里我又产生一种想法:
`define NUM 10

fork
  begin : isolating_thread
    genvar index;
    generate
       for(int index=0;index<NUM;index++)begin : for_loop
          int idx=index;
          begin:bit
             `ovm_do_on(sequence_inst,p_sequencer.my_sqr[idx]);
          end
       end : for_loop
    endgenerate
  end : isolating_thread
join
这种方法不知道会成功否?我也不知道怎么验证,实属惭愧,望大神给予意见,谢谢





发表于 2019-5-5 17:00:34 | 显示全部楼层
第一个例子中是isolating_thread中有10个子线程,isolating_thread与其它进程并行
第二个例子语法可能有问题,generate只在module program用过,不需要加fork join。可以把ovm_do_on改成一个等待时间和打印,跑仿真看看
 楼主| 发表于 2019-5-5 17:17:21 | 显示全部楼层


goodivan 发表于 2019-5-5 17:00
第一个例子中是isolating_thread中有10个子线程,isolating_thread与其它进程并行
第二个例子语法可能有问 ...


感谢您的回答,
还有一个疑问:第一个例子中的10个线程是同时执行的吗?
再问一下:通常产生不定个数(个数可由宏改变)线程用什么办法?也是这种方法吗?

发表于 2019-5-5 18:10:39 | 显示全部楼层
第一个用的是fork join_none,10个线程同时执行
不定个数线程可以用上面的方法,如果用generate NUM可以定义成parameter或宏,如果采用第一种且是一个task,NUM用参数传进去
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-13 21:29 , Processed in 0.023658 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表