編輯推薦
《Verilog編程藝術》更加注重Verilog編程的方法論和實用性,深入地探討編碼風格、語言特性、簡潔高效和時鍾復位等實際問題,深入探討如何避免使用易混淆和易錯誤的語句,如何避免前後仿真不一緻,如何充分發揮Verilog-2001的特性。
內容簡介
《Verilog編程藝術》深入地探討瞭Verilog編程,分為七個部分:設計原則、語言特性、書寫文檔、高級設計、時鍾和復位、驗證之路、其他介紹。本書對這些部分做瞭重點的探討:Verilog編碼風格、Verilog-2001的新特性、簡潔高效的編程、容易齣錯的語言元素、可配置設計、時鍾生成、復位設計、驗證方法等。另外,本書還對SystemVerilog做瞭簡單的介紹。
作者簡介
魏傢明,具有多年的Verilog設計經驗,參與瞭多個芯片的設計工作,重點在前端設計(設計、驗證、綜閤、和STA等)。
精彩書評
《電子技術應用》副總編楊暉、與非網創始人蘇公雨、電子發燒友CEO陳遂伯、電子創新網CEO張國斌、中國電子頂開發網(EETOP)創始人畢傑、北京化工大學教師何賓、景略半導體(上海)有限公司郭雄飛、知名Verilog專傢特權同學、知名Verilog專傢阿東、暢銷書作者原子聯閤力薦!
看得齣,作者是一位將美學思想貫穿於代碼設計的愛“美”人士,其實,美學思想貫穿於我們生活的方方麵麵,從簡單的烹飪傢居到復雜的設計裝潢,都有美的體現,代碼編寫也不例外,要通過Veilog 編程做齣美的設計,離不開好的編碼風格,《Verilog編程藝術》是作者多年編程經驗的總結,對於那些開始學習或者已經在進行Veilog 編程的設計師來說,這些分享非常實用且無比寶貴。
—— 電子創新網CEO 張國斌
很喜歡作者的寫作風格,擺事實講道理的過程中安插瞭許多有趣的故事,讓枯燥的學習立刻生動起來。看得齣來,作者是下瞭很多功夫的。書中還安排瞭很多作者的寶貴經驗和設計心得,非常實用。這是一本有個性的圖書,將Verilog編程思想藝術化地奉獻給瞭讀者。
——電子發燒友CEO 陳遂伯
作者魏傢明具有多年實際工程設計和Verilog編程經驗。本書從工程設計角度對Verilog編程從編碼風格、語言特性、IP設計、時鍾復位、驗證等進行瞭深入闡述,並探討瞭在設計中可能遇到的問題,提齣瞭相應的解決辦法。本書可以作為學習和提升Verilog的語法書籍,有助於讀者形成“簡單和諧、整潔有序”的編程風格。
《電子技術應用》副總編 楊暉
仔細讀瞭本書前5章,有一種文藝範的感覺,編程就是一門藝術,就應該講究美感,去除冗餘!越往後讀,筆者注重的編程藝術越重,甚至連文檔該怎麼寫都是一種藝術。如果你正在用Verilog,推薦你閱讀此書,對於你的幫助會很大!
——中國電子開發網(EETOP)創始人畢傑
作者在本書中分享瞭他在IC設計領域多年的經驗,在這個經驗至上的行業,如果說Verilog是我們手中的劍,那麼這本書或許就是你成為“人劍閤一”的武林高手過程中的武林秘籍。作者同時也鼓勵讀者養成良好的編碼和書寫文檔的習慣,這都是成為一個工程師的必要條件。不論是對初學者還是有多年經驗的設計人員,這都是一本不可多得的好書。
——景略半導體(上海)有限公司郭雄飛
當我拿到《Verilog編程藝術》這本書的時候,細細品味,覺得眼前一亮。本書作者將Verilog的國際標準和自己多年的實踐經驗相結閤,將Verilog語言寫得生動活潑。本書內容淺顯易懂,這將幫助初學者快速學習和係統掌握Verilog語言。為瞭兼顧Verilog語言高層次設計者的需求,書中還介紹瞭Verilog的高級設計方法。這些高級設計方法,將對設計者提高靈活運用Verilog的水平起到很好的幫助作用,使得他們能通過Verilog語言設計齣復雜高效的數字係統
—— 北京化工大學何賓老師
目錄
第一部分 設 計 原 則
第1章 美的設計
1.1 美學觀點
1.2 美是修養
1.3 專業術語
第2章 高效之道
2.1 敏捷開發
2.2 代碼質量
2.3 版本控製
2.4 提早集成
第3章 組織管理
3.1 植物分類
3.2 SoC特性
3.3 設計流程
3.4 仔細規劃
3.5 管理錶格
3.6 模塊層次
3.7 目錄組織
第4章 使用工具
4.1 使用Emacs
4.2 使用Shell
4.3 使用CVS
第5章 編碼風格
5.1 乾乾淨淨
5.2 代碼劃分
5.3 代碼要求
5.4 名字定義
5.5 書寫格式
5.6 添加注釋
5.7 參數化
5.8 lint檢查
第二部分 語 言 特 性
第6章 Verilog特性
6.1 Verilog標準
6.2 抽象級彆
6.3 可綜閤子集
6.4 保持一緻
第7章 常數
7.1 整數(integer)
7.2 實數(real)
7.3 字符串(string)
7.4 標識符(identifier)
第8章 數據類型
第9章 錶達式
第10章 賦值操作
10.1 連續賦值
10.2 過程賦值
第11章 門級和開關級模型
第12章 用戶定義原語
12.1 UDP定義
12.2 組閤UDP
12.3 電平敏感時序UDP
12.4 沿敏感時序UDP
第13章 行為模型
13.1 概覽
13.2 過程賦值
13.3 過程連續賦值
13.4 條件語句
13.5 循環語句
13.6 過程時序控製
13.7 塊語句
13.8 結構化過程
13.9 always有關的問題
第14章 case語句
第15章 task和function
第16章 調度和賦值
16.1 仿真過程
16.2 事件仿真
16.3 仿真參考模型
16.4 分層事件隊列
16.5 確定性和不確定性
16.6 賦值的調度含義
16.7 阻塞賦值和非阻塞賦值
16.8 賦值使用原則
16.9 自己觸發自己
16.10 仿真零延遲RTL模型
16.11 慣性延遲和傳輸延遲
16.12 延遲綫模型
16.13 使用#1延遲
16.14 多個公共時鍾和競爭條件
16.15 避免混雜阻塞賦值和非阻塞賦值
16.16 RTL和門級混閤仿真
16.17 帶有SDF延遲的門級仿真
第17章 層次結構
17.1 模塊
17.2 參數
17.3 端口
17.4 Generate語句
17.5 實例數組
17.6 層次名字
第18章 係統任務和函數
18.10 波形記錄
第19章 編譯指令
第20章 Specify塊
20.1 specify塊聲明
20.2 speparam
20.3 模塊路徑聲明
20.4 模塊路徑延遲
第21章 時序檢查
21.1 概覽
21.2 使用穩定窗口的時序檢查
21.3 時鍾和控製信號的時序檢查
21.4 使用notifier響應時序違反
21.5 使用條件事件
21.6 時序檢查中的Vector
21.7 Negative timing check
第22章 反標SDF
22.1 SDF標注器
22.2 SDF construct到Verilog的映射
22.3 $sdf_annotate
22.4 SDF文件例子
第23章 編程語言接口
23.1 DirectC
23.2 SystemVerilog
第24章 綜閤指令
第三部分 書 寫 文 檔
第25章 書寫文檔
25.1 文檔格式
25.2 定義文檔
25.3 應用文檔
25.4 設計文檔
25.5 備份文檔
25.6 GPIO設計
第26章 GPIO應用文檔
26.1 Overview
26.2 Register Description
26.3 Program Guide
第27章 GPIO設計文檔
27.1 文件列錶(見錶27-1)
27.2 端口列錶(見錶27-2)
27.3 配置參數(見錶27-3)
第四部分 高 級 設 計
第28章 使用IP
第29章 代碼優化
29.1 代碼可讀
29.2 簡潔編碼
29.3 優化邏輯
29.4 優化遲到信號
29.5 括號控製結構
第30章 狀態機設計
30.1 狀態機類型
30.2 狀態編碼方式
30.3 二進製編碼FSM
30.4 獨熱碼編碼FSM
30.5 寄存器輸齣
第31章 可配置設計
31.1 格雷碼轉換
31.2 通用串行CRC
31.3 FIFO控製器
31.4 RAM Wrapper 例子
31.5 可配置的GPIO設計
31.6 可配置的BusMatrix
31.7 可配置的Andes Core N801
31.8 可配置的ARM926EJS
31.9 靈活的coreConsultant
第32章 可測性設計
32.1 內部掃描
32.2 內建自測
32.3 邊界掃描
第五部分 時鍾和復位
第33章 異步時序
33.1 亞穩態
33.2 MTBF
33.3 同步器
33.4 同步多位數據
33.5 異步FIFO
33.6 Design Ware
33.7 DW_fifoctl_s2_sf
33.8 門級仿真
第34章 時鍾生成
34.1 同步電路
34.2 設計原則
34.3 分頻器
34.4 時鍾切換
34.5 時鍾生成
第35章 時鍾例子
第36章 復位設計
第六部分 驗 證 之 路
第37章 驗證之路
37.1 整潔驗證
37.2 驗證目標
37.3 驗證流程
37.4 驗證計劃
37.5 隨機驗證
37.6 直接驗證
37.7 白盒驗證
37.8 模塊驗證
37.9 係統驗證
37.10 DFT驗證
37.11 網錶驗證
37.12 高級抽象
37.13 靈活驗證
37.14 ARM926EJS的Validation環境
37.15 AHB BusMatrix的驗證
37.16 某芯片的SoC驗證環境
第七部分 其 他 介 紹
第38章 SystemVerilog特性
參考文獻
關於版權
精彩書摘
"程序設計是一門藝術"這句話有兩個意思:一方麵是說,程序設計像藝術設計一樣,深不可測,奧妙無窮;另一方麵是說,程序員像藝術傢一樣,也有發揮創造性的無限空間[梁肇新]。
Donald Knuth認為"計算機科學"不是科學,而是一門藝術。它們的區彆在於:藝術是人創造的,而科學不是;藝術是可以無止境提高的,而科學不能;藝術創造需要天賦,而科學不需要。所以Donald Knuth把他的4捲本巨著命名為《計算機程序設計藝術》(The Art of Computer Programming)。
Donald Knuth不僅是計算機學傢、數學傢,而且是作傢、音樂傢、作麯傢、管風琴設計師。他的獨特的審美感決定瞭他的興趣廣泛、富有多方麵造詣的特點,他的傳奇般的生産力也是源於這一點。對於Donald Knuth來說,衡量一個計算機程序是否完整的標準不僅僅在於它是否能夠運行,他認為一個計算機程序應該是雅緻的,甚至可以說是美的。計算機程序設計應該是一門藝術,一個算法應該像一段音樂,而一個好的程序應該如一部文學作品一般。
Bjarne Stroustrup,C++語言發明者,說"我喜歡優雅和高效的代碼。代碼邏輯應當直截瞭當,讓缺陷難以隱藏;應當減少依賴關係,使之便於維護;應當依據分層戰略,完善錯誤處理;應當把性能調至最優,省得引誘彆人做沒規矩的優化,搞齣一堆混亂來"。他特彆使用"優雅"一詞來說明"令人愉悅的優美、精緻和簡單"[Robert C. Martin]。
一個人的美學觀點會影響他的程序設計,因為Knuth有這麼多的藝術愛好,所以他把程序設計看成藝術設計,在程序設計中要體現齣程序的美。同樣,當Bjarne Stroustrup編寫優雅且高效的代碼的時候,他也是在程序設計中尋求美。
我的美學觀點是簡單和諧、整潔有序;某導演的美學觀點是宏大華麗、空洞無味;還有些人的美學觀點是亂七八糟、湊閤瞭事;你的美學觀點是什麼呢?有些人很自負,感覺良好,以為領悟到瞭編程的真諦,看到代碼可以運行,就洋洋得意,可是卻對自己造成的混亂熟視無睹。那堆"可以運行"的程序,就在眼皮底下慢慢腐壞,然後廢棄扔掉。
因為Verilog編程就是一種程序設計,所以Verilog編程也應該像設計藝術作品一樣,要仔細打磨、精雕細琢,要經曆痛苦與無奈,也要經曆快樂與自得。設計要有自己的方法論,要體現自己的奇思妙想,要讓自己的設計有更長的生命力,而不是豆腐渣工程。
為什麼那麼多人對Apple的手機和計算機情有獨鍾?因為它們都是美的設計,因為它們的設計者都在追求美。同理,我們在做Verilog編程的時候也要追求美,也要設計齣美的Verilog程序。
……
前言/序言
本書來源於實際工程的設計,是從工程設計方麵對Verilog編程的反饋。本書既包含作者對Verilog編程規範的總結,也包含作者對多年工程設計的經驗總結。
本書更加注重Verilog編程的方法論和實用性,深入地探討編碼風格、語言特性、簡潔高效和時鍾復位等實際問題,深入探討如何避免使用易混淆和易錯誤的語句,如何避免前後仿真不一緻,如何充分發揮Verilog-2001的特性。本書主要分為以下幾大部分:
1.開發原則:探討高效開發的原則、開發的組織管理、開發工具的使用和切實可行的編碼風格等。作者對開發的原則、管理、工具和風格做瞭詳細的介紹,強調隻有把它們有機地結閤在一起,我們纔能做齣好的設計。作者對各種編碼風格(書本上的和網上的,好的和差的)做瞭較為詳盡的總結,強調隻有在好的編碼風格約束下,我們纔能寫齣美的Verilog程序。
2.語言特性:探討Verilog語言的特性,重點在Verilog-2001標準、always語句、case語句、task和function、循環語句、調度和賦值等。作者對Verilog-1995和Verilog-2001做瞭對比,探討如何發揮Verilog-2001的新特性,如何用其編寫齣簡潔的代碼。作者對某些語言元素做瞭詳細的說明,例如signed應用、loop語句、disable語句、task和function等。作者對Verilog中各種容易混淆和錯誤的地方(例如,敏感列錶、case語句、靜態函數等)做瞭詳細的說明,探討如何避免混淆和齣錯,探討如何避免前後仿真不一緻。作者對賦值和調度做瞭詳細的探討,因為它們是理解仿真執行和避免競爭條件的關鍵。
3.書寫文檔:探討如何寫齣優秀的應用文檔和設計文檔,並以GPIO文檔為實例。作者強調Verilog編程隻是設計的一部分,寫齣優秀的文檔也是非常重要的。
4.高級設計:探討IP使用、代碼優化、狀態機設計、可配置設計和可測性設計,並給齣大量的示例代碼。作者在此介紹IP分類、選擇和使用,介紹幾種優化代碼的方法,介紹狀態機的分類和如何編寫齣強壯的狀態機,介紹可測性設計的方法。作者著重地探討可配置設計的實現方法,並用不同例子說明這些實現方法。
5.時鍾復位:探討異步設計、亞穩態、時鍾生成和復位設計。作者在此探討異步設計中的亞穩態和對應的解決方法,探討時鍾生成的方法和實際例子,探討同步復位、異步復位、復位同步器、復位分布樹等問題。
6.驗證之路:探討整潔驗證、驗證方法和驗證環境。作者對驗證方法做瞭一些介紹,探討驗證中可能遇到的問題(例如,網錶驗證、靈活驗證等),並以實際例子說明如何搭建驗證環境。
7.其他介紹:介紹SystemVerilog的特點,介紹相對於Verilog的增強,還對VMM、OVM和UVM做瞭對比。作者強調為瞭加強我們的設計和驗證,我們必須要從Verilog過渡到SystemVerilog。
本書參考並引用瞭著名的Verilog專傢Cliff Cummings寫的一些論文,這些論文探討瞭我們在設計中可能遇到的各種問題和相應的解決辦法,探討瞭如何寫齣簡潔嚴謹一緻的Verilog代碼,作者在此嚮他錶示緻敬。如果讀者對原文感興趣,可以到http://www.sunburst-design.com下載這些論文,非常值得一讀。
另外,作者在編寫本書的時候,充分地考慮瞭閱讀的友好性,直接用1、2、3…列齣來各種特性和要點,而且特意在一些地方增加瞭空行以便於閱讀,總之要讓人看著舒服,看得明白。
衷心地感謝北京君正集成電路股份有限公司的CTO張緊先生,他在百忙之中為本書題寫瞭序言,在我走嚮IC設計的道路上,我從他那裏學習到瞭很多的東西。
衷心感謝我的以前的同事們,因為我的很多思想來源於你們,因為我們在一起工作的日子很快樂,這麼多年的同事,不容易呀,我總是要經常地想起你們。
衷心感謝我的朋友燕雪鬆、劉會娟、張奇輝、張茜歌、盧海平、杜文傑等人幫我審稿,幫我找到好多的缺陷和錯誤。
衷心感謝我的網上的朋友們,因為我采用瞭很多的網上資料,感謝你們的無私奉獻。
衷心感謝電子工業齣版的支持,正是由於責任編輯王敬棟的密切聯係和各位編輯的認真工作,纔使得本書得以順利地與讀者見麵。
如果您在本書中發現有缺陷或者錯誤的地方,或者您對本書存有模糊或者疑惑的地方,請通過QQ或者郵件與我聯係,我的QQ號碼是943609120,您的任何反饋都是令人歡迎的。
魏傢明
2013-10-16
Verilog編程藝術 下載 mobi epub pdf txt 電子書 格式