- Perl語言IC設計實踐
- 滕家海編著
- 2164字
- 2022-02-08 17:37:58
前言
Perl語言的特點
Perl語言是一門解釋型編程語言,與C/C++語言相比,它的程序不需要用戶編譯,可以直接運行。Perl的一個特點是,它提供了簡潔的數據類型,包括標量、數組和散列(在其他高級語言中,常稱為關系數組或字典),其中數組和散列可以是任意深度的嵌套組合—這使我們可以高效地描述數據。Perl內嵌的正則表達式是它的另一大特點,不僅提供了極其強大而全面的功能,而且使用起來非常方便。
IC設計為什么需要編程
如果你是IC設計領域的在職人員,那么你可能知道,許多EDA軟件廠商為該領域提供了各式各樣滿足不同需求的EDA軟件。在這種情形下,還需要我們編程嗎?目前的答案仍然是肯定的。EDA軟件專注于某個特定的任務,而無法滿足公司定制的具體需求(比如根據公司內部的實際需求,生成特定格式的報告),也無法把多個可能來自不同廠商的軟件串聯起來運行。還有一些煩瑣的手動編輯工作,暫時沒有專門的軟件來完成。這些都要通過編程來完成。
Perl語言可以應用在IC設計過程中的以下場景
在IC設計中,仿真、驗證、版圖設計等工作,都有專用的EDA軟件。那么,Perl語言主要用在哪里呢?籠統地說,Perl語言可以用于以下場景:
- 處理輸入文本。
- 運行某個EDA軟件。
- 分析輸出文本。
Perl語言也可以用于這三者的某種組合。比如,運行某個EDA軟件并分析其結果,或者先處理輸入文本,然后運行某個EDA軟件,最后分析其結果,甚至根據結果去調整輸入文本,循環運行EDA軟件直至獲得預期的結果。本書中的“文本”或“文本文件”是指netlist(網表)、Verilog文件、log文件等,不包括Word文檔或PDF文檔等包含格式信息的文件。
基于這些應用場景,本書會較全面地介紹Perl知識,以滿足實際工作的需求。但一些內容,比如面向對象、嵌入C代碼和二進制文件的處理等,這些在IC設計實踐中很少用到的,本書沒有涉及。
Perl語言的版本
本書的代碼在Perl 5.10.1(CentOS 6.0)和Perl 5.34.0上均通過運行測試。只要所安裝的語言版本不太老,都可以順利運行本書的代碼。
代碼和勘誤
本書所有帶編號的代碼均可從華章圖書官網http://www.hzbook.com下載,或者向筆者發送電子郵件索取。筆者才疏學淺,盡管做了最大努力,書中仍難免有錯,歡迎各位讀者朋友指正。筆者的郵箱為jhteng@outlook.com。
本書面向的讀者
本書主要面向Perl的初學者。如果你是IC設計行業的工程師(包括模擬IC設計、數字IC設計,版圖設計和布局布線工程師等),希望你看到本書的實例時,會感到親切。
如果你只了解一點Perl,但不熟悉它,或者不曾將Perl應用到IC設計過程中,又或者編寫的代碼只能自己使用,不知道該達成哪些規范來提高質量,那么本書會給你提供一些幫助。
本書目標
本書的目標就是使你學會Perl,并且能將Perl應用到IC設計實踐中,提高工作效率。本書將介紹一些代碼規范,使你的代碼既正確又優雅,既利于他人閱讀學習,也利于自己未來更新或擴充。
本書特點
- 零基礎:對編程經驗沒有要求。
- 循序漸進:在介紹基礎知識的過程中,逐步改進和完成一個處理命令行參數的模塊,該模塊可以應用到未來的實踐中。
- 注重實踐:本書遵循實際的IC設計過程,根據需求來完成相關的Perl編程工作。
本書內容
本書主要包含以下幾章內容:
第1章 介紹Perl的基本知識。首先介紹準備工作,包括操作系統和Perl的安裝,以及代碼編輯軟件的選擇等;其次介紹如何逐步改進和完成命令行參數,包括變量、控制結構、正則表達式、子例程和模塊等。
第2章 介紹Perl與操作系統的交互,包括文件/目錄操作、執行shell命令和設計Perl程序的參數等。
第3章 介紹正則表達式。
第4章 對第1章和第2章完成的模塊進行補充和改進,為后續第5~7章做準備。
第5章 介紹Perl在模擬IC電路設計中的應用—處理PVT仿真的程序。
第6章 介紹Perl在版圖驗證過程中的應用—處理版圖驗證的程序。
第7章 介紹Perl在數字IC電路設計過程中的應用—連接數字模塊(Verilog)的程序,重點介紹Perl數據結構的靈活性。
第8章 介紹如何提升代碼質量以及其他話題。
第9章 介紹特殊名稱、常用函數和模塊。
致謝
本書得以出版,首先要感謝陳剛先生,我曾經的上級主管。在2020年春節前夕,他建議我寫一本書,總結一下自己的經驗,分享給本行業的年輕設計人員。在編寫過程中,他也時常鼓勵我,還仔細審閱了書稿,并提出了一百多條改進意見。
我還要感謝我的同事黃飛鵬、方亮亮、董慶祥和張劼。黃飛鵬先生是模擬電路設計專家,他向我推薦了PVT自動化的實例,并給予了細致的說明和指導。方亮亮女士是數字電路設計專家,她向我推薦了自動連接Verilog的實例,也熱心解答了我的關于數字電路設計方面的問題。董慶祥先生是模擬電路設計專家,他建議我花點篇幅介紹Perl的特點,我希望本書能達成他的期望。張劼先生是模擬電路設計專家,我經常向他請教各類電路知識,避免了一些電路設計方面的錯誤。
我還要感謝機械工業出版社的編輯楊福川先生、王穎女士、張夢玲女士和李美瑩女士。楊先生是我之前譯作的責任編輯,在得知我有意編寫本書后,積極將本選題推薦給了王穎女士。王穎女士幫助我確定了此書的結構和內容框架,并告知我許多成書方面的注意事項。張夢玲女士在書稿定稿前期給予了許多細節上的指導。李美瑩女士是本書的責任編輯,她全面仔細地審閱了全書,并給予了書稿編輯加工方面的指導。
我很榮幸邀請到王添平先生為本書作序。他是IC領域的資深專家,曾在多家國際知名IC公司任高級主管,在行業內辛勤付出近三十年,現任高云半導體公司CTO。他作為我的領導,對本書的出版也非常關心,經常給予我鼓勵與支持。
最后,感謝我的家人,永遠給予我寬容與鼓勵。
滕家海
2021年6月
- Spring Cloud Alibaba微服務架構設計與開發實戰
- JavaScript:Functional Programming for JavaScript Developers
- 區塊鏈架構與實現:Cosmos詳解
- Machine Learning with R Cookbook(Second Edition)
- Implementing Cisco Networking Solutions
- Apache Karaf Cookbook
- Python:Master the Art of Design Patterns
- Raspberry Pi Home Automation with Arduino(Second Edition)
- GameMaker Essentials
- Python Interviews
- PHP 7從零基礎到項目實戰
- Python商務數據分析(微課版)
- Arduino Wearable Projects
- App Inventor 2 Essentials
- C語言程序設計