UVM register layer classes用于為DUV中的memory-mapped寄存器和內(nèi)存的read/write操作創(chuàng)建一個high-level和object-oriented的模型。
這種抽象機制允許驗證環(huán)境和測試用例從模塊級遷移到系統(tǒng)級,而無需進行任何修改。寄存器模型還可以在寄存器之間移動唯一命名的字段,而不需要在驗證環(huán)境或測試用例中進行修改(因為寄存器模型是按照字符串索引操作的,而不是按照字段offset操作的)。
UVM還提供了一個寄存器測試sequence庫,你可以用來驗證DUV中registers和memories的功能。
register model通常也是層次結(jié)構(gòu)的。Blocks可以包含registers、register files和memories,以及其他Blocks。
register layer classes支持front-door a和back-door訪問。
由于register layer classes涉及眾多的細(xì)節(jié),所以通常是由model generator從設(shè)計中的registers和memories的規(guī)格生成的。
register model 是一個register block的實例,它可以包含任意數(shù)量的registers、register files、memories和其他blocks。一個block通常對應(yīng)于一個設(shè)計,它有自己的處理器接口,地址解碼以及memory-mapped registers和memories。每個register file包含任意數(shù)量的registers和其他register files。每個寄存器包含任意數(shù)量的字段(fields),它們反映(mirror)了硬件中相應(yīng)域段的值。
如果一個memories作為設(shè)計模塊地址空間的一部分通過寄存器模型進行訪問,那么該memories被認(rèn)為是寄存器模型的一部分。
所有的數(shù)據(jù)域段都被建模為fields。fields代表一組連續(xù)的比特,完全包含在一個register中。
一個register可以橫跨多個地址,重復(fù)的結(jié)構(gòu)可以被建模為register arrays, register file arrays或者block arrays。下圖顯示了一個包含兩個寄存器(分別有2個和3個字段)、一個內(nèi)部存儲器和一個外部存儲器的設(shè)計。
相應(yīng)的寄存器模型如下:
當(dāng)使用 register model時,fields、registers和memory是通過其相應(yīng)的抽象類中的讀寫方法(不通過地址,而是通過字符串名稱)來訪問的。寄存器模型通過適當(dāng)?shù)目偩€驅(qū)動將這些抽象的訪問變成特定地址的實際讀寫。
例 如,上圖所示的CONFIG寄存器中的字段ADDR可以通過CODEC.CONFIG.ADDR.read() 方 法 訪 問 。同 樣 , BFR 存 儲 器 中 的 位 置“7”可以用CODEC.BFR.write(7,value)方法訪問。
-
寄存器
+關(guān)注
關(guān)注
31文章
5268瀏覽量
119645 -
接口
+關(guān)注
關(guān)注
33文章
8355瀏覽量
150514 -
模型
+關(guān)注
關(guān)注
1文章
3058瀏覽量
48571
原文標(biāo)題:UVM寄存器模型概述
文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論