chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

1

Namedblock

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

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

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

圖1

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

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

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

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

圖2

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

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

2

wait_order、wait fork

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

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

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

那么,什么是wait_order?

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

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

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

圖3

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

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

wait中另外一個重要的用法是wait fork,關(guān)于它的用法,總結(jié)了三句話:

① wait fork會引起調(diào)用進程阻塞,直到它的所有子進程結(jié)束;

② wait fork的目的是用來確保所有子進程執(zhí)行結(jié)束;

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


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

圖4

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

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

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

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等,調(diào)用disable語句將會終止指定的進程。 4e88e8d0-337a-11ed-ba43-dac502259ad0.png

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

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

圖7

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

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

4

內(nèi)建類:process

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

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

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

Method Describe
self() 獲取當前進程的句柄,process類不能主動的通過new來進行創(chuàng)建,只能通過initial…begin…end,final…begin…end,4個always procedure,3個fork procedure和dynamic process來產(chǎn)生
status() 獲取當前進程的狀態(tài): FINISH: 該進程已經(jīng)結(jié)束了 RUNNING: 該進程正在運行 WAITING: 該進程等待阻塞條件 SUSPENDED:該進程停止了,等待resume,當前狀態(tài)只能通過調(diào)用process類中的resume函數(shù)來解除 KILLED: 該進程被強制終止了
kill() 終止該進程以及該進程的子進程
await() 等待其他進程結(jié)束,不能在該進程中,調(diào)用該方法,只能是別的進程調(diào)用本進程的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類;

調(diào)用status()可以獲取到process_1和process_2進程的執(zhí)行狀態(tài),在100個timeunit的時候,process_1已經(jīng)執(zhí)行結(jié)束,而process_2則處于阻塞狀態(tài);

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

總結(jié)

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

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

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

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

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



審核編輯:劉清

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

    關(guān)注

    14

    文章

    1049

    瀏覽量

    86904
  • Verilog
    +關(guān)注

    關(guān)注

    30

    文章

    1373

    瀏覽量

    114331

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    博世GTM IP模塊在車載系統(tǒng)的具體實現(xiàn)方式與優(yōu)勢

    在汽車電子系統(tǒng),如何充分發(fā)揮 GTM IP的功能,以滿足復雜的系統(tǒng)級應用場景,是用戶實現(xiàn)高效控制與精確響應的關(guān)鍵。本文將聚焦幾個典型且核心的應用實例,探討GTM IP在車載系統(tǒng)的具體實現(xiàn)
    的頭像 發(fā)表于 12-30 17:36 ?529次閱讀
    博世GTM IP模塊在車載系統(tǒng)<b class='flag-5'>中</b>的具體實現(xiàn)<b class='flag-5'>方式</b>與優(yōu)勢

    BLDC無位置傳感器控制方式介紹

    BLDC根據(jù)轉(zhuǎn)子的位置進行換向控制,而轉(zhuǎn)子位置要靠位置傳感器獲取,那么這期就為大家介紹BLDC的無位置傳感器控制方式。
    的頭像 發(fā)表于 12-30 07:55 ?9597次閱讀
    BLDC無位置傳感器<b class='flag-5'>控制</b><b class='flag-5'>方式</b>介紹

    LED觸摸控制PCBA方案開發(fā) | 燈控觸摸方案開發(fā)

    的技術(shù)選擇,適用于多種照明場景。簡潔操作,豐富效果這款單鍵LED觸摸控制板,通過一個按鍵即可實現(xiàn)多種交互方式(單擊、雙擊、長按),輕松控制L
    的頭像 發(fā)表于 12-10 17:43 ?268次閱讀
    LED觸摸<b class='flag-5'>控制</b>PCBA方案開發(fā) | 燈控觸摸方案開發(fā)

    伺服電機的控制方式簡述

    伺服電機作為自動化控制系統(tǒng)的核心執(zhí)行元件,其控制方式直接決定了設備的動態(tài)響應、定位精度和運行效率。隨著工業(yè)4.0和智能制造的發(fā)展,伺服控制技術(shù)已從傳統(tǒng)的模擬量
    的頭像 發(fā)表于 12-01 07:37 ?571次閱讀
    伺服電機的<b class='flag-5'>控制</b><b class='flag-5'>方式</b>簡述

    串口通信有哪些方式

    串口通信(Serial Communication)是一種通過串行方式逐位傳輸數(shù)據(jù)的通信方式,廣泛應用于嵌入式系統(tǒng)、工業(yè)控制、儀器儀表等領(lǐng)域。其通信方式可根據(jù)不同的分類標準劃分為
    的頭像 發(fā)表于 09-28 18:02 ?974次閱讀

    如何在LTspice添加電壓控制開關(guān)

    電壓控制開關(guān)是 LTspice 的基本電路元件,能夠以簡潔的方式在電路實現(xiàn)開路或短路行為,并支持在仿真過程動態(tài)切換。完善原理圖后,設計人員最終可能需要采用更精確的FET或開關(guān)模型,
    的頭像 發(fā)表于 09-11 15:50 ?5038次閱讀
    如何在LTspice<b class='flag-5'>中</b>添加電壓<b class='flag-5'>控制</b>開關(guān)

    MTB對于RADIUS服務器是否支持?

    想詢問MTB是否支持配置AP的RADIUS服務器,以及STA是否支持企業(yè)認證的加密方式。
    發(fā)表于 07-08 08:10

    芯資訊|廣州唯創(chuàng)電子WT2003H語音芯片控制方式全解析

    在智能硬件開發(fā),語音芯片的控制方式直接影響設備的功能設計與用戶體驗。廣州唯創(chuàng)電子WT2003H系列語音芯片憑借其多樣化的控制接口和靈活的交互設計,成為工業(yè)設備、智能家居及新能源汽車等
    的頭像 發(fā)表于 05-28 09:08 ?625次閱讀
    芯資訊|廣州唯創(chuàng)電子WT2003H語音芯片<b class='flag-5'>控制</b><b class='flag-5'>方式</b>全解析

    如何合理地選用變頻器控制方式

    合理地選用變頻器的控制方式,需要根據(jù)實際的應用場景、負載特性以及控制需求等多方面因素進行綜合考慮。以下是一些具體的選用原則和建議: 一、應用場景與控制需求 1. 節(jié)能需求: ? ?●
    的頭像 發(fā)表于 04-28 07:36 ?827次閱讀
    如何合理地選用變頻器<b class='flag-5'>控制</b><b class='flag-5'>方式</b>?

    不同設備電源濾波器接線方式的差異

    本文闡述了電源濾波器在不同設備的重要性,并針對家用電器、工業(yè)設備、醫(yī)療設備以及通信設備分別介紹了其電源濾波器的接線方式差異。在不同設備,電源濾波器的接線方式存在顯著差異,這些差異反
    的頭像 發(fā)表于 03-28 17:16 ?856次閱讀
    不同設備<b class='flag-5'>中</b>電源濾波器接線<b class='flag-5'>方式</b>的差異

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

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

    請問可以直接參考DLP4500軟件源碼的調(diào)用方式進行控制嗎?需要添加哪些庫文件嗎?

    1. 查看了DLP4500軟件是基于Qt Creator創(chuàng)建的,我在VS已經(jīng)創(chuàng)建了Qt GUI Application的工程,我想在我的工程控制投影儀投射圖片,請問可以直接參考DLP4500
    發(fā)表于 03-03 08:23

    Discovery4100圖像控制,是通過DMD微鏡的開關(guān)方式還是調(diào)整灰度的方式進行圖像控制的?

    您好,我們購買一套VIALUX公司的V-7001,用的就是discovery 4100的 芯片,據(jù)銷售人員跟我們介紹,控制圖像的方式是改變灰度(微鏡的反射率,想了解一下是否可以通過微鏡的開關(guān)去實現(xiàn)
    發(fā)表于 02-26 07:24

    3D打印XPR技術(shù)對于打印效果的影響?

    我是3D打印設備的制造商,我想具體了解下3D打印XPR技術(shù)對于打印效果的影響? 或者是否能提供對應的專利信息以備查閱
    發(fā)表于 02-18 07:59

    BLDC控制中都有哪些PWM調(diào)制方式?

    做BLDC電機控制時,有很多PWM調(diào)制方式,比較常見的是HPWM_LON,也有LPWM_HON,還有HLPWM等,不同的PWM調(diào)制方式有對應的適用場景,歡迎大家留言討論!
    發(fā)表于 02-07 10:20