SystemVerilog Package的一些編碼規(guī)范
芯片驗證工程師 2021-11-05 13:45
收藏
paget="_blank">ckage 是SystemVerilog語言的一種數(shù)據(jù)結(jié)構(gòu),它允許將相關(guān)的聲明和定義打包在同一個namespace中。package 可能包含類型定義、常量聲明、函數(shù)和類模板。要想在某個作用域內(nèi)使用package ,必須先導(dǎo)入該包。package 是組織代碼和確保類型一致的有效方法,這里需要仔細(xì)去區(qū)分下和`include的區(qū)別。UVM基類庫包含在一個名為“uvm_pkg”的package 中。在開發(fā)UVM testbenche 時,應(yīng)該使用package來組織agents、envs、sequence libraries、test libraries等組件中的各種類定義。?1、一個package 及其相應(yīng)的SV文件應(yīng)該用一個_pkg后綴來命名。例如spi_env_pkg.sv文件應(yīng)該包含package spi_env_pkg。使用獨立的SV文件表明這個package 文件是一個獨立的編譯單元。_pkg后綴表示該文件中包含一個package 。這種編碼規(guī)范對工程師和工具腳本都很友好。2、package 中包含的類應(yīng)該使用`include。在package 內(nèi)聲明的類模板應(yīng)該被分離到擴(kuò)展名為.svh的單個文件中。這些文件應(yīng)該按照必要的編譯順序進(jìn)行`include。package 文件是唯一應(yīng)該使用`include的地方,在`include文件中不應(yīng)該有進(jìn)一步的`include語句。在單獨的文件中聲明類可以使它們更容易維護(hù),也可以使package 的內(nèi)容更清晰。3、其他packages 中的Imports 應(yīng)在package 的頂部聲明。一個package的內(nèi)容可能需要參考另一個package 的內(nèi)容。在這種情況下,外部package 應(yīng)該在該package 代碼的開頭聲明。4、一個package 使用的所有文件都應(yīng)該位于一個目錄中。
下面是一個針對UVM env的package 文件的示例。這個env包含兩個agents (spi和apb)和一個register model ,它們作為子package 導(dǎo)入。與env相關(guān)的類模板通過?`included導(dǎo)入:package spi_env_pkg;// Standard UVM import