ハードウェア実験 Vivadoを使おうガイド

第3回からの、基本的な課題の進行

ここからの課題は、基本的に以下の3STEPで行います。

  1. 回路とそれに対するテストベンチを書く。
  2. シミュレーションをし、波形を確認する。
  3. コードを実際に実機で動かす。

1.はVivadoどうのこうのではないです。がんばろう。

3.はVivado第3回では登場しません。

本ページでは、コードを記述し、実際にシミュレーションで挙動を確認するフェイズたる2.をいっしょにやっていこうと思います。サンプルコードはみんな大好きANDゲートを実装しました。まずはダウンロードだ!

Hello, Vivado

Vivadoの起動

正しくセットアップできていれば、vivado&あたりでVivadoは起動します。おっと、GUIが立ちあがりましたね。もしあなたが論理合成オタクでなければGUIはやめたほうがいいでしょう。よって本ページではCUIで勝負します。vivado -mode tclです。

プロジェクトの作成

なんといってもまずはプロジェクトの作成からです。

% create_project hellovivado

直下に、hellovivado.xprみたいなファイルが大量に生成されます。既存のプロジェクトファイルを開く場合以下のとおり。

% open_project hellovivado.xpr

ファイルの追加

Vivadoのプロンプト中でも、普通にemacsとかviとか使えます。まずはhello.svをかいてください。ちなみに僕はこんなのを書きました。


module hello;
   initial begin
      $display("hello vivado");
   end
endmodule
            

次にファイルをプロジェクトに追加します。(正確には、シミュレーションで使用するファイルセットに追加しています。)

% add_files hello.sv -fileset [current_fileset -simset]

ここまでの確認

% get_filesや、% find_top -fileset [current_fileset -simset]あたりで、意図したファイルやモジェール名が返るかどうか確認しましょう。hello.svや、helloが返るはずです。

トップモジュールの設定

% set_property top [find_top -fileset [current_fileset -simset]] [current_fileset -simset]そのままうってください。ちなみに、[]の中身はコマンドの実行の返り値です。個別にうってみてもいいですよ。

シミュレーションの実行

% launch_simulationでいけます。だらだらーっと流れて、最終的に、


# run 1000ns
hello vivado
            
が表示されたら成功です。おつかれさま☆

波形をみたいぜ

でも実際には、hello vivadoが出ても何一つ面白くないです。第2回のロジアナのような波形は、一体どうしたら見られるのでしょうか。

とりあえず走らせよう

ダウンロードしたandtestを走らせてみましょう。展開したディレクトリでやってみるのが吉です。

以下を無言で走らせましょう。え?[current_fileset -simset]がDRYに反してる?きびしいですね。


% create_project andtest
% add_files andtest.sv andtest_tb.sv -fileset [current_fileset -simset]
% set_property top [find_top -fileset [current_fileset -simset]] [current_fileset -simset]
% launch_simulation
        

波形ファイルの書し出し

以下のように進みます。

  1. まずは、一旦微妙に進んだシミュレーションをリセットします。
  2. 次に、vcdファイル(波形ファイル)を開きます。test.vcdなんて名前にしておきましょう。
  3. そして波形を確認したいポートの追加です。get_objectsコマンドで、ポートの一覧をみることができます。
  4. 100nsぐらい実行します。
  5. vcdファイルへ書き込みをフラッシュし、vcdファイルをcloseします。

以上をコマンドにすると以下のようになります。


% restart
% open_vcd test.vcd
% log_vcd [get_objects]
% run 100
% close_vcd
        

結果、andtest/andtest.sim/sim_1/behav/test.vcdが生成され、これが波形ファイルとなります。後は、お好みの波形Viewerでみればいいです(gtkwaveとか?)。当然Vivadoでみてもいいですよ。