91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

講解SystemVerilog中對(duì)于process的多種控制方式

路科驗(yàn)證 ? 來(lái)源:杰瑞IC驗(yàn)證 ? 作者:老黃鴨 ? 2022-09-26 15:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Hello everybody,我們接著上期的Process(1)-產(chǎn)生進(jìn)程的方式繼續(xù)講解SystemVerilog中對(duì)于process的多種控制方式。 本期黃鴨哥主要給大家講解 named block、wait_order、wait_fork、disable,還有SystemVerilog中的內(nèi)建類:process類。

1

Namedblock

Block,也就是語(yǔ)句塊,SystemVerilog提供了兩種類型的語(yǔ)句塊,分別是begin…end為代表的順序語(yǔ)句塊,還有以fork…join為代表的并發(fā)語(yǔ)句塊。 這兩種block都是工程項(xiàng)目中常用的block,但是,大家可能都不知道block也是可以命名的,就像我們每個(gè)人的名字一樣,名字是我們每個(gè)人的一個(gè)標(biāo)識(shí)。 通過這個(gè)標(biāo)識(shí),我們可以訪問block中的變量、parameter等。

a566d294-3d51-11ed-9e49-dac502259ad0.png

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

a5a3189e-3d51-11ed-9e49-dac502259ad0.png

圖2 從圖1和圖2中我們還可以看到,int類型的變量和parameter的作用范圍都是在各自block范圍內(nèi)的。 所以,我們要記住,如果需要訪問block中的變量或者parameter,則需要給block進(jìn)行命名,并且,block中的變量、parameter都是相互獨(dú)立的

2

wait_order、wait fork

SystemVerilog提供了兩大類process的控制方式,分別為wait和disable。 wait中又包含了三小類:wait、wait_order、wait fork。 其中,wait相對(duì)簡(jiǎn)單,在這就不說了,黃鴨哥只介紹后兩種。 那么,什么是wait_order? 黃鴨哥總結(jié)一句:wait_order會(huì)阻塞等待多個(gè)事件的觸發(fā),并且要求這幾個(gè)事件間發(fā)生的順序和設(shè)置的一致。 這句話該怎么理解呢?我們來(lái)看下例子:

a5c9b8be-3d51-11ed-9e49-dac502259ad0.png

圖3 例子中包含3個(gè)event,3個(gè)event分別在3個(gè)并發(fā)進(jìn)程中進(jìn)行觸發(fā),event_1在第50個(gè)timeunit被觸發(fā),event_2在第30個(gè)timeunit被觸發(fā),event_3在第100個(gè)timeunit的時(shí)候被觸發(fā)。 wait_order需要阻塞到3個(gè)事件依次按照event_2、event_1、event_3的順序進(jìn)行觸發(fā)后才能往下執(zhí)行。這就是wait_order的用法。 wait中另外一個(gè)重要的用法是wait fork,關(guān)于它的用法,黃鴨哥總結(jié)了三句話: ① wait fork會(huì)引起調(diào)用進(jìn)程阻塞,直到它的所有子進(jìn)程結(jié)束 ② wait fork的目的是用來(lái)確保所有子進(jìn)程執(zhí)行結(jié)束; ③ wait fork作用父進(jìn)程下的子進(jìn)程,而不包括子進(jìn)程下的子進(jìn)程。

a5ffa762-3d51-11ed-9e49-dac502259ad0.png

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

a67f537c-3d51-11ed-9e49-dac502259ad0.png

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

3

disable 、disable fork

上面說完了wait,我們接著說SystemVerilog中第二大類的進(jìn)程控制方式:disable。 disable語(yǔ)句常用的多種方式包括:disable named_block、disable task_name和disable fork等,調(diào)用disable語(yǔ)句將會(huì)終止指定的進(jìn)程。

a6cfcf82-3d51-11ed-9e49-dac502259ad0.png

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

a6f043b6-3d51-11ed-9e49-dac502259ad0.png

圖7 上圖中disable proc_a相當(dāng)于return,它會(huì)直接終止當(dāng)前的task。 而關(guān)于disable fork,這個(gè)是我們工程項(xiàng)目中使用的最多的一類,也是最容易踩坑的一類,disable fork的用法我推薦大家學(xué)習(xí)下Q哥的一篇文章:disable fork,你真的會(huì)用嗎? 感興趣的同學(xué)可以點(diǎn)進(jìn)去看看,他在里面有很詳細(xì)的描述,黃鴨哥在這里就不多說了。

4

內(nèi)建類:process

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

a789290a-3d51-11ed-9e49-dac502259ad0.png

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

a7b8d088-3d51-11ed-9e49-dac502259ad0.png

圖9

a7de7306-3d51-11ed-9e49-dac502259ad0.png

圖10 圖9展示了這三個(gè)method的用法,通過self()獲取進(jìn)程的句柄,然后傳遞給定義的兩個(gè)process類; 調(diào)用status()可以獲取到process_1和process_2進(jìn)程的執(zhí)行狀態(tài),在100個(gè)timeunit的時(shí)候,process_1已經(jīng)執(zhí)行結(jié)束,而process_2則處于阻塞狀態(tài); 當(dāng)再次經(jīng)過100個(gè)timeunit時(shí),調(diào)用kill()終止了process_2的繼續(xù)執(zhí)行,從這里可以看出,要終止一個(gè)進(jìn)程,除了disable、disable fork之外,還可以調(diào)用process.kill()。

總結(jié)

process就講到這了,我們?cè)倩仡櫹陆裉斓囊c(diǎn): 1、block可以進(jìn)行命名,命名之后就可以通過標(biāo)識(shí)名訪問block內(nèi)部的變量和parameter,還可以通過disable named_block終止此block。 2、進(jìn)程的兩大控制方式:wait、disable。 3、SystemVerilog內(nèi)建類,process類,可以通過process類訪問進(jìn)程和控制進(jìn)程。 4、三種終止進(jìn)程的方式:disable、disable fork、process.kill()。 審核編輯 :李倩

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

    關(guān)注

    30

    文章

    1374

    瀏覽量

    114538
  • Block
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    15154
  • Process
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    12479

原文標(biāo)題:扒一扒SystemVerilog中的Process之進(jìn)程控制

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    變頻器根據(jù)控制方式的分類

    變頻器作為現(xiàn)代工業(yè)自動(dòng)化領(lǐng)域的核心設(shè)備之一,其控制方式的多樣性直接影響著電機(jī)性能、能耗效率和系統(tǒng)穩(wěn)定性。根據(jù)不同的控制原理和應(yīng)用場(chǎng)景,變頻器的控制
    的頭像 發(fā)表于 02-28 16:01 ?99次閱讀
    變頻器根據(jù)<b class='flag-5'>控制</b><b class='flag-5'>方式</b>的分類

    無(wú)刷減速電機(jī)MCU控制方式與間隙要求

    無(wú)刷減速電機(jī)作為一種高效、低噪音、長(zhǎng)壽命的驅(qū)動(dòng)裝置,廣泛應(yīng)用于工業(yè)自動(dòng)化、機(jī)器人、醫(yī)療設(shè)備等領(lǐng)域。其核心控制依賴于微控制器單元(MCU),而機(jī)械傳動(dòng)的間隙問題直接影響系統(tǒng)精度和穩(wěn)定性。本文將深入探討無(wú)刷減速電機(jī)的MCU
    的頭像 發(fā)表于 02-27 17:01 ?300次閱讀
    無(wú)刷減速電機(jī)MCU<b class='flag-5'>控制</b><b class='flag-5'>方式</b>與間隙要求

    RGB時(shí)序燈條的工作原理講解

    圖文配合講解了RGB時(shí)序燈條的應(yīng)用場(chǎng)景、什么是RGB時(shí)序燈條、信號(hào)格式與傳輸規(guī)則、燈珠芯片的工作流程、顏色與動(dòng)態(tài)效果控制方式
    發(fā)表于 02-06 11:36 ?0次下載

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

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

    BLDC無(wú)位置傳感器控制方式介紹

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

    伺服電機(jī)的控制方式簡(jiǎn)述

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

    串口通信有哪些方式

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

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

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

    MTB對(duì)于RADIUS服務(wù)器是否支持?

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

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

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

    【干貨分享】開關(guān)電源環(huán)路補(bǔ)償設(shè)計(jì)步驟講解

    1. 理論講解 本文將講述實(shí)際環(huán)路補(bǔ)償?shù)脑O(shè)計(jì)步驟。 對(duì)于硬件工程師來(lái)說,開關(guān)電源和運(yùn)放的信號(hào)處理電路是最常遇到的,都是典型的帶負(fù)反饋的閉環(huán)控制系統(tǒng)。因此,這兩類電路設(shè)計(jì)的穩(wěn)定性和控制
    發(fā)表于 04-28 17:02

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

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

    EtherCAT運(yùn)動(dòng)控制器歸零模式介紹

    正運(yùn)動(dòng)多種歸零模式講解,歸零的配置方法與實(shí)現(xiàn)效果
    的頭像 發(fā)表于 04-03 14:46 ?1060次閱讀
    EtherCAT運(yùn)動(dòng)<b class='flag-5'>控制</b>器歸零模式介紹

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

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

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

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