前回はVagrant上のUbuntuにVivadoをインストールする途中だった。 何度か試行を繰替えしているが、どうにかなりそうだ。
Vivadoのインストールと、ZedBoard向けLinuxの立ち上げに必要なデザインの構築を自動化しておきたい。
VivadoのインストールをChef-soloで自動化する
これは自動化というと語弊があるような手法だけども、あらかじめWindowsの共有ディレクトリに、Vivadoのオールインワンの圧縮ファイル(11GBもある!)と、バッチモードでのインストールに必要なinstall_config.txtおよびライセンスファイルを用意しておく。
. ├── 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も用意しておく。詳細は過去のブログ記事を参照。
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の記事を参照。
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