《電子與嵌入式系統設計叢書:UVM實戰(卷1)》以一個完整的示例開篇,使得讀者一開始就對如何使用UVM搭建驗證平台有總體的概念。《電子與嵌入式系統設計叢書:UVM實戰(卷1)》提供大量示例代碼,這些代碼都經過實際的運行。全書內容力求簡單易懂,儘量將UVM中的概念與讀者已有的概念聯繫起來。在第11章還專門介紹了OVM與UVM的區別,為那些從OVM遷移到UVM的用戶提供很大幫助。《電子與嵌入式系統設計叢書:UVM實戰(卷1)》主要面向UVM的初學者及想對UVM追根尋底的中級用戶。針對沒有面向對象編程基礎的用戶,《電子與嵌入式系統設計叢書:UVM實戰(卷1)》在附錄中簡要介紹了面向對象的概念及SystemVerilog中區別於其他程式語言的一些特殊語法。
基本介紹
- 書名:電子與嵌入式系統設計叢書:UVM實戰
- 類型:計算機與網際網路
- 出版日期:2014年7月1日
- 語種:簡體中文
- ISBN:9787111470199
- 作者:張強
- 出版社:機械工業出版社
- 頁數:368頁
- 開本:16
- 品牌:機械工業出版社
基本介紹,內容簡介,作者簡介,圖書目錄,
基本介紹
內容簡介
《電子與嵌入式系統設計叢書:UVM實戰(卷1)》主要介紹UVM的使用。全書詳盡介紹了UVM的factory機制、sequence機制、phase機制、objection機制及暫存器模型等的使用。此外,《電子與嵌入式系統設計叢書:UVM實戰(卷1)》還試圖引導讀者思考UVM為什麼要引入這些機制,從而使讀者知其然,更知其所以然。
作者簡介
張強,資深驗證工程師,畢業於浙江大學超大規模積體電路研究所,研究方向為模擬及數模混合積體電路,主要從事模擬電源管理晶片、運算放大器及套用於高性能CPU的SRAM的研究與設計,持有兩個與SRAM相關的專利。畢業後一直從事數字積體電路的設計和驗證工作,曾經參與過高速智慧型列車數據採集及通信系統、高性能智慧型投影儀晶片的研究與開發。目前主要從事手機等消費電子低功耗圖形顯示晶片的研究。2011年年底,在熟讀UVM原始碼的情況下,在網上發布了《UVM1.1套用指南及原始碼解析》,深受讀者肯定。
圖書目錄
前言
第1章與UVM的第一次接觸
1.1UVM是什麼
1.1.1驗證在現代IC流程中的位置
1.1.2驗證的語言
1.1.3何謂方法學
1.1.4為什麼是UVM
1.1.5UVM的發展史
1.2學了UVM之後能做什麼
1.2.1驗證工程師
1.2.2設計工程師
第2章一個簡單的UVM驗證平台
2.1驗證平台的組成
2.2隻有driver的驗證平台
2.2.1最簡單的驗證平台
2.2.2加入factory機制
2.2.3加入objection機制
2.2.4加入virtualinterface
2.3為驗證平台加入各個組件
2.3.1加入transaction
2.3.2加入env
2.3.3加入monitor
2.3.4封裝成agent
2.3.5加入referencemodel
2.3.6加入scoreboard
2.3.7加入field_automation機制
2.4UVM的終極大作:sequence
2.4.1在驗證平台中加入sequencer
2.4.2sequence機制
2.4.3default_sequence的使用
2.5建造測試用例
2.5.1加入base_test
2.5.2UVM中測試用例的啟動
第3章UVM基礎
3.1uvm_component與uvm_object
3.1.1uvm_component派生自uvm_object
3.1.2常用的派生自uvm_object的類
3.1.3常用的派生自uvm_component的類
3.1.4與uvm_object相關的宏
3.1.5與uvm_component相關的宏
3.1.6uvm_component的限制
3.1.7uvm_component與uvm_object的二元結構
3.2UVM的樹形結構
3.2.1uvm_component中的parent參數
3.2.2UVM樹的根
3.2.3層次結構相關函式
3.3fieldautomation機制
3.3.1fieldautomation機制相關的宏
3.3.2fieldautomation機制的常用函式
3.3.3fieldautomation機制中標誌位的使用
3.3.4fieldautomation中宏與if的結會
3.4UVM中列印信息的控制
3.4.1設定列印信息的冗餘度閾值
3.4.2重載列印信息的嚴重性
3.4.3UVM_ERROR到達一定數量結束仿真
3.4.4設定計數的目標
3.4.5UVM的斷點功能
3.4.6將輸出信息導入檔案中
3.4.7控制列印信息的行為
3.5config_db機制
3.5.1UVM中的路徑
3.5.2set與get函式的參數
3.5.3省略get語句
3.5.4跨層次的多重設定
3.5.5同一層次的多重設定
3.5.6非直線的設定與獲取
3.5.7config_db機制對通配符的支持
3.5.8check_config_usage
3.5.9set_config與get_config
3.5.10config_db的調試
第4章UVM中的TLM1.0通信
4.1TLM1.0
4.1.1驗證平台內部的通信
4.1.2TLM的定義
4.1.3UVM中的PORT與EXPORT
4.2UVM中各種連線埠的互連
4.2.1PORT與EXPORT的連線
4.2.2UVM中的IMP
4.2.3PORT與IMP的連線
4.2.4EXPORT與IMP的連線
4.2.5PORT與PORT的連線
4.2.6EXPORT與EXPORT的連線
4.2.7blocking_get連線埠的使用
4.2.8blocking_transport連線埠的使用
4.2.9nonblocking連線埠的使用
4.3UVM中的通信方式
4.3.1UVM中的analysis連線埠
4.3.2一個component內有多個IMP
4.3.3使用FIFO通信
4.3.4FIFO上的連線埠及調試
4.3.5用FIFO還是用IMP
第5章UVM驗證平台的運行
5.1phase機制
5.1.1taskphase與functionphase
5.1.2動態運行phase
5.1.3phase的執行順序
5.1.4UVM樹的遍歷
5.1.5super.phase的內容
5.1.6build階段出現UVMERROR停止仿真
5.1.7phase的跳轉
5.1.8phase機制的必要性
5.1.9phase的調試
5.1.10逾時退出
5.2objection機制
5.2.1objection與taskphase
5.2.2參數phase的必要性
5.2.3控制objection的最佳選擇
5.2.4set_drain_time的使用
5.2.5objection的調試
5.3domain的套用
5.3.1domain簡介
5.3.2多domain的例子
5.3.3多domain中phase的跳轉
第6章UVM中的sequence
6.1sequence基礎
6.1.1從driver中剝離激勵產生功能
6.1.2sequence的啟動與執行
6.2sequence的仲裁機制
6.2.1在同一sequencer上啟動多個sequence
6.2.2sequencer的lock操作
6.2.3sequencer的grab操作
6.2.4sequence的有效性
6.3sequence相關宏及其實現
6.3.1uvm_do系列宏
6.3.2uvm_create與uvm_send
6.3.3uvm_rand_send系列宏
6.3.4start_item與finish_item
6.3.5pre_do.mid_do與post_do
6.4sequence進階套用
6.4.1嵌套的sequence
6.4.2在sequence中使用rand類型變數
6.4.3transaction類型的匹配
6.4.4p_sequencer的使用
6.4.5sequence的派生與繼承
6.5virtualsequence的使用
6.5.1帶雙路輸入輸出連線埠的DUT
6.5.2sequence之間的簡單同步
6.5.3sequence之間的複雜同步
6.5.4僅在virtualsequence中控制objection
6.5.5在sequence中慎用forkjoin_none
6.6在sequence中使用config_db
6.6.1在sequence中獲取參數
6.6.2在sequence中設定參數
6.6.3wait_modified的使用
6.7response的使用
6.7.1put_response與get_response
6.7.2response的數量問題
6.7.3responsehandler與另類的response
6.7.4rsp與req類型不同
6.8sequencelibrary
6.8.1隨機選擇sequence
6.8.2控制選擇算法
6.8.3控制執行次數
6.8.4使用sequence_library_cfg
第7章UVM中的暫存器模型
7.1暫存器模型簡介
7.1.1帶暫存器配置匯流排的DUT
7.1.2需要暫存器模型才能做的事情
7.1.3暫存器模型中的基本概念
7.2簡單的暫存器模型
7.2.1隻有一個暫存器的暫存器模型
7.2.2將暫存器模型集成到驗證平台中
7.2.3在驗證平台中使用暫存器模型
7.3後門訪問與前門訪問
7.3.1UVM中前門訪問的實現
7.3.2後門訪問操作的定義
7.3.3使用interface進行後門訪問操作
7.3.4UVM中後門訪問操作的實現:DPI+VPI
7.3.5UVM中後門訪問操作接口
7.4複雜的暫存器模型
7.4.1層次化的暫存器模型
7.4.2reg_file的作用
7.4.3多個域的暫存器
7.4.4多個地址的暫存器
7.4.5加入存儲器
7.5暫存器模型對DUT的模擬
7.5.1期望值與鏡像值
7.5.2常用操作及其對期望值和鏡像值的影響
7.6暫存器模型中一些內建的sequence
7.6.1檢查後門訪問中hdl路徑的sequence
7.6.2檢查默認值的sequence
7.6.3檢查讀寫功能的sequence
7.7暫存器模型的高級用法
7.7.1使用reg_predictor
7.7.2使用UVM_PREDICTDIRECT功能與mirror操作
7.7.3暫存器模型的隨機化與update
7.7.4擴展位寬
7.8暫存器模型的其他常用函式
7.8.1get_root_blocks
7.8.2get_reg_by_offset函式
第8章UVM中的factory機制
8.1SystemVerilog對重載的支持
8.1.1任務與函式的重載
8.1.2約束的重載
8.2使用factory機制進行重載
8.2.1factory機制式的重載
8.2.2重載的方式及種類
8.2.3複雜的重載
8.2.4factory機制的調試
8.3常用的重載
8.3.1重載transaction
8.3.2重載sequence
8.3.3重載component
8.3.4重載driver以實現所有的測試用例
8.4factory機制的實現
8.4.1創建一個類的實例的方法
8.4.2根據字元串來創建一個類
8.4.3用factory機制創建實例的接口
8.4.4factory機制的本質
……
第9章UVM中代碼的可重用性
第10章UVM高級套用
第11章OVM到UVM的遷移
附錄ASystemVerilog使用簡介
附錄BDUT代碼清單
附錄CUVM命令行參數匯總
附錄DUVM常用宏匯總
第1章與UVM的第一次接觸
1.1UVM是什麼
1.1.1驗證在現代IC流程中的位置
1.1.2驗證的語言
1.1.3何謂方法學
1.1.4為什麼是UVM
1.1.5UVM的發展史
1.2學了UVM之後能做什麼
1.2.1驗證工程師
1.2.2設計工程師
第2章一個簡單的UVM驗證平台
2.1驗證平台的組成
2.2隻有driver的驗證平台
2.2.1最簡單的驗證平台
2.2.2加入factory機制
2.2.3加入objection機制
2.2.4加入virtualinterface
2.3為驗證平台加入各個組件
2.3.1加入transaction
2.3.2加入env
2.3.3加入monitor
2.3.4封裝成agent
2.3.5加入referencemodel
2.3.6加入scoreboard
2.3.7加入field_automation機制
2.4UVM的終極大作:sequence
2.4.1在驗證平台中加入sequencer
2.4.2sequence機制
2.4.3default_sequence的使用
2.5建造測試用例
2.5.1加入base_test
2.5.2UVM中測試用例的啟動
第3章UVM基礎
3.1uvm_component與uvm_object
3.1.1uvm_component派生自uvm_object
3.1.2常用的派生自uvm_object的類
3.1.3常用的派生自uvm_component的類
3.1.4與uvm_object相關的宏
3.1.5與uvm_component相關的宏
3.1.6uvm_component的限制
3.1.7uvm_component與uvm_object的二元結構
3.2UVM的樹形結構
3.2.1uvm_component中的parent參數
3.2.2UVM樹的根
3.2.3層次結構相關函式
3.3fieldautomation機制
3.3.1fieldautomation機制相關的宏
3.3.2fieldautomation機制的常用函式
3.3.3fieldautomation機制中標誌位的使用
3.3.4fieldautomation中宏與if的結會
3.4UVM中列印信息的控制
3.4.1設定列印信息的冗餘度閾值
3.4.2重載列印信息的嚴重性
3.4.3UVM_ERROR到達一定數量結束仿真
3.4.4設定計數的目標
3.4.5UVM的斷點功能
3.4.6將輸出信息導入檔案中
3.4.7控制列印信息的行為
3.5config_db機制
3.5.1UVM中的路徑
3.5.2set與get函式的參數
3.5.3省略get語句
3.5.4跨層次的多重設定
3.5.5同一層次的多重設定
3.5.6非直線的設定與獲取
3.5.7config_db機制對通配符的支持
3.5.8check_config_usage
3.5.9set_config與get_config
3.5.10config_db的調試
第4章UVM中的TLM1.0通信
4.1TLM1.0
4.1.1驗證平台內部的通信
4.1.2TLM的定義
4.1.3UVM中的PORT與EXPORT
4.2UVM中各種連線埠的互連
4.2.1PORT與EXPORT的連線
4.2.2UVM中的IMP
4.2.3PORT與IMP的連線
4.2.4EXPORT與IMP的連線
4.2.5PORT與PORT的連線
4.2.6EXPORT與EXPORT的連線
4.2.7blocking_get連線埠的使用
4.2.8blocking_transport連線埠的使用
4.2.9nonblocking連線埠的使用
4.3UVM中的通信方式
4.3.1UVM中的analysis連線埠
4.3.2一個component內有多個IMP
4.3.3使用FIFO通信
4.3.4FIFO上的連線埠及調試
4.3.5用FIFO還是用IMP
第5章UVM驗證平台的運行
5.1phase機制
5.1.1taskphase與functionphase
5.1.2動態運行phase
5.1.3phase的執行順序
5.1.4UVM樹的遍歷
5.1.5super.phase的內容
5.1.6build階段出現UVMERROR停止仿真
5.1.7phase的跳轉
5.1.8phase機制的必要性
5.1.9phase的調試
5.1.10逾時退出
5.2objection機制
5.2.1objection與taskphase
5.2.2參數phase的必要性
5.2.3控制objection的最佳選擇
5.2.4set_drain_time的使用
5.2.5objection的調試
5.3domain的套用
5.3.1domain簡介
5.3.2多domain的例子
5.3.3多domain中phase的跳轉
第6章UVM中的sequence
6.1sequence基礎
6.1.1從driver中剝離激勵產生功能
6.1.2sequence的啟動與執行
6.2sequence的仲裁機制
6.2.1在同一sequencer上啟動多個sequence
6.2.2sequencer的lock操作
6.2.3sequencer的grab操作
6.2.4sequence的有效性
6.3sequence相關宏及其實現
6.3.1uvm_do系列宏
6.3.2uvm_create與uvm_send
6.3.3uvm_rand_send系列宏
6.3.4start_item與finish_item
6.3.5pre_do.mid_do與post_do
6.4sequence進階套用
6.4.1嵌套的sequence
6.4.2在sequence中使用rand類型變數
6.4.3transaction類型的匹配
6.4.4p_sequencer的使用
6.4.5sequence的派生與繼承
6.5virtualsequence的使用
6.5.1帶雙路輸入輸出連線埠的DUT
6.5.2sequence之間的簡單同步
6.5.3sequence之間的複雜同步
6.5.4僅在virtualsequence中控制objection
6.5.5在sequence中慎用forkjoin_none
6.6在sequence中使用config_db
6.6.1在sequence中獲取參數
6.6.2在sequence中設定參數
6.6.3wait_modified的使用
6.7response的使用
6.7.1put_response與get_response
6.7.2response的數量問題
6.7.3responsehandler與另類的response
6.7.4rsp與req類型不同
6.8sequencelibrary
6.8.1隨機選擇sequence
6.8.2控制選擇算法
6.8.3控制執行次數
6.8.4使用sequence_library_cfg
第7章UVM中的暫存器模型
7.1暫存器模型簡介
7.1.1帶暫存器配置匯流排的DUT
7.1.2需要暫存器模型才能做的事情
7.1.3暫存器模型中的基本概念
7.2簡單的暫存器模型
7.2.1隻有一個暫存器的暫存器模型
7.2.2將暫存器模型集成到驗證平台中
7.2.3在驗證平台中使用暫存器模型
7.3後門訪問與前門訪問
7.3.1UVM中前門訪問的實現
7.3.2後門訪問操作的定義
7.3.3使用interface進行後門訪問操作
7.3.4UVM中後門訪問操作的實現:DPI+VPI
7.3.5UVM中後門訪問操作接口
7.4複雜的暫存器模型
7.4.1層次化的暫存器模型
7.4.2reg_file的作用
7.4.3多個域的暫存器
7.4.4多個地址的暫存器
7.4.5加入存儲器
7.5暫存器模型對DUT的模擬
7.5.1期望值與鏡像值
7.5.2常用操作及其對期望值和鏡像值的影響
7.6暫存器模型中一些內建的sequence
7.6.1檢查後門訪問中hdl路徑的sequence
7.6.2檢查默認值的sequence
7.6.3檢查讀寫功能的sequence
7.7暫存器模型的高級用法
7.7.1使用reg_predictor
7.7.2使用UVM_PREDICTDIRECT功能與mirror操作
7.7.3暫存器模型的隨機化與update
7.7.4擴展位寬
7.8暫存器模型的其他常用函式
7.8.1get_root_blocks
7.8.2get_reg_by_offset函式
第8章UVM中的factory機制
8.1SystemVerilog對重載的支持
8.1.1任務與函式的重載
8.1.2約束的重載
8.2使用factory機制進行重載
8.2.1factory機制式的重載
8.2.2重載的方式及種類
8.2.3複雜的重載
8.2.4factory機制的調試
8.3常用的重載
8.3.1重載transaction
8.3.2重載sequence
8.3.3重載component
8.3.4重載driver以實現所有的測試用例
8.4factory機制的實現
8.4.1創建一個類的實例的方法
8.4.2根據字元串來創建一個類
8.4.3用factory機制創建實例的接口
8.4.4factory機制的本質
……
第9章UVM中代碼的可重用性
第10章UVM高級套用
第11章OVM到UVM的遷移
附錄ASystemVerilog使用簡介
附錄BDUT代碼清單
附錄CUVM命令行參數匯總
附錄DUVM常用宏匯總