UVM暫存器篇之五 暫存器模型的整合(下)

2021-08-28 05:32:22 字數 1044 閱讀 9594

本文**:

前門訪問

利用暫存器模型,我們可以更方便地對暫存器做操作。接下來我們分別兩種訪問暫存器的方式,即前門訪問(front-door)和後門訪問(back-door)。前門訪問,顧名思義指的是在暫存器模型上做的讀寫操作,最終會通過匯流排uvc來實現匯流排上的物理時序訪問,因此是真實的物理操作;而後門訪問,指的是利用uvm dpi (uvm_hdl_read()、uvm_hdl_deposit()),將暫存器的操作直接作用到dut內的暫存器變數,而不通過物理匯流排訪問。

下面給出一段進行前門訪問的例碼。下面的這個sequence,繼承於uvm_reg_sequence,其除了具備一般uvm_sequence的預定義方法外,還具有跟暫存器操作相關的方法。下面對暫存器操作的例碼中,使用者可以看到兩種方式:

後門訪問

在進行後門訪問時,使用者首先需要確保暫存器模型在建立時,是否將各個暫存器對映到了dut一側的hdl路徑。下面的例碼即實現了暫存器模型與dut各個暫存器的對映:

例碼中通過uvm_reg_block::add_hdl_path(),將暫存器模型關聯到了dut一端,而通過uvm_reg::add_hdl_path_slice完成了將暫存器模型各個暫存器成員與hdl一側的位址對映。例如在稍後對暫存器slv0_rw_reg進行後門訪問時,uvm dpi函式會通過暫存器hdl路徑「reg_backdoor_access.dut.regs[0]」對映到正確的暫存器位置,繼而對其進行讀值或者修改。另外,暫存器模型build()函式最後一句,以lock_model()結尾,該函式的功能是結束位址對映關係,並且保證模型不會被其它使用者修改。

在暫存器模型完成了hdl路徑對映後,我們才可以利用uvm_reg或者uvm_reg_sequence自帶的方法進行後門訪問,下面仍然給出一段後門訪問的例碼。類似於前門訪問,後門訪問也有幾類方法提供:

前門訪問和後門訪問的比較

下面的表總結了前門訪問和後門訪問的主要差別:

從上面的差別可以看出,後門訪問較前門訪問更便捷一些更快一些,但如果單純依賴後門訪問也不能稱之為「正道」。實際上,利用暫存器模型的前門和後門訪問兩種混合方式,對暫存器驗證的完備性更有幫助。下面給出一些實際應用的場景:

UVM暫存器篇之七 暫存器模型的常規方法(下)

本文 mem與reg的聯絡和差別 uvm暫存器模型也可以用來對儲存建模。uvm mem類可以用來模擬rw 讀寫 ro 唯讀 和wo 只寫 型別的儲存,並且可以配置其模型的資料寬度和位址範圍。而uvm mem不同於uvm reg的地方在於,考慮到物理儲存一旦對映到uvm mem會帶來更大的資源消耗,因...

暫存器(通用暫存器)

因為學習使用的是王爽的 組合語言 第3版 因此也只能提到8086cpo的暫存器。對於其他而言,原理都是相通的。對於8086暫存器,有14個暫存器,主要是 ax bx cx dx si di sp bp ip cs ss ds es psw。一 通用暫存器 8086的通用暫存器有ax bx cx dx...

暫存器,標誌暫存器

涉及硬體傳輸資料的,往往包含以下內容 1.資料傳輸引腳 資料放 2.控制引腳 怎麼控制 3.狀態引腳 結果如何 暫存器相當於cpu內部的儲存單元,可能是連續排列,相當於 c語言中的陣列。一 8個通用暫存器 16 bit accumulate axah alr0 count cxch clr1 dat...