色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

System Verilog中的Mailboxes

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

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

數據可以由一個進程發送,由另一個進程獲取,顧名思義就像是郵箱一樣。

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

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

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

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

郵箱聲明的語法是:

mailbox mbox;

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

1、new ()
創建一個mailbox,函數原型是:

functionnew()(intbound=0);

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

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

functionintnum();

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

task put (singular message)

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

functiontry_put(singularmessage);

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

taskget(refsingularmessage);

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

function int try_get( ) (ref singular expression)

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

taskpeek(refsingularmessage);

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

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來看并不存在兩個進程之間的沖突。

參數化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

審核編輯:湯梓紅

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

    關注

    28

    文章

    1351

    瀏覽量

    110264
  • System
    +關注

    關注

    0

    文章

    165

    瀏覽量

    37022
  • 進程
    +關注

    關注

    0

    文章

    204

    瀏覽量

    13974

原文標題: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
    發表于 11-27 14:20

    System Verilog常見問題及語言參考手冊規范

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

    System Verilog問題和語言參考手冊規范

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

    求大佬分享一些System Verilog的學習經驗

    求大佬分享一些System Verilog的學習經驗
    發表于 06-21 06:29

    Verilog Digital System Design

    This book is on the IEEE Standard Hardware Description Languagebased on the Verilog® Hardware
    發表于 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 這三語言的各自特點和區別 As the number of enhancements
    發表于 01-17 11:32 ?0次下載

    基于System Verilog的隨機化激勵

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

    FPGA CPLDVerilog設計小技巧

    FPGA CPLDVerilog設計小技巧(肇慶理士電源技術有限)-FPGA CPLDVerilog設計小技巧? ? ? ? ? ? ? ? ?
    發表于 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),并對其進行了擴展,包括擴充
    的頭像 發表于 09-28 17:12 ?3587次閱讀

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

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

    淺談System Verilog的DPI機制

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

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

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

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

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

    system verilog語言簡介

    ICer需要System Verilog語言得加成,這是ICer深度的表現。
    發表于 11-01 10:44 ?0次下載
    主站蜘蛛池模板: 色中色最新地址登陆 | 性满足久久久久久久久 | 在教室伦流澡到高潮H免费视频 | 久久AAAA片一区二区 | 亚洲绝美精品一区二区 | 日本高清在线一区二区三区 | 99在线精品免费视频 | 亚洲高清国产拍精品动图 | 欧美一级久久久久久久大 | 一本大道熟女人妻中文字幕在线 | 中文无码字慕在线观看 | 欧美特级另类xxx | 浪货嗯啊趴下NP粗口黄暴 | 国产精品一区二区免费 | 成3d漫二区三区四区 | 久久永久免费视频 | 性饥渴姓交HDSEX | 99RE久久精品国产 | georgielyall装修工 | 在线观看免费国产成人软件 | 久久99国产视频 | 北条麻妃夫の友人196 | 热中文热国产热综合 | 双性将军粗壮H灌满怀孕 | 精品国产免费第一区二区 | 免费被靠视频动漫 | 打卡中国各地奋斗第一线 | 精品国产在线观看福利 | 国产美女裸身网站免费观看视频 | 国产精品久久久久激情影院 | 日韩a在线看免费观看视频 日韩a视频在线观看 | 国产成人国产在线观看入口 | 青青草伊人久久 | 自拍视频亚洲综合在线精品 | 天美传媒 免费观看 | 夜色爽爽爽久久精品日韩 | 亚洲 小说 欧美 激情 另类 | 拔萝卜视频免费看高清 | 高清一区二区亚洲欧美日韩 | 青青草国产精品久久 | 亚洲色欲H网在线观看 |