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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Verilog UDPs的語法說明

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

1、UDP的使用場景

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

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

然而在使用VCS進行網(wǎng)表仿真時,此時網(wǎng)表中寄存器名稱是這樣的SDFF*_XXXX,其中SDFF_XXXX是每個寄存器類型對應的標準Cell的名稱。

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

實際上進行網(wǎng)表仿真時,EDA工具會讀取對應SDFF_XXXX的UDPs模型,從而進行SDFF_XXXX的行為模擬。

2、UDPs的語法說明

2.1. 2種類型

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

combinational UDP用于構建組合邏輯模型,常見有mux模塊.

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

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

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

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

//語法錯誤
modulexxx();


primitive


  endprimitive


endmodule

每個UDP有且只有一個輸出,并且輸出只有三種狀態(tài),0, 1, or x,不支持Z狀態(tài)。

每個UDP可以由多個輸入信號,如果輸入信號為z,則當做X對待。時序UDP至少允許9個輸入信號,組合UDP至少允許10個輸入信號。

每個UDP不支持定義inout類型的信號

時序UDP的輸出信號應該使用reg申明。

組合UDP的輸出信號不能使用reg申明。

時序UDP可以使用initial語句定制仿真開始前output信號的初始值

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

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

狀態(tài)表中使用的各類變量見表40。例如r表示上升沿,f表示下降沿。*表示數(shù)值改變。

狀態(tài)表中的每行以分號結束。

狀態(tài)表本質上就是一個輸入信號/輸出信號組合的列表。

組合UDP狀態(tài)表中有一個冒號“:”,用于隔離輸入和輸出信號。

時序UDP狀態(tài)表中有當前狀態(tài),還有下一個狀態(tài),因此有2個冒號“:”,用于隔離輸入、輸出(當前狀態(tài))和下一個狀態(tài)。

組合UDP模型中,如果輸入信號狀態(tài)組合在狀態(tài)表中沒有指定,則輸出會是X。

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

2.4.UDP結構

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

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

3、組合UDP案例

如下案例為2選1的mux,sel為1時,out為in1;sel為0時,out為in0。

請注意:信號列表中,輸出信號out在第一個。狀態(tài)表中,out處于最后一列。

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

4、電平觸發(fā)時序UDPs

如下案例為一個低電平觸發(fā)的latch。

使用reg申明了一個內部變量,表示當前狀態(tài)q,即當前udp的輸出狀態(tài)。

table中的q+代表的是下一個有效周期的輸出狀態(tài)。

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

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

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

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

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

6、小技巧

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

7、總結

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

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5271

    瀏覽量

    119648
  • 仿真
    +關注

    關注

    50

    文章

    3995

    瀏覽量

    133225
  • Verilog
    +關注

    關注

    28

    文章

    1335

    瀏覽量

    109852
  • RTL
    RTL
    +關注

    關注

    1

    文章

    385

    瀏覽量

    59623

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

文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Verilog HDL的基本語法

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

    Verilog HDL語法

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

    verilog HDL語法總結

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

    Verilog基礎語法

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

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

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

    可綜合的Verilog語法和語義

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

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

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

    Verilog HDL實驗練習與語法手冊

    Verilog HDL實驗練習與語法手冊-高教
    發(fā)表于 05-11 11:30 ?0次下載

    常見的Verilog行為級描述語法

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

    FPGA視頻教程之Verilog語法基礎的詳細資料說明

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

    Verilog語法基礎

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

    Verilog HDL的基礎知識詳細說明

    硬件描述語言基本語法和實踐 (1)VHDL 和Verilog HDL的各自特點和應用范圍 (2)Verilog HDL基本結構語言要素與語法規(guī)則 (3)
    發(fā)表于 07-03 17:36 ?54次下載
    <b class='flag-5'>Verilog</b> HDL的基礎知識詳細<b class='flag-5'>說明</b>

    有關Verilog中的一些語法詳細資料說明

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

    Verilog語法進階

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

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

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