FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

2016-09-01から1ヶ月間の記事一覧

CPUのテストパタンを自動生成する方式の検討

趣味でRISC-VのCPUコアを設計しているのだが、デバッグおよび性能検証を行うためのパタンが必要になる。 様々なアプリケーションを使って検証すれば良いのだが、網羅的かどうかも分からない。また、基本的な命令セットの性能検証も行う必要がありそうだ。 そ…

FreeBSD on RISC-VとRISC-V近況

FreeBSD on RISC-V あまりフォローしていなかったのだが、FreeBSDのRISC-Vへの移植が進んでいるようだ。 riscv - FreeBSD Wiki サポート状況なのだが、Spike ISSにてサポートが完了しているようだ。また、実機であるRocketChip, QEMUでのエミュレーションも…

ISSに分岐予測を実装する検討(2. 分岐予測の機構をISSに実装する)

ISS

前回で、分岐予測機構について簡単にまとめたので、今度は分岐予測をISSに実装しよう。 分岐予測の機構を実装する まずは、必要なSRAMをモデル化する。 github.com /* * Branch Predictor implementation */ const int32_t BRANCH_LOCAL_BIT = 3; const int3…

ISSに分岐予測を実装する検討(1. 分岐予測の機構について)

ISS

前回までで、ISSに命令キャッシュ、データキャッシュを実装する方法について検討し、実装した。 Verilog-HDLでCPUを実装するにあたり、まだまだ必要な機能はある。次は、分岐予測を命令セットシミュレータ(ISS)を用いて実装する機能について検討しよう。 分…

ISSにL1キャシュのシミュレーション機能の検討(3. L1命令キャッシュのモデル実装とリファクタリング)

ISS

前回までで、L1キャッシュのモデルをISSに実装したのだが、L1 データキャッシュのシミュレーションしか実装していなかった。 L1キャッシュへのアクセスは命令フェッチの際に発生する。しかも今度はL1データキャッシュと違ってストアは発生しない。この方が楽…

ISSにL1キャシュのシミュレーション機能の検討(2. キャッシュモデルをISSへ実装)

ISS

前回、RTLの検証方法について少しまとめ、ISSを使ってL1キャッシュのシミュレーションを行う方法について少し考えた。 キャッシュの一般的な構成 キャッシュは、一般的には以下のような構造を取っている。 構成されるのは主に2つのメモリ、タグ用のRAMとデー…

ISSにL1キャシュのシミュレーション機能の検討(1. キャッシュの構成について)

ISS

RTLでデジタル回路を設計するときに、そのデジタル回路が正しく動作しているかどうかを検証するためには様々な方法がある。 知っているものを一覧でまとめてみた。 検証手法 特徴 セルフチェック検証 検証パタンそのものに、RTLが正しく動作したかどうかを検…

格安のVerillogシミュレータ Veritak をコマンドラインから起動する方法

現在、趣味でのVerilog開発は、個人でも格安で使用可能なVerilogシミュレータであるVeritakを使用している。 japanese.sugawara-systems.com Verilog-HDLを使用したシミュレータとしては、有料のものを含め以下のものが挙げられるのではないだろうか。簡単に…

Skypeでの英会話教室を150回受講して分かったこと

ちょうど去年の今ごろ、Skypeを使った英会話教室の受講を始めた。 始めた理由は通常のサイトに言って行う英会話教室がベラボーに高かったから。 いろいろと考えて、Skype経由での英会話教室を選んだ。この方が断然安上りだし、夜遅くでも朝早くでも出来るの…

コマンドラインから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 この場合、データ転送も含めてどの程度時間がかかっているんだ…

FPGA開発日記 カテゴリ別記事インデックスサイトを作りました

まあ誰が利用するという訳でもないんだけど、自分で過去の記事を確認するのが大変なので、Google Sitesを利用してこのブログのカテゴリ毎の記事まとめを作成した。 FPGA開発日記 記事整理インデックス これ今のところ手動で更新するしか無いんだよな。。。カ…

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

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

Vivado HLSで開発したIPをZynq ZedBoardでIPとして利用したい(5)

前回の記事でちょっと書き忘れたのだが、xil_printf()で浮動小数点を表示することは出来ないらしい。最初スペースばかりが出力されて訳が分からなかった。 というわけで以下の掲示板の記事を参照した。 forums.xilinx.com 以下のようなトリッキーな方法を使…

Vivado HLSで開発したIPをZynq ZedBoardでIPとして利用したい(4)

前回まででIPのインテグレートが完了したので、今度はPS側の制御プログラムの開発に入る。 SDKで新しいプロジェクトを立ち上げる。ハードウェアとしては、design_1_wrapper_hw_platform_1を指定する。 Vivado HLSで生成したドライバ群をSDKから参照するため…

Vivado HLSで開発したIPをZynq ZedBoardでIPとして利用したい(3)

前回までで、Vivaod HLSで開発した回路をVivadoにインポートできるIPとして生成した。 次は、Vivadoから開発したIPをインポートして、IPとして利用できるように設定する。 Vivado上で、HLSを使用して開発したIPをインポートする 前回、AXIのインタフェースに…

Vivado HLSで開発したIPをZynq ZedBoardでIPとして利用したい(2)

前回、Vivado HLS上でC言語の行列積関数を記述し、それをテストするところまで確認した。今回はこれを論理合成し、C言語とRTLのCosimulationを実施しよう。 Vivado HLSを使用してC言語の関数を論理合成する 論理合成はツールバーから[Run C Synthesis]をクリ…

Vivado HLSで開発したIPをZynq ZedBoardでIPとして利用したい(1)

これまで、Zynq ZedBoardを利用して、Vivadoで作成したカスタムIPをインテグレートする方法について調査してきた。 この場合、IPは自分でVerilogを記述しAXIに接続した。これはこれで十分有益だ。 しかしせっかくVivado HLSがあるので、C言語で回路を記述し…

Zynq Cortex-A9 ARMでお手軽にサイクル計測する手法を調査する(2)

前回で、ARMでサイクルカウンタを使用する方法を調査した。 サンプルプログラムを用いてPLへのアクセス性能を計測するプログラムを記述する これを前回PS/PLのサンプルデザインに適用してみよう。以下のように、PL内にメモリが格納されている。 メモリへのス…

Zynq Cortex-A9 ARMでお手軽にサイクル計測する手法を調査する(1)

Zynq FPGAにはARMプロセッサが搭載されているため、もちろんタイマなどのレジスタ群も用意されている。 なかでも、性能評価屋さんが非常によく使うのが、サイクルカウンタだ。サイクルカウンタは現在までのサイクル数を計測し、レジスタに格納している。 こ…

ZynqのデバッグI/FをLinux無しで実現したい(readlineを試行→失敗)

前回、ZedBoard Zynqを使って、簡単なPL回路を作成し、それをPSから制御することに成功した。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com ここで、制御するためにわざわざCのプログラムを書いて、コンパイルして、ダウ…