(原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
Abstract
本文介紹如何安裝Linux版的Quartus II,其中包含如何在Linux安裝USB Blaster以及相關議題。
Introduction
使用環境:Windows XP SP3 (Host OS) + ReaHat 5.4 (Guest OS) + VirtualBox 4.1.4 + Quartus II 11.0 + DE2-70
本文將討論以下主題:
1.為什麼要在Linux執行Quartus II?
2.為什麼選擇RedHat Linux?
3.如何安裝VirtualBox?
4.如何在VirtualBox內安裝RedHat Linux?
5.如何在RedHat Linux安裝VirtualBox Guest Additions?
6.如何在VirtualBox內安裝Quartus II?
7.如何在VirtualBox內設定Quartus II license?
8.如何在VirtualBox內安裝USB Blaster?
9.如何在VirtualBox內將已經安裝好的Quartus II匯出?
10.如何在VirtualBox內匯入已經安裝好的Quartus II?
1.為什麼要在Linux執行Quartus II?
在(原創) Quartus II安裝新觀念:如何將Quartus II安裝在VirtualBox內? (SOC) (Quartus II) (VirtualBox)已經討論過如何將Quartus II安裝在VirtualBox內,且已經可以解決很多Quartus II使用上常見的問題了,為什麼還要討論Linux版本的Quartus II呢?其實本人原本對Linux也沒啥好感,一來我並沒有要使用Linux當server,二來我沒有要使用Linux當嵌入式的OS,所以一直覺得Linux對我工作上沒有實際的幫助,一直到畢業工作後,從事ASIC開發,才發現Linux對於IC設計非常的好用,是EDA工具的理想平台:
1.絕大部分的EDA工具都在Linux平台上:
如Synopsys、Cadence、SpringSoft等公司的EDA工具都在Linux平台上,在Windows平台只剩下FPGA工具如Altera Quartus II與Xilinx ISE,以及Mentor Graphics的ModelSim,假如你工作只走FPGA flow,那麼Windows平台的確就夠用了,但假如你工作走的是ASIC flow,那麼絕大部分的EDA工具都在Linux上,如Synopsys VCS,Cadence NC-Verilog,SpringSoft Verdi,這些工具或許還有Windows版可以撐一下,雖然版本比較舊,但Synopsys Design Compiler自從2000年以後就沒有出Windows版,而且synthesis科技日新月異,我想沒人會想用2000年的Design Compiler了,也因為如此,走ASIC flow的會很自然的使用Linux做為開發平台。對於走ASIC flow的人而言,用FPGA主要是為了驗證IC,若為了驗證IC還要將RTL從Linux搬到Windows,然後執行Quartus II,這樣真的比較麻煩,而且RTL的版本控制也是一大問題,若能將Quartus II也在Linux執行,這樣從開發、模擬到驗證全部都在Linux平台執行,將非常的方便。
2.Linux平台有強勁的Shell Script與Makefile支援:
以前總覺得Windows的GUI介面很親民,只要滑鼠拖拖拉拉就可以完成事情,但若不斷重複的事情要一直用滑鼠,就會覺得很麻煩,在IC設計時,通常需要不斷的跑模擬,而且test case可能非常的多,設定也非常複雜,如不同的register設定與不同的LUT載入,若這些動作每次都要用滑鼠做重複的事情,相信大家都會瘋掉,這時就很需要將這些設定用程式的方法解決,Linux平台本身就帶有很強的Shell Script,或者你要用Makefile寫也可以,就可以將複雜的模擬環境用程式都寫好,到時只要打一下script name加參數,就可以執行各式各樣的模擬,這也是Windos環境所做不到的。
基於以上兩個理由,就可以發現儘管你不需要架站,也不需要做嵌入式,Linux仍然是一個理想的EDA工具平台,所以將Quartus II裝在Linux上也有其必要性。
2.為什麼選擇RedHat Linux?
Linux distribution眾多,RedHat曾經是Linux的代名詞,最近這幾年則是Ubuntu最紅,尤其Android指名以Ubuntu為開發環境後,其他較有名的環境尚有Fedora、CentOS與SUSE,根據Altera個官方資料:
Quartus II 11.0支援RedHat 4/5,SUSE 11與CentOS 4/5,其中RedHat 4/5支援最完整,且RedHat也是各EDA工具指定的標準平台,所以推薦使用RedHat。
或許你會說RedHat與SUSE是需要版權的Linux,那你可以使用RedHat的表兄弟CentOS代替。根據我實際測試,CentOS 5系列可以成功安裝Quartus II 11.0,CentOS 6則無法安裝Quartus II 11.0,使用CentOS時須注意。
3.如何安裝VirtualBox?
Step 1:下載VirtualBox
請到http://www.virtualbox.org/wiki/Downloads下載VirtualBox安裝檔與VirtualBox Extension Pack
Step 2:執行VirtualBox安裝檔
按『Next』繼續。
Step 3:Custom Setup
雖然VirtualBox有支援USB,但僅支援USB 1.0,而USB-Blaster用的是USB 2.0,這必須要裝VirtualBox Extension Pack才能解決。
是否要再桌面與快速工具列留下捷徑,按『Next』繼續。
Step 4:安裝虛擬硬體驅動程式
在安裝虛擬網卡驅動程式時,會暫時將網路斷線,按『Yes』繼續。
VirtualBox即將開始安裝,按『Install』開始安裝。
VirtualBox安裝中…
之後在安裝過程中會出現多次以下的視窗,表示正在安裝驅動程式,按『繼續安裝』繼續。
Step 5:安裝完成
Step 6:安裝VirtualBox Extension Pack
Step 7:同意VirtualBox授權
Step 8:VirtualBox Extension Pack安裝成功
4.如何在VirtualBox內安裝RedHat Linux?
Step 1:新增虛擬機器
Step 2:歡迎新增虛擬機器精靈
Step 3:設定虛擬機器名稱和作業系統類型
本文Guest OS使用RedHat 5.4為範例,作業系統請選擇『Linux』,版本請選擇『Red Hat』。
Step 4:設定記憶體
記憶體設定必須非常小心,必須看你Host OS有多少記憶體來設定,否則Guest OS很容易無故當機,以我的狀況而言,我Host OS為Windows XP SP3 (32 bit),有4G記憶體,Windows XP可實抓3GB左右,因此Guest OS設定1GB算是保守的設定,等待安裝成功後,可以再慢慢調適Guest OS該擁有多少記憶體,另外Guest OS記憶體越多,Quartus II在做Synthesis與P&R時速度也較快。
Step 5:設定虛擬硬碟
Step 6:設定虛擬硬碟類型
VDI是VitualBox自己定義的格式,VMDK是一種open的格式,VMware也用,VHD則是Microsoft定義的格式,Parallels則不太清楚,基本上選哪一種格式都可以,因為在VM匯入時目前只支援VMDK格式,所以在此也選擇VMDK。
Step 7:設定虛擬磁碟檔案配置方式
『固定大小』用起來會快些,但第一次建立時較久,而動態配置第一次不用建立所以很快,也不占空間,直到真正使用才建立,不過日後用起來會稍微慢些。在此選擇『動態配置』是為了省些空間。
Step 8:設定虛擬磁碟檔案位置和大小
由於Quartus II 11.0裝完,包含Quatus II 11 + all device + Nios II SBT + ModelSim Altera共14G,加上日後要simulation產生的dump file,所需的硬碟空間會相當可觀,請自行評估所需要的空間。在此設定虛擬硬碟容量為50GB。
Step 9:確認建立新的虛擬磁碟
Step 10:確認建立新的虛擬機器
Step 11:其他虛擬機器設定
Step 12:系統設定
維持原本設定即可。
Step 13:設定視訊記憶體
由於裝了VirtualBox Guest Additions(稍後會裝),可以不用開機動態改變解析度,建議設定視訊記憶體為128MB,以適合各種解析度的動態改變。
Step 14:設定RedHat Linux 5.4安裝光碟ISO檔
由於目前空有虛擬機器,但卻沒有任何Guest OS,需要自己安裝RedHat Linux,所以將光碟設定為RedHat Linux 5.4安裝光碟的ISO檔。
Step 15:啟動虛擬機器
Step 16:啟動RedHat Linux
按『Enter』使用圖形模式安裝。
Step 17:檢查CD
因為RedHat Linux是用ISO檔安裝,所以沒有CD損壞的問題,選『Skip』繼續。
Step 18:歡迎RedHat安裝畫面
按『Next』繼續。
Step 19:選擇語言
因為EDA工具皆為英文版本,無中文,整個Linux環境指使用英文即可,按『Next』繼續。
Step 20:輸入安裝序號
若你有RedHat Linux的安裝序號可輸入,若沒有選擇『Skip entering Installing Number』亦可,不會影響後續的安裝。按『OK』繼續。
按『Skip』繼續。
Step 21:刪除所有硬碟資料
詢問是否可刪除虛擬硬碟中的所有資料,按『Yes』繼續。
Step 22:使用預設partition
此時你可以自行決定如何partition你的虛擬磁碟,在此使用預設的partition即可安裝Quartus II。按『Next』繼續。
確認即將partition你的虛擬磁碟,按『Yes』繼續。
Step 23:設定網卡
由於我們並不想讓此虛擬機器連上網路,所以網卡設定不重要,只要接受預設值即可。按『Next』繼續。
Step 24:設定時區
選擇你的時區。按『Next』繼續。
Step 25:設定root密碼
設定您的root密碼。按『Next』繼續。
Step 26:設定安裝軟體套件
由於稍後要安裝VirtualBox Guest Additions,需要重新make kernel,所以選擇『Software Development』套件,可以免除自行安裝gcc與library的問題。
Step 27:即將開始安裝RedHat Linux
按『Next』繼續。
Step 28:安裝RedHat Linux中
Step 29:安裝完成
按『Reboot』重新開機。
Step 30:重新開機後出現歡迎畫面
按『Forward』繼續。
Step 31:License Agreement
選『Yes, I agree to the License Agreement』,按『Forward』繼續。
Step 32:關閉Firewall
由於日後這個虛擬機器並不會連上網路,所以不需安裝Firewall。按『Forward』繼續。
按『Yes』確定不使用Firewall。
Step 33:關閉SELinux
由於Quartus II在搭配SELinux時須做額外的設定(請參考(原創) 如何在安裝SELinux的環境執行Quartus II? (SOC) (Quartus II) (Linux) (RedHat)),在此選擇直接關閉SELinux。按『Forward』繼續。
按『Yes』確定關閉SELinux。
Step 34:不使用Kdump
不使用Kdump,按『Forward』繼續。
Step 35:設定日期時間
設訂日期時間,按『Forward』繼續。
Step 36:關閉Software Update
因為日後虛擬機器不會連上網路,所以不需要任何software update。按『Forward』繼續。
選『No thanks, I'll connect later』確定不使用software update。
按『Forward』繼續。
Step 37:建立另外一組User
Step 38:設定音效卡
按『Forward』繼續。
Step 39:Additional CDs
按『Finish』繼續。
Step 40:即將重新開機
按『OK』重新開機。
Step 41:第一次重新開機
使用root登入。
第一次正式進入Linux桌面。
5.如何在RedHat Linux安裝VirtualBox Guest Additions?
Step 1:設定VirtualBox Guest Additions ISO檔
將光碟機設定到C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso,然後啟動RedHat Linux。
Step 2:重新make kernel
以root登入後
[root@localhost ~]# cd /media/VBOXADDITIONS_4.1.4_74291/
切換到/media/VBOXADDITIONS_4.1.4_74291目錄下,只要在VirtualBox掛ISO檔,都會在/media目錄下。
[root@localhost VBOXADDITIONS_4.1.4_74291]# sh ./VBoxLinuxAdditions.run
執行VBoxLinuxAdditions.run開始安裝VirtualBox Guest Additions,這是個Bash shell script。
重新開機後,VirtualBox Guest Additions即安裝完成。
6.如何在VirtualBox內安裝Quartus II?
Step 1:設定光碟為Quartus II 11.0的ISO檔
首先到ftp://ftp.altera.com/outgoing/release下載11.0_acds_linux.iso
Step 2:Quartus II安裝畫面
以root登入後
[root@localhost ~]# mkdir altera_q2_11_setup
[root@localhost ~]# cd altera_q2_11_setup/
[root@localhost altera_q2_11_setup]# cp -a /media/altera_11.0_linux/* .
先在root的home directory建立altera_q2_11_setup目錄,然後將光碟中所有檔案複製到該目錄下
[root@localhost altera_q2_11_setup]# sh ./autorun.sh
執行 autorun.sh這個Bash shell script。
或許你會問:『為什麼要將光碟的檔案複製到硬碟後才安裝呢?不能如VirtualBox Guest Additions一樣直接在光碟安裝嗎?』對於這個問題我也很困擾,若直接在/media/altera_11.0_linux這個目錄下直接執行autorun.sh,會沒有任何結果,然後在/tmp/altera_dvd_autorun.log出現以下錯誤訊息:
./autorun.sh: line 68: /media/altera_11.0_linux/autorun/autorun: Permission denied
./autorun.sh: line 68: /media/altera_11.0_linux/autorun/autorun: Success
我也仔細檢查過autorun.sh的權限,並沒有任何問題。但就是無法直接在光碟執行,包含直接使用Altera原廠的光碟而非下載的ISO檔,但若將光碟中的檔案複製到硬碟在安裝則完全沒有問題,這點若有人知道如何解請告訴我。
Step 3:Introduction
Step 4:License Agreement
Step 5:設定安裝路徑
Step 6:選擇安裝工具
基本上Quartus II一定要選,Nios II EDS就看你要不要用到Nios II與SOPC,至於ModelSim,雖然說你原本可能習慣使用其他simulator,不過ModelSim與Nios II整合較好,可以省下很多整合上的問題,建議還是安裝ModelSim。
Step 7:安裝前最後Summary
Step 8:安裝中
Step 9:是否啟動TalkBack
是否允許Altera將一些資訊透過網路送回Altera公司,我是不建議勾選,因為真的不確定Altera會送回什麼資訊。
Step 10:安裝成功
7.如何在VirtualBox內設定Quartus II license?
Step 1:設定license
若還沒設定license,第一次執行Quartus II時,會出現以上畫面,要求你設定license。
Step 2:重新設定虛擬機器
Step 3:移除Quartus II 11.0的ISO檔
Step 4:設定網路卡
這裡是本文的第一個重點,更改虛擬網卡的Mac address為已註冊license的Mac address,如此將可騙過虛擬機器內的Quartus II。
另外必須將『啟用網路卡』打勾,這表示虛擬機器將安裝此張虛擬網路卡。
另外建議將『附加到』選擇『未附加』,且不要選擇『網路已連接』。
或許你會問,『這樣網路不就不通了嗎?』
是的,我就是要讓網路故意不通!!!
主要原因有以下幾個:
1.因為在虛擬機器內,安裝網路卡主要並不是為了網路連線,而是要騙Quartus II的license。
2.因為誰也不敢保證EDA tools有沒有安裝木馬程式,會不會透過網路暗中送什麼資料回EDA tools原廠,若是使用合法license還好,若是使用破解版,因而將使用破解版的資訊送回EDA tools原廠,那就嚴重了。
3.因為網路不通可以拒絕任何Windows的更新,有時候Windows的更新反而會造成EDA tools出問題,所以維持一個能穩定執行EDA tools的環境很重要,而不需要一直頻繁的更新OS。
而且這僅僅是Guest OS網路不通,但是Host OS網路仍然是通的,因此若需要網路相關的操作,請回到Host OS,Guest OS將只是一個單純的Quartus II環境。
本文第二個重點,因為VirtualBox允許你最多設定4張虛擬網卡,也就是4個不同的Mac address,因此我們可以原本四個不同Mac address license的EDA tools同時安裝在同一台虛擬機器上。
Step 5:設定共用資料夾
請自行設定Host OS與Guest OS能共用的目錄,以方便Host OS與Guest OS相互傳檔。
Step 6:設定license
[root@localhost ~]# cd altera/11.0/quartus/bin
[root@localhost bin]# ./quartus
切換到quartus目錄,執行quartus ii
若license成功,將出現已經license的功能。
Step 8:執行Quartus II
執行Quartus II成功。
Step 9:執行Nios II SBT
[root@localhost ~]# cd altera/11.0/nios2eds/bin
[root@localhost bin]# ./eclipse-nios2
切換到Nios II SBT目錄,執行Nios II SBT
執行Nios II SBT成功。
Step 10:執行ModelSim-Altera
ModelSim-Altera需要另外設定license,可以使用MGLS_LICENSE_FILE或者LM_LICENSE_FILE系統變數設定。
Step 11:設定MGLS_LICENSE_FILE系統變數
修改home directory的.bashrc (這是個隱藏檔),使用vi將.bashrc修改成如下:
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
#################
#ModelSim-Altera#
#################
export MGLS_LICENSE_FILE=/root/altera/002682E569D6_1302125101018.dat
Step 12:重新執行ModelSim-Altera
執行ModelSim-Altera成功。
8.如何在VirtualBox內安裝USB Blaster?
我們都知道為了使Quartus II透過USB與開發版溝通,必須安裝Altera USB Blaster這個driver才行,但若使用了VM之後,整體架構就更複雜了,如下圖所示:
安裝Host OS的Altera USB Blaster
(假如你之前曾經在Host OS安裝過任何版本的Quartus II,儘管你移除了該版本的Quartus II,也不會移除Host OS的Altera USB Blaster驅動程式,也就是說,你不必再重新安裝Host OS的Altera USB Blaster,假如你從來沒在Host OS安裝過Altera USB Blaster,就必須依照以下步驟安裝)
Step 1:插入DE2-70 USB Cable
將DE2-70的USB Cable插入USB後,Windows XP會出現以上視窗,表示偵測到新的硬體,選擇『不,現在不要』,按『下一步』繼續。
Step 2:從清單或特定位置安裝(進階)
選擇『從清單或特定位置安裝(進階)』,並按『下一步』繼續。
Step 3:設定Altera USB Blaster驅動程式目錄
這一步是關鍵,由於我們在Host OS並沒有安裝Quartus II,所以在Host OS並沒有任何Altera USB Blaster驅動程式安裝目錄,且Quartus II 11.0 Linux版並沒有包含Windows版的USB Blaster,必須從安裝過Quartus II 11.0 Windows版的電腦的C:\altera\11.0\quartus\drivers\usb-blaster複製到Host OS讓Host OS安裝。
複製完成後,將搜尋位置指向Host OS的該目錄,按『下一步』繼續。
Step 4:安裝Altera USB Blaster
按『繼續安裝』安裝Altera USB Blaster。
Step 5:完成安裝Altera USB Blaster
按『完成』結束安裝。
成功安裝後,在裝置管理員可以發現Altera USB Blaster。
安裝Host OS的VirtualBox USB
除了在Host OS與Guest OS都必須安裝Altera USB Blaster外,還必須安裝VirtualBox所提供的VirtualBox USB,作為Host OS與Guest OS之間的bridge,如此才能使Guest OS的Quartus II能夠存取Host OS的USB與DE2-70。
Step 1:設定Guest OS
Step 2:選取Altera USB Blaster
Step 3:Host OS搜尋到新的硬體
當Guest OS啟動後,由於剛剛設定Guest OS要使用Altera USB Blaster,此時Host OS會表示偵測到新的硬體,選擇『不,現在不要』,按『下一步』繼續。
選擇『從清單或特定位置安裝(進階)』,並按『下一步』繼續。
Step 5:設定VirtualBox USB驅動程式目錄
VirtualBox USB驅動程式安裝目錄在C:\Program Files\Oracle\VirtualBox\drivers\USB\device\,設定後按『下一步』繼續。
Step 6:安裝VirtualBox USB
按『繼續安裝』安裝VirtualBox USB。
Step 7:完成安裝VirtualBox USB
按『完成』結束安裝。
成功安裝後,在裝置管理員可以發現VirtualBox USB。
安裝Guest OS的Altera USB Blaster
Step 1:建立51-usbblaster.rules
[root@localhost ~]# cd /etc/udev/rules.d/
[root@localhost rules.d]# vi 51-usbblaster.rules
切換目錄到/etc/udev/rules.d,使用vi建立51-usbblaster.rules新檔。
51-usbblaster.rules的內容如下:
#USB-Blaster
BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6001", MODE="0666", \
PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; \
printf /proc/bus/usb/%%03i/%%03i$${K%%%%.*} $${K#*.}'", \
RUN+="/bin/chmod 0666 %c"
Step 2:執行Programmer測試
第一次啟動Programmer時,會發現沒有抓到USB Blaster,按『Hardware Setup』繼續。
Programmer已經找到了USB Blaster。
實際將*.sof 寫入FPGA試試看,結果100%成功。
9.如何在VirtualBox內將已經安裝好的Quartus II匯出?
Step 1:匯出應用裝置
選擇你已經建立好的VM,執行『檔案』 –>『 匯出應用裝置』。
Step 2:歡迎使用應用裝置匯出精靈
確認是否為要匯出的VM,按『下一步』繼續。
Step 3:設定會出路徑
設定要匯出的路徑,按『下一步』繼續。
Step 4:設定匯出相關資料
可在此設定匯出的ova檔的相關資料,按『匯出』即正式開始匯出,需要等待一段時間。
10.如何在VirtualBox內匯入已經安裝好的Quartus II?
Step 1:匯入應用裝置
選擇『檔案』-> 『匯入應用裝置』。
Step 2:歡迎使用應用裝置匯入精靈
按『選擇』選擇要匯入的*.ova檔。
選擇好要匯入的*.ova檔後,按『下一步』繼續。
Step 3:設定VM存檔路徑
最後一步是要設定將匯入的VM存檔到哪裡,至於其他設定都可以等匯入成功後再設定,最後按『匯入』即正式開始匯入,需要等待一段時間。
Conclusion
1.證明Quartus II Linux版的確是可以安裝使用的,且Nios II SBT與Blaster也完全沒問題,只要你選對Linux Distribution即可。若你主要是使用ASIC flow,則或許你需要Linux版的Quartus II較方便。
2.可利用VM的虛擬網卡自行變更Mac address,因而達成一個Mac address的license可以給多台電腦使用。
3.VirtualBox最多可支援4張網卡,也就是說你可以將使用不同Mac address為license的tools安裝在同一台虛擬機器上。
4.為了使VM內的Quartus II也能透過USB與開發版溝通,必須在Host OS與Guest OS都安裝Altera USB Blaster,並在Host OS安裝VirtualBox USB當bridge。
5.將project連OS與Quartus II版本整個匯出成*.ova檔,可以保證到其他人的環境與原作者完全相同,減少因為OS與Quartus II版本而造成相容性的問題。
Reference
USB-Blaster Driver for Linux
See Also
(原創) Quartus II安裝新觀念:如何將Quartus II安裝在VirtualBox內? (SOC) (Quartus II) (VirtualBox)
(筆記) 如何在RedHat Linux安裝VirtualBox Guest Additions? (SOC) (Linux) (RedHat) (VirtualBox)
(原創) 如何在安裝SELinux的環境執行Quartus II? (SOC) (Quartus II) (Linux) (RedHat)
全文完。