SV語法學(xué)習(xí)

包的定義

  • 在大型的驗(yàn)證項(xiàng)目中谢翎,很容易出現(xiàn)模塊重名的情況捍靠。
  • 對于重名的硬件模塊我們可以將它們置入到不同編譯的庫中。
  • 對于重名的軟件類岳服、方法等剂公,我們可以將它們置入到不同的包中。
  • 我們可能使用不同的驗(yàn)證IP吊宋,我們也無法預(yù)測這些類名是否可能重名。
  • 通過包(package)可以將關(guān)聯(lián)的類和方法并入到同一個(gè)邏輯集合中。
  • 為了使得可以在多個(gè)模塊(硬件)或者類(軟件)之間共享用戶定義的類型璃搜,SV添加了包(package)拖吼。
  • 用戶自定義的類型譬如類、方法这吻、變量吊档、結(jié)構(gòu)體、枚舉類等都可以在package...endpackage中定義.
package definitions;
  parameter VERSION = "1.1";
  typedef enum{ADD,SUB,MUL} opcodes_t;
  typedef struct {
    logic [31:0] a,b;
    opcodes_t opcode;
} instruction_t;
  function automatic [31:0] multiplier (input [31:0] a, b);
    return a * b;
  endfunction
endpackage
  • module唾糯、interface怠硼、class等可以使用包中定義或者聲明的內(nèi)容。
  • 可以通過域的索引符號::直接引用移怯。
definitions::parameter
definitions::instruction_t inst
  • 可以指定索引一些需要的包中定義的類型到指定的域中香璃。
module M
  import definitions:: instruction_t;
  instruction_t inst;
endmodule
  • 通過通配符*來將包中所有的類別導(dǎo)入到指定的域中。
module M
  import definitions :: *
  instruction_t inst;
endmodule
  • 可以通過域的索引符號::直接引用舟误。
module ALU(input definitions::instruction_t IW,
                          input logic clock,
                          output logic [31:0] result);
  always_ff @(posedge clock) begin
    case (IW.opcode)
      definitions::ADD:result = IW.a + IW.b;
      definitions::SUB : result = IW.a - IW.b;
      definitions::MUL :result = 
                                            definitions::multiplier(IW.a, IW.b);
    endcase
  end
endmodule

一般使用這種直接引用類型比較繁瑣葡秒,是為了特意強(qiáng)調(diào)某些類型、變量是來自某個(gè)包嵌溢,避免了重名以及方便代碼閱讀眯牧。

  • 可以指定索引一些需要的包中定義的類型到指定的域中。
module ALU(...);
  import definitions::ADD;
  import definitions::SUB;
  import definitions::MUL;
  import definitions::multiplier;
  always_comb begin
    case(IW.opcode)
      ADD :result = IW.a + IW.b;
      SUB:: result = IW.a - IW.b;
      MUL : result =  multiplier(IW.a, IW.b);
    endcase
  end
endmodule

例如赖草,在ALU模塊中先導(dǎo)出了枚舉值A(chǔ)DD,SUB,MUL和函數(shù)multiplier.
因此就可以在always語句塊中就可以直接使用這些類型了学少。
如果覺得從包中逐一導(dǎo)出比較繁瑣:[也可以采用下面的方法]


image.png

示例問題:


image.png
  • 然而這兩個(gè)package 中同名的類,它們的內(nèi)容是不相同的秧骑,實(shí)現(xiàn)的也是不同的功能旱易。
  • 由于我們將這些重名的類歸屬到不同的package中編譯,這樣如果要使用不同package中的的同名類腿堤,他們只需要注明要使用哪一個(gè)package中的阀坏。
module mcdf_tb;
  chnl_pkg:: monitor mon1 = new();
  arb_pkg:: monitor mon2 = new();
endmodule

由于類名本身有沖突,這使得在引用類的時(shí)候笆檀,不得不使用直接索引的方式忌堂,這在兩個(gè)包中導(dǎo)出多個(gè)類型時(shí)就不方便了。在實(shí)際代碼中一般建議包中的類型名稱帶有包名的前綴
因此可以通過通配符索引類型的方式來導(dǎo)入到模塊中

image.png

  • 從上述的簡單例子來看酗洒,package這個(gè)容器可以對類型做一個(gè)隔離的作用
  • package的意義在于將軟件(類士修、類型、方法等)封裝在不同的域中樱衷,以此來與全局的域進(jìn)行隔離棋嘲。
包與庫的區(qū)分
  • 庫是編譯的產(chǎn)物,硬件(module 矩桂、interface沸移、program)都會編譯到庫中,如果不指定編譯庫的話,會被編譯進(jìn)入默認(rèn)的庫中雹锣。
  • 庫可以容納硬件類型网沾,也可以容納軟件類型,例如類蕊爵、方法和包
  • 包只能容納軟件類型例如類辉哥、方法和參數(shù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市攒射,隨后出現(xiàn)的幾起案子醋旦,更是在濱河造成了極大的恐慌,老刑警劉巖会放,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饲齐,死亡現(xiàn)場離奇詭異,居然都是意外死亡鸦概,警方通過查閱死者的電腦和手機(jī)箩张,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窗市,“玉大人先慷,你說我怎么就攤上這事∽刹欤” “怎么了论熙?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長摄狱。 經(jīng)常有香客問我脓诡,道長,這世上最難降的妖魔是什么媒役? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任祝谚,我火速辦了婚禮,結(jié)果婚禮上酣衷,老公的妹妹穿的比我還像新娘交惯。我一直安慰自己,他們只是感情好穿仪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布席爽。 她就那樣靜靜地躺著,像睡著了一般啊片。 火紅的嫁衣襯著肌膚如雪只锻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天紫谷,我揣著相機(jī)與錄音齐饮,去河邊找鬼捐寥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛沈矿,可吹牛的內(nèi)容都是我干的上真。 我是一名探鬼主播咬腋,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼羹膳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了根竿?” 一聲冷哼從身側(cè)響起陵像,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寇壳,沒想到半個(gè)月后醒颖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡壳炎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年泞歉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匿辩。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡腰耙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铲球,到底是詐尸還是另有隱情挺庞,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布稼病,位于F島的核電站选侨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏然走。R本人自食惡果不足惜援制,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芍瑞。 院中可真熱鬧晨仑,春花似錦、人聲如沸啄巧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秩仆。三九已至码泛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間澄耍,已是汗流浹背噪珊。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工晌缘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痢站。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓磷箕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阵难。 傳聞我的和親對象是個(gè)殘疾皇子岳枷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容