Perl語(yǔ)言IC設(shè)計(jì)實(shí)踐
定 價(jià):79 元
叢書(shū)名:IC設(shè)計(jì)與嵌入式系統(tǒng)開(kāi)發(fā)叢書(shū)
當(dāng)前圖書(shū)已被 41 所學(xué)校薦購(gòu)過(guò)!
查看明細(xì)
- 作者:滕家海
- 出版時(shí)間:2022/1/1
- ISBN:9787111696438
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP312.8
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
本書(shū)采用集成電路設(shè)計(jì)工作中的實(shí)際案例,介紹了Perl的各類基本知識(shí),包括:變量、子例程、正則表達(dá)式,文件操作等。針對(duì)模擬線路設(shè)計(jì),數(shù)字線路設(shè)計(jì)和版圖設(shè)計(jì)等設(shè)計(jì)過(guò)程,分別選取了有代表性的應(yīng)用案例,實(shí)現(xiàn)并講解和分析了完整的Perl代碼。還介紹了集成電路設(shè)計(jì)工作中可能常用的模塊,以及代碼風(fēng)格建議等進(jìn)階內(nèi)容。本書(shū)zui后介紹了圖形用戶界面(Perl/Tk)的入門(mén)和常用功能.
Perl語(yǔ)言的特點(diǎn)
Perl語(yǔ)言是一門(mén)解釋型編程語(yǔ)言,與C/C++語(yǔ)言相比,它的程序不需要用戶編譯,可以直接運(yùn)行。Perl的一個(gè)特點(diǎn)是,它提供了簡(jiǎn)潔的數(shù)據(jù)類型,包括標(biāo)量、數(shù)組和散列(在其他高級(jí)語(yǔ)言中,常稱為關(guān)系數(shù)組或字典),其中數(shù)組和散列可以是任意深度的嵌套組合—這使我們可以高效地描述數(shù)據(jù)。Perl內(nèi)嵌的正則表達(dá)式是它的另一大特點(diǎn),不僅提供了極其強(qiáng)大而全面的功能,而且使用起來(lái)非常方便。
IC設(shè)計(jì)為什么需要編程
如果你是IC設(shè)計(jì)領(lǐng)域的在職人員,那么你可能知道,許多EDA軟件廠商為該領(lǐng)域提供了各式各樣滿足不同需求的EDA軟件。在這種情形下,還需要我們編程嗎?目前的答案仍然是肯定的。EDA軟件專注于某個(gè)特定的任務(wù),而無(wú)法滿足公司定制的具體需求(比如根據(jù)公司內(nèi)部的實(shí)際需求,生成特定格式的報(bào)告),也無(wú)法把多個(gè)可能來(lái)自不同廠商的軟件串聯(lián)起來(lái)運(yùn)行。還有一些煩瑣的手動(dòng)編輯工作,暫時(shí)沒(méi)有專門(mén)的軟件來(lái)完成。這些都要通過(guò)編程來(lái)完成。
Perl語(yǔ)言可以應(yīng)用在IC設(shè)計(jì)過(guò)程中的以下場(chǎng)景
在IC設(shè)計(jì)中,仿真、驗(yàn)證、版圖設(shè)計(jì)等工作,都有專用的EDA軟件。那么,Perl語(yǔ)言主要用在哪里呢?籠統(tǒng)地說(shuō),Perl語(yǔ)言可以用于以下場(chǎng)景:
處理輸入文本。
運(yùn)行某個(gè)EDA軟件。
分析輸出文本。
Perl語(yǔ)言也可以用于這三者的某種組合。比如,運(yùn)行某個(gè)EDA軟件并分析其結(jié)果,或者先處理輸入文本,然后運(yùn)行某個(gè)EDA軟件,后分析其結(jié)果,甚至根據(jù)結(jié)果去調(diào)整輸入文本,循環(huán)運(yùn)行EDA軟件直至獲得預(yù)期的結(jié)果。本書(shū)中的“文本”或“文本文件”是指netlist(網(wǎng)表)、Verilog文件、log文件等,不包括Word文檔或PDF文檔等包含格式信息的文件。
基于這些應(yīng)用場(chǎng)景,本書(shū)會(huì)較全面地介紹Perl知識(shí),以滿足實(shí)際工作的需求。但一些內(nèi)容,比如面向?qū)ο、嵌入C代碼和二進(jìn)制文件的處理等,這些在IC設(shè)計(jì)實(shí)踐中很少用到的,本書(shū)沒(méi)有涉及。
Perl語(yǔ)言的版本
本書(shū)的代碼在Perl 5.10.1(CentOS 6.0)和Perl 5.34.0上均通過(guò)運(yùn)行測(cè)試。只要所安裝的語(yǔ)言版本不太老,都可以順利運(yùn)行本書(shū)的代碼。
代碼和勘誤
本書(shū)所有帶編號(hào)的代碼均可從華章圖書(shū)官網(wǎng)http://www.hzbook.com下載,或者向筆者發(fā)送電子郵件索取。筆者才疏學(xué)淺,盡管做了努力,書(shū)中仍難免有錯(cuò),歡迎各位讀者朋友指正。筆者的郵箱為jhteng@outlook.com。
本書(shū)面向的讀者
本書(shū)主要面向Perl的初學(xué)者。如果你是IC設(shè)計(jì)行業(yè)的工程師(包括模擬IC設(shè)計(jì)、數(shù)字IC設(shè)計(jì),版圖設(shè)計(jì)和布局布線工程師等),希望你看到本書(shū)的實(shí)例時(shí),會(huì)感到親切。
如果你只了解一點(diǎn)Perl,但不熟悉它,或者不曾將Perl應(yīng)用到IC設(shè)計(jì)過(guò)程中,又或者編寫(xiě)的代碼只能自己使用,不知道該達(dá)成哪些規(guī)范來(lái)提高質(zhì)量,那么本書(shū)會(huì)給你提供一些幫助。
本書(shū)目標(biāo)
本書(shū)的目標(biāo)就是使你學(xué)會(huì)Perl,并且能將Perl應(yīng)用到IC設(shè)計(jì)實(shí)踐中,提高工作效率。本書(shū)將介紹一些代碼規(guī)范,使你的代碼既正確又優(yōu)雅,既利于他人閱讀學(xué)習(xí),也利于自己未來(lái)更新或擴(kuò)充。
本書(shū)特點(diǎn)
零基礎(chǔ):對(duì)編程經(jīng)驗(yàn)沒(méi)有要求。
循序漸進(jìn):在介紹基礎(chǔ)知識(shí)的過(guò)程中,逐步改進(jìn)和完成一個(gè)處理命令行參數(shù)的模塊,該模塊可以應(yīng)用到未來(lái)的實(shí)踐中。
注重實(shí)踐:本書(shū)遵循實(shí)際的IC設(shè)計(jì)過(guò)程,根據(jù)需求來(lái)完成相關(guān)的Perl編程工作。
本書(shū)內(nèi)容
本書(shū)主要包含以下幾章內(nèi)容:
第1章 介紹Perl的基本知識(shí)。首先介紹準(zhǔn)備工作,包括操作系統(tǒng)和Perl的安裝,以及代碼編輯軟件的選擇等;其次介紹如何逐步改進(jìn)和完成命令行參數(shù),包括變量、控制結(jié)構(gòu)、正則表達(dá)式、子例程和模塊等。
第2章 介紹Perl與操作系統(tǒng)的交互,包括文件/目錄操作、執(zhí)行shell命令和設(shè)計(jì)Perl程序的參數(shù)等。
第3章 介紹正則表達(dá)式。
第4章 對(duì)第1章和第2章完成的模塊進(jìn)行補(bǔ)充和改進(jìn),為后續(xù)第5~7章做準(zhǔn)備。
第5章 介紹Perl在模擬IC電路設(shè)計(jì)中的應(yīng)用—處理PVT仿真的程序。
第6章 介紹Perl在版圖驗(yàn)證過(guò)程中的應(yīng)用—處理版圖驗(yàn)證的程序。
第7章 介紹Perl在數(shù)字IC電路設(shè)計(jì)過(guò)程中的應(yīng)用—連接數(shù)字模塊(Verilog)的程序,重點(diǎn)介紹Perl數(shù)據(jù)結(jié)構(gòu)的靈活性。
第8章 介紹如何提升代碼質(zhì)量以及其他話題。
第9章 介紹特殊名稱、常用函數(shù)和模塊。
致謝
本書(shū)得以出版,首先要感謝陳剛先生,我曾經(jīng)的上級(jí)主管。在2020年春節(jié)前夕,他建議我寫(xiě)一本書(shū),總結(jié)一下自己的經(jīng)驗(yàn),分享給本行業(yè)的年輕設(shè)計(jì)人員。在編寫(xiě)過(guò)程中,他也時(shí)常鼓勵(lì)我,還仔細(xì)審閱了書(shū)稿,并提出了一百多條改進(jìn)意見(jiàn)。
我還要感謝我的同事黃飛鵬、方亮亮、董慶祥和張劼。黃飛鵬先生是模擬電路設(shè)計(jì)專家,他向我推薦了PVT自動(dòng)化的實(shí)例,并給予了細(xì)致的說(shuō)明和指導(dǎo)。方亮亮女士是數(shù)字電路設(shè)計(jì)專家,她向我推薦了自動(dòng)連接Verilog的實(shí)例,也熱心解答了我的關(guān)于數(shù)字電路設(shè)計(jì)方面的問(wèn)題。董慶祥先生是模擬電路設(shè)計(jì)專家,他建議我花點(diǎn)篇幅介紹Perl的特點(diǎn),我希望本書(shū)能達(dá)成他的期望。張劼先生是模擬電路設(shè)計(jì)專家,我經(jīng)常向他請(qǐng)教各類電路知識(shí),避免了一些電路設(shè)計(jì)方面的錯(cuò)誤。
我還要感謝機(jī)械工業(yè)出版社的編輯楊福川先生、王穎女士、張
序
前言
第1章 Perl語(yǔ)言基礎(chǔ) 1
1.1 準(zhǔn)備工作 1
1.1.1 安裝環(huán)境 1
1.1.2 選擇編輯器 2
1.1.3 查閱官方文檔 3
1.1.4 運(yùn)行本書(shū)中的程序 3
1.2 初識(shí)命令行參數(shù) 4
1.2.1 標(biāo)量 7
1.2.2 數(shù)組 8
1.2.3 循環(huán)結(jié)構(gòu)for 9
1.3 改進(jìn)命令行參數(shù) 10
1.3.1 散列 13
1.3.2 判斷結(jié)構(gòu)if 14
1.3.3 “真”與“假” 15
1.4 繼續(xù)改進(jìn)命令行參數(shù) 16
1.4.1 數(shù)組的散列 20
1.4.2 散列的散列 21
1.5 完成命令行參數(shù) 22
1.5.1 引用 25
1.5.2 子例程 27
1.5.3 模塊 29
第2章 與操作系統(tǒng)交互 34
2.1 識(shí)別文件或目錄 34
2.2 讀取文件 35
2.3 寫(xiě)入文件 37
2.4 讀取目錄 39
2.5 創(chuàng)建目錄 39
2.6 執(zhí)行操作系統(tǒng)命令 40
2.7 獲取系統(tǒng)命令的輸出 41
2.8 獲取和設(shè)置環(huán)境變量 41
2.9 讀取命令行參數(shù) 41
第3章 正則表達(dá)式 45
3.1 匹配的基本過(guò)程 46
3.2 匹配 48
3.2.1 普通字符 48
3.2.2 元字符 49
3.2.3 反斜杠家族 54
3.2.4 修飾符 56
3.2.5 內(nèi)插變量 57
3.3 分組和捕獲 59
3.3.1 分組并捕獲 59
3.3.2 匹配的特點(diǎn) 62
3.3.3 分組不捕獲 64
3.3.4 分組捕獲并反向引用 65
3.4 替換 66
3.4.1 修飾符 67
3.4.2 界定符 67
3.4.3 不改變?cè)兞? 67
第4章 模塊的改進(jìn) 68
4.1 參數(shù)值存為標(biāo)量 68
4.2 增加data_type的類型識(shí)別 69
4.3 提供默認(rèn)值 70
4.4 新增子例程 72
4.4.1 把文件讀取到數(shù)組中 72
4.4.2 把數(shù)組寫(xiě)入文件中 73
4.4.3 新建目錄 73
4.5 參數(shù)值可以短劃線開(kāi)頭 74
第5章 模擬IC電路仿真實(shí)踐 75
5.1 模擬IC電路設(shè)計(jì)流程簡(jiǎn)介 75
5.2 PVT仿真的過(guò)程 76
5.3 定義PVT仿真程序的功能 77
5.4 程序的主體 79
5.5 各子例程 81
5.5.1 define_opt_rule 81
5.5.2 run_pvt 82
5.5.3 generate_netlist 83
5.5.4 run_sim 84
5.5.5 get_sim_result 85
5.5.6 generate_report 86
5.6 補(bǔ)充說(shuō)明 86
第6章 版圖設(shè)計(jì)實(shí)踐 88
6.1 版圖設(shè)計(jì)流程簡(jiǎn)介 88
6.2 DRC程序的功能定義和參數(shù)設(shè)計(jì) 89
6.3 程序的主體 90
6.4 各子例程 93
6.4.1 prepare_run_dir 93
6.4.2 export_gds 94
6.4.3 prepare_drc_rule 95
6.4.4 replace_array 96
6.4.5 get_match_word 97
6.4.6 run_drc 98
6.4.7 report_result 99
6.5 補(bǔ)充說(shuō)明 99
第7章 數(shù)字IC電路設(shè)計(jì)實(shí)踐 101
7.1 Verilog連接程序的功能定義和參數(shù)設(shè)計(jì) 101
7.2 程序的主體 104
7.3 各子例程 106
7.3.1 read_f?ile_list 106
7.3.2 read_verilog_f?ile 107
7.3.3 con_top_verilog 109
7.3.4 generate_lines 111
7.3.5 output_verilog 113
7.4 補(bǔ)充說(shuō)明 115
第8章 提升代碼質(zhì)量 116
8.1 正確的代碼 116
8.1.1 use strict 116
8.1.2 use warnings 119
8.1.3 程序的結(jié)構(gòu) 120
8.1.4 輕度debug 122
8.2 好看的代碼 123
8.2.1 縮進(jìn)和大括號(hào) 123
8.2.2 斷行 125
8.2.3 注釋 126
8.2.4 POD 127
8.3 中文處理 129
8.3.1 常量 130
8.3.2 變量名 130
8.3.3 文件的內(nèi)容 131
8.4 遞歸 132
8.5 監(jiān)控長(zhǎng)時(shí)間運(yùn)行的任務(wù) 134
8.6 雜項(xiàng) 145
8.6.1 <<操作符 145
8.6.2 Schwartz變換 147
8.6.3 其他運(yùn)算符 147
8.6.4 非十進(jìn)制數(shù)處理 150
8.7 更多閱讀推薦 153
第9章 特殊名稱、常用函數(shù)與模塊 156
9.1 特殊名稱 156
9.1.1 $0 156
9.1.2 @ARGV 157
9.1.3 $_ 157
9.1.4 @_ 160
9.1.5 $a和$b 161
9.1.6 $. 161
9.1.7 %ENV 161
9.1.8 $$ 162
9.1.9 $! 162
9.1.10 STDERR、STDIN、STDOUT 162
9.2 常用函數(shù) 163
9.2.1 數(shù)學(xué)計(jì)算 164
9.2.2 標(biāo)量操作 166
9.2.3 列表和數(shù)組處理 171
9.2.4 僅數(shù)組處理(不能處理列表) 174
9.2.5 散列處理 177
9.2.6 輸入輸出 179
9.2.7 文件(和目錄)操作 193
9.2.8 流程控制 198
9.2.9 范圍 201
9.2.10 時(shí)間處理 205
9.2.11 其他函數(shù) 206
9.3 常用模塊 211
9.3.1 strict 211
9.3.2 warnings 214
9.3.3 parent 215
9.3.4 Benchmark 216
9.3.5 Cwd 218
9.3.6 Data::Dumper 219
9.3.7 Digest::MD5 220
9.3.8 File::Basename 221
9.3.9 Spreadsheet::XLSX 222