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 為主,請各位要注意。