發表於2024-12-26
目前一本用研究的眼光解讀如何搭建基於UVM搭建驗證平颱的書。
作者曆時3年鑽研UVM源代碼和使用UVM經驗的係統總結。
實例豐富,步步清晰引導讀者掌握UVM的精髓和實用技巧。
本書脫胎於網絡上廣為流傳的《UVM1.1應用指南及源碼分析》,內容愈加爐火純青。
《UVM實戰(捲1)》主要介紹UVM的使用。全書詳盡介紹瞭UVM的factory機製、sequence機製、phase機製、objection機製及寄存器模型等的使用。此外,本書還試圖引導讀者思考UVM為什麼要引入這些機製,從而使讀者知其然,更知其所以然。本書以一個完整的示例開篇,使得讀者一開始就對如何使用UVM搭建驗證平颱有總體的概念。本書提供大量示例代碼,這些代碼都經過實際的運行。全書內容力求簡單易懂,盡量將UVM中的概念與讀者已有的概念聯係起來。在第11章還專門介紹瞭OVM與UVM的區彆,為那些從OVM遷移到UVM的用戶提供很大幫助。本書主要麵嚮UVM的初學者及想對UVM追根尋底的中級用戶。針對沒有麵嚮對象編程基礎的用戶,本書在附錄中簡要介紹瞭麵嚮對象的概念及SystemVerilog中區彆於其他編程語言的一些特殊語法。
張強,資深驗證工程師,畢業於浙江大學超大規模集成電路研究所,研究方嚮為模擬及數模混閤集成電路,主要從事模擬電源管理芯片、運算放大器及應用於高性能CPU的SRAM的研究與設計,持有兩個與SRAM相關的專利。畢業後一直從事數字集成電路的設計和驗證工作,曾經參與過高速智能列車數據采集及通信係統、高性能智能投影儀芯片的研究與開發。目前主要從事手機等消費電子低功耗圖形顯示芯片的研究。2011年年底,在熟讀UVM源代碼的情況下,在網上發布瞭《UVM1.1應用指南及源代碼解析》,深受讀者肯定。
UVM驗證方法學在歐美先進的微電子和半導體公司中已經被廣泛采用。而目前國內的公司也開始作同樣的升級,《UVM實戰》是一本符閤現代驗證大趨勢的書。對於這一本由中國本土作者自己編寫的UVM學習書籍(也是第一部中文自主版權的UVM書籍),我深感驚奇,也為年輕的作者感到驕傲。書中涉及的全麵的UVM驗證方法學理論知識、豐富的實戰經驗和範例以及循序漸進的教學方式無不令人印象深刻,這是一本易懂易學的高水平著作,也是一本適閤於芯片驗證工程師、微電子專業本科或研究生以及相關學科教學的優秀學習教材和參考書。
—— T. Chan博士 美國Pixelworks公司工程部執行副總裁
我很榮幸能夠第一時間品讀這本關於UVM的中文書籍。UVM驗證方法學齣現不到5年,但是發展速度驚人,目前專業的IP、VIP供應商都開始為客戶提供UVM驗證環境,因此學習UVM對專業的驗證工程師,以及設計工程師,都有很大的裨益。
遺憾的是,目前關於UVM的資料大多是英文的,並且內容對於入門者來說比較晦澀難懂,讓人望而生畏,尚沒有正式齣版的中文UVM教程。這本書的齣現,有如及時雨,填補瞭這個空白,讓國內讀者能夠很快地在混沌中摸清方嚮。此書循序漸進,從實踐到背景原理進行瞭深入淺齣的講解,非常適閤自學。並且其內容是基於UVM的穩定版本1.1d,相對其他英文書籍內容更新、更實用,對讀者幫助也更大。作者有非常豐富的UVM經驗,曾經在網絡上發布過一個關於UVM代碼分析的文檔,我也曾經通過E-mail請教過他相關問題,受益匪淺。相信這本書能夠對國內整體驗證水平的提高帶來很大的幫助。不論是驗證工程師還是設計工程師,我都強烈推薦大傢仔細閱讀。
—— 硃迎輝 瑞晟微電子(蘇州)有限公司電腦周邊事業處副處長
我讀過不少介紹OVM/UVM驗證方法學的書,我也親自實踐過UVM,然而,我還是常常感慨沒有一本能夠真正把UVM說透徹、講清楚的技術書籍。有幸拜讀張強的《UVM實戰》一書之後,我的想法改變瞭。以我多年IC設計和驗證的經驗,我認為這是一本能夠讓讀者叫好的技術書籍。作者結閤自己在UVM驗證領域豐富的實踐經驗,花費很多心血深入研究UVM的源代碼,從體係上把握瞭UVM的精髓,然後用深入淺齣的方式將其介紹給讀者。這本書給人以耳目一新的感覺,從理論到實踐、從初級到高級、從搭建平颱到係統調試,不但講述非常清楚,而且邏輯聯係嚴密。學習完本書,並且按照書中的實例進行練習,就能夠係統地掌握UVM的使用和調試技術。與目前市麵上的其他UVM書籍相比,這一點實屬難能可貴。這本書對於使用UVM驗證的工程師具有極高的參考價值,對學習UVM的初學者更是一本不可多得的好書。
—— 賀海文 燦芯半導體DFT主管(曾任英特爾移動通信IC設計與驗證高級工程師)
第1章 與UVM的第一次接觸
1.1 UVM是什麼
1.1.1 驗證在現代IC流程中的位置
1.1.2 驗證的語言
1.1.3 何謂方法學
1.1.4 為什麼是UVM
1.1.5 UVM的發展史
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 加入virtual interface
2.3 為驗證平颱加入各個組件
*2.3.1 加入transaction
*2.3.2 加入env
*2.3.3 加入monitor
*2.3.4 封裝成agent
*2.3.5 加入reference model
*2.3.6 加入scoreboard
*2.3.7 加入field_automation機製
2.4 UVM的終極大作:sequence
*2.4.1 在驗證平颱中加入sequencer
*2.4.2 sequence機製
*2.4.3 default_sequence 的使用
2.5 建造測試用例
*2.5.1 加入base_test
*2.5.2 UVM中測試用例的啓動
第3章 UVM基礎
3.1 uvm_component與uvm_object
3.1.1 uvm_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.6 uvm_component的限製
3.1.7 uvm_component與uvm_object的二元結構
3.2 UVM的樹形結構
3.2.1 uvm_component中的parent參數
3.2.2 UVM樹的根
3.2.3 層次結構相關函數
3.3 field automation機製
3.3.1 field automation機製相關的宏
3.3.2 field automation機製的常用函數
*3.3.3 field automation機製中標誌位的使用
*3.3.4 field automation中宏與if的結閤
3.4 UVM中打印信息的控製
*3.4.1 設置打印信息的冗餘度閾值
*3.4.2 重載打印信息的嚴重性
*3.4.3 UVM_ERROR到達一定數量結束仿真
*3.4.4 設置計數的目標
*3.4.5 UVM的斷點功能
*3.4.6 將輸齣信息導入文件中
*3.4.7 控製打印信息的行為
3.5 config_db機製
3.5.1 UVM中的路徑
3.5.2 set與get函數的參數
*3.5.3 省略get語句
*3.5.4 跨層次的多重設置
*3.5.5 同一層次的多重設置
*3.5.6 非直綫的設置與獲取
*3.5.7 config_db機製對通配符的支持
*3.5.8 check_config_usage
3.5.9 set_config與get_config
3.5.10 config_db的調試
第4章 UVM中的TLM1.0通信
4.1 TLM1.
4.1.1 驗證平颱內部的通信
4.1.2 TLM的定義
4.1.3 UVM中的PORT與EXPORT
4.2 UVM中各種端口的互連
*4.2.1 PORT與EXPORT的連接
*4.2.2 UVM中的IMP
*4.2.3 PORT與IMP的連接
*4.2.4 EXPORT與IMP的連接
*4.2.5 PORT與PORT的連接
*4.2.6 EXPORT與EXPORT的連接
*4.2.7 blocking_get端口的使用
*4.2.8 blocking_transport端口的使用
4.2.9 nonblocking端口的使用
4.3 UVM中的通信方式
*4.3.1 UVM中的analysis端口
*4.3.2 一個component內有多個IMP
*4.3.3 使用FIFO通信
4.3.4 FIFO上的端口及調試
*4.3.5 用FIFO還是用IMP
第5章 UVM驗證平颱的運行
5.1 phase機製
*5.1.1 task phase與function phase
5.1.2 動態運行phase
*5.1.3 phase的執行順序
*5.1.4 UVM樹的遍曆
5.1.5 super.phase的內容
*5.1.6 build階段齣現UVM_ERROR停止仿真
*5.1.7 phase的跳轉
5.1.8 phase機製的必要性
5.1.9 phase的調試
5.1.10 超時退齣
5.2 objection機製
*5.2.1 objection與task phase
*5.2.2 參數phase的必要性
5.2.3 控製objection的最佳選擇
5.2.4 set_drain_time的使用
*5.2.5 objection的調試
5.3 domain的應用
5.3.1 domain簡介
*5.3.2 多domain的例子
*5.3.3 多domain中phase的跳轉
第6章 UVM中的sequence
6.1 sequence基礎
6.1.1 從driver中剝離激勵産生功能
*6.1.2 sequence的啓動與執行
6.2 sequence的仲裁機製
*6.2.1 在同一sequencer上啓動多個sequence
*6.2.2 sequencer的lock操作
*6.2.3 sequencer的grab操作
6.2.4 sequence的有效性
6.3 sequence相關宏及其實現
6.3.1 uvm_do係列宏
*6.3.2 uvm_create與uvm_send
*6.3.3 uvm_rand_send係列宏
*6.3.4 start_item與finish_item
*6.3.5 pre_do、mid_do與post_do
6.4 sequence進階應用
*6.4.1 嵌套的sequence
*6.4.2 在sequence中使用rand類型變量
*6.4.3 transaction類型的匹配
*6.4.4 p_sequencer的使用
*6.4.5 sequence的派生與繼承
6.5 virtual sequence的使用
*6.5.1 帶雙路輸入輸齣端口的DUT
*6.5.2 sequence之間的簡單同步
*6.5.3 sequence之間的復雜同步
6.5.4 僅在virtual sequence中控製objection
*6.5.5 在sequence中慎用fork join_none
6.6 在sequence中使用config_db
*6.6.1 在sequence中獲取參數
*6.6.2 在sequence中設置參數
*6.6.3 wait_modified的使用
6.7 response的使用
*6.7.1 put_response與get_response
6.7.2 response的數量問題
*6.7.3 response handler與另類的response
*6.7.4 rsp與req類型不同
6.8 sequence library
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.1 UVM中前門訪問的實現
7.3.2 後門訪問操作的定義
*7.3.3 使用interface進行後門訪問操作
7.3.4 UVM中後門訪問操作的實現:DPI+VPI
*7.3.5 UVM中後門訪問操作接口
7.4 復雜的寄存器模型
*7.4.1 層次化的寄存器模型
*7.4.2 reg_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_PREDICT_DIRECT功能與mirror操作
*7.7.3 寄存器模型的隨機化與update
7.7.4 擴展位寬
7.8 寄存器模型的其他常用函數
7.8.1 get_root_blocks
7.8.2 get_reg_by_offset函數
第8章 UVM中的factory機製
8.1 SystemVerilog對重載的支持
*8.1.1 任務與函數的重載
*8.1.2 約束的重載
8.2 使用factory機製進行重載
*8.2.1 factory機製式的重載
*8.2.2 重載的方式及種類
*8.2.3 復雜的重載
*8.2.4 factory機製的調試
8.3 常用的重載
*8.3.1 重載transaction
*8.3.2 重載sequence
*8.3.3 重載component
8.3.4 重載driver以實現所有的測試用例
8.4 factory機製的實現
8.4.1 創建一個類的實例的方法
*8.4.2 根據字符串來創建一個類
8.4.3 用factory機製創建實例的接口
8.4.4 factory機製的本質
第9章 UVM中代碼的可重用性
9.1 callback機製
9.1.1 廣義的callback函數
9.1.2 callback機製的必要性
9.1.3 UVM中callback機製的原理
*9.1.4 callback機製的使用
*9.1.5 子類繼承父類的callback機製
9.1.6 使用callback函數/任務來實現所有的測試用例
9.1.7 callback機製、sequence機製和factory機製
9.2 功能的模塊化:小而美
9.2.1 Linux的設計哲學:小而美
9.2.2 小而美與factory機製的重載
9.2.3 放棄建造強大sequence的想法
9.3 參數化的類
9.3.1 參數化類的必要性
*9.3.2 UVM對參數化類的支持
9.4 模塊級到芯片級的代碼重用
*9.4.1 基於env的重用
*9.4.2 寄存器模型的重用
9.4.3 virtual sequence與virtual sequencer
第10章 UVM高級應用
10.1 interface
10.1.1 interface實現driver的部分功能
*10.1.2 可變時鍾
10.2 layer sequence
*10.2.1 復雜sequence的簡單化
*10.2.2 layer sequence的示例
*10.2.3 layer sequence與try_next_item
*10.2.4 錯峰技術的使用
10.3 sequence的其他問題
*10.3.1 心跳功能的實現
10.3.2 隻將virtual_sequence設置為default_sequence
10.3.3 disable fork語句對原子操作的影響
10.4 DUT參數的隨機化
10.4.1 使用寄存器模型隨機化參數
*10.4.2 使用單獨的參數類
10.5 聚閤參數
UVM實戰(捲1) 下載 mobi pdf epub txt 電子書 格式 2024
UVM實戰(捲1) 下載 mobi epub pdf 電子書正好需要這本書學習下,碰上打摺活動特彆劃算,嗬嗬
評分UVM相關介紹很棒的書,強烈推薦
評分正版圖書,五星好評。送貨快。
評分非常不錯的購物體驗,物流給力,贊一個
評分uvm的書不多 這本還不錯吧
評分這是在京東買東西以來最鬱悶的一次,書中間直接缺頁,聯係客服還不給換,還讓我以後怎麼在京東買東西!
評分不錯,超值 京東買東西就是放心 便捷
評分uvm的書不多 這本還不錯吧
評分太久沒看書瞭,要有恒心,有毅力
UVM實戰(捲1) mobi epub pdf txt 電子書 格式下載 2024