Vivado/Tcl零基礎入門與案例實戰( 簡體 字) | |
作者:高亞軍 | 類別:1. -> 電子工程 -> FPGA |
出版社:電子工業出版社 | 3dWoo書號: 54757 詢問書籍請說出此書號! 有庫存 NT售價: 395 元 |
出版日:6/1/2021 | |
頁數:272 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121412516 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1部分 基 礎 部 分
第1章 Tcl基礎知識 2 1.1 什么是Tcl 2 1.2 Tcl腳本的構成 3 1.3 變量賦值 4 1.4 變量置換 6 1.5 命令置換 10 1.6 反斜線置換 11 1.7 深入理解Tcl中的置換 12 1.8 雙引號與花括號 13 1.9 注釋與續行 15 1.10 本章小結 18 第2章 表達式 19 2.1 表達式的構成要素 19 2.2 算術操作符 20 2.3 關系操作符 21 2.4 邏輯操作符 22 2.5 按位操作符 23 2.6 選擇操作符 24 2.7 數學函數 25 2.8 字符串操作 28 2.9 本章小結 29 第3章 字符串 30 3.1 字符串的表示 30 3.2 字符串的類型 31 3.3 字符串的長度與索引 32 3.4 字符的獲取 33 3.5 字符串的添加 34 3.6 字符的刪除 34 3.7 字符的替換 35 3.8 字符串的比較 36 3.9 字符串的簡單搜索 37 3.10 字符串的匹配 38 3.11 格式化輸出 40 3.12 與字符串相關的其他命令 44 3.13 本章小結 45 第4章 列表 47 4.1 創建列表 47 4.2 列表長度與列表索引 49 4.3 獲取列表元素 52 4.4 添加列表元素 54 4.5 刪除列表元素 56 4.6 替換列表元素 57 4.7 搜索列表元素 58 4.8 對列表元素排序 61 4.9 字符串和列表之間的轉換 62 4.10 in和ni操作符 63 4.11 foreach命令 65 4.12 本章小結 68 第5章 數組 69 5.1 創建數組 69 5.2 獲取數組中的元素 70 5.3 刪除數組中的元素 72 5.4 數組與列表之間的轉換 73 5.5 二維數組 74 5.6 本章小結 75 第6章 流程控制 76 6.1 if命令 76 6.2 switch命令 79 6.3 while命令 83 6.4 for命令 85 6.5 source命令 87 6.6 本章小結 88 第7章 過程 89 7.1 過程的構成 89 7.2 過程的參數名列表 90 7.3 過程的返回值 93 7.4 局部變量與全局變量 96 7.5 模擬引用 98 7.6 數組用作參數或返回值 99 7.7 upvar命令 102 7.8 本章小結 106 第8章 命名空間 107 8.1 創建命名空間 107 8.2 創建命名空間變量 111 8.3 命名空間變量的作用域 112 8.4 訪問命名空間變量 114 8.5 從命名空間導入和導出命令 116 8.6 創建集合命令 118 8.7 本章小結 119 第9章 訪問文件 120 9.1 操縱文件名和目錄名 120 9.2 當前工作目錄和目錄內容 121 9.3 處理磁盤上的文件 123 9.4 獲取文件信息 125 9.5 讀文件 127 9.6 寫文件 129 9.7 處理CSV文件 130 9.8 本章小結 134 第2部分 應用部分 第10章 Vivado設計流程管理 138 10.1 Vivado對Tcl的支持 138 10.2 理解Vivado的設計流程 141 10.3 理解Vivado的兩種工作模式 146 10.4 Project模式 147 10.5 Non-Project模式 154 10.6 掃描策略 164 10.7 本章小結 169 第11章 Vivado設計資源管理 170 11.1 管理資源要素 170 11.2 管理HDL代碼文件 171 11.3 管理約束文件 176 11.4 管理IP文件 179 11.5 本章小結 183 第12章 Vivado設計分析 184 12.1 FPGA芯片架構中的對象 184 12.2 網表中的對象 192 12.3 時鐘分析 204 12.4 時序分析 206 12.5 質量分析 212 12.6 資源利用率分析 221 12.7 邏輯級數分析 222 12.8 復雜度與擁塞分析 224 12.9 扇出分析 226 12.10 UFDM分析 229 12.11 跨時鐘域路徑分析 230 12.12 約束分析 232 12.13 本章小結 235 第13章 Vivado設計復用 236 13.1 增量編譯 236 13.2 復用關鍵寄存器位置信息 240 13.3 復用Block的位置信息 242 13.4 復用關鍵路徑的布局布線信息 245 13.5 本章小結 248 第14章 其他 249 14.1 模塊化綜合技術 249 14.2 反復執行物理優化 251 14.3 合理使用過約束 253 14.4 使用IOB寄存器 255 14.5 編輯網表 256 14.6 修改初始值 258 14.7 本章小結 260 本書既是一本有關Tcl語言編程的書籍,又是一本對在Vivado中應用Tcl的實踐經驗總結的書籍。全書分為兩部分:第一部分為基礎部分,以Tcl基礎知識為主,包括第1~9章,重在理論;第二部分為應用部分,以Tcl在Vivado中的應用為主,包括第10~14章,重在實踐。同時,本書給出了354個Tcl腳本的代碼示例,結合49個表格、171張圖片幫助讀者深入理解知識點。無論Tcl初學者,還是已掌握Tcl精髓的工程師,只要想將Tcl得心應手地應用于Vivado設計與開發,都會從本書中受益。本書可供電子工程領域內的本科高年級學生和研究生參考,也可供FPGA工程師和自學者參考。
盡管Tcl腳本自20世紀80年代初誕生以來已有30多年的歷史了,但仍然經久不衰,在IC領域被廣泛使用,很多EDA工具都將其集成其中。Vivado也不例外,在2012年正式發布時,我們就看到了Tcl的身影。這使得Vivado如虎添翼,功能愈發強大。能在圖形界面下執行的操作幾乎都有相應的Tcl命令。反過來,很多操作只能借助Tcl腳本完成而無法在圖形界面下操作。借助Tcl腳本,工程師可以對設計進行深入分析,及時發現更深層次的問題。不得不說,Tcl儼然成為設計分析的利器。
遺憾的是,目前市面上鮮有Tcl方面的學習書籍,網絡上的各種學習資源魚目混珠、良莠不齊,且只注重語法或單一的常規命令,沒有與Vivado結合起來講解工程應用。在工作中,我遇到過很多FPGA工程師,他們迫切希望掌握這一利器,卻因找不到合適的學習資源而深感無奈,或者已掌握Tcl基本語法知識,了解了一些基本命令,但卻因不知在Vivado中如何應用而束手無策。這一現狀深深地觸動了我,促使我決定寫一本與Tcl、Vivado都緊密相關的書。 早在Xilinx前一代開發工具ISE中出現Tcl時,我就開始關注Tcl,而當Vivado正式發布時,我就決定深入學習Tcl。隨著時間的流逝,一晃8年過去了,可以不夸張地說,Tcl幾乎成為我每天工作中必用的語言之一。借助Tcl腳本,我可以實現從設計輸入到生成位流文件的全流程操作,不僅可以對網表進行編輯和深入分析,還可以掃描布局布線策略并生成相關報告。但Tcl能做的還遠不止這些。讓我感受最深的是我可以并行工作,例如掃描策略時,可以同時分析設計的其他網表文件,從而大大提高了工作效率。 同時,我開發了基于Tcl腳本的Vivado自動化策略掃描,并開發了基于Tcl腳本的自動化設計分析。這兩個腳本被很多工程師使用,廣受好評。工程師普遍認為這些腳本可以極大地縮短設計迭代和分析時間,有效提高工作效率,減輕壓力和負擔。我相信通過本書的學習,讀者也可以開發出自己想要的帶有特定功能的Tcl腳本。 2020年初,我開始著手撰寫本書,在內容安排上,要求既包含Tcl相關知識,又包含如何在Vivado中使用Tcl。首先,本書是一本與編程語言相關的書籍,少不了大量的代碼,為此,在代碼排版上花費了一些工夫,保證讀者能夠體會到代碼的美感;其次,本書又不是一本單純講解編程的書籍,重點是工程應用,我結合自己的工程實踐總結出了大量的常規應用,并分門別類地加以講解。讀者要掌握Tcl腳本并將其應用在Vivado工程中,仍需大量的實踐。希望本書能起到拋磚引玉的功效。 與很多EDA工具一樣,Vivado將Tcl集成其中后,極大地豐富并增強了Vivado的功能。因此,若想把Vivado用好,掌握Tcl勢在必行。著眼于此,本書分為兩部分:第一部分為基礎部分,以Tcl基礎知識為主;第二部分為應用部分,以Tcl在Vivado中的應用為主。 就第一部分而言,涵蓋了Tcl的三類置換(包括變量置換、命令置換和反斜杠置換)、表達式和數學運算、經典數據類型(包括字符串、列表和數組)、流程控制命令、過程、命名空間及文件操作等,分布在第1~9章,盡可能地涵蓋常見命令,并給出具體代碼示例,講解使用方法。 就第二部分而言,涵蓋了Tcl在Vivado中的典型應用,包括設計流程管理、設計資源管理、設計分析,并給出了具體的應用案例,例如,如何通過Tcl腳本實現從設計輸入到生成位流文件的自動化操作;如何借助Tcl腳本實現策略掃描;如何應用Tcl腳本發現設計的潛在問題。這些內容分布在第10~13章。同時,我結合工作實踐,給出了Tcl在Vivado中的其他應用,并在第14章中進行了詳細闡述。 如何閱讀本書 對于只想學習Tcl腳本的初學者而言,可以只閱讀第一部分內容,也就是第1~9章。對于已掌握Tcl基礎知識,并想進一步了解如何在Vivado中應用Tcl的讀者而言,可越過第一部分,直接閱讀第二部分內容,也就是第10~14章。本書給出了豐富的代碼示例。每個示例都有行號標記,便于快速找到書中提到的位置。第1行為文件名,讀者可根據需要找到相應的文件直接使用或二次編輯相應腳本。以“=>”開頭的行表示該行為上一行命令的返回值,并且該行以斜體字表示。若在“=>”后緊跟“@”,則表示上一行命令的使用不合法,該行為相應的錯誤信息。由于本書是一本偏向應用的書籍,故文中的變量與實際代碼一致,不再區分正斜體。 本書所有代碼均在Vivado 2020.1版本中驗證。讀者不需下載安裝其他Tcl編譯器,可直接使用Vivado Tcl Shell或在Vivado Tcl Console中使用Tcl。 獲取代碼示例 如果需要獲取代碼示例,關注我的微信公眾號TeacherGaoFPGAHub,回復關鍵字“Tcl”(沒有引號)即可。 Tcl/Vivado已經成為一個整體,Vivado因Tcl而熠熠生輝,Tcl因Vivado而歷久彌新。愿此書能幫助廣大FPGA工程師順利踏上征服Tcl的旅程! 高亞軍 2020年12月27日 |