三防平板方案-Verilog HDL指定塊
時(shí)間:2024-08-07 作者:樂(lè)凡信息 瀏覽:217

三防平板方案中Verilog HDL指定塊

三防平板方案中兩種類(lèi)型的HDL結(jié)構(gòu)經(jīng)常用于描述結(jié)構(gòu)化模型的延遲,如專用集成電路(Application Specific Integrated Circuit,ASIC)的邏輯單元。包括:

(1)分布式延遲。指定事件通過(guò)模塊內(nèi)的門(mén)和網(wǎng)絡(luò)傳播所需要的時(shí)間。

(2)模塊路徑延遲。描述從源端(input端口或inout端口)事件傳播到目的端(output端口或inout端口)所需要的時(shí)間。

指定塊語(yǔ)句用于說(shuō)明源端和目的端的路徑并為這些路徑分配延遲。指定塊的語(yǔ)法格式為

指定塊以關(guān)鍵字specify和endspecify為界,并且應(yīng)該出現(xiàn)在模塊聲明中。指定塊可以執(zhí)行以下任務(wù):

(1)描述模塊中的不同路徑;

(2)為模塊中的路徑分配延遲;

(3)執(zhí)行時(shí)序檢查,以確保模塊輸入端所產(chǎn)生的事件滿足模塊所描述器件的時(shí)序約束。

指定塊描述的路徑稱為模塊路徑,將信號(hào)源與目的配對(duì)。源可以是單向(input端口)或雙向(inout端口)的。類(lèi)似地,目的可以是單向(output端口)或雙向(inout端口)的,并將其稱為模塊路徑的目的?!纠?.7】指定塊Verilog HDL描述的例子,如代碼清單1-7所示。代碼清單1-7 指定塊的Verilog HDL描述

跟在關(guān)鍵字specify后面的前兩行聲明指定參數(shù)。指定參數(shù)聲明后面的行描述了模塊路徑,并為該模塊路徑分配延遲。指定參數(shù)確定分配給模塊路徑的延遲。

1、三防平板方案中模塊路徑聲明

在指定塊中設(shè)置路徑延遲需要兩個(gè)步驟:

(1)描述模塊路徑;

(2)為這些路徑分配延遲。

模塊路徑可以描述為簡(jiǎn)單路徑、邊沿敏感路徑或狀態(tài)依賴路徑。模塊路徑應(yīng)該在指定塊內(nèi)定義為源信號(hào)和目的信號(hào)之間的連接。模塊

路徑可以連接向量和標(biāo)量的任何組合。

圖1.1給出了模塊路徑延遲。從圖中可知,從不同源端口(A、B、C和D)到同一個(gè)目的端口(Q)存在不同路徑延遲,因此可以為每個(gè)輸入到輸出的路徑指定不同的延遲。

圖1.1 模塊路徑延遲


1.三防平板方案中模塊路徑限制

模塊路徑有以下限制:

(1)模塊路徑源應(yīng)為連接到模塊input端口或inout端口的網(wǎng)絡(luò);

(2)模塊路徑目的應(yīng)為連接到模塊output端口或inout端口的網(wǎng)絡(luò)或變量。

(3)在模塊內(nèi),模塊路徑目的只能有一個(gè)驅(qū)動(dòng)器。


2.三防平板方案中簡(jiǎn)單模塊路徑

簡(jiǎn)單路徑可以使用以下其中一種方法聲明:

(1)源*>目的;

(2)源=>目的。

符號(hào)*>和=>分別表示模塊路徑源和模塊路徑目的之間不同類(lèi)型的連接。操作符“*”在源和目的之間建立完全連接。操作符“=>”在源和目標(biāo)之間建立并行連接?!纠?.8】簡(jiǎn)單模塊路徑聲明Verilog HDL描述的例子,如代碼清單1-8所示。代碼清單1-8 簡(jiǎn)單模塊路徑聲明的Verilog HDL描述


3.三防平板方案中邊沿敏感路徑

如果在描述一個(gè)模塊路徑時(shí),在源端使用了一個(gè)邊沿跳變,此時(shí)該路徑稱為邊沿敏感路徑。邊沿敏感路徑結(jié)構(gòu)用于對(duì)輸入到輸出的延遲的時(shí)序建模,其只在源端信號(hào)出現(xiàn)指定的邊沿時(shí)發(fā)生。邊沿敏感路徑的語(yǔ)法格式為

在該例子中,clock的任何變化,模塊路徑將從clcok擴(kuò)展到out。


4.三防平板方案中狀態(tài)依賴路徑

一個(gè)依賴狀態(tài)的路徑是指,當(dāng)一個(gè)指定條件為真時(shí),可以為一個(gè)模塊路徑分配延遲,它影響通過(guò)該路徑的信號(hào)傳播延遲。語(yǔ)法格式為

從上面的語(yǔ)法格式可知,一個(gè)狀態(tài)依賴路徑描述包括以下條目:

(1)一個(gè)條件表達(dá)式,當(dāng)計(jì)算結(jié)果為“真”時(shí),使能模塊路徑;

(2)模塊路徑描述;

(3)應(yīng)用于模塊路徑的表達(dá)式。

1)條件表達(dá)式

條件表達(dá)式中的操作數(shù)應(yīng)由以下內(nèi)容構(gòu)成:

(1)標(biāo)量或向量模塊input端口或inout端口或它們位選擇或部分選擇;

(2)本地定義的變量或網(wǎng)絡(luò)或它們的位選擇或部分選擇;

(3)編譯時(shí)間常數(shù)(常數(shù)和指定參數(shù))。

在條件表達(dá)式中可用的有效操作符如表1.3所示。

表1.3 在條件表達(dá)式中可用的有效操作符

2)簡(jiǎn)單狀態(tài)依賴路徑

如果狀態(tài)依賴路徑的路徑描述是簡(jiǎn)單路徑,則稱為簡(jiǎn)單狀態(tài)依賴路徑。【例1.12】使用狀態(tài)依賴路徑描述XOR門(mén)時(shí)序Verilog HDL描述的例子,如代碼清單1-9所示代碼清單1-9 使用狀態(tài)依賴路徑描述XOR門(mén)時(shí)序的Verilog HDL描述

在該例子中,前兩個(gè)狀態(tài)依賴路徑描述了當(dāng)XOR門(mén)(x1)對(duì)輸入變化取反時(shí)的一對(duì)輸出上升和下降延遲時(shí)間。最后兩個(gè)狀態(tài)依賴路徑描述了當(dāng)XOR門(mén)緩沖變化輸入的另一對(duì)輸出上升和下降延遲時(shí)間。

edge_identifier可以是與輸入終端描述符相關(guān)聯(lián)的關(guān)鍵詞posedge或negedge,specify_input_terminal_descriptor可以是任何input端口或inout端口。如果指定向量端口作為specify_input_terminal_descriptor,則應(yīng)在最低有效位上檢測(cè)邊沿跳變。如果未指定邊沿跳變,則應(yīng)將路徑看作輸入端任何跳變的有效路徑。

可以使用完全連接(*>)或并行連接(=>)指定邊沿敏感路徑。對(duì)于并行連接(=>),目的應(yīng)為任何標(biāo)量output或inout端口,或向量output或inout端口的位選擇。對(duì)于全連接(*>),目的應(yīng)為向量或標(biāo)量output和inout端口中的一個(gè)或多個(gè)列表,以及向量output和inout端口中的位選擇或部分選擇。

data_source_expression是任意表達(dá)式,用作到路徑目的的數(shù)據(jù)流描述。三防平板方案中這種任意的數(shù)據(jù)路徑描述不影響數(shù)據(jù)或事件通過(guò)模型的實(shí)際傳播;數(shù)據(jù)路徑源處的事件如何傳播到目的取決于模塊的內(nèi)部邏輯。polarity_operator描述數(shù)據(jù)路徑是同方向還是反方向?!纠?.9】帶有正極性操作符邊沿敏感路徑聲明的Verilog HDL描述的例子。

在該例子中,在clock的正邊沿,模塊使用10的上升延遲和8的下降延遲從clock擴(kuò)展到out。數(shù)據(jù)路徑是從in到out?!纠?.10】帶有負(fù)極性操作符邊沿敏感路徑聲明的Verilog HDL描述的例子。

在該例子中,在clock[0]的負(fù)邊沿,模塊路徑使用10的上升延遲和8的下降延遲從clock[0]擴(kuò)展到out。數(shù)據(jù)路徑是從in到out,并且in在傳播到輸出時(shí)取反?!纠?.11】沒(méi)有邊沿標(biāo)識(shí)符的邊沿敏感路徑聲明的Verilog HDL描述的例子。

在該例子中,前三個(gè)路徑聲明聲明了從操作數(shù)輸入i1和i2延伸到o1輸出的路徑。根據(jù)操作碼上輸入所指定的操作,將這些路徑上的延遲分配給操作。最后一個(gè)路徑聲明聲明了從操作碼輸入到o1輸出的路徑。

3)邊沿敏感狀態(tài)依賴路徑

如果狀態(tài)依賴路徑的路徑描述描述了邊沿敏感路徑,則該狀態(tài)依賴路徑稱為邊沿敏感狀態(tài)依賴路徑。只要滿足以下標(biāo)準(zhǔn),就可以將不同的延遲分配給相同的邊沿敏感路徑:

(1)邊沿、條件或兩者都使每個(gè)聲明唯一;

(2)端口在所有路徑聲明中以相同的方式引用(整個(gè)端口、位選擇或部分選擇)。【例1.14】邊沿敏感狀態(tài)依賴路徑Verilog HDL描述的例子1。

在該例子中,當(dāng)復(fù)位和清除為低時(shí)發(fā)生時(shí)鐘的上升沿,模塊路徑使用10的上升和8的下降延遲從clock擴(kuò)展到out?!纠?.15】?jī)蓚€(gè)對(duì)邊沿敏感路徑聲明Verilog HDL描述的例子,如代碼清單1-11所示。

在該例子中,每個(gè)聲明都有一個(gè)唯一的邊沿。代碼清單1-11 兩個(gè)對(duì)邊沿敏感路徑聲明的Verilog HDL描述【例1.16】邊沿敏感狀態(tài)依賴路徑Verilog HDL描述的例子2,如代碼清單1-12所示。代碼清單1-12 邊沿敏感狀態(tài)依賴路徑的Verilog HDL描述【例1.17】邊沿敏感狀態(tài)依賴路徑Verilog HDL非法描述的例子,如代碼清單1-13所示。代碼清單1-13 邊沿敏感狀態(tài)依賴路徑的Verilog HDL非法描述

該例子給出的兩個(gè)狀態(tài)依賴路徑聲明是非法的,因?yàn)榧词顾鼈冇胁煌臈l件,目的也沒(méi)有以相同的方式指定,即第一個(gè)目標(biāo)是部分選擇,第二個(gè)是位選擇。

4)ifnone條件

ifnone條件用于當(dāng)用于路徑的其他條件都不成立時(shí),指定一個(gè)默認(rèn)的狀態(tài)依賴路徑延遲。ifnone條件將指定和狀態(tài)依賴模塊路徑相同的模塊路徑源端和目的端。需要遵守下面的規(guī)則:

(1)只能描述簡(jiǎn)單模塊路徑;

(2)對(duì)應(yīng)于ifnone路徑的狀態(tài)依賴路徑可以是簡(jiǎn)單模塊路徑或邊沿敏感路徑;

(3)如果沒(méi)有到ifnone模塊路徑的對(duì)應(yīng)狀態(tài)依賴路徑,則將ifnone模塊路徑看作一個(gè)無(wú)條件的簡(jiǎn)單模塊路徑;

(4)為模塊路徑指定ifnone條件和為同一模塊路徑指定無(wú)條件簡(jiǎn)單路徑是非法的。【例1.18】有效狀態(tài)依賴路徑組合Verilog HDL描述的例子,如代碼清單1-14所示。

代碼清單1-14 有效狀態(tài)依賴路徑組合的Verilog HDL描述【例1.19】模塊路徑組合Verilog HDL非法描述的例子,如代碼清單1-15所示。代碼清單1-15 模塊路徑組合的Verilog HDL非法描述

該例子中的模塊路徑描述組合是非法的,因?yàn)樗褂胕fnone條件將狀態(tài)依賴路徑與同一模塊路徑的無(wú)條件路徑組合在一起。


5.三防平板方案中全連接和并行連接路徑

操作符*>應(yīng)用于在源和目的之間建立完全連接。在完全連接中,源中的每個(gè)位都應(yīng)連接到目的中的每一位。模塊路徑源不需要具有與模塊路徑目的相同的位數(shù)。

由于沒(méi)有限制源信號(hào)和目的信號(hào)的位寬或數(shù)量,完全連接可以處理大多數(shù)類(lèi)型的模塊路徑。下面的條件要求使用完全連接:

(1)一個(gè)向量和一個(gè)標(biāo)量之間的一個(gè)模塊路徑;

(2)不同位寬向量之間的一個(gè)模塊路徑;

(3)在一個(gè)語(yǔ)句中,描述有多個(gè)源或多個(gè)目的的模塊路徑。

操作符“=>”用于在源和目的之間建立一個(gè)并行連接。在并行連接中,源端口的每一位將連接到目的端口的每一位。只能在包含相同位數(shù)的源和目的之間創(chuàng)建并行模塊路徑。

并行連接比全連接更加嚴(yán)格。它們只能是一個(gè)源和一個(gè)目的之間的連接,并且每個(gè)信號(hào)包含相同的位數(shù)。因此,一個(gè)并行連接只能用于描述兩個(gè)相同位寬向量之間的一個(gè)模塊路徑。由于標(biāo)量是一個(gè)位,所以“*>”或者“=>”都可以用于建立兩個(gè)標(biāo)量比特位之間的連接。

在兩個(gè)4位向量之間使用全連接和并行連接的區(qū)別,如圖1.2所示。

圖1.2 充分連接和并行連接之間的區(qū)別不同【例1.20】寬度為8位的2:1多路復(fù)用器Verilog HDL描述的例子,如代碼清單1-16所示。代碼清單1-16 寬度為8位的2:1多路復(fù)用器的Verilog HDL描述


三防平板方案中從s到q的模塊路徑使用完全連接(*>),因?yàn)樗鼘?biāo)量源(1位選擇線)連接到向量目的(8位輸出總線)。從輸入線in1和in2到q的模塊路徑使用并行連接(=>),因?yàn)樗鼈冊(cè)趦蓷l8位總線之間建立了并行連接。6.在單個(gè)語(yǔ)句中聲明多個(gè)模塊路徑

通過(guò)使用符號(hào)*>將逗號(hào)分隔的源列表連接到逗號(hào)分隔的目的列表,可以在一條語(yǔ)句中描述多個(gè)模塊路徑。當(dāng)在一個(gè)語(yǔ)句中描述多個(gè)模塊路徑時(shí),源和目的列表可能包含任意寬度的標(biāo)量和向量的混合。多模塊路徑聲明中的連接始終是完全連接?!纠?.21】多個(gè)路徑全連接Verilog HDL描述的例子1。

等效為:7.模塊路徑極性

模塊路徑的極性指示信號(hào)跳變的方向在從輸入端傳播到輸出端時(shí)是否取反。這種任意極性描述不影響數(shù)據(jù)或事件通過(guò)模型的實(shí)際傳播;源處的上升或下降如何傳播到目的地取決于模塊的內(nèi)部邏輯。模塊路徑可以指定三種極性中的任意一種,即未知極性、正極性和負(fù)極性。

1)三防平板方案中未知極性

默認(rèn)情況下,模塊路徑應(yīng)具有未知極性;也就是說(shuō),路徑源處的條件可能以不可預(yù)測(cè)的方式傳播到目的地,如下所示:

(1)源處的上升可能導(dǎo)致目的處的上升跳變、下降跳變或無(wú)跳變。

(2)源處的下降可能導(dǎo)致目的處的上升跳變、下降跳變或無(wú)跳變。

指定為全連接或并聯(lián)連接,但沒(méi)有極性運(yùn)算符+或-的模塊路徑應(yīng)看作極性未知的模塊路徑?!纠?.22】未知極性模塊路徑Verilog HDL描述的例子。

2)三防平板方案中正極性

對(duì)于具有正極性的模塊路徑,源處的任何跳變都可能導(dǎo)致目的處的相同跳變,如下所示:

(1)在源處的上升可能導(dǎo)致目的處的上升跳變或無(wú)跳變。

(2)在源處的下降可能導(dǎo)致目的處的下降跳變或無(wú)跳變。

正極性的模塊路徑應(yīng)通過(guò)將正極性運(yùn)算符指定為“=>”或“*>”的前綴。【例1.23】正極性模塊路徑Verilog HDL描述的例子。

3)三防平板方案中負(fù)極性

對(duì)于具有負(fù)極性的模塊路徑,源處的任何跳變都可能導(dǎo)致目的處的相反跳變,如下所示:

(1)源處的上升可能導(dǎo)致目的處的下降跳變或無(wú)跳變。

(2)源處的下降可能導(dǎo)致目的處的上升跳變或無(wú)跳變。

負(fù)極性的模塊路徑應(yīng)通過(guò)將負(fù)極性運(yùn)算符指定為“=>”或“*>”的前綴?!纠?.24】負(fù)極性模塊路徑Verilog HDL描述的例子。