內容提要
《面向數字系統綜合的Verilog編碼風格》Verilog HDL是當今國際上一種主流的標準化硬體描述語言,目前已出版有多本詳細介紹該語言語法和結構的教材。本書的不同之處在於其重點介紹的並不是語法本身,而是以電路綜合為目標,通過大量實例來說明具有不同特點的可綜合的編碼風格。全書共分17章,覆蓋了Verilog基本語法、仿真測試、面向FPGA和標準單元的邏輯綜合、可綜合的代碼風格和VLSI設計方法學等關鍵內容,最後還簡要描述了混合技術的設計。
目錄
第1章 概論
參考文獻
第2章 基本語法結構
2.1 預備知識
2.1.1 標識符
2.1.2 運算符
2.1.3 值
2.1.4 表達式
2.2 數據類型
2.2.1 連線型
2.2.2 暫存器型
2.2.3 整型
2.2.4 實型
2.2.5 時間
2.2.6 事件
2.2.7 位矢量
2.2.8 拼接和複製
2.2.9 數組
2.2.10 參數
2.2.11 編譯預處理指令
2.3 模組
2.3.1 連線埠連線規則
2.3.2 連線埠列表
2.3.3 層級名
2.4 結論
練習
參考文獻
第3章 結構和行為描述
3.1 概述
3.2 基本門
3.2.1 採用基本門組成的結構化模組
3.2.2 用戶自定義元件
3.3 建模層次
3.4 編碼風格
3.5 可綜合的運算符
3.6 連續賦值語句
練習
參考文獻
第4章 仿真
4.1 仿真器的種類
4.2 VCS仿真器的使用
4.3 測試平台(testbenches)
4.4 調試
練習
第5章 過程描述
5.1 always塊
5.1.1 塊語句
5.1.2 多周期執行的always塊
5.2 函式和任務
5.3 阻塞型和非阻塞型賦值
5.4 控制結構
5.4.1 IF語句
5.4.2 循環語句
5.4.3 舉例
5.5 條件結構的綜合
5.6 舉例——組合邏輯模組
5.7 觸發器與鎖存器
5.8 存儲器
5.9 總結
練習
參考文獻
第6章 單個模組的設計方法
6.1 概述
6.2 基本設計方法
6.3 設計規格
6.4 構建設計
6.5 設計實例1——一個簡單的減法計數器
6.5.1 設計規格
6.5.2 確定控制策略
6.5.3 確定RTL級結構
6.5.4 用Verilog描述設計
6.5.5 驗證設計的正確性
6.6 設計實例2——無符號並一串乘法器
6.6.1 確定控制策略
6.6.2 確定RTL結構
6.6.3 用verilog描述設計
6.7 定義觸發器的另一種方法
6.8 普遍存在的問題以及解決方法
6.8.1 額外鎖存器
6.8.2 不完整的同步定義(敏感列表)
6.8.3 線或邏輯的無意識產生
6.8.4 循環結構的不正確使用
6.9 調試方法
6.10 總結
練習
第7章 單個模組的驗證
7.1 概述
7.2 測試向量源
7.3 測試平台的編寫方法
7.3.1絕對時間和相對時間
7.3.2 讀取測試向量檔案
7.4 綜合後驗證
7.5形式驗證
7.5.1 等價性檢測
7.5.2模型檢測
7.6 系統級驗證
7.7 總結
練習
第8章 有限狀態機風格
8.1 概述
8.2 狀態機的綜合
8.2.1 經典模型
8.2.2 直接描述風格
8.2.3 間接描述風格
8.3 舉例
練習
參考文獻
第9章 控制點編碼風格
9.1 概述
9.2 參數化模組的例化
9.3 控制點描述風格
9.4 使用廠家的單元
9.5 結論
練習
參考文獻
第10章 複雜度管理——大型設計
10.1 上層設計的步驟
10.2 設計畫分
10.3 控制器設計風格
10.5 間接描述方式舉例——高速緩衝存儲器Cache
10.6 另一個間接方式描述舉例——MIPS200
10.6.1 MIPS200測試
10.6.2 對MIPS200 testbench的說明
10.6.3 MIPS的R]rL和控制點描述
10.7 總結
練習
參考文獻
第11章 時序、面積及功耗的最佳化
11.1 概述
11.2 設計中的時序問題
11.2.1 延時計算
11.2.2 邊沿觸發器的時序設計
11.2.3 鎖存器的時序設計
11.2.4 時序意識的設計
11.3 低功耗設計
11.3.1 CMOS電路中的功耗
11.3.2 針對低功耗的設計技術
11.3.3 低功耗設計中的CAD工具
11.4 設計中的面積問題
11.5 總結
練習
參考文獻
第12章 設計編譯
12.1 概述
12.2 運行實例——鬧鐘
12.3 建立
12.4 調用綜合
練習
參考文獻
第13章 面向標準單元的綜合
13.1 概述
13.2 綜合流程
13.3 總結
練習
參考文獻
第14章 面向FPGA的綜合
14.1 以現場可程式門陣列(FPGA)作為目標工藝
14.2 Altera工具的使用
14.3 Xilinx工具的使用
14.4 存儲器陣列的實現
14.4.1 用查找表作為存儲器(例如Xilinx)
14.4.2 用內嵌陣列塊作為存儲器(例如Altera)
14.5 用內嵌陣列作為ROM
14.6 FPGA報告
14.7 門級仿真
14.7.1 一些常見的疑惑
14.7.2 下載套用設計
14.8 總結
練習
參考文獻
第15章 門級仿真與測試
15.1 ad.hoc測試技術
15.2 綜合中的掃描插入
15.3 內建自測試
練習
參考文獻
第16章 其他編碼風格
16.1 概述
16.2 行為編譯器風格
16.2.1 布斯乘法器
16.2.2 行為編譯器——總結
16.3 自定時風格
16.4 封裝風格
16.5 未來HDL的發展
練習
參考文獻
第17章 混合設計技術
17.1 概述
17.2 數字/模擬
17.3 硬體/軟體
17.3.1 大規模硬體設計的仿真
17.3.2 軟/硬體協同設計
17.3.3 嵌入核的設計
17.3.4 SOC(System-On-a-Chip)的設計語言
17.4舉例
參考文獻
附錄 Venlog設計實例
精彩書摘
導語
本書試圖通過選擇簡單的Verilog語言和標準化的方法來實現這一目標,使高年級的本科生和研一的學生在一個學期內就可以通過門級仿真,理解中等規模到更加複雜的電路設計。本書既不是對Verilog語言的完整描述,也不是對仿真、綜合和FPGA晶片配置工具的完整介紹,讀者可以查閱相應參考手冊來了解這些內容。然而通過使用本書並配合一些實例,學生就能夠在一個學期之內完成一些有趣的項目。當然,這需要認真地學習一個學期。可以預計,以後工業界對具有這方面專門知識人才的需求甚至會超過對那些具有系統軟體專業知識人才的需求。通過本書的學習,讀者將具有駕馭完整設計過程的自信,可以完成更加複雜的設計並且可以有更多的閒暇時間來查閱各種手冊。
第1章 概論
目前在一個晶片上可以集成5000萬個以上的有源器件,而且晶片的複雜度還在不斷提高,因此設計者已經不可能用基於電路圖的方法來設計硬體了。現在積體電路設計幾乎完全來自於高級描述及綜合。儘管這一領域的方法學還沒有很好的建立,但是為了能跟上晶片複雜度迅猛提高的步伐,設計工具也在快速的發展中。
為了加深對這個演變過程的認識,很有必要回顧一下隨著早期器件工藝的變化,設計方法學是如何發展的。在1980以前的大規模積體電路(LSI)時代,晶片設計工程師“用手和膝蓋趴在地上”來裁剪和貼上放大的晶片版圖。或許這就是為什麼把晶片版圖設計稱為平面布置(floorplan)的緣故。隨著超大規模積體電路(VLSl,被定義為晶片上的電晶體數超過10萬個的積體電路)的出現,以前的那種設計方法已經不可行了,伴隨著出現了一些諸如原理圖輸入、版圖編輯、參數提取以及仿真工具等計算機輔助設計工具,設計工程師能夠採用更多高級的方法進行設計。此時,通過對版圖規則進行抽象和簡化…,使得這些技術易於被在校大學生掌握。隨著器件製造工藝繼續發展到深亞微米級線寬時代,晶片上可以集成1億個甚至更多有源器件並且時鐘可達1GHz。這時很難在版圖和門級上來理解相應的電路。因此,高級的文本描述(語言)及綜合取代了電路原理圖輸入方式,晶片複雜度現在由這些工具報告中所給出的門數來定義④。在主流的動態CMOS工藝中,每個這樣的門大概對應5
個有源器件(電晶體),目前晶片集成度在20萬至l000萬個門範圍內。本書中的設計實例當然比這個規模小得多。
這種演變與上一代軟體工程學的發展非常類似。人們不願意閱讀由軟體編譯器生成的彙編代碼,而是更喜歡在原始碼中進行調試。同樣地,對於一個像“鬧鐘電路”這樣簡單的描述,綜合器將會把不到兩頁的高級原始碼轉變為超過40頁的門級電路圖,那么我們更願意對高級原始碼而不是對門級電路圖進行調試。
然而在技術發展的現階段,硬體編譯與軟體編譯並不完全相同,可以通過圖1.1和圖1.2做比較。
