Moiz's journal

プログラミングやFPGAなどの技術系の趣味に関するブログです

Ubuntu16.04 64-bitで、Quartus II 13.1からModel-sim

前回の続きでQuartus II 13.1に付属のModel-sim Altera Starter Edition 10.1を64ビット版のUbuntu 16.04で動かしてみました。前回も触れましたが、64bit版Linuxと旧バージョンのQuartusの相性はあまり良くないようです。また、Ubuntuはサポート外となっていますので、私のような事情のない方は最新のQuartusとサポートOSの組み合わせをおすすめします。

とりあえず試す

AlteraのModelsSim-Altera Editionのチュートリアル通りに進めていくと、Tools -> Run Simulation Tool -> RTL simulation を選んだところでこんなエラーが出ました。

$ ** Fatal: Read failure in vlm process (0,0)
[2]+ Segmentation fault (core dumped) bin/vsim

予想通りの展開です。

FreeTypeコンパイル

どうやらこの原因はFreeTypeのバージョンの食い違いによるもののようです。いろいろなサイトに情報がありますが、こちらのブログが一番まとまっていました

www.molnar-peter.hu

Freetypeソースコードを手に入れてコンパイルし、modelsim_ase以下にlib32ディレクトリを作って、できたライブラリーをコピー。configureやmakeでエラーがでる場合は必要がライブラリーが足りないので適宜インストールします。このあたりは上記のブログを参照ください。

なお、私の環境では、途中で以下のようなエラーが出ましたが、

$ sudo apt-get build-dep -a i386 libfreetype6
E: You must put some 'source' URIs in your sources.list

/etc/apt/sources.listからコメントを省き、そのあとで

sudo apt-get update
sudo apt-get build-dep -a i386 libfreetype

を行うことで実行することができました。

Modelsimの環境設定、及びQuartus II との連携

これで、LD_LIBRARY_PATHにこのlib32ディレクトリを登録すれば、modelsim_ase/linux/vsimを呼び出すことができるようになります。("~/altera/13.1/modelsim_ase"はmodelsimのインストールディレクトリに変更する必要あり。)

$ export LD_LIBRARY_PATH=~/altera/13.1/modelsim_ase/lib32
$ ~/altera/13.1/modelsim_ase/linux/vsim

 ただ、これではまだQuartus II のメニューから呼び出す事ができません。Quartus IIで行った設定を元にシミュレーションしたい場合は以下の作業が必要です。

  1. Tools->Options...で、modelsim/alteraのディレクトリが、modelsim_ase/binが指定されていることを確認。f:id:uzusayuu:20170423064754p:plain
    私の環境ではこれが、modelsim_ase/linuxaloemを指していたために解決に無駄な時間を費やしてしまいました。
  2. modelsim_ase/bin/vcoの変更
    先ほどのブログでは、bin/vco*1中、dirの定義の後で
    export LD_LIBRARY_PATH=${dir}/lib32
    を追加すればよいと書いてありましたが、私の環境ではうまくいかないので、ディレクトリ名を直接指定しました。("/home/uname/altera/13.1/modelsim_ase"の部分はmodelsimのインストールディレクトリに変更が必要です
  3. dir=`dirname $arg0` #この行はもとからあった
    export LD_LIBRARY_PATH=/home/uname/altera/13.1/modelsim_ase/lib32 #追加

     さらに、最近の4.0以上のカーネルではディレクトリの指定がうまくいっていないので、以下の部分を、

      case $utype in
    2.4.[7-9]*) vco="linux" ;;
    2.4.[1-9][0-9]*) vco="linux" ;;
    2.[5-9]*) vco="linux" ;;
    2.[1-9][0-9]*) vco="linux" ;;
    3.[0-9]*) vco="linux" ;;
    *) vco="linux_rh60" ;;
    esac

      このように変更します

      case $utype in
    2.4.[7-9]*) vco="linux" ;;
    2.4.[1-9][0-9]*) vco="linux" ;;
    2.[5-9]*) vco="linux" ;;
    2.[1-9][0-9]*) vco="linux" ;;
    3.[0-9]*) vco="linux" ;;
    4.[0-9]*) vco="linux" ;; この行追加
    *) vco="linux_rh60" ;;
    esac

これでどうにかQuartus II 13.1からmodelsimを呼び出すことができるようになりました

f:id:uzusayuu:20170423070655p:plain

その他

Ubuntuは関係ありませんが、Megawizardで作ったモデルを使うときは、Start Simulationの画面で適切なライブラリ(今回の場合はaltera_mf_ver)をLibrariesタブからSearch Libraries Firstのテーブルに入れておく必要があります。また、ROMなどの初期化ファイルはプロジェクトフォルダにおいておきます。(わからなくてしばらくハマりました。)

*1:vcoはlinux以下やlinuxaloem以下のvsimなどの本体を呼び出すためのスクリプト