2011年2月28日 星期一

自行建立 EDA 家用環境

什麼是工程師 ?
工程師是「解決問題」的人,不是「製造問題」的人。

為何我不幫你先建好 EDA 環境 ?
  • 了解 EDA 環境建置對於未來除錯有幫助,所以要自己學如何建立自己的 EDA 使用環境。
  • 未來各位去公司上班,不一定有人幫你建 EDA 使用環境。小型的 IC design house 通常事事都要自己動手,不會有人幫你(除了建帳號外)。
目錄的定義:
~/ (家目錄),這是每個使用者登入時預先進入的目錄,此目錄中存放有某些檔案,其名稱如下:
  • .bashrc - bash 設定檔,裡面設定了 EDA 工具的路徑及目錄,我們會在接下來的章節進行說明,本檔位於 /opt/PROCESS/bash/.bashrc,請執行
cp    /opt/PROCESS/bash/.bashrc    ~/
將此檔複製至家目錄。
  • display.drf - Cadence 之 EDA 工具在顏色方面之設定檔,用來顯示 schematic view 或是 layout view 顏色。本檔位於 /opt/PROCESS/CIC0181P6M/virtuoso/display.drf,請執行
cp    /opt/PROCESS/CIC0181P6M/virtuoso/display.drf    ~/
將此檔複製至家目錄。
  • cds.lib - 定義 virtuoso 所需的元件庫及其路徑。
  • .cdsinit - 定義 virtuoso 初始設定,本檔位於 /opt/PROCESS/bash/.cdsinit,請執行
cp    /opt/PROCESS/bash/.cdsinit    ~/
將此檔複製至家目錄。

** 小提示:在 Unix/Linux 作業系統中,不管你在任何目錄,只要執行
cd
即可回到自己的家目錄。執行
pwd
可以觀察自己目前在那個目錄。

~/model 目錄:存放所有的製程檔、DRC/LVS 驗証命令、SPICE 模擬檔案內有檔案如下:
  • cic18.tf - 這是 CIC 0.18 um 1P6M 虛擬製程檔,也是本書所使用之製程檔,理論上全台師生都可以向 CIC 免費申請使用。此檔位於 /opt/PROCESS/CIC0181P6M/virtuoso/cic18.tf,請執行
cp    /opt/PROCESS/CIC0181P6M/virtuoso/cic18.tf    ~/model
將此檔複製回我們家目錄的 ~/model 目錄中。
  • cic018.l - 這是 CIC 0.18 um 1P6M 製程的 SPICE 模型檔,此檔位於 /opt/PROCESS/CIC0181P6M/model/cic018.l,請執行
cp    /opt/PROCESS/CIC0181P6M/model/cic018.l    ~/model

將此檔複製回我們家目錄的 ~/model 目錄中。
  • 1p6mcic018.include - 這個檔案是由我們手動建立,其內容如下:
.lib '/home/herman/model/cic018.l' TT

最快的建立方式是執行以下指令,不必用 vi:

echo    ".lib    '/home/herman/model/cic018.l'    TT"    >    ~/model/1p6mcic018.include

與先前相同,/home/herman 指的是我們的家目錄位置,而 TT 則是 SPICE 執行參數,共有 FF FS TT SF SS 5 種參數,一般來說我們的模擬著重在 TT 參數下。

~/lib 目錄:本目錄存放所有自建的 library (元件庫) 內有我們所建立的元件庫檔案,舉例來說,以下是一個元件庫命名的例子:

cic0181p6m

這邊要請各位注意一下,我們在建立元件庫時要時時記得一個重點:那就是元件庫的名稱要簡單明瞭,最好能一眼看出此元件庫是什麼製程、針對什麼專案、在什麼時候所建立的。為什麼要提醒大家注意這點呢 ? 因為各位未來在工作時很有可能是同時進行 2、3 個專案,而這些專案的製程可能彼此不同。因此如果取的名字不好,搞不好連各位自己都不曉得這些元件庫裡放什麼。舉例來說,假設各位有兩個專案,分別使用 TSMC 0.35 um 2P4M CMOS 製程及 UMC 0.5 um 2P3M CMOS 製程。那表\ref{table:projectname} 中之兩種命名方式那個比較好 ?

~/lklib:本目錄是用來存放 laker 所繪製的元件庫,以避免與 virtuoso 所建的元件庫混淆。

練習:請在自己的家目錄建立:model、lib、lklib 目錄

2011年2月23日 星期三

行前準備

要安裝 Debian 前當然要先準備安裝媒介,最常見的媒介是安裝光碟片,但以方便性來說則是以隨身碟較為方便,以下將介紹此兩種安裝媒介之下載及準備說明。


準備安裝光碟
要查詢 Debian 安裝光碟的最新版本是至其官方網站來下載,但是由於 Debian 安裝光碟 CD 版要 600 MB 以上之容量,因此自國外下載會浪費不少時間。解決之道是至國內有映射站,筆者特別推薦國家高速網路與計算中心所架設之映像下載點 (Debian 下載映像站 -
ftp://ftp.twaren.net/pub/Linux/Debian/debian-cd/6.0.0/i386/iso-cd/),以目前 (2011/2) 最新版本為 6.0,其安裝光碟之 ISO 檔為 debian-6.0.0-i386-CD-1.iso。請下載此檔,並使用燒錄軟體燒錄即可。請注意我們在安裝過程中只需要第一片光碟,安裝完基本系統後之操作全部都是透過網路下載套件來安裝,因此我們只需要燒錄 Debian 第一片 ISO 即可。

關於燒錄軟體方面,在此推薦免費的 CDBurnerXP (CDBurnerXP 官方網站 -
有關 CDBurnerXP 的說明(CDBurnerXP 的操作說明 - http://www.freegroup.org/2009/07/free-software-cdburnerxp/)。本書的重點為 Linux EDA 伺服器架設,因此這部份就請各位讀者自行查閱網路資源,不在此贅述,理論上燒錄完畢後你現在應該會有一張 Debian 安裝光碟。


準備安裝隨身碟
前述的安裝光碟是最常見的安裝媒介,但是使用光碟安裝有幾個缺點:
  • 光碟片需要燒錄,如果手邊沒有可燒錄光碟及光碟燒錄器的話比較麻煩。
  • 光碟片的品質參差不一,某些較差的片燒出來的品質不佳,在安裝過程會有問題。
  • 若使用 CDR 片子燒錄,燒錄即無法洗掉,時間久了(出新版 Debian 後)會變垃圾,只能回收。
  • 光碟片的燒錄、讀取速度都較隨身碟慢
因此如果可以使用隨身碟作安裝媒介的話將可避免上述問題,但是使用隨身碟作安裝媒介的話有一個最重要的關鍵:主機板必須支援隨身碟開機。雖然目前絕大多數的主機板都可透過修改 BIOS 的方式自隨身碟開機,但是較久前之主機無法支援隨身碟開機的只能乖乖使用前一步驟的開機光碟來當安裝媒介了。要將 Debian 開機 ISO 檔轉成可開機隨身碟我們需要UNetbootin (官方網站 - http://unetbootin.sourceforge.net/),請至其官方網站下載此工具,再依順序將 ISO 檔轉載至隨身碟即可,官方網站上即有操作說明,故在此亦不贅述,完成此步驟後各位手上應該會有一隻可開機之 Debian 安裝隨身碟。

選擇 Linux 安裝套件 (Distribution)

要安裝 Linux EDA 伺服器之前,必須先安裝 Linux 伺服器,在介紹 Linux 伺服器安裝前,我們先討論 Linux 安裝套件 (Distribution) 的選擇。絕大多數的 EDA 伺服器所要求的 Linux 安裝套件是 RedHat Enterprise Linux (RHEL),但是 RHEL 有個比較麻煩的問題在於此 Linux 是商業版本,必須要另付技術諮詢費用才能更新。

如果各位不曉得更新重要性的話請回想一下各位在使用 Windows 時是否經常出現自動下載/安裝更新的圖示,這是因為作業系統在開發的階段有某些問題沒有在設計時想清楚,結果變成漏洞而使得系統的安全性/穩定性受到影響。筆者很喜歡引用電影「戰鬥巡航」(戰鬥巡航是星艦迷航 (Star Trek) 電影第八集,其中文資料可看:http://zh.wikipedia.org/zh-tw/星艦奇航記VIII:戰鬥巡航 而英文資料可看:http://www.imdb.com/title/tt0117731/)中的片段來說明這個情況。在戰鬥巡航中,百科 (Data)少校遇上了博格女王 (Borg Queen) (博格女王是博格人(一種半生物半機器的外星種族)的首領,其資料詳見:http://www.startrek.com/startrek/view/library/character/bio/1112104.html)

,博格女王對百科說了一句意義十分深遠的話:「你是不完美的存在,因為你是由不完美的生物所創造出來的,找出你的弱點只是時間上的問題。(You are an imperfect being, created by an imperfect being. Finding your weakness is only the matter of time)」。這句話可以相當程度的解釋了為什麼作業系統特別是 Linux 套件會常常需要更新:因為它是由人類(不完美的生物)所創造出來的,因此 Linux 不是一個完美的作業系統,找出 Linux 系統的缺點 (漏洞)只是時間上的問題。但是 Linux 的套件更新速度十分的快速,只要有漏洞被發現,幾乎在一週之內就有更新可以下載。因此只要勤於更新,我們可以儘量讓 Linux 處於完美與安全的狀態。

因此,以安裝 Linux 伺服器的角度而言,如何能隨時修補漏洞就是一件首要之務,由於我們架設的 EDA 伺服器通常是 24 小時運轉,而且為了要能通過 CIC 的 License 驗証,所有的 Linux EDA 伺服器「理論上」是要使用真實 IP (real ip),使用真實 IP 的缺點是主機是對全世界公開的,如果沒有確實作好作業系統漏洞修補的話很快會受外界入侵,事實上有許多大學的主機被當跳板也就是起源於此。

講了那麼多,我們要回歸到重點:如果安裝 RHEL 伺服器但沒有定期更新修補漏洞的話,我們所安裝的伺服器很容易就會被「破台」。這不是重灌就可以解決的事,因為重灌主機沒有修補漏洞的話問題仍然在那邊,有心人士仍舊可以來入侵我們的主機。因此如果要使用 RHEL 來架設 Linux EDA 伺服器請先確認各位有付錢購買後續的系統更新服務,否則無法修補漏洞會帶來意想不到的後果。

講了那麼多結果結論是這樣,那有更好的建議嗎 ? 就筆者的角度來看,各位可以選擇 CentOS (CentOS 官方網址:http://www.centos.org/) 或是這本書要介紹使用的 Debian Linux \footnote{Debian 官方網址:http://www.debian.org/}。我們一一說明兩者的不同:

CentOS

CentOS 是自 RedHat Linux 的原始碼包裝 (package) 所編譯而成的 Linux 套件,基本上 CentOS 的版本是隨著 RHEL 而改變,如果稱 CentOS 為「免費版的 RHEL」並不為過。但是 CentOS 與正式版本的 RHEL 還是有某些差異性存在:
  • 使用 CentOS 無法享有原廠的技術支援與售後服務。
  • 某些封閉原始碼軟體在 CentOS 中亦沒有提供。
  • CentOS 不保証與 RHEL 一模一樣。
由於 CentOS 自 RHEL 衍生而來的特色,因此對於一般「窮得只剩下 EDA 軟體」的學校單位來說是最好的選擇,使用 CentOS 至少有以下優點:
  • 「理論上」與 RHEL 相容,因此可以支援 EDA 軟體。
  • 免費下載使用,可以隨時更新漏洞,以免系統遭受穩定性/安全性之問題。
  • 未來會配合 RHEL 的版本更新推出相對應的版本。
就上述角度來看,使用 CentOS 來架設 Linux EDA 伺服器不失為一個合理的選擇。但就筆者的看法,Debian Linux 是更好的選擇,以下會大致介紹 Debian Linux。

Debian

所謂 Debian Linux 套件,是由 Ian Murdock 與其妻子 Debra 所創造出來的 Linux 套件。隨後吸引了網路上無數 Linux 愛好者的共同參與發展,至今(2011/2)已推出 6.X 版 (代碼:Squeeze)。Debian 套件的精神在於強調「自由」,其套件軟體均以開放原始碼軟體為主,因此十分符合本計畫所倡導的開放原始碼精神。另一個 Debian 值得推薦的優點在於其套件的更新分為三個層級,分別為:穩定(Stable)、測試 (Testing) 與不穩定 (Unstable)。其中穩定層級之軟體均是經過一再檢查確定其軟體安全性與穩定性均到達一定標準後才能編入穩定層級。而測試層級中的軟體版本則較穩定層級來得新,但是尚未經過完整的驗証,因此不列入穩定層級,必須經過一番時日的驗証後才能進入穩定層級。至於不穩定層級中的軟體則是最新版,但大部份尚未經過驗証,其穩定性亦較差,此層級僅供測試使用。由於 Debian 套件對於系統穩定性的要求極為嚴謹,因此重視系統穩定性的使用者可以確保其作業系統的穩定與安全性。

除了 Debian 本身的穩定性之外,其套件的升級方式亦值得一提:Debian 採用 APT 的機制來進行軟體安裝與管理,在 APT 的機制下使用者可以選擇網路上連線速度快的主機來進行軟體的更新與安裝、移除動作。在某些軟體發現有漏洞的情況下,亦可連接至 security.debian.org 網站來進行線上更新的動作。以上所描述之軟體安裝與更新、移除等動作完全不需向任何個人/公司繳交軟體費用。因此對於飽受微軟昂貴升級價格的公司而言,更是一大福音。

2011年2月21日 星期一

FPGA 上課講義 2012/02/13

光碟片的演進:
  1. CDROM -> 唯讀光碟:由工廠生產(壓片),使用者只能讀、不能寫
  2. CDR -> 可寫一次光碟、使用者可寫一次,無法抹除
  3. CDRW -> 可讀可寫光碟,使用者可以抹除
IC 的演進:
  1. ROM -> 唯讀記憶體,由工廠生產(燒錄),使用者只能讀、不能寫
  2. PROM -> 可寫一次記憶體,使用者可寫一次,無法抹除
  3. EPROM、EEPROM、Flash -> 可讀可寫記憶體,使用者可以抹除
-------上述記憶體所儲存的為 ? 資料 ------
  1. PLA、PAL -> 可寫一次電路(可程式化電路),主要以數位電路為訴求 (http://zh.wikipedia.org/zh-tw/可程式邏輯裝置)
  2. FPGA -> 可讀可寫之電路 (可程式化電路),主要以數位電路為訴求 (http://zh.wikipedia.org/zh-tw/FPGA)
例如,使用 PLA/PAL 來實現以下電路。
F=A+B'‧C

未來上課內容所打的講義都會放在:http://pominglee.blogspot.com/

本課程期中、期末目標如下:
  1. 期中考前:進行 Verilog 程式教學,使用工具為 GPL cver,使用之波形觀測軟體為 GtkWave
  2. 期中考後:進行實際電路下載 FPGA 電路板教學,使用工具為 Altera Quartus II,本學期主要實習電路為 Altera 系統。
寫 Verilog 的流程如下:
  1. 撰寫 Verilog 程式 (使用工具:vi)
  2. 模擬 Verilog (使用工具:cver)
  3. 觀察 Verilog 執行結果 (使用工具:gtkwave)
  4. 除錯 -> 修改原始程式 -> 一直到電路設計完成


半加器程式:

module halfadder(x, y, s, c);
input x, y;
output s, c;
wire x, y;
wire s, c;

assign {c, s} = x + y;


endmodule


A0 A1 A2 A3 B0 B1 B2 B3 S0 S1 S2 S3 Cout
0   0  0  0  0  0  0  0
0   0  0  0  0  0  0  1
..
             1  1  1  1
0   0  0  1  0  0  0  0
0   0  0  1  0  0  0  1
..
             1  1  1  1


Prac.

試設計一 4 位元加/減法器,並執行完整模擬且確定其功能正確。

a. 以 Gate Level 方式撰寫此電路
b. 以 RTL  Level 方式撰寫此電路
c. 回家搞懂什麼叫 Gate Level/RTL Level
行話



2011年2月13日 星期日

SOP - 標準作業流程

為了讓各位在安裝 Linux EDA 工具有一致的規格可遵循,在此筆者定義了安裝 Linux EDA 的標準化作業流程 (SOP - Standard Operation Procedure),基本上來說,安裝 Linux EDA 的 SOP 如下圖所示。根據下圖所定義的規範,我們將安裝 Linux EDA 分為 6 大步驟,分別是:
  • 下載 - 至 CIC 下載我們所要安裝之 EDA 工具
  • 解壓縮 - 解壓縮我們所要安裝之 EDA 工具
  • 安裝 - 安裝我們所要安裝之 EDA 工具
  • 設定環境 - 設定我們所要安裝之 EDA 工具操作環境
  • 測試 - 測試我們所要安裝之 EDA 工具是否能正常動作
  • 故障排除 - 如果安裝有問題的話,我們要設法將問題排除


在這本書中之其它章節,我們將全部以此 SOP 為操作流程進行 Linux EDA 工具之安裝與架設。未來各位將可依據自己的需求,照著上述的 SOP 來新增你要的 Linux EDA 工具。

BASH 或是 CSH,今晚你要選那一道 ?

在我開始講 Shell 的選擇之前,如果到現在為止你還不懂得什麼叫 Shell 的話,孩子,這本書不是為你準備的。請關上這本書,換上一本「快快樂樂裝 Linux」、「輕輕鬆鬆管理伺服器」之類的書,一直到你知道什麼叫 Shell 之後,再回來看這本書吧。

只要你會安裝 Linux 的話,你就會發現幾乎所有的 Linux Distribution 例如 Red Hat Enterprise Linux、Fedora、Debian 等全部都使用 BASH 來作為內定的 Shell。是的,就我個人的看法,BASH 已經是目前地表上功能最強的 Shell 環境了,如果你還回頭使用其它 Shell 如 CSH 的話,那我只能說聲祝福你。

不幸的是,幾乎我知道所有 CIC 提供的 EDA 工具設計設定檔全都是 CSH 環境底下的,這造成了許多同學在安裝架設上的困擾,因為他們不曉得如何將 CSH 的設定轉換至 BASH 底下。在這種情況下,他們不由自主的被迫使用 CSH,於是無緣得見 BASH 的美好。

這本書的內容是以 BASH 為主,我完全不會講解如何將 CIC 所給我們的 CSH 設定檔拿來使用,因為那是 CIC 的智慧財產,我不能拿來騙錢。更何況就我個人的使用習慣,CSH 實在頗為難用。因此在本書中的所有設定完全是以 BASH 為主,請各位要注意。

目錄的迷思

如果你一直看到這邊都還沒有被嚇跑,那筆者要恭喜你,順便跟你說:沒有,我們還沒有要到下一章,現在我們要來討論一下 EDA 工具應該要安裝到那個目錄。有許多人安裝 CIC 所提供的 EDA 工具時,將 CIC 所寫的安裝說明當成聖經,而裡面的資料與設定更是連一個字都不敢動,深怕一不小心檔案就會裝錯、軟體就無法使用,結果各位就無法從各位的指導教授手下順利的畢業,這真是慘絕人寰呀..各位回去可以在實驗室的主機上寫個「慘」字..orz...

事實上,CIC 所提供的檔案與安裝流程均是其工程師為了簡化各位的安裝流程所重新包裝過的檔案,其設定檔亦是 CIC 的工程師所整理出來的。在此必須強調的是:CIC 的設定方式不一定符合每間實驗室的使用習慣,特別是使用 C Shell 就讓我覺得十分難用。此外,其目錄設定亦不一定適合 Linux 底下的套件管理。

個人的安裝習慣反而是喜歡將所有的 EDA 工具安裝到 /opt 目錄底下,我之所以這麼作的理由原因很簡單,由於 Linux 有許多版本,為了防止不同版本間的不相容造成軟體開發人員的困擾,因此 Linux 的發展是依循著 Linux Standard Base (LSB)的定義,而 LSB 中之檔案系統階層標準是由 Filesystem Hierarchy Standard (FHS)所定義出來的,這是 Linux 所要遵循的規格。根據 FHS 的規範,沒有所謂的 /usr/cad 這個目錄,但是 /opt 這個目錄就沒有那麼多的限制。在 FHS 2.3 的規格中我們可以發現 /opt 的定義如下:

/opt is reserved for the installation of add-on software packages.
/opt 是保留來安裝外加之軟體套件。

因此到底要將 EDA 工具安裝到那個目錄底下這件事情,怎麼作比較符合 LSB 的規範應該十分清楚了。在此要告訴各位的是:大家不一定要照 CIC 的安裝流程來玩(當然前提是你要知道你在幹什麼),只要符合你管伺服器的習慣,軟體能方便安裝、管理的話都是可接受的安裝方式。不過,就我個人的意見是:還是符合 FHS 的規範比較好,畢竟那是一個公開的標準。

接下來,我們統一將本書中將會安裝的軟體之安裝目錄與 CIC 預設的安裝目錄作完整列表如下表,以供讀者比較。

EDA 軟體目錄比較列表
軟體名稱/版本
CIC 預設安裝目錄
本書規畫之安裝目錄
Cadence icfb Custom IC Design tools/5.1.41USR6
/usr/cad/cadence/IC
/opt/EDA/IC
Synopsys Hspice /2009.09
/usr/cad/synopsys/hspice
/opt/EDA/hspice
Synopsys Cosmosscope/2007.03-sp1
/usr/cad/synopsys/cosmos_scope
/opt/EDA/cosmos_scope
SpringSoft Laker/32v4p2
/usr/cad/spring_soft/laker
/opt/EDA/laker
SpringSoft ADP/21v4p2
/usr/cad/spring_soft/adp
/opt/EDA/adp
Mentor Calibre/2009.2_36.21
/usr/cad/mentor
/opt/EDA/calibre

從上面的表格你會發現,我們將所有的 EDA 工具存放在 /opt/EDA 目錄下,未來將會讓我們的管理、升級等工作較為輕鬆而且符合 FHS 規範。

在你往下一章看之前,要注意的事項

  • 如果你是學校的教授,那麼你必須向財團法人國家實驗研究院國家晶片系統設計中心(以下簡稱 CIC) 申請軟體授權,如此一來你才能至 CIC 的網站下載軟體並申請 License 來使用,有關如何申請 CIC 的部份,請直接參閱 CIC 的申請須知,如果你沒有完成申請的話,接下來的流程你通通都不能作,因此不必看下一章。
  • 如果你是被指派安裝 EDA 工具的研究生或是大學部學生,不管你是那一種我都必須稱讚你能力很強或者特別帶塞才會被指派來裝 EDA 工具。不過請你不用擔心,以前我學習如何裝 EDA 工具時我也不會覺得我特別帶塞,搞不好你覺得我這本書寫得不好也可以自己出一本「快樂輕鬆安裝 EDA」的書來拯救世人。OK,我又扯遠了,要是你只是學生身份的話你必須請你的指導教授完成 CIC 申請流程並下載軟體,之後你才可以開始安裝這些軟體。
  • 除了 EDA 使用必須向 CIC 申請,製程檔也要向 CIC 申請,而且是透過 CIC 向台積電或是聯電申請,因此要特別小心。這裡各位要注意的是智慧財產權管控的問題,如果你申請的是台積電 0.35 um 以上的製程,你必須在申請的一年內至少下線一顆晶片才行,否則台積電或是聯電在下一年將不會允許你再申請同樣的製程。而且所有使用到這些製程的學生全部都要填寫相關的智慧財產權切結書,如果你不照遊戲規則玩的話下一年度再次申請台積電或是聯電的製程恐怕就有點困難。反過來說,要是你只是純粹教學上的用途(也就是不想下線),你可以申請 CIC 所提供的 0.18 um 虛擬製程,這是 CIC 所特別提供給學校教師進行教學用途所作的製程檔。詳細的申請流程在此不多加說明,請各位(當然你必須是學校教師才能申請)自行連接到 CIC 網站,並點選製程服務如下圖所示。

  •  當你申請好 EDA 設計軟體及製程檔之前,請你對你要安裝 EDA 軟體的電腦再看一眼,你確定這就是你要裝的伺服器主機嗎 ? 對我來說,EDA 伺服器至少要有以下特性:
    • CPU 愈快愈好,最好是雙核心以上的 CPU,對於 CPU 核心的數量,我個人的建議是:雙核不嫌少,八核不嫌多。
    • 記憶體容量愈大愈好,我們目前最高一台裝了 12 GB(我沒寫錯) 的 RAM 來當開發平台,俗話說:沒圖沒真相,所以以下是真相:
                     total       used            free     shared    buffers     cached
Mem:         12169      11665           503          0        443      10058
-/+ buffers/cache:        1163       11005
Swap:          9538             7          9531

        我們可以看到 total Mem 共有 12169 MB == 12 GB,不過要在 Linux底下驅動 12 GB 的 RAM 有時得自己編核心,如此一來效能比較好。

    • 硬碟愈大愈好,我們目前使用的伺服器上面裝了 2 TB X 2 加 160 GB 的硬碟以供全系師生使用。當然,我假設你已經了解如何在Linux 底下驅動 RAID 卡以外接 8 顆硬碟。萬一你只是在實驗室內部使用,那麼 在不需安裝 RAID 卡的情況下安裝 1 TB X 3 顆硬碟 (SATA 或是 E-IDE 介面都行) + 一台光碟機來放 Linux 安裝光碟的配置也勉勉強強夠用了。如果你不希望在未來為了硬碟空間不足搞得雞飛狗跳,學弟與學長為了儲存空間不足而大打出手,最終引來指導教授的惡言相向的話,先裝大一點的硬碟能確保你在未來數年都不必面臨硬碟容量不足的問題。在此要說明筆者安裝硬碟的哲學:在 IC 設計的流程中,硬碟成本可以視為 == 0 元,重要的是裡面的資料 !!
    • 你要安裝的主機一定要有實體 IP,也就是不能架設在使用虛擬 IP 的主機上,同時必須確定你的主機可以通過 IP 的正反查,否則十分有可能在執行 EDA 工具檢查 License 時出現問題。如果你看不懂這段我在寫什麼的話,那麼..孩子,這本書不是為你準備的,請先看網路相關的書籍等你了解什麼叫 IP 正反查再回頭來看這本書。
    • 不必購買 3D 功能很強的繪圖卡,也不必驅動你的音效卡,這對執行 EDA 工具沒有太大幫助。不過對於 Starcraft 2代(星海爭霸 2)及 Crysis (末日之戰) 倒是十分必要,如果你買高速 3D 加速卡是為了執行這些程式,當心不能畢業 !!

2011年2月10日 星期四

我們所使用的 Linux Distribution

所謂的 Linux Distribution 是指 Linux 發行套件,目前最常見的 Linux
發行套件有:Red Hat Enterprise Linux (RHEL)UbuntuDebian .. 等。有別於 CIC 或是其它 EDA 廠商所建議的以 Red Hat Linux 為預設之 Linux Distribution,我們選擇 Debian Linux 作為我們的 EDA 伺服器平台,理由如下:

價格
Debian Linux 可以自由下載及更新,較某些 Distribution 要花錢註冊來得更為方便,因此是我們的首選。

安全性
Debian Linux 有一個全球性的安全性更新網站:http://security.debian.org/,可以在軟體有安全漏洞的情況下第一時間的推出安全更新套件以提供使用者自行下載。重點是:這項服務不但速度快而且無需繳交任何費用。

穩定性
Debian Linux 最主要的發展哲學在於穩定,在 Debian 的發展層級底下分為三個不同的階層,分別是:穩定 (Stable)、測試 (Testing) 與不穩定 (Unstable)。其中穩定層級之軟體均是經過一再檢查確定其軟體安全性與穩定性均到達一定標準後才能編入穩定層級。而測試層級中的軟體版本則較穩定層級來得新,但是尚未經過完整的驗証,因此不列入穩定層級,必須經過一番時日的驗証後才能進入穩定層級。至於不穩定層級中的軟體則是最新版,但大部份尚未經過驗証,其穩定性亦較差,此層級僅供測試使用。由於 Debian 套件對於系統穩定性的要求極為嚴謹,因此重視系統穩定性的使用者可以確保其作業系統的穩定與安全性。

套件管理方便性
除了 Debian 本身的穩定性之外,其套件的升級方式亦值得一提:Debian 採用 APT 的機制來進行軟體安裝與管理,在 APT 的機制下使用者可以選擇網路上連線速度快的主機來進行軟體的更新與安裝、移除動作。在某些軟體發現有漏洞的情況下,亦可連接至 security.debian.org 網站來進行線上更新的動作。以上所描述之軟體安裝與更新、移除等動作完全不需向任何個人/公司繳交軟體費用。因此對於尚無經濟能力的學生而言,更是一大福音。

小結
綜合上面的結論,我們將以 Debain Linux 為我們伺服器的主要作業系統,我們會在隨後章節介紹如何建立一台 Debian Linux 伺服器,並以此為基礎,一步步的安裝本書要提及之 EDA 工具軟體。

本書所提及之設計流程軟體

本書將針對兩大 IC 設計流程之 Linux EDA 工具安裝進行教學,以下我們將簡介相關之軟體設計流程及其相對應之軟體。

全客戶設計流程 (Full Custom Design Flow)

有關全客戶 IC 設計流程及其相對應之軟體,我們整理在圖1中,根據此圖之內容,我們可以發現目前 CIC 所提供之 IC 設計軟體主要如下:
  • Cadence Custom IC Design Tools (Composer、Virtuoso、Analog Environment)
  • SpringSoft Laker
  • SpringSoft ADP
  • Synopsys Hspice
  • Synopsys Cosmos Scope
  • Mentor Calibre
這裡必須說明的是:上述的 IC 設計軟體並非一成不變的,舉例來說,在 0.35 um 製程前我們較常使用 PDracula 來進行 DRC/LVS 驗証。而先前在工作站上很常用的 Awaves 因為沒有 Linux 版,因此也被 Cosmos Scope 所取代。因此未來會有什麼新的工具會加入 CIC 的全客戶式 IC 設計流程中是很難想像的,搞不好再過幾年我們所用的工具會全部替換以適應更新的深次微米製程。
圖1. 全客戶設計流程及其相對應之軟體文字



標準元件設計流程 (Cell Based Design Flow)
(尚末完成)

前言

在開始說明 Linux EDA (Electronic Design Automation) 伺服器架設前,我們先討論一下各位的心態,各位為何要來學習如何架設 Linux EDA 伺服器。據筆者個人的理解,各位來學習如何架設 Linux EDA 伺服器的動機如下:

  • 指導教授叫各位架設 Linux EDA 工具,但是如何著手各位並無頭緒。
  • 你對架設 Linux EDA 工具很有興趣,但是 CIC 沒有這方面的課程。
  • 你是跟朋友來湊熱鬧的。
  • 你根本就是個跟我一樣可憐的菜鳥教授,學生逼你灌 EDA 工具給他們用,否則他們就無法學習/實作晶片下線。

雖然每個人學習架設 Linux EDA 伺服器的理由五花八門,但是不可否認的是:大多數人都沒有 Linux 的基礎,甚至連 ls、vi 等指令的用法都不知道。在此筆者要請問各位一個問題:

Are you ready ? 
(你準備好要管理 Linux 伺服器了嗎 ?)

也許各位覺得這沒什麼大不了的,不就是裝軟體嘛,照這份講義或是 CIC 的說明也能裝好。如果這樣的話,各位就小看 Linux EDA 安裝的複雜性了,以下筆者列了一些問題請各位看看會不會解決:

與 Linux 安裝有關的問題:
  • 你能不能發現你的硬碟出現壞軌 ? 沒有人會願意將資料存在一台有壞軌的硬碟上。
  • X Window 安裝完無法啟動時你能不能進行錯誤排除 ?
  • 網路不通時你知道錯誤點在哪嗎 ? 網路不通時是無法檢查 License 的。
  • 在文字模式下如何編輯文字檔 (提示:vi 的使用方式你熟悉嗎 ?)
  • 硬碟爆掉時你能夠馬上查出是誰佔據最多硬碟空間嗎 ? 有些惡劣的使用者會利用寶貴的硬碟空間亂塞檔案。
  • 你會不會新增硬碟到系統上 ? 我們總是有擴充硬碟空間的需求的。
  • 萬一系統跳電後,機器無法啟動,你會不會修理 ? 或者,最糟糕的情況是儘速安裝新系統,並將舊系統上的資料備份過去。
  • 使用者的程式當在機器裡,你會不會將這個程式砍掉 ?
  • 你知道如何完整的備份一個目錄嗎 ? (提示:tar 的用法你了解嗎 ?)
  • 你會不會使用 cd、cp、mv、rm 等檔案操作指令 ? 文字模式下可沒有檔案總管可以使用。
  • 你知不知道目前系統裡有多少人連進來 ? 或者,曾經有哪些人連進來你的系統。
  • 你會不會架設 ftp 伺服器 ? 有人希望使用 ftp 來下載他們的檔案。
  • 某位使用者忘記密碼了,你會不會幫他重新設定密碼 ?
  • 你會新增使用者帳號嗎 ? 你會移除使用者帳號嗎 ?
  • 萬一系統執行的速度很慢,你能否檢查是何原因 ?
  • 假設你的系統必需換 IP,你會修改嗎 ?
  • 你會不會補你系統的漏洞,以免被駭客攻擊。
  • 使用者要求你提供抓圖軟體以便他抓模擬波形圖或是電路圖,你怎麼辦 ?
  • 其它
與 EDA 管理有關的問題:
  • CIC 提供新版的 XXX 下載,你會不會將你原先的舊版升級成新版 ?
  • 承上,萬一升級失敗,你能不能儘速換回舊版,先擋兩天,以免學生無法畢業?
  • XXX 工具需要 OOO 函式庫才能執行,你會不會安裝這個函式庫 ?
  • AAA 軟體跟 BBB 軟體要整合才能執行,你會不會整合 ?
  • CCC 軟體的 License 設定有別的參數,你會不會設定 ?
  • 你能否檢查你系統是否能通過 License 伺服器的檢查 ?
  • icfb 開啟的速度很慢,你知不知道為什麼 ?
  • icfb 開啟元件時突然變成唯讀模式了,你能不能找出問題?
        筆者註:光是這個問題就有兩三種可能的發生原因,我來一一提示如下:
    • icfb 沒有 check 到正確的 license,因此是以唯讀模式開啟,怎麼解決呢 ?
    • 學生上次執行完 icfb 沒有正確關閉視窗,因此某些 cell view 有 lock 檔,導致這次學生重開 icfb 後也是以唯讀模式開啟,怎麼解決呢 ?
    • 學生根本就是小白,他在 A 電腦開啟 icfb 後沒關閉,再在 B 電腦又開一次,此時 A 電腦中的 icfb 鎖住 library 的編輯權限,因此在 B 電腦中只能以唯讀模式開啟,怎麼解決呢 ?
    • 其它不明原因導致以唯讀模式開啟,但是我們無法解決,怎麼解決呢 ?
       上述這幾個不同的問題,其「症狀」都是 icfb 只能以唯讀模式開啟,請問你會不會找出正確的「症狀」來對症下藥 ?
  • hspice 不能模擬,你知不知道為什麼 ? 
        筆者註:光是 hspice 不能模擬,也有好幾種可能的原因:
    • hspice 的 license 沒有設定正確,怎麼解決呢 ?
    • 在 virtuoso 中需要設定 include 檔,這個檔案的內容打錯了,或是沒有這個檔案,或是此檔內部路徑中的檔案不存在,怎麼解決呢 ?
    • 你的硬碟沒有空間了,當然 hspice 就不能跑,怎麼解決呢 ?
  • 同上,DDD EDA 工具執行有問題,你知不知道為什麼 ?
  • 使用者 A 能執行 EEE 軟體,但使用者 B 不行,你能不能解決 ?
  • 其它
    上面所提出的問題林林總總,只不過是筆者近年來管理 Linux EDA 伺服器所遇上的一部份問題。各位可以看看能否解決,如果不行的話,你要試著在網路上、書本裡尋找答案。當然,最好的方式是把你電腦中的 Windows 洗掉,只灌 Linux,每天開機來強迫自己學習 Linux 底下的解決方案。久而久之,上面的問題你都能找到解答。祝各位好運 !!

2011年2月9日 星期三

Are you ready?

這本書適用人士/不適用人士

這本書不是初學者使用手冊,不是快快樂樂學 Linux、輕輕鬆鬆玩 X 視窗之流的書,更不是讓你買來放在枕頭底下就能將 Linux EDA 工具安裝弄懂的。我不打算寫一本「舒舒服服學 Linux EDA 架設」之類的書,這本也不是 Linux 入門手冊。僅管我會盡可能的將實際的操作流程一步步的寫在這本書中,但是你仍必須俱備相當的 Linux 操作經驗才能順利吸收書中的內容。因此,我為各位準備了一下這本書的適用人士/不適用人士清單。

適用人士

這本書適用的人士如下:
  • 你必須了解 Linux 的操作使用,至少有三至五年的操作經驗,這裡所謂的「操作經驗」不是裝好 Linux 之後看一下「哦..原來 Gnome 桌面長這樣」然後又切回去用 XP 的那種人,而是你的的確確有實務操作的經驗。
  • 你對於如何架設 Linux EDA 伺服器有強烈的興趣,但礙於本身能力尚無法達到這方面的成果,或者是你「已經」會裝某些軟體,但另一些軟體的安裝仍有問題的。
  • 你對於什麼是全客戶式晶片設計流程或是標準元件設計流程有相當的了解,甚至已經下過教育性晶片或前瞻性晶片的。
不適用人士

這本書的不適用人士如下:

  • 你要問我什麼是 Linux
  • 你要問 Linux 可以作什麼事或是每天使用 Linux 的時間不超過三個小時
  • 你要問什麼是 vi、ls、tar、root、dns、ip 正反查 .. 等東西的
  • 你要問什麼是全客戶式晶片設計流程或是標準元件設計流程的
  • 你要問 ...,你要問的東西太多了,還是問天吧! (註:陳之藩 - 謝天中有一句話:「要感謝的人太多了,就感謝天罷」,同樣的:要問的東西太多了,還是問天吧。)

在這邊我要再次強調,這本書不是給初學者看的,伺服器架設是一項專業知識、專業技能,它結合了你對 Linux 的了解、你自己故障排除的能力(通常是長時間 Linux 實際操作經驗的累積)、你對 IC 設計流程的理解。當然最重要的是你個人的 EQ,我曾經為了某些執行上的小問題無法解決而苦思不已,特別是這方面的問題在 Google 上也查不到。如果不是特別有耐心的人能一直追蹤問題的來龍去脈,是無法解決這些問題的,而我個人也不保証你照我書上的流程一步步執行就能順利安裝成功。因此,你有足夠的 EQ 來面對問題、解決問題是最重要的。

EDA 工具安裝與建置指南 - 自序(長)

算一算,自民國 83 年起至現在,筆者玩 Linux 已經超過 16 年了,當初玩 Linux 曾經有裝過五十幾片磁碟片的,後來出了雲觀光碟可以一次搞定安裝 Slackware,再後來出了 Redhat Linux,一直到現在玩的 Debian 作業系統。我還記得當初為了要在 Linux 上看中文字得從倚天中文字形轉成 Linux 可用的格式,而 chdrv 更是當初不可或缺的工具。一開始玩 Linux 作業系統時,Linux 被眾多作業系統廠商笑稱之為「高級玩具作業系統」。的確,那時候的 Linux 比上 (Solaris、HP Unix、IBM AIX ..)不足,比下 (Dos、 Minix ) 有餘。然而物換星移到了今天,這個當年的「玩具作業系統」已經登堂入室,成為高科技產業不可或缺的一部份,從伺服器架設,Android手機乃至於機器人控制 .. 等在在可看見 Linux 的身影。

由於 Linux 具有穩定、可自由使用、不易中毒的特性,因此讓 Linux 成為目前 EDA 設計工具平台的首選。雖然國家晶片系統設計中心 (也就是大家所熟知的 CIC)已經導入 Linux 版本的 EDA 設計工具給國內各大專校院使用,然而 CIC 所提供的安裝說明著實不易理解,且其安裝流程對於不懂 Unix / Linux 安裝管理的同學來說實在是頗為複雜。筆者大概是國內學界少數幾位第一批導入 Linux EDA 設計環境的人,而在進入學界的這幾年,深深感受到國內學界面臨 Linux EDA 伺服器架設的痛苦:不曉得如何著手,有問題不知道要問誰,機器會不會被人當跳板也不知道。光是學 IC 設計/刻電路/寫程式肝就快爆掉了,哪還有力氣去學如何架設/管理 Linux EDA 伺服器。一般業界 Design House 可以找原廠協助安裝/架設的問題,學校沒有錢購買原廠技術支援,只能事事將就了。

有鑑於此,筆者在教育部顧問室 PAL 聯盟 (Prototyping Application &
Layout Consortium) 的補助下在暑假時連續開了好幾年的 Linux EDA 伺服器架設訓練營,每一年都獲得極高的迴響。在這些年對外的訓練過程中,筆者發現國內學界對於 Linux EDA 伺服器的架設面臨極大的挑戰,通常會學 IC 設計的人都是電子電機科系的。但架設 Linux 伺服器卻需要資工相關的背景,不然什麼虛擬記憶體、死結、護衛效應..等之類的知識沒修過 OS 這門課的人那會知道。如果連 OS 的基本原理都不大清楚,要管 Linux 作業系統就更是難如登天了。所以簡單來說:懂設計電路的人不會 Linux 伺服器架設,而會 Linux 伺服器架設的人偏偏不懂 IC 設計。少數兩者皆懂的人,很抱歉,這人不一定在各位讀者的身邊。這,是筆者寫這本書的動機。

筆者想寫這本書想很久了,但是平日俗事纏身,實在無法靜下心來好好整理資料(好,以上是藉口!!)。我希望這本書能幫助國內每一個設計 IC 的實驗室架設出功能正常的 Linux EDA 伺服器,如果真能照筆者所想的那樣,那也算對國內眾多為了架設 Linux EDA 伺服器而焦頭爛額的年輕學子們作出了小小的貢獻。這本書原先的想法是「畢其功於一役」,將 Linux 伺服器安裝/架設、全客戶式流程設計軟體、Cell Based 流程設計軟體全部摻在一起作瀨尿牛丸 .. 咳! 作完整的介紹。後來發現這真是一件大工程,一本書講完這麼多東西實在太勉強了! 因此決定把 Cell Based 流程先暫時擱著,這本書只講到全客戶式流程。至於 Cell Based 流程設計軟體如何架設的書何時會生出來,那就只有天知道了。

本書特地提供有關全客戶流程 EDA 設計工具之軟體安裝教學,期望能協助全台各大學院校能順利的導入 Linux EDA 伺服器。更詳細的定義本書所提及之主流全客戶流程 EDA 工具軟體,包含:Cadence Virtuoso、 Synopsys
Hspice、Synopsys CosmosScope、Springsoft Laker、Srpingsoft ADP 及
Mentor Graphics Calibre 等業界軟體。本安裝手冊可視為是 CIC 安裝流程的補充說明,所提及之 IC 設計軟體之相關版權均歸於其所屬公司所有。

致謝

本書之所以可以付印,首先要感謝筆者的父母、美麗的老婆還有兩個寶貝,感謝他們沒有來搶我的電腦所以我才能打字。如果我家寶貝佔住我的電腦玩 google street view 的話,這本書是永遠不會生出來的。

免責聲明

本書「不保証」你能順利安裝上述軟體,亦「不保証」你的主機不會因此受到損壞(包括硬體損壞及軟體損壞或資料毀損)。從另一方面來說,由於筆者學識不足能力有限,書裡錯誤疏漏之處在所難免,倘若各位看倌要照本書內容實際操作,請各位自行承擔其相關責任。

李博明 僅秩於南台科技大學 電子系

EDA 工具安裝與建置指南 - 自序(短)

我想寫書,寫一本書、寫一本對國內產/學界有幫助的書、一本寫完後會進駐各VLSI 相關實驗室甚至是 Design House 的書。 如果我的願望成真,那表示我的確對國內學界有作出我的貢獻,也許那一天我去參觀別人的實驗室/辦公室,發現書架上有我寫的這本書。最好這本書被翻得爛爛的,一看就知道有人抱著這本書翻來翻去。這個時候,我就會知道,我寫出來的東西對這個世界有用。

李博明 僅秩於南台科技大學  電子系