読者です 読者をやめる 読者になる 読者になる

FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

Chef-SoloによるVivadoの自動インストールとADV7511向けデザインの自動ビルド

f:id:msyksphinz:20161006012100p:plain

前回はVagrant上のUbuntuにVivadoをインストールする途中だった。 何度か試行を繰替えしているが、どうにかなりそうだ。

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

Vivadoのインストールと、ZedBoard向けLinuxの立ち上げに必要なデザインの構築を自動化しておきたい。

VivadoのインストールをChef-soloで自動化する

これは自動化というと語弊があるような手法だけども、あらかじめWindowsの共有ディレクトリに、Vivadoのオールインワンの圧縮ファイル(11GBもある!)と、バッチモードでのインストールに必要なinstall_config.txtおよびライセンスファイルを用意しておく。

github.com

.
├── riscv-repo
│   └── site-cookbooks
│       └── riscv-tools
│           ├── CHANGELOG.md
│           ├── metadata.rb
│           ├── README.md
│           └── recipes
│               └── default.rb
├── shared
│   ├── install_config.txt
│   ├── install_config.txt~
│   ├── Xilinx.lic
│   ├── Xilinx_Vivado_SDK_2015.2.1_0805_1.tar.gz
│   ├── Xilinx_Vivado_SDK_2016.2_0605_1.tar.gz
│   └── Xilinx_Vivado_SDK_Lin_2015.2_0626_1.tar.gz
└── Vagrantfile

とりあえずは、いろいろ試行した結果、Vivado 2015.2が良い気がしている。このためにいくつかsedでプロジェクトファイルを変更する必要があるのだが、それは後で行う。

Vagrantfileには、jsonのattributeを使って、Vivadoのバージョンを変更できるようにしている。

  config.vm.provision "chef_solo" do |chef|
...
    # You may also specify custom JSON attributes:
    chef.json = {
      vivado: {
        version: "2015.2",
        date: "0626",
        file_head: "Xilinx_Vivado_SDK_Lin"
      }
    }
  end

default.rbには、Vagrantfileで指定したattributeを使って変数を指定している。

execute "Installing Vivado (1)" do
  command "tar xfz /vagrant/shared/#{node['vivado']['file_head']}_#{node['vivado']['version']}_#{node['vivado']['date']}_1.tar.gz -C /home/vagrant/"
  action :run
  user "vagrant"
  group "vagrant"
end

ビルドには、Vivadoのバッチモードを利用してインストールしている。あらかじめinstall_config.txtも用意しておく。詳細は過去のブログ記事を参照。

msyksphinz.hatenablog.com

execute "Installing Vivado (2)" do
  cwd "/home/vagrant/#{node['vivado']['file_head']}_#{node['vivado']['version']}_#{node['vivado']['date']}_1"
  command "./xsetup --agree XilinxEULA,3rdPartyEULA,WebTalkTerms --batch Install --config /vagrant/shared/install_config.txt"
  action :run
end

ZedBoard向けADV7511デザインのビルド

これもChef-soloで自動化しておきたい。ADV7511のgitリポジトリのダウンロードとビルドも自動化しておきたい。

git "/home/vagrant/hdl" do
  repository "https://github.com/analogdevicesinc/hdl.git"
  revision "hdl_2015_r2"
  enable_submodules true
  action :sync
  user "vagrant"
  group "vagrant"
end

sedでライブラリとプロジェクトのバージョンを少し変更しておく。Vivado 2015.2を利用しているので、それにバージョンを合わせる。詳細は以下のQiitaの記事を参照。

qiita.com

execute "Sed IP version (1)" do
  cwd "/home/vagrant/hdl/"
  command "sed -i 's/2015.2.1/2015.2/g' library/scripts/adi_ip.tcl"
  action :run
  user  "vagrant"
  group "vagrant"
end


execute "Sed IP version (2)" do
  cwd "/home/vagrant/hdl/"
  command "sed -i 's/2015.2.1/2015.2/g' projects/scripts/adi_project.tcl"
  action :run
  user  "vagrant"
  group "vagrant"
end

最後にリポジトリをビルドする。

bash "make project" do
  cwd "/home/vagrant/hdl/projects/adv7511/zed"
  code <<-EOS
       source /opt/Xilinx/Vivado/#{node['vivado']['version']}/settings64.sh
       unset LD_LIBRARY_PATH
       make
   EOS
  action :run
  user  "vagrant"
  group "vagrant"
end