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

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

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

Verilog UDPs的語法說明

ruikundianzi ? 來源: IC的世界 ? 2023-09-13 14:02 ? 次閱讀

1、UDP的使用場(chǎng)景

User-defined primitives (UDPs) 翻譯過來就是用戶自定義原語,常常用于構(gòu)建組合邏輯模型和時(shí)序邏輯模型。

我們編寫Verilo代碼時(shí),定義寄存器使用的是reg 和always@(*clk*),運(yùn)行VCS RTL仿真時(shí),VCS能夠識(shí)別此類信號(hào)是寄存器,能夠模擬其行為模型。

然而在使用VCS進(jìn)行網(wǎng)表仿真時(shí),此時(shí)網(wǎng)表中寄存器名稱是這樣的SDFF*_XXXX,其中SDFF_XXXX是每個(gè)寄存器類型對(duì)應(yīng)的標(biāo)準(zhǔn)Cell的名稱。

SDFF_XXXX是每個(gè)Fab廠家獨(dú)有的名稱,且在Verilog規(guī)范中并沒有相關(guān)術(shù)語,那么VCS等EDA仿真工具是如何識(shí)別并且模擬其器件行為的呢?

實(shí)際上進(jìn)行網(wǎng)表仿真時(shí),EDA工具會(huì)讀取對(duì)應(yīng)SDFF_XXXX的UDPs模型,從而進(jìn)行SDFF_XXXX的行為模擬。

2、UDPs的語法說明

2.1. 2種類型

UDPs的分為combinational UDP(組合邏輯)和 sequential UDP(時(shí)序邏輯)。

combinational UDP用于構(gòu)建組合邏輯模型,常見有mux模塊.

sequential UDP用于構(gòu)建寄存器和Latch模型,sequential UDP可以是邊沿觸發(fā),也可以是電平觸發(fā)。

2.2.基本語法規(guī)范

UDP建模使用primitive表示建模開始,類似module,endprimitive表示建模結(jié)束,類似endmodule。

UDP模型在描述層級(jí)上與module/endmodule屬于同一等級(jí),因此primitive/endprimitive不能出現(xiàn)在module/endmodule內(nèi)部,就像不能在一個(gè)模塊里出現(xiàn)module~module~endmodule~endmodule.

//語法錯(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類型的信號(hào)

時(shí)序UDP的輸出信號(hào)應(yīng)該使用reg申明。

組合UDP的輸出信號(hào)不能使用reg申明。

時(shí)序UDP可以使用initial語句定制仿真開始前output信號(hào)的初始值

2.3.UDP state table(狀態(tài)表)

UDP模型使用狀態(tài)表來描述模型的行為,

狀態(tài)表中使用的各類變量見表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)表中沒有指定,則輸出會(huì)是X。

b5a10bb2-51ea-11ee-a25d-92fbcf53809c.png

2.4.UDP結(jié)構(gòu)

本節(jié)可忽略,直接看案例

b5bf3164-51ea-11ee-a25d-92fbcf53809c.png

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處于最后一列。

b5def18e-51ea-11ee-a25d-92fbcf53809c.png

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)。

b5f31588-51ea-11ee-a25d-92fbcf53809c.png

5、邊沿觸發(fā)時(shí)序UDP

如下所示為一個(gè)上升沿觸發(fā)寄存器的模型。

其中NOTIFIER信號(hào)用于建立時(shí)間和保持時(shí)間檢查,通過建立時(shí)間和保持時(shí)間檢查,則NOTIFIER不變,時(shí)序檢測(cè)不通過則NOTIFIER翻轉(zhuǎn),udp_dff輸出為x態(tài)。

b60f79e4-51ea-11ee-a25d-92fbcf53809c.png

6、小技巧

將primitive類比成module,將endprimitive類比成endmodule,將table 類比成case,將endtable類比成endcase,你就知道該怎么寫UDP模型了。

7、總結(jié)

雖然使用UDP能夠構(gòu)建網(wǎng)表時(shí)序邏輯和組合的邏輯的行為模型,但是仿真終究是仿真,無法做到與實(shí)際芯片行為完全一致,特別是在部分信號(hào)為X態(tài)時(shí)。因此網(wǎng)表仿真中如果X態(tài)的出現(xiàn)導(dǎo)致仿真出現(xiàn)問題,此時(shí)不代表電路真的存在問題,需要仔細(xì)分析原因,其中需要重點(diǎn)分析UDP模型是怎么寫的。

審核編輯:湯梓紅
聲明:本文內(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)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119203
  • 仿真
    +關(guān)注

    關(guān)注

    50

    文章

    3972

    瀏覽量

    132961
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1333

    瀏覽量

    109713
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    384

    瀏覽量

    59517

原文標(biāo)題:Verilog語法: 必須掌握的User-defined primitives (UDPs)

文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Verilog HDL的基本語法

    Verilog HDL的基本語法 .pdf
    發(fā)表于 08-15 15:06

    Verilog HDL語法

    Verilog HDL語法,要的拿
    發(fā)表于 01-24 22:53

    verilog HDL語法總結(jié)

    verilog HDL語法總結(jié)
    發(fā)表于 03-16 14:26

    Verilog基礎(chǔ)語法

    Verilog基礎(chǔ)語法
    發(fā)表于 05-27 08:00

    verilog是什么?基本語法有哪些?

    verilog是什么?基本語法有哪些?
    發(fā)表于 09-18 07:41

    可綜合的Verilog語法和語義

    可綜合的Verilog語法和語義(劍橋大學(xué),影?。?第七版
    發(fā)表于 05-21 14:50 ?27次下載
    可綜合的<b class='flag-5'>Verilog</b><b class='flag-5'>語法</b>和語義

    Verilog_HDL的基本語法詳解(夏宇聞版)

    Verilog_HDL的基本語法詳解(夏宇聞版):Verilog HDL是一種用于數(shù)字邏輯電路設(shè)計(jì)的語言。用Verilog HDL描述的電路設(shè)計(jì)就是該電路的
    發(fā)表于 10-08 14:48 ?0次下載
    <b class='flag-5'>Verilog</b>_HDL的基本<b class='flag-5'>語法</b>詳解(夏宇聞版)

    Verilog HDL實(shí)驗(yàn)練習(xí)與語法手冊(cè)

    Verilog HDL實(shí)驗(yàn)練習(xí)與語法手冊(cè)-高教
    發(fā)表于 05-11 11:30 ?0次下載

    常見的Verilog行為級(jí)描述語法

    常見的Verilog描述語句與對(duì)應(yīng)的邏輯關(guān)系;熟悉語法與邏輯之間的關(guān)系
    的頭像 發(fā)表于 09-15 08:18 ?1w次閱讀
    常見的<b class='flag-5'>Verilog</b>行為級(jí)描述<b class='flag-5'>語法</b>

    FPGA視頻教程之Verilog語法基礎(chǔ)的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA視頻教程之Verilog語法基礎(chǔ)的詳細(xì)資料說明資料免費(fèi)下載
    發(fā)表于 03-01 11:35 ?16次下載
    FPGA視頻教程之<b class='flag-5'>Verilog</b><b class='flag-5'>語法</b>基礎(chǔ)的詳細(xì)資料<b class='flag-5'>說明</b>

    Verilog語法基礎(chǔ)

    Verilog HDL是一種用于數(shù)字系統(tǒng)設(shè)計(jì)的語言。用Verilog HDL描述的電路設(shè)計(jì)就是該電路的Verilog HDL模型也稱為模塊。Verilog HDL既是一種行為描述的語言
    的頭像 發(fā)表于 03-08 14:29 ?1.3w次閱讀

    Verilog HDL的基礎(chǔ)知識(shí)詳細(xì)說明

    硬件描述語言基本語法和實(shí)踐 (1)VHDL 和Verilog HDL的各自特點(diǎn)和應(yīng)用范圍 (2)Verilog HDL基本結(jié)構(gòu)語言要素與語法規(guī)則 (3)
    發(fā)表于 07-03 17:36 ?53次下載
    <b class='flag-5'>Verilog</b> HDL的基礎(chǔ)知識(shí)詳細(xì)<b class='flag-5'>說明</b>

    有關(guān)Verilog中的一些語法詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是有關(guān)Verilog中的一些語法詳細(xì)資料說明。
    發(fā)表于 07-25 17:08 ?2次下載
    有關(guān)<b class='flag-5'>Verilog</b>中的一些<b class='flag-5'>語法</b>詳細(xì)資料<b class='flag-5'>說明</b>

    Verilog語法進(jìn)階

    Verilog語法進(jìn)階說明
    發(fā)表于 05-06 16:14 ?30次下載

    Verilog HDL入門教程-Verilog HDL的基本語法

    Verilog HDL入門教程-Verilog HDL的基本語法
    發(fā)表于 01-07 09:23 ?171次下載