Copyright (C) 2022-2024 Naoki FUJIEDA. All rights reserved.
FPGAの一部分をユーザが書き換える形でディジタル回路の設計・開発を行うための ワークフローを支援するツールです.Xilinx社FPGAの動的再構成機能(DFX)を使用 します.現時点では,Digilent社の以下のボードを対象としています.
- Nexys A7-100T
- Arty A7-35T
- CMod A7-35T (+ PModLED + PModSWT)
配布パッケージのダウンロード: ZIP (26.1 MiB)
- Boards/ : ボード定義(ベース設計のチェックポイントを含む)
- ext/svinst_port.exe : DRFront が使用する svinst_port の実行ファイル
- sources/ : プログラムのソースコード
- COPYING : 著作権表記
- DRFront.exe : DRFront 本体
- README.md : このファイル
- Ookii.Dialogs.Wpf.dll : DRFront が使用する Ookii Dialogs のDLLファイル
Windows 10 以降 + .NET Framework 4.8 (最新の Windows 10, Windows 11 で動作確認済)
DRFront.exe が非ASCII文字(全角文字など)を含む箇所にあると,Vivado が 正しく動作しません.VHDL のソースディレクトリについても同様です.
- DRFront.exe を実行 メインのウィンドウが表示されます.
- ボードと言語を指定
Setting ボタンをクリックすると,Vivado のバージョンや,使用するボードと
言語を指定する設定ウィンドウが表示されます.各自の利用環境に合わせて設定
してください.
特に,デフォルトのインストール先(
c:\Xilinx\Vivado
)以外 Vivado をイン ストールした場合,あるいは複数のバージョンの Vivado がインストールされて いる場合,Vivado のインストール先やバージョンを確認してください. - ソースディレクトリを指定 Source Dir. の右側の ... ボタンをクリックすると,フォルダの選択の画面に 移行します.FPGA に書き込みたい回路の HDL 記述を含むフォルダを指定して ください.正しく指定がされていると,以降の操作が可能になります.フォルダ のパス名の欄が黄色で表示されている場合は,何らかの問題があります.
- プロジェクトの作成 Project の欄が (New Project) になっていることを確認して,Create Project ボタンをクリックすると,新しいプロジェクト(project_1, project_2, ...) が作成されます.Top Module の欄に,推定したユーザ回路のトップモジュール の entity 名が表示されます.もし想定とは異なる回路が表示されているときは, Select Top Module ボタンを押して,想定する回路をクリックしてください.
- 入出力の割当て ボード画像の下に,信号名と方向,割当て先がリストアップされていますので, 割当て先(Assign to)のコンボボックスの選択を変更するか,信号名を画像上 にドラッグ&ドロップすることで,入出力への割当てを行ってください. もしソースファイルを変更したことで,入出力の信号名が変わってしまった場合 には,Refresh ボタンを押して変更を反映させてください. また,信号名の順に単に LED(LD)やスイッチ(SW)への割当てをすればいいだ けであれば,Auto Assignment ボタンで自動割当ても可能です.
- Vivado 用の各種ファイルを作成 Create/Update Files ボタンを押すと,以降の操作で Vivado が使用する,各種 スクリプト,ベース設計のチェックポイントファイルがプロジェクトのフォルダ にコピーされます.また,テストベンチの雛形も作成されます.
- 論理合成またはシミュレーションを行う Open Project ボタンを押すと,Vivado のプロジェクトを開きます.作成されて いない場合は自動で作成します.Vivado で論理合成を行い,チェックポイント ファイル(.dcp)をプロジェクトフォルダの直下に保存してください. シミュレーションを行う場合は,テストベンチを編集し,入力パターンを与えて から行います.テストベンチを編集する際は,コメントで指示された範囲内のみ 書き換えるようにしてください.
- ベースの回路と論理合成した回路を組合せて,配置配線を行う Generate Bitstream ボタンを押すと,あらかじめ用意されたベースの回路と, 7で作成した回路とをマージし,その配置配線を行うために Vivado が開きます. 配置配線が完了し,ビットストリームが作成されると,Vivado は自動的に閉じ ます.
- 生成されたビットストリームを FPGA に書き込み Open Hardware Manager ボタンを押すと,Vivado の Hardware Manager が開き ます.FPGA と接続し,8で作成されたビットストリームを FPGA に書き込んでく ださい.
なお,7~9 の操作で DRFront から Vivado を起動するかわりに,既に起動中の Vivado からスクリプトを読み込ませて操作することも可能です.各プロジェクト に保存されている,OpenProject.tcl,GenerateBitstream.tcl,OpenHW.tcl を, それぞれ Tool → Run Tcl Script から実行してください.
トップモジュールやそのポート名は極力自動で認識するようプログラミングして いますが,以下の前提があります.前提に基づかない記述がある場合,これらが 正しく認識されない場合があります.
- VHDL ファイルにおける前提
- port 文の定義(信号名[, 信号名2...] : 方向 型)は,1つにつき1行で書か れている必要があります.1つの定義が2行以上に渡る場合,1つの行に2つ以 上の定義がある場合,信号がうまく認識されません.定義自体が1行で書かれ ていれば,複数の信号をまとめて定義することは問題ありません.
- port 文の型は std_logic や固定幅の std_logic_vector であるとします.
- SystemVerilog/Verilog ファイルにおける前提
- ポートがベクトルである場合,その添字は定数から0までの降順であるとし ます.
- 共通の前提
- トップモジュールは,他からインスタンス化されていない回路のうち,回路 以下に含まれるインスタンスの数が最も多いものとします.ただし,入出力 のない entity/module は(テストベンチと思われることから)除外します.
DRFront には New BSD ライセンスが適用されます.
また,DRFront の配布パッケージには以下のソフトウェアが含まれ,それぞれの ライセンスに従ってバイナリを再配布しています.
- Ookii Dialogs: New BSD ライセンス
- svinst_port: MIT ライセンス
詳細は COPYING ファイルを参照してください.
-
v0.5.1 2024-05-06
- Vivado のインストール先を指定する際のエラーチェックの不具合を修正.
-
v0.5.0 2024-03-23
- Verilog/SystemVerilog に対するサポートを追加
-
v0.4.1a 2024-03-11
- Arty と CMod に対するサポートを追加(ボード定義の追加のみ,DRFront 自体には更新なし)
-
v0.4.1 2024-03-08
- Vivado プロジェクトのバージョンチェックの際に,対象 FPGA が一致するか どうかもチェックするように変更.
-
v0.4.0 2024-03-05
- Vivado のインストール先や使用するバージョンを,手動で指定する機能を 追加.
- ボード定義を外部ファイルに置くように変更し,将来的に Nexys A7-100T 以外のボードにも対応できるように改良.
-
v0.3.1 2023-08-22
- Create/Update Files ボタンを押した際,ユーザ回路のトップモジュールに 変更がないかチェックする機能を追加.
- Vivado を起動する際,ソース,チェックポイント,ビットストリームの間 で更新時刻をチェックする機能を追加.
- ビットストリームのファイル名にユーザ回路のトップモジュール名を含める ように変更.
- Refresh ボタンを押した際の挙動の不具合を修正.
-
v0.3.0 2023-02-19
- トップ回路をプロジェクトごとに別々に保存するように変更.
- ユーザ回路のトップモジュールを手動で指定する機能を追加. これらの変更により,1つのフォルダに対して異なる入出力の割当てを適用 したり,異なる回路を合成対象にしたりできるようになった.
- Create/Update Files ボタンを追加し,スクリプトの生成を最初にまとめて 行うように変更するとともに,スクリプト自体を改善.これにより,起動中 の Vivado にスクリプトを読み込ませる形の操作に対応.
- 入出力の自動割り当てにおいて,先頭に i がついたクロック・リセットの 信号も CLK,RST に割り当てるように変更.
-
v0.2.2 2022-08-29
- ベース設計のチェックポイントのコピーに失敗した際,DRFront が強制終了 する不具合を修正.
-
v0.2.1 2022-07-13
- ベース設計のチェックポイントに任意のファイル名をつけられるよう変更.
- ベース設計のチェックポイントの上書きを防ぐため,Generate Bitstream ボタンを押したときに,ベース設計のチェックポイントをプロジェクトに コピーする仕様に変更.
-
v0.2.0 2022-03-02
- シミュレーション用のプロジェクト作成に対応.
- VHDL のテンプレートを作成する機能を追加.
-
v0.1.0 2022-03-01
- 最初のバージョン.