Hello everybody,我們接著上期的Process(1)-產(chǎ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也是可以命名的,就像我們每個人的名字一樣,名字是我們每個人的一個標(biāo)識。 通過這個標(biāo)識,我們可以訪問block中的變量、parameter等。

圖1
圖1中,initial begin…end中有兩個named block,分別為順序執(zhí)行的block_a和并發(fā)執(zhí)行的block_b。
我們可以通過在block的開頭和結(jié)束編寫上標(biāo)識名,也可以只在開頭進行編寫;
如果是在block的開頭和結(jié)束都有對應(yīng)的標(biāo)識名,則這兩標(biāo)識名必須相同,否則會編譯報錯。

圖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ā)生的順序和設(shè)置的一致。 這句話該怎么理解呢?我們來看下例子:

圖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作用父進程下的子進程,而不包括子進程下的子進程。

圖4
圖4中initial語句塊包含4個子進程,proc_1~proc_4。
其中,proc_4子進程中還含有一個子進程proc_4_1,此進程就是initial語句塊的子進程的子進程。
按照上面黃鴨哥總結(jié)的三點來看,wait fork應(yīng)該只需要等待到第2個子進程:proc_2執(zhí)行結(jié)束,因為wait fork只會作用到子進程,不會作用到子進程的子進程(不論是fork…join,fork…join_any還是fork…join_none產(chǎn)生的進程)。
我們來看下仿真結(jié)果驗證下我們的理論:

圖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語句將會終止指定的進程。

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

圖7
上圖中disable proc_a相當(dāng)于return,它會直接終止當(dāng)前的task。
而關(guān)于disable fork,這個是我們工程項目中使用的最多的一類,也是最容易踩坑的一類,disable fork的用法我推薦大家學(xué)習(xí)下Q哥的一篇文章:disable fork,你真的會用嗎?
感興趣的同學(xué)可以點進去看看,他在里面有很詳細(xì)的描述,黃鴨哥在這里就不多說了。
4
內(nèi)建類:process
SystemVerilog中內(nèi)建了一種class,可以對進程進行訪問和控制,此種class就是process,我們先來看下process類的原型:

圖8
process類中定義了一個枚舉變量state,表示當(dāng)前進程的幾種執(zhí)行狀態(tài):FINISHED,RUNNING,WAITING,SUSPENDED,KILLED。
另外,還聲明了幾種task和function,我們通過下面的表格來簡單了解下:
表1
有人會問了,這么多的method,我們都該記住嗎?
黃鴨哥覺得不是的,只需要記住這里面常用的幾個method:self(),status(),kill()就可以了,我們最后再來看個例子,加深下理解:
| Method | Describe |
| self() | 獲取當(dāng)前進程的句柄,process類不能主動的通過new來進行創(chuàng)建,只能通過initial…begin…end,final…begin…end,4個always procedure,3個fork procedure和dynamic process來產(chǎn)生 |
| status() | 獲取當(dāng)前進程的狀態(tài):FINISH: 該進程已經(jīng)結(jié)束了RUNNING: 該進程正在運行WAITING: 該進程等待阻塞條件SUSPENDED:該進程停止了,等待resume,當(dāng)前狀態(tài)只能通過調(diào)用process類中的resume函數(shù)來解除KILLED: 該進程被強制終止了 |
| kill() | 終止該進程以及該進程的子進程 |
| await() | 等待其他進程結(jié)束,不能在該進程中,調(diào)用該方法,只能是別的進程調(diào)用本進程的await()來阻塞本進程 |
| suspend() | 掛起該進程 |
| resume() | 恢復(fù)該進程 |
| srandom(int seed) | 設(shè)置進程的隨機種子 |

圖9

圖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);
當(dāng)再次經(jīng)過100個timeunit時,調(diào)用kill()終止了process_2的繼續(xù)執(zhí)行,從這里可以看出,要終止一個進程,除了disable、disable fork之外,還可以調(diào)用process.kill()。
總結(jié)
process就講到這了,我們再回顧下今天的要點: 1、block可以進行命名,命名之后就可以通過標(biāo)識名訪問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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
Verilog
+關(guān)注
關(guān)注
31文章
1374瀏覽量
114736 -
Block
+關(guān)注
關(guān)注
0文章
26瀏覽量
15178 -
Process
+關(guān)注
關(guān)注
0文章
17瀏覽量
12492
原文標(biāo)題:扒一扒SystemVerilog中的Process之進程控制
文章出處:【微信號:Rocker-IC,微信公眾號:路科驗證】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
電感技術(shù)講解
電阻電容電感,是硬件電路中最基本的元器件。我們在學(xué)習(xí)電容時,為了讓大家更形象,更通俗的去理解這個元器件,都是拿水缸去打比方的。但是對于電感,我們很難拿生活中的例子去類比,所以,在后面的學(xué)習(xí)中,我們
幾個方面了解變頻器v/f控制方式
變頻器的V/F控制方式,核心思想是 保持電機磁通恒定 ,從而實現(xiàn)平滑調(diào)速。為了讓你全面了解它,我整理了以下幾個關(guān)鍵方面: 核心原理:恒磁通調(diào)速 V/F控制的基本原理,是讓變頻器輸出的電壓(V)和頻率
變頻器根據(jù)控制方式的分類
變頻器作為現(xiàn)代工業(yè)自動化領(lǐng)域的核心設(shè)備之一,其控制方式的多樣性直接影響著電機性能、能耗效率和系統(tǒng)穩(wěn)定性。根據(jù)不同的控制原理和應(yīng)用場景,變頻器的控制方
無刷減速電機MCU控制方式與間隙要求
無刷減速電機作為一種高效、低噪音、長壽命的驅(qū)動裝置,廣泛應(yīng)用于工業(yè)自動化、機器人、醫(yī)療設(shè)備等領(lǐng)域。其核心控制依賴于微控制器單元(MCU),而機械傳動中的間隙問題直接影響系統(tǒng)精度和穩(wěn)定性。本文將深入探討無刷減速電機的MCU
RGB時序燈條的工作原理講解
圖文配合講解了RGB時序燈條的應(yīng)用場景、什么是RGB時序燈條、信號格式與傳輸規(guī)則、燈珠芯片的工作流程、顏色與動態(tài)效果控制方式等
發(fā)表于 02-06 11:36
?0次下載
博世GTM IP模塊在車載系統(tǒng)中的具體實現(xiàn)方式與優(yōu)勢
在汽車電子系統(tǒng)中,如何充分發(fā)揮 GTM IP的功能,以滿足復(fù)雜的系統(tǒng)級應(yīng)用場景,是用戶實現(xiàn)高效控制與精確響應(yīng)的關(guān)鍵。本文將聚焦幾個典型且核心的應(yīng)用實例,探討GTM IP在車載系統(tǒng)中的具體實現(xiàn)方
MCU架構(gòu)在控制模塊中的設(shè)計應(yīng)用
MCU架構(gòu)的核心特點及其在控制模塊設(shè)計中的關(guān)鍵應(yīng)用。 一、MCU架構(gòu)的核心特點 MCU是一種將中央處理器(CPU)、存儲器(RAM/ROM/Flash)、可編程輸入/輸出端口(GPIO)以及多種專用外設(shè)接口(如定時器、ADC、D
LED觸摸控制PCBA方案開發(fā) | 燈控觸摸方案開發(fā)
的技術(shù)選擇,適用于多種照明場景。簡潔操作,豐富效果這款單鍵LED觸摸控制板,通過一個按鍵即可實現(xiàn)多種交互方式(單擊、雙擊、長按),輕松控制L
伺服電機的控制方式簡述
伺服電機作為自動化控制系統(tǒng)的核心執(zhí)行元件,其控制方式直接決定了設(shè)備的動態(tài)響應(yīng)、定位精度和運行效率。隨著工業(yè)4.0和智能制造的發(fā)展,伺服控制技術(shù)已從傳統(tǒng)的模擬量
串口通信有哪些方式
串口通信(Serial Communication)是一種通過串行方式逐位傳輸數(shù)據(jù)的通信方式,廣泛應(yīng)用于嵌入式系統(tǒng)、工業(yè)控制、儀器儀表等領(lǐng)域。其通信方式可根據(jù)不同的分類標(biāo)準(zhǔn)劃分為
如何在LTspice中添加電壓控制開關(guān)
電壓控制開關(guān)是 LTspice 的基本電路元件,能夠以簡潔的方式在電路中實現(xiàn)開路或短路行為,并支持在仿真過程中動態(tài)切換。完善原理圖后,設(shè)計人員最終可能需要采用更精確的FET或開關(guān)模型,
MTB中對于RADIUS服務(wù)器是否支持?
想詢問MTB中是否支持配置AP的RADIUS服務(wù)器,以及STA是否支持企業(yè)認(rèn)證的加密方式。
發(fā)表于 07-08 08:10
TCP攻擊是什么?有什么防護方式?
出DDoS高防產(chǎn)品、CC防御產(chǎn)品,但是對于TCP攻擊的防護不是特別的理想。那么, TCP攻擊是什么?有什么防護方式? TCP攻擊是什么? TCP攻擊是指利用TCP協(xié)議中的漏洞或者缺陷對網(wǎng)絡(luò)進行攻擊的行為。這種攻擊
芯資訊|廣州唯創(chuàng)電子WT2003H語音芯片控制方式全解析
在智能硬件開發(fā)中,語音芯片的控制方式直接影響設(shè)備的功能設(shè)計與用戶體驗。廣州唯創(chuàng)電子WT2003H系列語音芯片憑借其多樣化的控制接口和靈活的交互設(shè)計,成為工業(yè)設(shè)備、智能家居及新能源汽車等
講解SystemVerilog中對于process的多種控制方式
評論