多數FPGA開發者都習慣圖形化界面(GUI)。GUI方式簡單易學,為小項目提供了一鍵式流程。然而,隨着FPGA項目越來越復雜,在很多情況下GUI工具就阻礙了工作效率。因為GUI工具不能對整個開發過程提供足夠的靈活性和控制。另一方,GUI工具本身會占用很大一部CPU資源和內存。
腳本語言的選擇
在IC和FPGA的最常用的是TCL,Perl以及Shell。除此之外,還有可能用到其他的腳本語言。比如,Xilinx工具腳本語言還有Ruby和Python。
TCL
顧名思義,Tool Command Language,它的工具交互性要好些,可以很好地運用於書寫工具命令腳本。尤其是目前很大一部分EDA工具是支持TCL語言的,應該說它們的母語就是TCL。綜合功能的EDA軟件都采用TCL語言,比如,DC、Vivado、quartus、Synplify等。TCL是面向ASIC和FPGA設計工具的一種近乎標准的腳本語言。EDA工具都按這種格式下約束(Vivado的時序約束和管腳物理約束),TCL本身就是為了配合工具使用的,沒有太大的獨立價值。TCL語法不同於其他腳本語言,許多開發者很難習慣。TCL具有良好的文檔和團隊支持。Xilinx在Vivado的安裝中附帶了一個自定義的TCL——xtclsh。如果要啟動TCL輸入:
$ xtclsh –v #display TCL version。
Perl
Perl 是一種流行的腳本語言,廣泛應用於EDA等工具中,特別是在ASIC的驗證和后端設計中。Perl用來做一些極其強大的文字處理,減少重復性工作。比如修改ECO,將小design整合成大design,自動跑各種隨機化的仿真,極其有用。Vivado也附帶了自定義的Perl解釋器xilperl。perl在文本處理上應該是無人能及,寥寥幾行代碼就可以做到別的代碼很多行才能處理好的文本。但Perl腳本的可讀性比較差。
Shell
Linux的發行版默認的一般都是bash。Unix發行版比如,FreeBSD默認的shell是csh。因為早期EDA軟件都是運行在Unix操作系統上,而且csh的腳本語言類似於C語言,所以,ASIC開發中會用到很多csh腳本。然而,bash 除了擁有csh 的很多特性外,還能提供shell 函數,命令行編輯,過程處理等特性。所以bash在Linux發行版中占有很大的份額。
維特根斯坦說:“我的語言界限便是我世界的界限。”不存在完美的語言描述這個世界,每種語言都其特定的用途。選擇何種語言會考慮很多因素,如現有項目設置、設計團隊的經驗、熟悉的工具和腳本、靈活性以及與其他工具的定制和集成。如果偏處理文本學perl,偏工具交互學tcl。一方面,語言都是相通的,只要有C語言基礎,學什么都快。另一方面,我們選學習哪兒語言是因為我們不想學習所有這些語言。實際的開發中除了腳本語言會極大地提高工作外,許多開發者也喜歡用make 工具進行FPGA編譯,因為make能夠是自動跟蹤檢查。
語言的存在是為了解決問題,而工業社會的特點是分工,效率。所以,選擇合適語言解決合適的問題才是王道。
參考文獻:
[1] Perl等腳本語言在IC設計中有哪些用處?https://www.zhihu.com/question/29692226.
[2] Evgeni Stavinov. 在命令行模式下使用Xilinx工具. FPGA高手設計實戰真經100則. 電子工業出版社. 2013,10.
