FPGA開発日記

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

Vivado

VivadoでIPを生成する方法の調査(tclを使った生成方法)

Zynqを使ったカスタムデザインのIPが作りたくて、IPの生成方法をいろいろ調査しているのだが、どうもGUIを操作するものばかりでつまらない。 GUIの操作方法なんて一瞬で忘れてしまうので、tclとmakefileで一気に作れるような環境を用意しておきたい。 いろい…

Vivado 2017.1 AXI VIP packageの情報

Vivado 2017.1 AXI VIP Packageについていくつか情報が出ている。 japan.xilinx.com XILINX_AXI_VIP_2017_1.zipをダウンロードすると、いくつかVIPパッケージ内の機能について記述されている。 また、VivadoインストールディレクトリにはAXI VIPパッケージの…

CUIからVivadoを立ち上げて論理合成するためのスクリプト

自作RISC-Vプロセッサの設計もおおよそ完了してきたので、FPGA向けに論理合成する環境を構築している。 GUIを立ち上げてボタンをポチポチ押すのはあまり好きではないので、VivadoをCUIで立ち上げて動作させる環境を構築した。 VivadoのtclはDesign Compiler…

Chef-soloによるRISC-VのRocket-Chip向け環境自動ビルド

いろいろとVagrantの環境を仕込んでいるが、今回はRISC-V向けのRocket-Chip向け環境をVagrantとChef-soloでビルドする。 github.com 参照しているのは単純に以下のRocket向けgithubに書いてあるビルド手順をChef-soloに落としただけだ。 github.com 問題は、…

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

前回はVagrant上のUbuntuにVivadoをインストールする途中だった。 何度か試行を繰替えしているが、どうにかなりそうだ。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com Vivadoのインストールと、ZedBoard向けLinuxの立ち上げに必要なデザインの構築…

ZedBoard向けデザインを構築するスクリプトを自動化する(途中)

msyksphinz.hatenablog.com 前回で、Linuxをブートするためのローダのビルドは完了したので、今度はVagrant上のCUIだけでZedBoard用デザインのビルドに挑戦する。 参考にしたのは以下のサイトだ。 qiita.com あとはVivadoをCUIでインストールするのには、自…

FSBLを構築するスクリプトを自動化

これまで、Zynq ZedBoard向けにLinuxを作成する環境はいくつか構築してきたが、ちゃんとした自動化スクリプトを構築していなかった。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com このさい、VagrantとChef-soloを利用して、ZedBoard向けのLinux環…

Vivado 2016.3がリリースされました

たまには「FPGA開発日記」らしくFPGA関連の話題を。 Vivado 2016.3がリリースされた。主な変更内容としては、 Vivado Design Suite User Guide Release Notes, Installation, and Licensing https://www.xilinx.com/support/documentation/sw_manuals/xilinx…

Vivado-HLSとAXI4-DMAの試行(4. Vivado-HLSのリファレンスデザインを試行する)

AXI4-DMAの試行をしているが、どうもうまくいかない。Vivado-HLSのリファレンスデザインを試行してみることにした。 試行するのは、xapp1170のリファレンスデザインだ。どうやらVivado 2015.2 での実装で確認されているらしい。そこでVivado 2015.2をインス…

Vivado-HLSとAXI4-DMAの試行(3. Vivado-HLSのカスタムIPをSDKから制御する)

AXI4-DMAを試行している。Vivado-HLSでカスタムIPを作成し、Vivado-HLSのコアをAXI4-Streamで接続し、SDKから制御できるようになりたい。 前回、VivadoにカスタムIPをインプリメントし、デザインを生成した。次にSDKを使って制御してみる。 msyksphinz.haten…

Vivado-HLSとAXI4-DMAの試行(2. Vivado-HLSのカスタムIPをVivadoにインポートして接続する)

前回に、Vivado-HLSで作成した浮動小数点行列積回路をAXI4-Streamに対応させた。今度はVivado側で、作成したIPをDMAに接続して、デザインを作成してみよう。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com 参考にしたのは…

Vivado-HLSとAXI4-DMAの試行(1. Vivado-HLSデザインをAXI-Streamインタフェースに対応させる)

前回行列乗算回路を最適化することで、ソフトウェアと比較して大幅に性能を向上させることに成功した。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com その時に参照していたのが以下の資料だが、そこにはAXI4-DMAを使ったときの方法が書いてある。 h…

Vivado-HLSで書いた回路とプログラムで速度比較(2. directive挿入による性能改善)

Vivado-HLSで行列積演算回路を作成したが、この性能はあまり良いものでは無かった。 msyksphinz.hatenablog.com その後いろいろ調査を行った結果、以下の資料を発見した。 以下の資料は、その名の通り浮動小数点行列積をVivado-HLSで実装したときの最適化ガ…

Vivado-HLSで書いた回路とプログラムで速度比較(1)

Vivado-HLSで行列積の回路を設計した場合と、普通にARM Cortex-A9上で動作する行列積のプログラムでどれくらいの速度差になるのか調査してみることにした。 今回使用するのは48×48の行列データで、ころ2つのデータの行列積を計算するものとする。 for (j = 0…

コマンドラインからVivado HLSを使用するためのスクリプトテンプレート作成

Vivado HLSで高位合成言語での開発を行うにあたり、これまでどうしてもGUIを使う必要があった。 マウスの操作が必要になりどうしても面倒なので、Vivado HLSでの高位言語合成を一気通貫でやってくれるスクリプトを作成した。 といっても、これまでGUIでやっ…

行列積演算のHLS設計高速化検討(3. Unroll Directiveの検討)

前回は行列積演算の回路を用いて、パイプラインディレクティブの効果を測定した。 次はループアンローリングの効果を測定してみる。Vivado HLSにはUNROLLディレクティブが存在するため、こちらを行列積演算回路のループに適用して、どの程度効果があるのかを…

行列積演算のHLS設計高速化検討(2. Pipeline Directiveの検討)

msyksphinz.hatenablog.com 前回、基本的な演算性能の測定方法を確立した。まずは、PIPELINEディレクティブを挿入することで、どの程度高速化されるか試行してみよう。 とりあえず、前回のパイプライン挿入無しの場合の計測結果が間違えていた。修正済。 パ…

行列積演算のHLS設計高速化検討(1. サイクル数計測方法の構築)

Vivado HLSを使った行列積演算について記事を書いた。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com この場合、データ転送も含めてどの程度時間がかかっているんだ…

VivadoをGUIを使用せずにインストールする方法調査

Vagrant経由でLinuxにVivadoをインストールする場合は、どうしてもXが必要になるため一度X-Forwardingを実行するか、VirtualBoxのGUIを立ち上げてインストールを実行している。 これは非常に面倒で、VivadoのインストールのためだけにGUIを立ち上げなければ…

Vivado Simulatorで波形デバッグする環境を構築する

僕は波形デバッグはあまり好きではなく、基本的に波形を水にログファイルだけでデバッグできるようにしておきたいのだが、ベーシックな部分を観測するためには最後には波形デバッグが必要だ。 そこで、Vivado Simulatorを使った時の波形デバッグの環境を構築…

Vivado Simulatorを使ってシミュレーションを行う環境を立ち上げる(Mingwで挑戦)

以前、CMakeを使ってVerilogシミュレーションの環境を整える準備を行った。趣味でVerilogを書いている中で、Windows上のVivadoでシミュレーションを行う必要が出てきたため、環境を構築しよう。 msyksphinz.hatenablog.com 利用したのは、Cygwinから若干進化…

ZedBoard向けUbuntu Linuxのビルド(U-bootのビルド)

前回に引き続き、今回はU-bootのビルドにトライした。 1. ZedBoard向けU-bootのビルドにトライ U-Bootのビルドも、marseeさんのブログとほぼ同一の内容で成功した。 ブランチをxilinx-v2015.2に変更するだけで、それ以外はほぼ変えるところが無い。 FPGAの部…

単純選択ソートとバイトニックソートを高位合成したときのアクセスパタンを調べる

単純選択ソートとバイトニックソートを、C言語で記述し、高位合成した。 msyksphinz.hatenablog.com 単純選択ソートのデータアクセスパタン 単純選択ソートは一つずつ最小値を選んでいくソーティング方法であるから、 インデックスiの最小値を探索してソーテ…

VivadoHLSでソートアルゴリズムを実装してみる(マージソートと選択ソート)

Vivado HLSの使い方がだいたい分かってきた。では、普通のプログラムを高位合成でHDLで生成させたらどうなるんだろうか? 再帰が含まれているソートアルゴリズムをHDLで合成できる? まずはマージソートを実装してみよう。雰囲気的に、マージソートはハード…