1、UDP的使用場(chǎng)景
User-defined primitives (UDPs) 翻譯過(guò)來(lái)就是用戶(hù)自定義原語(yǔ),常常用于構(gòu)建組合邏輯模型和時(shí)序邏輯模型。
我們編寫(xiě)Verilo代碼時(shí),定義寄存器使用的是reg 和always@(*clk*),運(yùn)行VCS RTL仿真時(shí),VCS能夠識(shí)別此類(lèi)信號(hào)是寄存器,能夠模擬其行為模型。
然而在使用VCS進(jìn)行網(wǎng)表仿真時(shí),此時(shí)網(wǎng)表中寄存器名稱(chēng)是這樣的SDFF*_XXXX,其中SDFF_XXXX是每個(gè)寄存器類(lèi)型對(duì)應(yīng)的標(biāo)準(zhǔn)Cell的名稱(chēng)。
SDFF_XXXX是每個(gè)Fab廠家獨(dú)有的名稱(chēng),且在Verilog規(guī)范中并沒(méi)有相關(guān)術(shù)語(yǔ),那么VCS等EDA仿真工具是如何識(shí)別并且模擬其器件行為的呢?
實(shí)際上進(jìn)行網(wǎng)表仿真時(shí),EDA工具會(huì)讀取對(duì)應(yīng)SDFF_XXXX的UDPs模型,從而進(jìn)行SDFF_XXXX的行為模擬。
2、UDPs的語(yǔ)法說(shuō)明
2.1. 2種類(lèi)型
UDPs的分為combinational UDP(組合邏輯)和 sequential UDP(時(shí)序邏輯)。
combinational UDP用于構(gòu)建組合邏輯模型,常見(jiàn)有mux模塊.
sequential UDP用于構(gòu)建寄存器和Latch模型,sequential UDP可以是邊沿觸發(fā),也可以是電平觸發(fā)。
2.2.基本語(yǔ)法規(guī)范
UDP建模使用primitive表示建模開(kāi)始,類(lèi)似module,endprimitive表示建模結(jié)束,類(lèi)似endmodule。
UDP模型在描述層級(jí)上與module/endmodule屬于同一等級(jí),因此primitive/endprimitive不能出現(xiàn)在module/endmodule內(nèi)部,就像不能在一個(gè)模塊里出現(xiàn)module~module~endmodule~endmodule.
//語(yǔ)法錯(cuò)誤 modulexxx(); primitive endprimitive endmodule
每個(gè)UDP有且只有一個(gè)輸出,并且輸出只有三種狀態(tài),0, 1, or x,不支持Z狀態(tài)。
每個(gè)UDP可以由多個(gè)輸入信號(hào),如果輸入信號(hào)為z,則當(dāng)做X對(duì)待。時(shí)序UDP至少允許9個(gè)輸入信號(hào),組合UDP至少允許10個(gè)輸入信號(hào)。
每個(gè)UDP不支持定義inout類(lèi)型的信號(hào)
時(shí)序UDP的輸出信號(hào)應(yīng)該使用reg申明。
組合UDP的輸出信號(hào)不能使用reg申明。
時(shí)序UDP可以使用initial語(yǔ)句定制仿真開(kāi)始前output信號(hào)的初始值
2.3.UDP state table(狀態(tài)表)
UDP模型使用狀態(tài)表來(lái)描述模型的行為,
狀態(tài)表中使用的各類(lèi)變量見(jiàn)表40。例如r表示上升沿,f表示下降沿。*表示數(shù)值改變。
狀態(tài)表中的每行以分號(hào)結(jié)束。
狀態(tài)表本質(zhì)上就是一個(gè)輸入信號(hào)/輸出信號(hào)組合的列表。
組合UDP狀態(tài)表中有一個(gè)冒號(hào)“:”,用于隔離輸入和輸出信號(hào)。
時(shí)序UDP狀態(tài)表中有當(dāng)前狀態(tài),還有下一個(gè)狀態(tài),因此有2個(gè)冒號(hào)“:”,用于隔離輸入、輸出(當(dāng)前狀態(tài))和下一個(gè)狀態(tài)。
組合UDP模型中,如果輸入信號(hào)狀態(tài)組合在狀態(tài)表中沒(méi)有指定,則輸出會(huì)是X。
2.4.UDP結(jié)構(gòu)
本節(jié)可忽略,直接看案例
3、組合UDP案例
如下案例為2選1的mux,sel為1時(shí),out為in1;sel為0時(shí),out為in0。
請(qǐng)注意:信號(hào)列表中,輸出信號(hào)out在第一個(gè)。狀態(tài)表中,out處于最后一列。
4、電平觸發(fā)時(shí)序UDPs
如下案例為一個(gè)低電平觸發(fā)的latch。
使用reg申明了一個(gè)內(nèi)部變量,表示當(dāng)前狀態(tài)q,即當(dāng)前udp的輸出狀態(tài)。
table中的q+代表的是下一個(gè)有效周期的輸出狀態(tài)。
5、邊沿觸發(fā)時(shí)序UDP
如下所示為一個(gè)上升沿觸發(fā)寄存器的模型。
其中NOTIFIER信號(hào)用于建立時(shí)間和保持時(shí)間檢查,通過(guò)建立時(shí)間和保持時(shí)間檢查,則NOTIFIER不變,時(shí)序檢測(cè)不通過(guò)則NOTIFIER翻轉(zhuǎn),udp_dff輸出為x態(tài)。
6、小技巧
將primitive類(lèi)比成module,將endprimitive類(lèi)比成endmodule,將table 類(lèi)比成case,將endtable類(lèi)比成endcase,你就知道該怎么寫(xiě)UDP模型了。
7、總結(jié)
雖然使用UDP能夠構(gòu)建網(wǎng)表時(shí)序邏輯和組合的邏輯的行為模型,但是仿真終究是仿真,無(wú)法做到與實(shí)際芯片行為完全一致,特別是在部分信號(hào)為X態(tài)時(shí)。因此網(wǎng)表仿真中如果X態(tài)的出現(xiàn)導(dǎo)致仿真出現(xiàn)問(wèn)題,此時(shí)不代表電路真的存在問(wèn)題,需要仔細(xì)分析原因,其中需要重點(diǎn)分析UDP模型是怎么寫(xiě)的。
-
寄存器
+關(guān)注
關(guān)注
31文章
5372瀏覽量
121322 -
仿真
+關(guān)注
關(guān)注
50文章
4130瀏覽量
134089 -
Verilog
+關(guān)注
關(guān)注
28文章
1352瀏覽量
110467 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59991
原文標(biāo)題:Verilog語(yǔ)法: 必須掌握的User-defined primitives (UDPs)
文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Verilog_HDL的基本語(yǔ)法詳解(夏宇聞版)
![<b class='flag-5'>Verilog</b>_HDL的基本<b class='flag-5'>語(yǔ)法</b>詳解(夏宇聞版)](https://file.elecfans.com/web2/M00/49/67/pYYBAGKhtEyAYD0lAAAMNRWCI5s413.jpg)
Verilog HDL實(shí)驗(yàn)練習(xí)與語(yǔ)法手冊(cè)
常見(jiàn)的Verilog行為級(jí)描述語(yǔ)法
![常見(jiàn)的<b class='flag-5'>Verilog</b>行為級(jí)描述<b class='flag-5'>語(yǔ)法</b>](https://file.elecfans.com/web1/M00/64/74/pIYBAFucUHKAWAkKAAAmuP3-XgU006.png)
FPGA視頻教程之Verilog語(yǔ)法基礎(chǔ)的詳細(xì)資料說(shuō)明
![FPGA視頻教程之<b class='flag-5'>Verilog</b><b class='flag-5'>語(yǔ)法</b>基礎(chǔ)的詳細(xì)資料<b class='flag-5'>說(shuō)明</b>](https://file.elecfans.com/web1/M00/86/71/pIYBAFx4x0-AfnWBAAD6ICY-muk307.png)
Verilog HDL的基礎(chǔ)知識(shí)詳細(xì)說(shuō)明
![<b class='flag-5'>Verilog</b> HDL的基礎(chǔ)知識(shí)詳細(xì)<b class='flag-5'>說(shuō)明</b>](https://file.elecfans.com/web1/M00/99/E1/o4YBAF0ceveAVOBsAABC6nlmbiI235.png)
有關(guān)Verilog中的一些語(yǔ)法詳細(xì)資料說(shuō)明
![有關(guān)<b class='flag-5'>Verilog</b>中的一些<b class='flag-5'>語(yǔ)法</b>詳細(xì)資料<b class='flag-5'>說(shuō)明</b>](https://file.elecfans.com/web1/M00/9E/60/o4YBAF05ckeAKkTdAAG-tzuxtBg348.png)
評(píng)論