|
-- 會員 / 註冊 --
|
|
|
|
Verilog與SystemVerilog編程陷阱:如何避免101個常犯的編碼錯誤 ( 簡體 字) |
作者:斯圖爾特·薩瑟蘭 | 類別:1. -> 電子工程 -> Verilog |
譯者: |
出版社:機械工業出版社 | 3dWoo書號: 41928 詢問書籍請說出此書號!【缺書】 【不接受訂購】 |
出版日:7/3/2015 |
頁數:155 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
【不接受訂購】 | ISBN:9787111503163 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:這本書可以幫助工程師寫出更好的Verilog/SystemVerilog的設計和驗證代碼,書中闡述了使用Verilog和SystemVerilog語言時超過100個常見的編碼錯誤;每一個例子都詳細說明了錯誤的癥狀、錯誤的語言規則以及正確的編碼方式。這本書能幫助數字設計工程師和驗證工程師有效地識別與避免這些常見的編碼錯誤。書中列舉的這些錯誤許多是非常微妙的,有可能需要花費幾個小時或幾天的時間才能發現或調試。
|
目錄:關于作者 第1章 什么是“編程陷阱” / 1 什么是Verilog和SystemVerilog / 1 什么是陷阱 / 1 Verilog和SystemVerilog標準 / 2 第2章 聲明以及字符表述類陷阱 / 5 陷阱1:字母大小寫的敏感性 / 5 陷阱2:網表的隱式聲明 / 7 陷阱3:默認的1bit內部網 / 9 陷阱4:單文件和多文件編譯的$unit聲明 / 11 陷阱5:局部變量的聲明 / 12 陷阱6:分層路徑的轉義名稱 / 13 陷阱7:自動變量的分層引用 / 15 陷阱8:未命名模塊中的變量分層引用 / 17 陷阱9:分層引用一個導入的包項目 / 19 陷阱10:從程序包中導入枚舉類型 / 19 陷阱11:導入多個程序包 / 20 陷阱12:默認的整數進制 / 21 陷阱13: 有符號整數 / 23 陷阱14:有符號數的位寬擴展 / 24 陷阱15:變量位寬與賦值位寬的不一致 / 26 陷阱16:將矢量全置為1 / 27 陷阱17:合并數組和并置 / 28 陷阱18:端口連接的幾點規則 / 29 陷阱19:后驅動端口 / 32 陷阱20:實型(浮點型)數字的端口間傳送 / 34 第3章 RTL建模中的陷阱 / 37 陷阱21:包含函數調用的組合邏輯靈敏度列表 / 37 陷阱22:靈敏度列表中的數組 / 39 陷阱23:時序邏輯靈敏度列表中的向量 / 41 陷阱24:靈敏度列表中的操作 / 42 陷阱25:使用begin...end的時序邏輯塊 / 43 陷阱26:帶復位的順序邏輯塊 / 45 陷阱27:異步設置/復位觸發器仿真和綜合 / 46 陷阱28:順序程序塊中的阻塞賦值 / 47 陷阱29:要求阻塞賦值的順序邏輯 / 48 陷阱30:組合邏輯中的非阻塞賦值 / 50 陷阱31:錯誤順序的組合邏輯賦值語句 / 52 陷阱32:case表達式中casez/casex掩碼用法 / 54 陷阱33:不完備的判決語句 / 55 陷阱34:重疊判決語句 / 58 陷阱35:不恰當使用unique 條件語句 / 59 陷阱36:2-狀態模型的復位 / 61 陷阱37:枚舉類型鎖定狀態機的建模 / 63 陷阱38:4-狀態邏輯中隱藏的設計問題 / 65 陷阱39:2-狀態類型中隱藏的設計問題 / 66 陷阱40:越界數組訪問中的隱藏問題 / 68 陷阱41:枚舉類型的越界賦值 / 69 陷阱42:模塊中未檢測到共享變量 / 71 陷阱43:在接口和程序包中未見共享變量 / 72 第4章 運算符陷阱 / 74 陷阱44:表達式的賦值 / 74 陷阱45:操作符的自定義和上下文定義 / 75 陷阱46:賦值語句中的運算位寬和符號擴展 / 77 陷阱47:有符號數的算數運算規則 / 80 陷阱48:基于位選擇的操作 / 82 陷阱49:遞增、遞減和賦值運算符 / 83 陷阱50:前加與后加運算 / 84 陷阱51:一條語句中變量的多次改變 / 86 陷阱52:運算求值短路 / 86 陷阱53:邏輯非(!)與按位求反符(∼) / 88 陷阱54:數組的運算 / 88 陷阱55:針對數組子集的運算 / 89 第5章 常見的編程陷阱 / 91 陷阱56:驗證零時刻的異步和同步復位 / 91 陷阱57:if...else嵌套語塊 / 95 陷阱 58:4-狀態值下等號求值 / 96 陷阱 59:事件觸發競爭條件 / 97 陷阱 60:使用信號量的同步 / 99 陷阱61:使用郵箱的同步 / 101 陷阱 62:時鐘塊的觸發 / 103 陷阱63:判斷語句后錯誤使用分號 / 103 陷阱 64:for循環語句中分號的錯誤使用 / 105 陷阱65:死循環 / 106 陷阱66:由于并發for循環引起的死鎖 / 106 陷阱67:循環控制變量的引用 / 108 陷阱68:函數返回默認的位寬 / 109 陷阱69:任務/功能函數的默認值 / 110 陷阱70:為避免毛刺而采用延遲的連續賦值 / 111 第6章 面向對象和多線程編程中的陷阱 / 113 陷阱71:類定義的編程語句 / 113 陷阱72:基于面向對象接口的測試平臺 / 114 陷阱73:郵箱中的所有對象具有相同的值 / 115 陷阱74:使用input或ref參數的句柄傳遞 / 116 陷阱75:構建一個基于對象的數組 / 117 陷阱76:靜態任務和功能的非可重入性 / 118 陷阱77:靜態變量與自動變量的初始化 / 119 陷阱78:叉型編程線程需要自動變量 / 121 陷阱79:禁用fork將終止多個線程 / 123 陷阱80:禁用一個語句塊卻未如所愿 / 124 陷阱81:仿真在測試完畢前過早退出 / 127 第7章 隨機化、覆蓋率和斷言類陷阱 / 129 陷阱82:隨機化聲明的變量并未隨機化 / 129 陷阱83:未被檢測的隨機化失敗 / 130 陷阱84:$assertoff 可以禁止隨機化 / 131 陷阱85:兩個以上隨機變量的布爾約束條件 / 133 陷阱86:不必要的負隨機值 / 134 陷阱87:覆蓋報告默認基于組而非箱 / 135 陷阱88:覆蓋率始終報告0% / 136 陷阱89:覆蓋報告將所有實例混在一起 / 138 陷阱90:覆蓋組的參數方向具有粘黏性 / 138 陷阱91:斷言傳遞語句與空成功一同執行 / 139 陷阱92:程序塊中的并發斷言 / 141 陷阱93:assert...else語句中的不匹配 / 142 陷阱94:不能失敗的斷言 / 143 第8章 工具兼容性陷阱 / 145 陷阱95:默認的仿真時間單位和精度 / 145 陷阱96:程序包鏈接 / 147 陷阱97:不同工具的隨機數生成不一致 / 149 陷阱98:使用always_latch/always_ff來加載存儲器模型 / 150 陷阱99:非標準語言擴展 / 151 陷阱100:數組常量的級聯 / 153 陷阱101:傳輸浮點數值(實數類型)的模塊端口 / 154
|
序: |
|