verilog的一些細節


  初學verilog的剛知道還有可綜合不可綜合的時候,覺得可綜合的verilog真是太簡單了,用到的語法只有一點點,現在看看實在是孤陋寡聞了。今天了解到的新的東西總結一下:
  • verilog-2001的RTL可綜合標准可以參考文檔 IEEE P1364.1 / D1.6 Draft Standard for Verilog(R) Register Transfer Level Synthesis,這個文檔規定了綜合工具對語法的支持;
  • 線網類型除了wire之外還有tri,tri0,tri1,wand,wor,triand,trior,suppy0,supply1,其中:
    • tri,tri0,tri1表示三態的線網(其實wire的z狀態也可以表示高阻,當時對這個不在意可能是這個原因)tri0跟tri1分別是帶下拉跟上拉電阻。其實上下拉電阻只在輸入斷開的時候起作用,這個設計中基本用不到,這個可能是對這個不在意的另一個原因。另,1364.1文檔中說綜合是不支持tri0跟tri1的;
    • wand,wor,triand,trior,后半部分可以看出這個是帶邏輯結果線型變量,也就是說是多輸入的;
    • supply0和supply1分別表示邏輯的0和1,是無輸入的;
  • 綜合支持的編譯指令有`default_nettype,`define,`undef,`include,‘ifdef, ‘else, ‘elsif, ‘endif, ‘ifndef,其中:
    • `defalut_nettype后可跟tri,tri0,tri1,wand,wor,triand,trior,none,指示隱含的線網(模塊的IO等)的默認類型,如果沒有這條命令則默認為wire,如果選擇none則有隱含的線網類型時會報錯——這個其實蠻好的,可以做代碼規范性檢查;
    • `define是支持參數的,跟C的帶參數宏是一樣的;
  • interger其實是帶符號的,不過verilog-2001中的wire和reg都已經是支持signed定義關鍵字了
  總的說來,又一次讓我認識到verilog的內容並不是這么簡單的,細節還是相當多的。體會是還是應該相信官方的文檔已經實踐,不要道聽途說。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM