阻塞賦值和非阻塞賦值的可綜合性
Blocking Assignment阻塞賦值和NonBlocking Assignment非阻塞賦值,原本是軟件進(jìn)程管理的術(shù)語(yǔ)。由于Verilog團(tuán)隊(duì)是從C語(yǔ)言發(fā)展,所以基于的C的術(shù)語(yǔ)和概念出現(xiàn)在EDA中,原本是一個(gè)“誤打誤撞”,但歷史造成的現(xiàn)實(shí)則是:必須理解和正確掌握它們的用法。
軟件中阻塞進(jìn)程,是指調(diào)用返回之前,應(yīng)用進(jìn)程一直等待:
為了保證應(yīng)用進(jìn)程的效率,不至于被子程序的運(yùn)算過(guò)程“掛起”。非阻塞進(jìn)程得到應(yīng)用:
在非阻塞賦值進(jìn)程中,無(wú)論子程序是否返回,不影響應(yīng)用進(jìn)程的正常運(yùn)行。C語(yǔ)言的阻塞和非阻塞概念被Verilog團(tuán)隊(duì)引用,Verilog的阻塞賦值:
Verilog的非阻塞賦值:
關(guān)于阻塞和非阻塞爭(zhēng)議中,有一個(gè)辯論雙方都引用的電路模型:反饋震蕩器:
其中,復(fù)位信號(hào)rst_n初始化RA(a)為0, RB(b)為1。觀察其物理連接,在時(shí)鐘沿作用下,兩個(gè)寄存器將互相交換數(shù)據(jù)。(同時(shí)交換)
為以上電路模型進(jìn)行驗(yàn)證,在循環(huán)行為體并分別使用阻塞賦值和非阻塞賦值。并驗(yàn)證其前仿和后仿,觀察對(duì)比真實(shí)性。
應(yīng)該得到的結(jié)論:
使用阻塞賦值:前仿不真實(shí)(沒(méi)有發(fā)生兩個(gè)寄存器的交換),后仿真實(shí)(發(fā)生交換)
使用非阻塞賦值:前仿真實(shí)(交換),后仿真實(shí)(交換)
基于以上結(jié)論:
“倒阻派”認(rèn)為,沒(méi)有使用阻塞賦值的必要,必須在行為語(yǔ)句賦值中全部使用非阻塞。
“挺阻派”認(rèn)為,基于電平敏感賦值用阻塞,沿敏感賦值用非阻塞,阻塞語(yǔ)句是必要的。
2000年以后,進(jìn)入從“綜合為王”進(jìn)入“驗(yàn)證為王”的時(shí)代。同樣的Verilog代碼需要回到電腦中,用于非綜合目的。驗(yàn)證代碼中的賦值驅(qū)動(dòng)與軟件編寫(xiě)概念相同,帶來(lái)非常大的便利。這就是“阻塞”賦值的反轉(zhuǎn)。
編輯:jq
-
非阻塞賦值
+關(guān)注
關(guān)注
0文章
11瀏覽量
10068 -
阻塞
+關(guān)注
關(guān)注
0文章
24瀏覽量
8263
原文標(biāo)題:FPGA學(xué)習(xí):阻塞賦值和非阻塞賦值的可綜合性
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
CH32V307串口發(fā)送阻塞的原因?如何解決?
在testbench中如何使用阻塞賦值和非阻塞賦值

如何綜合性測(cè)試一款電源芯片?——以ASP3605芯片為例
在S32DS上使用JLINK調(diào)試S32K341,被阻塞了,怎么處理?
“串口阻塞”你真的會(huì)用嗎?

數(shù)組名之間可以直接賦值嗎
TPA3004功放,開(kāi)機(jī)保護(hù),聲音阻塞,為什么?
socket編程中的阻塞與非阻塞
Verilog HDL的基礎(chǔ)知識(shí)

基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的C++公共基礎(chǔ)類庫(kù)案例:SafeBlockQueue

評(píng)論