RM新时代网站-首页

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

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

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

Systemverilog event的示例

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

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

我們可以在一個(gè)進(jìn)程trigger這個(gè)event,同時(shí)在另外一個(gè)進(jìn)程等待這個(gè)event(邊沿敏感的@和電平敏感的wait)。
event的觸發(fā)語(yǔ)法非常簡(jiǎn)單,那就是“->”運(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”中,我們聲明了一個(gè)名為“etrig”的event。

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

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

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

wait (eventName.triggered);

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

下面是另一個(gè)例子,展示多個(gè)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

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

event序列:wait_order ()

在SystemVerilog中我們還可以使用語(yǔ)法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

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

etrig1 - > etrig2- > etrig1。

審核編輯:湯梓紅

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

    關(guān)注

    28

    文章

    1351

    瀏覽量

    110074
  • System
    +關(guān)注

    關(guān)注

    0

    文章

    165

    瀏覽量

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

    關(guān)注

    0

    文章

    236

    瀏覽量

    13618

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    [啟芯公開(kāi)課] SystemVerilog for Verification

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

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

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

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

    在某大型科技公司的招聘網(wǎng)站上看到招聘邏輯硬件工程師需要掌握SystemVerilog語(yǔ)言,感覺(jué)SystemVerilog語(yǔ)言是用于ASIC驗(yàn)證的,那么做FPGA工程師有沒(méi)有必要掌握SystemVerilog語(yǔ)言呢?
    發(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注冊(cè)事件處理程序失敗是何原因?

    最新版本中的 WIfi 配置管理器示例使用esp_event_handler_register來(lái)注冊(cè)事件處理程序。但是事件循環(huán) api 參考文檔提到這個(gè)函數(shù)現(xiàn)在已經(jīng)過(guò)時(shí)了,應(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的斷言手冊(cè)

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

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

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

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

    手冊(cè)的這一部分探討了使用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)計(jì)的
    發(fā)表于 04-11 11:09 ?4次下載

    SystemVerilog中枚舉類型的使用建議

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

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

    我們?cè)诠ぷ髦谐3?huì)針對(duì)數(shù)組施加各式的約束,下面列舉一下有趣的Systemverilog數(shù)組約束示例。
    的頭像 發(fā)表于 03-08 13:12 ?965次閱讀

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

    我們?cè)诠ぷ髦谐3?huì)針對(duì)數(shù)組施加各式的約束,下面列舉一下有趣的**Systemverilog數(shù)組約束**示例
    的頭像 發(fā)表于 05-30 11:13 ?787次閱讀

    SystemVerilog中的$timeformat是做什么的?

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