0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SystemVerilog中的fork-join

芯片验证工程师 来源:芯片验证工程师 作者:芯片验证工程师 2022-12-09 11:58 次阅读

在fork-join语句块中,每个语句都是并发进程。在这个语句块中,父进程一直被阻塞,直到所有由“fork-join”产生的子进程都执行完:

module forkJoin;
 int a, b, c, d;
 
 initial
 fork : forkBlock
 
 begin //frst process
 #50 a = 5;
 $display($stime,,, "a = %0d",a);
 end
 
 begin //second process
 #100 b = 10;
 $display($stime,,, "b = %0d",b);
 end
 
 begin //third process
 #100 c = 20;
 $display($stime,,, "c = %0d",c);
 end
 
 begin //fourth process
 #50 d = 15;
 $display($stime,,, "d = %0d",d);
 end
 
 //frst, second, third and fourth processes execute in parallel.
 join
 endmodule

仿真log:

 50 a = 5
 50 d = 15
 100 b = 10
 100 c = 20
 V C S S i m u l a t i o n R e p o r t

上面的fork-join产生了4个并行的子进程,都使用begin-end区分,在每个begin-end中间的语句都是串行执行的。

1. 第1个进程在时间50执行;
2. 第2个进程在时间100执行;
3. 第3个进程在时间100执行;
4. 第4个进程在时间50执行;

这4个进程的时序都是独立的。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1323

    浏览量

    109218
  • System
    +关注

    关注

    0

    文章

    161

    浏览量

    36552
  • 进程
    +关注

    关注

    0

    文章

    190

    浏览量

    13867
  • Fork
    +关注

    关注

    0

    文章

    14

    浏览量

    3235

原文标题:SystemVerilog中的fork-join

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Parallel (Fork-Join) Block is not supported

    unsupported feature warning at time_control_inner_mode.v(11): Parallel (Fork-Join) Block is not supported
    发表于 01-25 19:05

    Linuxfork()函数详解

    的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程,只有少数值与原来的进程的值不同。相当于克隆了一个自己。。。。。。有需要的请下载附件PDF。
    发表于 11-12 13:37

    begin ...... end 与 fork ...... join 语句的 区别 ------ 转载

    的执行时间为5d。 (2)fork……join,用来组合需要并行执行的语句,被称为并行块。例如:parameter d = 50; reg[7:0] r; fork //由一系列延迟产生的波形 # d r
    发表于 06-02 21:31

    mysql的7种JOIN

    mysqlJOIN大汇总
    发表于 03-11 11:18

    Fork/Join的框架机制详解

      一、Fork/Join框架  Java提供Fork/Join框架用于并行执行任务,核心的思想就是将一个大任务切分成多个小任务,然后汇总每个小任务的执行结果得到这个大任务的最终结果。
    发表于 01-05 17:51

    最常见的fork用法是什么

    接口语法用来创造一个子进程在子进程,成功的fork调用会返回 0。在父进程fork返回子进程的 pid。如果出现错误,fork返回一个负
    发表于 12-15 07:38

    如何利用system verilog的fork join_none实现信号打拍操作呢

    利用system verilog的fork join_none,能够实现打拍操作。从而不需要写其他的逻辑来实现打拍操作。下面,介绍下,如何实现。有3个信号,a,b,c,现在需要实现,b是a的打拍,c
    发表于 04-02 17:25

    聊一聊如何在仿真中如何“多进程”时间管理

    绕不开的多进程仿真忆往昔写Verilog与SystemVerilog时,在仿真过程,不可避免的会出现多进程并发的情况,在构建仿真架构时,总是少不了这几个语法的出现:fork-join:等待所有
    发表于 06-29 16:11

    Fork/Join框架的软件重构及性能分析

    针对目前对于Fork/Join框架应用和性能分析的相关工作还不多的现状,以JGF基准测试程序套件为基础,对其中的senes、crypt、sparsematmult和sor等程序使用Fork/J
    发表于 12-29 10:06 0次下载

    Verilog的两种块语句解析

    1. 块语句有两种,一种是 begin-end 语句, 通常用来标志()执行的语句;一种是 fork-join 语句,通常用来标志()执行的语句。 答案:顺序,并行 解析: (1)begin_end
    的头像 发表于 06-18 15:16 2748次阅读

    SystemVerilog中对于process的多种控制方式

    Block,也就是语句块,SystemVerilog提供了两种类型的语句块,分别是begin…end为代表的顺序语句块,还有以forkjoin为代表的并发语句块。
    的头像 发表于 09-14 10:27 872次阅读

    SystemVerilog中的fork-join_any

    fork-join_any和fork-join有所不同,fork-join_any的父进程一直阻塞,直到任何一个并行的子进程结束。
    的头像 发表于 12-09 09:05 1393次阅读

    SystemVerilog中的fork-join_none

    fork-join_none和fork-joinfork-join_any的区别一样在于进程退出机制以及对于父进程的影响。
    的头像 发表于 12-12 10:00 1868次阅读

    如何优化MySQL中的join语句

    在mysql中,join 主要有Nested Loop、Hash Join、Merge Join 这三种方式,我们今天来看一下最普遍 Nested Loop 循环连接方式,主要包括三种:
    的头像 发表于 04-24 17:03 538次阅读
    如何优化MySQL中的<b class='flag-5'>join</b>语句

    Linux中可怕的fork炸弹介绍

    Linux中的Fork炸弹(Fork Bomb)是一种拒绝服务攻击的形式,它利用了操作系统中的“fork()”系统调用。
    的头像 发表于 05-22 10:46 1842次阅读
    Linux中可怕的<b class='flag-5'>fork</b>炸弹介绍