とりあえず、まずはVivado 2014.4をUbuntuにインストールした。SDK 2014.4も一緒にインストールした。 対象Ubuntuは以下の通り。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"
さて、RISC-Vのビルドからやり直そう。 相変らず参考にしてるのはRISC-Vプロジェクトの以下のサイトだ。
make project # Vivadoのプロジェクトを生成する make bitstream # VivadoでRocketチップをインプリする
Rocketチップのインプリには1時間程度かかる。VirtualBox 上のUbuntuで実行されているとはいえ、結構早いほう? まあ、6段のパイプラインでそれなりに大きいCPUだから、論理合成には時間がかるのかねえ。 今自作しているCPUでも、Zynqの容量を使い切っている(だめじゃん...)のだが、まあ30分程度で終わる。そんなもんかねえ。。。
さて、bitstreamまで生成できたら、次はVivadoのコンソールを立ち上げて、SDKへのエクスポートと、FSBLを作成を行う。
make vivado
さすがにこれはコンソールでは行なえない。上記まではUbuntuへsshを通してcygwin上で作業していたが、ここから先は VirtualBox の画面からログインして行わなければならない。
さて、前回FSBLの生成時にエラーが出ていたが、
[Hsi 55-1464] Hardware instance __EMPTY__ not found in the design
これは、Ubuntu上のVivado 2014.4でも同様のエラーが発生した。これを回避するためには、やはり以下のページを参照しなければならないらしい。
http://www.xilinx.com/support/answers/63036.htmls
このページを参照するに、まずはパッチをダウンロードして、そのダウンロード先のディレクトリをMYVIVADOという環境変数に登録する。 こうするとVivadoにパッチが入る訳だ。
$ vivado ****** Vivado v2014.4_63036 (64-bit) <-- パッチ 63036 が当てられていることが分かる。 **** SW Build 1071353 on Tue Nov 18 16:47:07 MST 2014 **** IP Build 1070531 on Tue Nov 18 01:10:18 MST 2014 ** Copyright 1986-2014 Xilinx, Inc. All Rights Reserved.
まずはこれによりSDKを正常に立ち上げることができる。 次にハマったのは、64bitと32bitの問題。Xilinxのarm-xilinx-abi-linux-gnuabi-gcc は、32bitでコンパイルされており、64ビットでは動作させることができない。 32ビットのバイナリを動作させようとすると、以下のエラーが発生してうまくいかない。
これを解決するため、以下を参照した。
とあるエンジニアの備忘log: ISE & Vivado 設定 on Ubuntu
$ sudo apt-get install ia32-libs
をしてみると、今度はUbuntu14.04 LTSではこのパッケージは無くなっているらしい。さらにググる。
ia 32 - How to install ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr) - Stack Overflow
sudo -i cd /etc/apt/sources.list.d echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" >ia32-libs-raring.list apt-get update apt-get install ia32-libs
やっとコンパイルできるようになった。FSBLの作成までは完了。続く。