在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

System Verilog中的Mailboxes

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

Mailboxes是進程間通信的另一種方式,但是比semaphores更強大,因為Mailboxes可以在兩個進程之間交換消息。

數(shù)據(jù)可以由一個進程發(fā)送,由另一個進程獲取,顧名思義就像是郵箱一樣。

獲取郵箱中信件的方式有兩種:
1、一直等待信件的到來(blocking
2、如果沒有信件就先去干其他事情,過一會兒再來看是否信件到了。(non-blocking

從Mailboxes中可以存放信件規(guī)模的角度,Mailboxes可以大致分為bounded Mailboxesunbounded Mailboxes

bounded Mailboxes就是指Mailboxes中能夠容納有限數(shù)量的信件,如果在Mailboxes滿時寫入會阻塞住,直到不滿。unbounded Mailboxes可以容納無限數(shù)量的信件。

Mailboxes也可以聲明為只能存放某一類的信件。默認情況下,Mailboxes是無類型的,這意味著Mailboxes可以發(fā)送和接收任何不同類型的信件。

郵箱聲明的語法是:

mailbox mbox;

Mailbox是一個SystemVerilog內置類,自然也提供了許多內置的方法:

1、new ()
創(chuàng)建一個mailbox,函數(shù)原型是:

functionnew()(intbound=0);

會返回一個mailbox句柄,默認bound是0,表示unbounded mailbox。

2、num ()
返回mailbox中信件的個數(shù),函數(shù)原型是:

functionintnum();

3、put ()
blocking put(按照FIFO順序),如果mailbox滿了會阻塞進程,函數(shù)原型是:

task put (singular message)

4、try_put ( )
non-blocking put(按照FIFO順序),如果mailbox滿了不會阻塞進程,會返回值0。函數(shù)原型是:

functiontry_put(singularmessage);

5、get ()
blocking get(按照FIFO順序),如果mailbox是空的,會一直blocking進程。函數(shù)原型是:

taskget(refsingularmessage);

6、try_get ( )
non-blocking get(按照FIFO順序),如果mailbox是空的,不會阻塞進程,會返回值0。函數(shù)原型是:

function int try_get( ) (ref singular expression)

7、peek ( )
peek()不同于get(),peek會復制mailbox中的信件,而不會將信件從mailbox中刪除。函數(shù)原型是:

taskpeek(refsingularmessage);

如果mailbox是空的,會一直block進程。
8、try_peek (),不過多言說,non-block peek。函數(shù)原型是:

function int try_peek ( ref singular expression)

示例:

module mB;
 bit [7:0] mem [0:3];
 int i, j, data;
 mailbox mbox; //declare a mailbox
 
 initial begin
 mbox = new (4); //create a bounded mailbox
 
 fork
 DMA_write;
 CPU_read; 
 join 
 end
 
 task DMA_write; 
 $display($stime,,, "DMA puts Mem Data into mbox");
 for (i=0; i < 4; i++) begin
 mem[i] = $urandom;
 $display($stime,,, "DMA WRITE[%0d] = %0d",i,mem[i]);
 mbox.put(mem[i]); //put data into the mailbox
 end
 endtask
 
 task CPU_read;
 $display($stime,,, "CPU retrieves Mem Data from mbox");
 for (j=0; j < 4; j++) begin
 mbox.get(data); //retrieve data from the mailbox
 $display($stime,,, "CPU READ[%0d] = %0d",i,data);
 end 
 endtask
 
endmodule

仿真log:

 0 DMA puts Mem Data into mbox
 0 DMA WRITE[0] = 36
 0 DMA WRITE[1] = 129
 0 DMA WRITE[2] = 9
 0 DMA WRITE[3] = 99
 0 CPU retrieves Mem Data from mbox
 0 CPU READ[0] = 36
 0 CPU READ[1] = 129
 0 CPU READ[2] = 9
 0 CPU READ[3] = 99
 V C S S i m u l a t i o n R e p o r t

上面這個例子首先聲明了一個mailbox “mbox”,然后例化深度為4。

后面兩個并行的進程“DMA_write”和“CPU_read” 。從打印log來看并不存在兩個進程之間的沖突。

參數(shù)化Mailbox

如果希望在mailbox put和get時進行類型檢查,可以顯式地聲明mailbox的類型。

module pMailbox; 
 typedef mailbox #(string) string_mbox;
 string s;
 
 initial begin
 static string_mbox SMbox = new;
 s = "hi";
 SMbox.put( s );
 $display("String 'put' is %s", s);
 SMbox.get( s ); 
 $display("String 'get' is %s", s);
 end
endmodule

仿真log:

String 'put' is hi
String 'get' is hi

審核編輯:湯梓紅

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

    關注

    29

    文章

    1366

    瀏覽量

    111998
  • System
    +關注

    關注

    0

    文章

    166

    瀏覽量

    37645
  • 進程
    +關注

    關注

    0

    文章

    207

    瀏覽量

    14241

原文標題:System Verilog中的Mailboxes

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Modelsim XE是否支持System Verilog

    information:-1.Does itsupport System verilog forverification?2. Code coverage support.3.Assertion support.Whichversionof Modelsim XE su
    發(fā)表于 11-27 14:20

    System Verilog常見問題及語言參考手冊規(guī)范

    本文討論了一些System Verilog問題以及相關的SystemVerilog 語言參考手冊規(guī)范。正確理解這些規(guī)格將有助于System Verilog用戶避免意外的模擬結果。
    發(fā)表于 12-11 07:19

    System Verilog問題和語言參考手冊規(guī)范

    本文討論了一些System Verilog問題以及相關的SystemVerilog 語言參考手冊規(guī)范。正確理解這些規(guī)格將有助于System Verilog用戶避免意外的模擬結果。
    發(fā)表于 12-24 07:07

    求大佬分享一些System Verilog的學習經(jīng)驗

    求大佬分享一些System Verilog的學習經(jīng)驗
    發(fā)表于 06-21 06:29

    Verilog Digital System Design

    This book is on the IEEE Standard Hardware Description Languagebased on the Verilog® Hardware
    發(fā)表于 07-23 08:59 ?0次下載
    <b class='flag-5'>Verilog</b> Digital <b class='flag-5'>System</b> Design

    VHDL,Verilog,System verilog比較

    本文簡單討論并總結了VHDL、VerilogSystem verilog 這三語言的各自特點和區(qū)別 As the number of enhancements
    發(fā)表于 01-17 11:32 ?0次下載

    基于System Verilog的隨機化激勵

    基于System Verilog的隨機化激勵
    發(fā)表于 10-31 09:25 ?9次下載
    基于<b class='flag-5'>System</b> <b class='flag-5'>Verilog</b><b class='flag-5'>中</b>的隨機化激勵

    基于System Verilog的可重用驗證平臺設計及驗證結果分析

    采用System Verilog語言設計了一種具有層次化結構的可重用驗證平臺,該平臺能夠產(chǎn)生各種隨機、定向、錯誤測試向量,并提供功能覆蓋率計算。將驗證平臺在Synopsys公司的VCS仿真工具上運行
    發(fā)表于 01-12 11:28 ?2930次閱讀
    基于<b class='flag-5'>System</b> <b class='flag-5'>Verilog</b>的可重用驗證平臺設計及驗證結果分析

    FPGA CPLDVerilog設計小技巧

    FPGA CPLDVerilog設計小技巧(肇慶理士電源技術有限)-FPGA CPLDVerilog設計小技巧? ? ? ? ? ? ? ? ?
    發(fā)表于 09-18 16:49 ?37次下載
    FPGA CPLD<b class='flag-5'>中</b>的<b class='flag-5'>Verilog</b>設計小技巧

    System Verilogverilog的對比

    SystemVerilog語言簡介 SystemVerilog是一種硬件描述和驗證語言(HDVL),它基于IEEE1364-2001 Verilog硬件描述語言(HDL),并對其進行了擴展,包括擴充
    的頭像 發(fā)表于 09-28 17:12 ?4006次閱讀

    學會這些System Verilog方法,芯片驗證入門沒問題

    一個掌握Verilog語言的工程師初次看SystemVerilog都會有這樣的感受,這就是Verilog啊,很容易啊,So easy啊。沒錯,確實是這樣,System Verilog
    的頭像 發(fā)表于 12-09 15:08 ?4781次閱讀

    淺談System Verilog的DPI機制

    System Verilog(SV)把其他編程語言統(tǒng)一成為外語,F(xiàn)oreign Programming Language(FPL)。
    的頭像 發(fā)表于 05-23 15:39 ?2868次閱讀
    淺談<b class='flag-5'>System</b> <b class='flag-5'>Verilog</b>的DPI機制

    談談Verilog/System Verilog和C的幾種交互模式

    PLI全稱 Program Language Interface,程序員可以通過PLI在verilog調用C函數(shù),這種訪問是雙向的。
    的頭像 發(fā)表于 06-01 17:32 ?2183次閱讀
    談談<b class='flag-5'>Verilog</b>/<b class='flag-5'>System</b> <b class='flag-5'>Verilog</b>和C的幾種交互模式

    System Verilog的概念以及與Verilog的對比

    的端口定義完成后,我們也很難改變端口的配置。 另外,一個設計的許多模塊往往具有相同的端口定義,在Verilog,我們必須在每個模塊中進行相同的定義,這為我們增加了無謂的工作量。
    的頭像 發(fā)表于 06-12 10:05 ?1881次閱讀

    system verilog語言簡介

    ICer需要System Verilog語言得加成,這是ICer深度的表現(xiàn)。
    發(fā)表于 11-01 10:44 ?0次下載
    主站蜘蛛池模板: 夜夜狠| 色综合天天综久久久噜噜噜久久〔 | 亚洲涩色| 成人窝窝午夜看片 | 亚洲精品国产成人 | 性欧美高清精品videos | 欧美五月婷婷 | 8000av在线| 国产精品福利一区二区亚瑟 | 色多多免费视频观看区一区 | 美女黄18以下禁止观看 | 日本黄页网站在线观看 | 成 人 黄 色视频免费播放 | tom影院亚洲国产一区二区 | 国产欧美乱码在线看 | 日韩特级 | 成人在线一区二区三区 | 四虎国产永久在线精品免费观看 | 亚洲欧美视频一区二区 | 日韩a无吗一区二区三区 | 黄篇网站在线观看 | 色色激情网 | 拍拍拍拍拍拍拍无挡大全免费 | 国产网站在线播放 | 亚洲一卡二卡三卡 | 四虎www. | www深夜视频在线观看高清 | 天天av天天翘天天综合网 | 天天看天天碰 | 我被黑人巨大开嫩苞在线观看 | 91大神视频在线播放 | 日日夜夜操操 | 婷婷网五月天天综合天天爱 | 一级做a爰片久久毛片一 | 婷婷免费视频 | 97人摸人人澡人人人超一碰 | 午夜视频免费看 | 国产yw855.c免费视频 | 国产亚洲一区二区三区在线 | 日本19xxxxxxxxx69 日本68xxxxxxxxx59 | 在线观看国产一级强片 |