002_uvm_ralgen_ug(Understanding the Generated Model)

Fields

ralgen不會生成field的抽象類。
每個field對應一個uvm_ral_field類的實例漱挚。
這個類的實例(對象)在它所屬的register和這個register所屬的block里
filed類的實例存儲在對filed類進行例化的reg類和對這個reg進行例化的block類的屬性中。

Registers

對每個定義的reg生成一個抽象類:

  • 名稱為regnam的reg是獨立定義的饲齐,對應一個類ral_reg_regnam
  • 名稱為regnam的reg定義在一個名稱為blknam的block中愈捅,對應一個類ral_reg_blknam_regnam
  • 名稱為regnam的reg定義在一個名稱為blknam的block中的名稱為filnam的regfile中损同,對應一個類ral_reg_blknam_filnam_regnam

如果一個register里包含field數組翩腐,則在這個register對應的類里聲明這個field的數組。

register r {
  bytes 1; 
field f[8] { 
bits 1; 
  } 
}

對應ral

class ral_reg_b_r extends uvm_ral_reg;
   rand uvm_reg_field f[8];
   ... 
endclass: ral_reg_b_r

Register Files

對每個register file定義生成一個抽象類膏燃。

  • 名稱為filnam的register file定義在一個名稱為blknam的block中茂卦,對應一個類ral_regfile_blknam_filnam
block dma_ctrl { 
   regfile chan { 
      register src { 
         field addr { ... } 
      } 
      register dst { 
         field addr { ... } 
      } 
      register count { 
         field n_bytes { ... } 
      } 
      register ctrl { 
         field TXE { ... } 
         field BSY { ... } 
      } 
   } 
}

對應ral

class ral_regfile_dma_ctrl_chan; 
   ral_reg_dma_ctrl_chan_src src; 
   uvm_reg_field             src_addr; 
   ral_reg_dma_ctrl_chan_dst dst; 
   uvm_reg_field             dst_addr; 
   ral_reg_dma_ctrl_chan_count count; 
   uvm_reg_field               n_bytes, count_n_bytes; 
   uvm_reg_field               TXE, ctrl_TXE; 
   uvm_reg_field               BSY, ctrl_BSY; 
   ... 
endclass: ral_reg_dma_ctrl_chan 

regfiles類的實例在包含這個regfile的block類中。

virtual Registers

virtual register是fields的集合组哩,一般是隊列的形式等龙,跟memory關聯处渣。
對每個定義的virtual register生成一個抽象類(擴展自uvm_vreg):

  • 名稱為vregnam的vreg隊列是獨立定義的,對應一個類ral_vreg_vregnam
  • 名稱為vregnam的vreg隊列定義在一個名稱為blknam的block中蛛砰,對應一個類ral_vreg_blknam_vregnam
block blk1 { 
   memory ram0 { ... } 
    
   virtual register dma[256] ram0@0x0000 { 
      field len { ... } 
      field bfrptr { ... } 
      field ok { ... } 
   } 
}

對應ral

class ral_vreg_blk1_dma extends uvm_ral_vreg; 
   uvm_vreg_field len; 
   uvm_vreg_field bfrptr; 
   uvm_vreg_field ok; 
   ... 
endclass: ral_vreg_blk1_dma 
class ral_block_blk1 extends uvm_reg_block; 
   uvm_mem       ram0; 
   ral_vreg_blk1_dma dma; 
   ... 
endclass: ral_block_blk1 

注意ralf文件里virtual register中的field對應ral文件中的uvm_vreg_field
而且在block中實例化virtual register罐栈,只例化一個實例,而不是一個實例的隊列泥畅,參考上面例子中的virtual register dma[256] 在ral文件中的ral_block_blk1類中的聲明荠诬。這與register中的field隊列不一樣。ralf文件中的隊列大小位仁,在vreg調用configure()的第三個參數體現

Memories

對每個定義的memory生成一個抽象類(擴展自uvm_mem):

  • 名稱為memnam的memory是獨立定義的柑贞,對應一個類ral_mem_memnam
  • 名稱為memnam的memory定義在一個名稱為blknam的block中,對應一個類ral_mem_blknam_memnam

Blocks

對每個定義的block生成一個抽象類(擴展自uvm_reg_block):

  • 名稱為blknam的block是獨立定義的聂抢,對應一個類ral_block_blknam
  • 名稱為blknam的block定義在一個名稱為sysnam的system中钧嘶,對應一個類ral_block_sysnam_blknam
    前面的例子可以看到,block類里會包含每個register和register file琳疏,reg和regfile的名字跟ralf中的名字一樣有决;block類里還會包含每個field,會有一個這個field的名字(如果field的名字唯一轿亮,如果不唯一疮薇,沒有這個同名的field,只有一個連接的名字)和一個連接的名字(register名字_field名字)的field類聲明我注。

隊列
如果一個block里包含了register隊列或者regfile隊列按咒,在block類例化的register,regfile也是同樣大小的隊列但骨,register里的field也會在block里包含為一個隊列励七,如果register里的field也是一個隊列,則block中對應的field是一個二維隊列奔缠。

block comp1 {
    bytes 4;
    register regA[10] @0x00 {
        field data[4] { bits 8; }
    }

    ...
}

對應ral文件

class ral_reg_comp1_regA extends uvm_reg;
    rand uvm_reg_field data[4];

endclass

class ral_block_comp1 extends uvm_reg_block;
    rand ral_reg_comp1_regA regA[10];
    ...
    rand uvm_reg_filed regA_data[10][4];
    ...

endclass

Systems

對每個定義的system生成一個抽象類(擴展自uvm_reg_block)

  • 名稱為sysnam的system是獨立定義的掠抬,對應一個類ral_sys_sysnam
  • 名稱為subnam的system定義在一個名稱為sysnam的system中,對應一個類ral_sys_sysnam_subnam
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末校哎,一起剝皮案震驚了整個濱河市两波,隨后出現的幾起案子,更是在濱河造成了極大的恐慌闷哆,老刑警劉巖腰奋,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異抱怔,居然都是意外死亡劣坊,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門屈留,熙熙樓的掌柜王于貴愁眉苦臉地迎上來局冰,“玉大人测蘑,你說我怎么就攤上這事】刀” “怎么了碳胳?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赠摇。 經常有香客問我固逗,道長,這世上最難降的妖魔是什么藕帜? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任烫罩,我火速辦了婚禮,結果婚禮上洽故,老公的妹妹穿的比我還像新娘贝攒。我一直安慰自己,他們只是感情好时甚,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布隘弊。 她就那樣靜靜地躺著,像睡著了一般荒适。 火紅的嫁衣襯著肌膚如雪梨熙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天刀诬,我揣著相機與錄音咽扇,去河邊找鬼。 笑死陕壹,一個胖子當著我的面吹牛质欲,可吹牛的內容都是我干的。 我是一名探鬼主播糠馆,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼嘶伟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了又碌?” 一聲冷哼從身側響起九昧,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎毕匀,沒想到半個月后铸鹰,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡期揪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了规个。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凤薛。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡姓建,死狀恐怖,靈堂內的尸體忽然破棺而出缤苫,到底是詐尸還是另有隱情速兔,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布活玲,位于F島的核電站涣狗,受9級特大地震影響,放射性物質發(fā)生泄漏舒憾。R本人自食惡果不足惜镀钓,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镀迂。 院中可真熱鬧丁溅,春花似錦、人聲如沸探遵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽箱季。三九已至涯穷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間藏雏,已是汗流浹背拷况。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留诉稍,地道東北人蝠嘉。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像杯巨,于是被迫代替她去往敵國和親蚤告。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容