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

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

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

Systemverilog event的示例

芯片驗(yàn)證工程師 ? 來源: 芯片驗(yàn)證工程師 ? 作者:芯片驗(yàn)證工程師 ? 2022-10-17 10:21 ? 次閱讀

event是SystemVerilog語言中的一個強(qiáng)大特性,可以支持多個并發(fā)進(jìn)程之間的同步。

我們可以在一個進(jìn)程trigger這個event,同時在另外一個進(jìn)程等待這個event(邊沿敏感的@和電平敏感的wait)。
event的觸發(fā)語法非常簡單,那就是“->”運(yùn)算符。

下面是Systemverilog event的示例

module et;
event etrig;
initial begin
#10;
-> etrig; //trigger named event 'etrig'
#10;
-> etrig; //trigger named event 'etrig'
end
always @(etrig) //execute when event etrig is triggered
//edge sensitive
$display("@ etrig occurred at time %0t",$time);
initial begin
wait (etrig.triggered) ; //level sensitive 'wait' on the 
//event 'etrig'
$display("'wait' etrig occurred at time %0t",$time);
end
endmodule

仿真log:

@ etrig occurred at time 10
'wait' etrig occurred at time 10
@ etrig occurred at time 20
 V C S S i m u l a t i o n R e p o r t

在module“et”中,我們聲明了一個名為“etrig”的event。

在時間10觸發(fā)它,然后在時間20觸發(fā)它。

“always”語句塊等待“etrig”上的觸發(fā)器,這是邊沿敏感的。像仿真log顯示的那樣,打印了2次邊沿觸發(fā)。

該module還展示了如何使用電平敏感的被觸發(fā)方式(wait)

wait (eventName.triggered);

wait(eventName.triggered)相比@的一個特點(diǎn)是不關(guān)心wait和"->"之間的執(zhí)行順序。

下面是另一個例子,展示多個event事件并行觸發(fā)控制:

module et;
 event e1, e2, e3;
 initial begin
 #10;
 fork
 -> e1;
 -> e2;
 -> e3;
 join
 end
 always @(e1) 
 $display("event e1 triggered at time %0t",$time);
 always @(e2) 
 $display("event e2 triggered at time %0t",$time);
 always @(e3) 
 $display("event e3 triggered at time %0t",$time);
 endmodule

仿真log:

event e1 triggered at time 10
event e2 triggered at time 10
event e3 triggered at time 10
 V C S S i m u l a t i o n R e p o r t

在上面的例子中,會并行地觸發(fā)3個event(e1、e2、e3),分別控制3個獨(dú)立的進(jìn)程)。從仿真log可以看出,3個event被同時觸發(fā)。

event序列:wait_order ()

在SystemVerilog中我們還可以使用語法wait_order等待事件以特定的順序觸發(fā)。

例如,wait_order (eveA, eveB, eveC)等待事件按照順序eveA -> eveB ->eveC觸發(fā)。

module et;
 event etrig1, etrig2;
 initial begin
 #10;
 -> etrig1; //trigger named event 'etrig1'
 #10;
 -> etrig2; //trigger named event 'etrig2'
 #10;
 -> etrig1; //trigger named event 'etrig1' 
 #100;
 end
 initial begin
 wait_order (etrig1 , etrig2); //OK
 $display("'wait' etrig1, etrig2 occurred at time 
%0t",$time);
 wait_order (etrig2 , etrig1); //OK
 $display("'wait' etrig2, etrig1 occurred at time 
%0t",$time);
 end
 endmodule

Simulation log:

'wait' etrig1, etrig2 occurred at time 20
'wait' etrig2, etrig1 occurred at time 30
 V C S S i m u l a t i o n R e p o r t

在上面的例子中,在時間10時觸發(fā)etrig1,然后在時間20時觸發(fā)etrig2,然后在時間30再次etrig1。所以,事件的順序是

etrig1 - > etrig2- > etrig1。

審核編輯:湯梓紅

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

    關(guān)注

    28

    文章

    1333

    瀏覽量

    109713
  • System
    +關(guān)注

    關(guān)注

    0

    文章

    163

    瀏覽量

    36744
  • 數(shù)據(jù)類型
    +關(guān)注

    關(guān)注

    0

    文章

    236

    瀏覽量

    13567

原文標(biāo)題:SystemVerilog中的event數(shù)據(jù)類型

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

收藏 人收藏

    評論

    相關(guān)推薦

    [啟芯公開課] SystemVerilog for Verification

    學(xué)快速發(fā)展,這些趨勢你了解嗎?SystemVerilog + VM是目前的主流,在未來也將被大量采用,這些語言和方法學(xué),你熟練掌握了嗎?對SoC芯片設(shè)計驗(yàn)證感興趣的朋友,可以關(guān)注啟芯工作室推出的SoC芯片
    發(fā)表于 06-10 09:25

    systemverilog學(xué)習(xí)教程

    systemverilog的一些基本語法以及和verilog語言之間的區(qū)別。
    發(fā)表于 04-01 14:24

    做FPGA工程師需要掌握SystemVerilog嗎?

    在某大型科技公司的招聘網(wǎng)站上看到招聘邏輯硬件工程師需要掌握SystemVerilog語言,感覺SystemVerilog語言是用于ASIC驗(yàn)證的,那么做FPGA工程師有沒有必要掌握SystemVerilog語言呢?
    發(fā)表于 08-02 20:30

    SystemVerilog有哪些標(biāo)準(zhǔn)?

    SystemVerilog有哪些標(biāo)準(zhǔn)?
    發(fā)表于 06-21 08:09

    wifi配置管理器示例使用esp_event_handler_register注冊事件處理程序失敗是何原因?

    最新版本中的 WIfi 配置管理器示例使用esp_event_handler_register來注冊事件處理程序。但是事件循環(huán) api 參考文檔提到這個函數(shù)現(xiàn)在已經(jīng)過時了,應(yīng)該用esp_event_handler_instanc
    發(fā)表于 03-01 06:52

    SystemVerilog Assertion Handbo

    SystemVerilog Assertion Handbook1 ROLE OF SYSTEMVERILOG ASSERTIONSIN A VERIFICATION METHODOLOGY
    發(fā)表于 07-22 14:08 ?188次下載

    SystemVerilog的斷言手冊

    SystemVerilog Assertion Handbook1 ROLE OF SYSTEMVERILOG ASSERTIONSIN A VERIFICATION METHODOLOGY
    發(fā)表于 07-22 14:12 ?20次下載

    基于事件結(jié)構(gòu)的SystemVerilog指稱語義

    本文利用形式化的方法對SystemVerilog的指稱語義進(jìn)行研究,采用EBES(extendedbundle event structure)作為抽象模型,以便更好的描述SystemVerilog真并發(fā)的特點(diǎn)。我們的主要工作是
    發(fā)表于 12-22 14:01 ?12次下載

    SystemVerilog的正式驗(yàn)證和混合驗(yàn)證

    手冊的這一部分探討了使用SystemVerilog進(jìn)行驗(yàn)證,然后查看了使用SystemVerilog的優(yōu)點(diǎn)和缺點(diǎn)。
    發(fā)表于 03-29 10:32 ?24次下載

    ThreadX(八)------事件集Event

    事件集Event
    發(fā)表于 12-28 19:26 ?9次下載
    ThreadX(八)------事件集<b class='flag-5'>Event</b>

    華為游戲服務(wù)示例代碼教程案例

    : 存檔特性的示例代碼。 event: 事件特性的示例代碼。 gamesummary: 游戲基本信息的示例代碼。 playerstats: 玩家信息統(tǒng)計的
    發(fā)表于 04-11 11:09 ?4次下載

    SystemVerilog中枚舉類型的使用建議

    SystemVerilog中枚舉類型雖然屬于一種“強(qiáng)類型”,但是枚舉類型還是提供了一些“不正經(jīng)”的用法可以實(shí)現(xiàn)一些很常見的功能,本文將示例一些在枚舉類型使用過程中的一些“不正經(jīng)”用法,并給出一些使用建議。
    的頭像 發(fā)表于 09-01 14:20 ?1513次閱讀

    一些有趣的數(shù)組相關(guān)的SystemVerilog約束

    我們在工作中常常會針對數(shù)組施加各式的約束,下面列舉一下有趣的Systemverilog數(shù)組約束示例。
    的頭像 發(fā)表于 03-08 13:12 ?832次閱讀

    一些有趣的數(shù)組相關(guān)的SystemVerilog約束

    我們在工作中常常會針對數(shù)組施加各式的約束,下面列舉一下有趣的**Systemverilog數(shù)組約束**示例
    的頭像 發(fā)表于 05-30 11:13 ?638次閱讀

    SystemVerilog中的$timeformat是做什么的?

    SystemVerilog中,輸出信息顯示時間時,經(jīng)常會在輸出信息格式中指定“%t”格式符,一般情況下“%t”輸出的格式都是固定的,但是這樣固定的輸出顯示的時間可能有時會讓用戶看起來感覺比較詫異,例如下面的示例
    的頭像 發(fā)表于 08-16 09:41 ?1490次閱讀
    <b class='flag-5'>SystemVerilog</b>中的$timeformat是做什么的?