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

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

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

3天內不再提示

SystemVerilog中對于process的多種控制方式

工程師鄧生 ? 來源:杰瑞IC驗證 ? 作者:老黃鴨 ? 2022-09-14 10:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Hello everybody,我們接著上期的Process(1)-產生進程的方式(點擊跳轉)繼續講解SystemVerilog中對于process的多種控制方式。

本期主要給大家講解 named block、wait_order、wait_fork、disable,還有SystemVerilog中的內建類:process類。

1

Namedblock

Block,也就是語句塊,SystemVerilog提供了兩種類型的語句塊,分別是begin…end為代表的順序語句塊,還有以fork…join為代表的并發語句塊。

這兩種block都是工程項目中常用的block,但是,大家可能都不知道block也是可以命名的,就像我們每個人的名字一樣,名字是我們每個人的一個標識。 通過這個標識,我們可以訪問block中的變量、parameter等。

4dc8e81e-337a-11ed-ba43-dac502259ad0.png

圖1

圖1中,initial begin…end中有兩個named block,分別為順序執行的block_a和并發執行的block_b。

我們可以通過在block的開頭和結束編寫上標識名,也可以只在開頭進行編寫;

如果是在block的開頭和結束都有對應的標識名,則這兩標識名必須相同,否則會編譯報錯。

4ded47c2-337a-11ed-ba43-dac502259ad0.png

圖2

從圖1和圖2中我們還可以看到,int類型的變量和parameter的作用范圍都是在各自block范圍內的。

所以,我們要記住,如果需要訪問block中的變量或者parameter,則需要給block進行命名,并且,block中的變量、parameter都是相互獨立的。

2

wait_order、wait fork

SystemVerilog提供了兩大類process的控制方式,分別為wait和disable。

wait中又包含了三小類:wait、wait_order、wait fork。

其中,wait相對簡單,在這就不說了,黃鴨哥只介紹后兩種。

那么,什么是wait_order?

總結一句:wait_order會阻塞等待多個事件的觸發,并且要求這幾個事件間發生的順序和設置的一致。

這句話該怎么理解呢?我們來看下例子:

4e0e15ce-337a-11ed-ba43-dac502259ad0.png

圖3

例子中包含3個event,3個event分別在3個并發進程中進行觸發,event_1在第50個timeunit被觸發,event_2在第30個timeunit被觸發,event_3在第100個timeunit的時候被觸發。

wait_order需要阻塞到3個事件依次按照event_2、event_1、event_3的順序進行觸發后才能往下執行。這就是wait_order的用法。

wait中另外一個重要的用法是wait fork,關于它的用法,總結了三句話:

① wait fork會引起調用進程阻塞,直到它的所有子進程結束;

② wait fork的目的是用來確保所有子進程執行結束;

③ wait fork作用父進程下的子進程,而不包括子進程下的子進程。


4e1da192-337a-11ed-ba43-dac502259ad0.png

圖4

圖4中initial語句塊包含4個子進程,proc_1~proc_4。

其中,proc_4子進程中還含有一個子進程proc_4_1,此進程就是initial語句塊的子進程的子進程。

按照上面黃鴨哥總結的三點來看,wait fork應該只需要等待到第2個子進程:proc_2執行結束,因為wait fork只會作用到子進程,不會作用到子進程的子進程(不論是fork…join,fork…join_any還是fork…join_none產生的進程)。 我們來看下仿真結果驗證下我們的理論:

4e4399b0-337a-11ed-ba43-dac502259ad0.png

圖5 果然,wait fork只等待到proc_2,在第200個timeunit就打印出了“wait fork finish”。

3

disable 、disable fork

上面說完了wait,我們接著說SystemVerilog中第二大類的進程控制方式:disable。

disable語句常用的多種方式包括:disable named_block、disable task_name和disable fork等,調用disable語句將會終止指定的進程。 4e88e8d0-337a-11ed-ba43-dac502259ad0.png

圖6 圖6里調用了disable,終止了對應的帶標識名的block,從仿真截圖中可以看出,block_1并沒有正常結束,而是中途被終止了。

4eabf8fc-337a-11ed-ba43-dac502259ad0.png

圖7

上圖中disable proc_a相當于return,它會直接終止當前的task。 而關于disable fork,這個是我們工程項目中使用的最多的一類,也是最容易踩坑的一類,disable fork的用法我推薦大家學習下Q哥的一篇文章:disable fork,你真的會用嗎?

感興趣的同學可以點進去看看,他在里面有很詳細的描述,黃鴨哥在這里就不多說了。

4

內建類:process

SystemVerilog中內建了一種class,可以對進程進行訪問和控制,此種class就是process,我們先來看下process類的原型:

4ebd6cb8-337a-11ed-ba43-dac502259ad0.png

圖8 process類中定義了一個枚舉變量state,表示當前進程的幾種執行狀態:FINISHED,RUNNING,WAITING,SUSPENDED,KILLED。 另外,還聲明了幾種task和function,我們通過下面的表格來簡單了解下:

Method Describe
self() 獲取當前進程的句柄,process類不能主動的通過new來進行創建,只能通過initial…begin…end,final…begin…end,4個always procedure,3個fork procedure和dynamic process來產生
status() 獲取當前進程的狀態: FINISH: 該進程已經結束了 RUNNING: 該進程正在運行 WAITING: 該進程等待阻塞條件 SUSPENDED:該進程停止了,等待resume,當前狀態只能通過調用process類中的resume函數來解除 KILLED: 該進程被強制終止了
kill() 終止該進程以及該進程的子進程
await() 等待其他進程結束,不能在該進程中,調用該方法,只能是別的進程調用本進程的await()來阻塞本進程
suspend() 掛起該進程
resume() 恢復該進程
srandom(int seed) 設置進程的隨機種子


表1 有人會問了,這么多的method,我們都該記住嗎? 黃鴨哥覺得不是的,只需要記住這里面常用的幾個method:self(),status(),kill()就可以了,我們最后再來看個例子,加深下理解:

4ed8f000-337a-11ed-ba43-dac502259ad0.png

圖9

4f073ff0-337a-11ed-ba43-dac502259ad0.png

圖10

圖9展示了這三個method的用法,通過self()獲取進程的句柄,然后傳遞給定義的兩個process類;

調用status()可以獲取到process_1和process_2進程的執行狀態,在100個timeunit的時候,process_1已經執行結束,而process_2則處于阻塞狀態;

當再次經過100個timeunit時,調用kill()終止了process_2的繼續執行,從這里可以看出,要終止一個進程,除了disable、disable fork之外,還可以調用process.kill()。

總結

process就講到這了,我們再回顧下今天的要點:

1、block可以進行命名,命名之后就可以通過標識名訪問block內部的變量和parameter,還可以通過disable named_block終止此block。

2、進程的兩大控制方式:wait、disable。

3、SystemVerilog內建類,process類,可以通過process類訪問進程和控制進程。

4、三種終止進程的方式:disable、disable fork、process.kill()。



審核編輯:劉清

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

    關注

    14

    文章

    1036

    瀏覽量

    85295
  • Verilog
    +關注

    關注

    29

    文章

    1367

    瀏覽量

    112160

原文標題:SystemVerilog中的Process--- 進程的控制

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    工業機器人4大控制方式,你知道幾種?

    目前市場上使用最多的機器人當屬工業機器人,也是最成熟完善的一種機器人,而工業機器人能得到廣泛應用,得益于它擁有多種控制方式,按作業任務的不同,可主要分為點位控制
    的頭像 發表于 03-13 10:11 ?768次閱讀
    工業機器人4大<b class='flag-5'>控制</b><b class='flag-5'>方式</b>,你知道幾種?

    FinFet Process Flow-源漏極是怎樣形成的

    本文介紹了FinFet Process Flow-源漏極是怎樣形成的。 在FinFET制造工藝,當完成偽柵極結構后,接下來的關鍵步驟是形成源漏極(Source/Drain)。這一階段對于確保器件
    的頭像 發表于 01-17 11:00 ?1118次閱讀
    FinFet <b class='flag-5'>Process</b> Flow-源漏極是怎樣形成的

    FinFet Process Flow—啞柵極的形成

    了FinFET的柵極寬度,這對于控制電流流動至關重要。在22nm及以下技術節點中,由于鰭片尺寸非常小,通常通過SADP(Self-Aligned Double Patterning)或SAQP
    的頭像 發表于 01-14 13:55 ?727次閱讀
    FinFet <b class='flag-5'>Process</b> Flow—啞柵極的形成

    不同控制方式下BUCK電路占空比比較

    在BUCK電路,占空比是一個關鍵參數,它決定了輸出電壓的大小。不同的控制方式會對BUCK電路的占空比產生不同的影響。以下是對幾種常見控制方式
    的頭像 發表于 12-12 17:11 ?1359次閱讀

    伺服電機的控制方式有哪些?舉例分析

    伺服電機是一種高精度的電機,廣泛應用于工業自動化、機器人、精密機械等領域。伺服電機的控制方式多種多樣,可以根據不同的應用場景和需求進行選擇。以下是一些常見的伺服電機控制
    的頭像 發表于 10-22 11:13 ?1385次閱讀

    PLC多種通訊方式匯總學習~

    PLC的通訊功能是其連接設備、控制系統和外部系統的重要組成部分。PLC支持多種通訊方式,本文將講述PLC常見的通訊方式及其優缺點,別再傻傻分不清楚~ 一.點對點通訊(P2P) 點對點通
    的頭像 發表于 09-25 09:09 ?1081次閱讀
    PLC<b class='flag-5'>多種</b>通訊<b class='flag-5'>方式</b>匯總學習~

    工業機器人控制方式有幾種

    工業機器人的控制方式多種多樣,這些方式根據作業任務的不同而有所區別。主要可以分為以下幾種:點位控制方式
    的頭像 發表于 09-04 09:31 ?2384次閱讀

    變頻器的基本原理及控制方式

    交流電機的速度。在傳統的V/F(電壓/頻率)控制方式,變頻器通過調節輸入電源的電壓和頻率來改變電機的運行速度。這種方式可以是開環控制,也可
    的頭像 發表于 08-27 16:08 ?1680次閱讀

    調速器的主要分類和運轉方式

    調速器作為一種用于控制發動機轉速的裝置,在機械設備起著至關重要的作用。其分類和運轉方式多種多樣,以下是對調速器主要分類和運轉方式的詳細解析
    的頭像 發表于 08-25 16:42 ?3434次閱讀

    簡述計算機的I/O控制方式

    計算機的I/O(輸入/輸出)控制方式是計算機系統至關重要的部分,它決定了CPU與外設之間數據交換的方式和效率。隨著計算機技術的不斷發展,I/O控制
    的頭像 發表于 08-20 10:55 ?2318次閱讀

    變頻器控制電機的正反轉與控制方式有哪些?

    變頻器是一種廣泛應用于工業領域的電力調整設備,它可以通過改變電源的頻率來實現電機的速度控制。在許多生產過程,電機的正反轉控制是非常重要的,變頻器能夠通過不同的控制
    的頭像 發表于 08-14 17:04 ?2923次閱讀

    簡述DC變換器的控制方式

    DC變換器,也稱為DC-DC轉換器,是一種將直流電壓轉換為另一種直流電壓的電力電子設備。在DC變換器的設計和應用,控制方式是至關重要的,它決定了變換器的性能、效率和穩定性。以下將詳細描述DC變換器
    的頭像 發表于 08-14 14:37 ?2375次閱讀

    PLC的邏輯運算方式有哪些

    PLC(可編程邏輯控制器)的邏輯運算方式主要包括以下幾種,這些邏輯運算在PLC編程扮演著至關重要的角色,用于實現各種復雜的控制邏輯。
    的頭像 發表于 07-24 16:55 ?1473次閱讀

    智能家居的控制方式有哪些

    智能家居的控制方式多種多樣,這些方式不僅提升了家居生活的便捷性,還使得家居環境更加智能化和個性化。以下是智能家居的主要控制
    的頭像 發表于 07-23 14:30 ?3141次閱讀

    電流型逆變器控制方式有哪幾種

    電流型逆變器是一種將直流電能轉換為交流電能的電力電子裝置,廣泛應用于電力系統、工業控制、新能源發電等領域。電流型逆變器的控制方式對于逆變器的性能、效率和穩定性具有重要影響。本文將詳細介
    的頭像 發表于 07-08 09:17 ?1320次閱讀
    主站蜘蛛池模板: 亚洲三级在线看 | 国产九色在线 | 你懂的网站在线观看网址 | 老色皮| 手机看片福利日韩国产 | 超级狂色而且免费又超好看 | 性刺激的欧美三级视频 | 亚洲欧美一区二区三区四区 | 激情5月婷婷| 高清在线观看视频 | 特色一级黄色片 | 日本天天色 | 国产精品久久久久久久久免费观看 | 国产午夜精品理论片免费观看 | 久久草在线视频播放 | 久久这里只有精品任你色 | 日本大片免费观看视频 | 久久综合久久久久 | freesexvideo性欧美医生护士 | 狠狠干天天操 | 狠狠色丁香久久综合五月 | 色妞女女女女女bbbb | 扒开末成年粉嫩的流白浆视频 | 亚洲青青草原 | 久久久久久青草大香综合精品 | 狠狠色网 | 哟交小u女国产精品视频 | 18岁禁黄色 | 国产精品久久久久久久久齐齐 | 播放个毛片看看 | 成人三级在线观看 | 黄色欧美| 男女爱爱福利 | 22sihu国产精品视频影视资讯 | 女性一级全黄生活片 | 国产高清色视频免费看的网址 | 亚洲成人免费网站 | 女生张开腿让男人桶 | 99久久网站 | 国产小视频在线免费观看 | 全国男人的天堂天堂网 |