0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SystemVerilog中的fork-join

芯片驗證工程師 ? 來源:芯片驗證工程師 ? 作者:芯片驗證工程師 ? 2022-12-09 11:58 ? 次閱讀

在fork-join語句塊中,每個語句都是并發(fā)進(jìn)程。在這個語句塊中,父進(jìn)程一直被阻塞,直到所有由“fork-join”產(chǎn)生的子進(jìn)程都執(zhí)行完:

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產(chǎn)生了4個并行的子進(jìn)程,都使用begin-end區(qū)分,在每個begin-end中間的語句都是串行執(zhí)行的。

1. 第1個進(jìn)程在時間50執(zhí)行;
2. 第2個進(jìn)程在時間100執(zhí)行;
3. 第3個進(jìn)程在時間100執(zhí)行;
4. 第4個進(jìn)程在時間50執(zhí)行;

這4個進(jìn)程的時序都是獨立的。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1343

    瀏覽量

    109925
  • System
    +關(guān)注

    關(guān)注

    0

    文章

    165

    瀏覽量

    36848
  • 進(jìn)程
    +關(guān)注

    關(guān)注

    0

    文章

    201

    瀏覽量

    13938
  • Fork
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    3280

原文標(biāo)題:SystemVerilog中的fork-join

文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    SystemVerilog的Virtual Methods

    SystemVerilog多態(tài)能夠工作的前提是父類的方法被聲明為virtual的。
    發(fā)表于 11-28 11:12 ?673次閱讀

    Parallel (Fork-Join) Block is not supported

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

    begin ...... end 與 fork ...... join 語句的 區(qū)別 ------ 轉(zhuǎn)載

    的執(zhí)行時間為5d。 (2)fork……join,用來組合需要并行執(zhí)行的語句,被稱為并行塊。例如:parameter d = 50; reg[7:0] r; fork //由一系列延遲產(chǎn)生的波形 # d r
    發(fā)表于 06-02 21:31

    Fork/Join的框架機(jī)制詳解

      一、Fork/Join框架  Java提供Fork/Join框架用于并行執(zhí)行任務(wù),核心的思想就是將一個大任務(wù)切分成多個小任務(wù),然后匯總每個小任務(wù)的執(zhí)行結(jié)果得到這個大任務(wù)的最終結(jié)果。
    發(fā)表于 01-05 17:51

    最常見的fork用法是什么

    接口語法用來創(chuàng)造一個子進(jìn)程在子進(jìn)程,成功的fork調(diào)用會返回 0。在父進(jìn)程fork返回子進(jìn)程的 pid。如果出現(xiàn)錯誤,fork返回一個負(fù)
    發(fā)表于 12-15 07:38

    如何利用system verilog的fork join_none實現(xiàn)信號打拍操作呢

    利用system verilog的fork join_none,能夠?qū)崿F(xiàn)打拍操作。從而不需要寫其他的邏輯來實現(xiàn)打拍操作。下面,介紹下,如何實現(xiàn)。有3個信號,a,b,c,現(xiàn)在需要實現(xiàn),b是a的打拍,c
    發(fā)表于 04-02 17:25

    聊一聊如何在仿真中如何“多進(jìn)程”時間管理

    繞不開的多進(jìn)程仿真憶往昔寫Verilog與SystemVerilog時,在仿真過程,不可避免的會出現(xiàn)多進(jìn)程并發(fā)的情況,在構(gòu)建仿真架構(gòu)時,總是少不了這幾個語法的出現(xiàn):fork-join:等待所有
    發(fā)表于 06-29 16:11

    Fork/Join框架的軟件重構(gòu)及性能分析

    框架進(jìn)行重構(gòu),并以senes程序為例,詳細(xì)地說明了重構(gòu)的過程。在實驗,首先,測試了每個程序在不同閾值下使用Fork/Join框架分別遞歸1、2、3次執(zhí)行程序的時間,進(jìn)而選擇相對較好的閾值;然后
    發(fā)表于 12-29 10:06 ?0次下載

    SystemVerilog對于process的多種控制方式

    Block,也就是語句塊,SystemVerilog提供了兩種類型的語句塊,分別是begin…end為代表的順序語句塊,還有以forkjoin為代表的并發(fā)語句塊。
    的頭像 發(fā)表于 09-14 10:27 ?1146次閱讀

    淺析標(biāo)準(zhǔn)的Verilog對語句有兩種分組方式

    標(biāo)準(zhǔn)的Verilog對語句有兩種分組方式——使用begin…end或forkjoin,begin…end的語句以順序方式執(zhí)行,而forkjoi
    的頭像 發(fā)表于 09-14 11:02 ?849次閱讀
    淺析標(biāo)準(zhǔn)的Verilog對語句有兩種分組方式

    SystemVerilog的Shallow Copy

    SystemVerilog的句柄賦值和對象復(fù)制的概念是有區(qū)別的。
    的頭像 發(fā)表于 11-21 10:32 ?856次閱讀

    SystemVerilogfork-join_any

    fork-join_any和fork-join有所不同,fork-join_any的父進(jìn)程一直阻塞,直到任何一個并行的子進(jìn)程結(jié)束。
    的頭像 發(fā)表于 12-09 09:05 ?2047次閱讀

    SystemVerilogfork-join_none

    fork-join_none和fork-joinfork-join_any的區(qū)別一樣在于進(jìn)程退出機(jī)制以及對于父進(jìn)程的影響。
    的頭像 發(fā)表于 12-12 10:00 ?2586次閱讀

    如何優(yōu)化MySQLjoin語句

    在mysqljoin 主要有Nested Loop、Hash Join、Merge Join 這三種方式,我們今天來看一下最普遍 Nested Loop 循環(huán)連接方式,主要包括三種
    的頭像 發(fā)表于 04-24 17:03 ?774次閱讀
    如何優(yōu)化MySQL<b class='flag-5'>中</b>的<b class='flag-5'>join</b>語句

    Linux可怕的fork炸彈介紹

    LinuxFork炸彈(Fork Bomb)是一種拒絕服務(wù)攻擊的形式,它利用了操作系統(tǒng)的“fork()”系統(tǒng)調(diào)用。
    的頭像 發(fā)表于 05-22 10:46 ?2822次閱讀
    Linux<b class='flag-5'>中</b>可怕的<b class='flag-5'>fork</b>炸彈介紹