Copyright(c)2018-2020、Wuklab、UCSD。
これは、FPGAアプリケーションのおなじみのOS抽象化(MM、スケジュール、ネットなど)を提供するFPGA内で実行されるオペレーティングシステム(OS)です。これは、初期の初期段階の研究プロトタイプです。ほとんどのコードはXilinx HLSで記述されています。 VCU118およびVCU108でテストされています。
それは教育目的のために公開されています。あなたがそれが役に立つと思うことを願っています。
host/ :ホストサイドネットワークスタックとDMAドライバーalloc/ :メモリアロケーターmm/ :メモリ管理net/ :ネットワークサブシステムkernel/ :いくつかのPR関連コードsystem/ :最終的な大きな統合システムapp/ :アプリケーションには、FPGAとホストコードの両方を含めることができます。include/ :FPGAとホストコードの両方で使用されるヘッダーファイル。たとえば、ネットワークヘッダー。include/fpga :HLSのみが使用するヘッダーinclude/uapi :HLSとホストコードの両方で使用されるヘッダーtools/ :さまざまなヘルパーscripts/ :テンプレートスクリプトファイルgenerated_ip/ :ここで生成されたすべてのIPSがスリープしますgenerated_hls_project/ :Vivado HLSプロジェクトgenerated_vivado_project/ :Vivadoプロジェクト形式:
run_hls.tcl名を使用します。mm_axi_wrapper 、mmサブシステムの下でのAxiラッパーIPです。make help 。make at Top-Levelは、デフォルトボードを使用してプロジェクト全体をコンパイルします。system/フォルダーにありますmake 、そのフォルダーのみをコンパイルします。ワークフロー:ソースコードを最初にダウンロードしたら、プロジェクトをコンパイルする必要があります。すべての小さく、中程度のIP、および大きなプロジェクトは、使用する準備ができています。この後、構築しているIPSに集中できます。 Vivado内で変更は自動的に反映されます。
また、あなたがターゲットにしているボードに注意してください。
スクリプトを使用するという目標は2つあります
generated_vivado_project/ folderの下に配置されます。これらのVivadoプロジェクトモードスクリプトは、Vivado自体によって生成されます。また、これらのスクリプトを使用して、プロジェクト全体をそのまま再構築できます。
これらは、これらのスクリプトを作成してハッキングするための私の非形式的な手順です。
走る:
vivado -mode tcl -source run_vivado.tclgenerated_vivado_project/が現在のフォルダーで作成されますgenerated_ip/フォルダーにエクスポートされます。作成:
write_project_tclを使用してスクリプトを生成します。新しいスクリプトに、再構築されるプロジェクトをフォルダーのgenerated_vivado_projectの下に置くべきであることを知らせる必要があります。そして、 run_vivado.tclにスクリプトに名前を付ける必要があります。write_project_tcl -force -no_copy_sources -target_proj_dir ./generated_vivado_project ./run_vivado.tclを使用してください。write_project_tcl -force -target_proj_dir ./generated_vivado_project ./run_vivado.tclを使用してください。ハック:
トップレベルのスクリプトにIPパスを追加します。
generated_ip/フォルダーにあります。これにより、IPトラッキングが簡単になります。 Vivadoが新しいIPSを探す場所を知ることができるように、スクリプトにいくつかの行を追加できます。これらの行のscripts/template_vivado_ip.tclをご覧ください。自動的にパッケージIP:
generated_ip/にあります。たとえば、 ipx::package_project -root_dir ../../generated_ip/mm_axi_wrapper -vendor wuklab -library user -taxonomy UserIP -import_files -set_current false -forceipx::package_project -root_dir ../../generated_ip/mm_axi_rab_vcu118 -vendor wuklab -library user -taxonomy UserIP -module THE_BD_NAME -import_filesソース/XDC/シミュレーションファイルを追加する:
top.v 、 add_filesなどを検索します。write_project_tcl再度使用して別のスクリプトを生成します。次に、違いを確認してください。BDラッパーを自動依頼します
その他の設定:
write_project_tclを使用して新しいスクリプトを生成し、対応する変更を保存する必要があります。 Vivadoコマンドに精通したら、スクリプトを変更することで手動で実行できるはずです。警告:
今のところ、 mm/axi_wrapper/run_vivado.tcl mm/sys/run_vivado.tclサンプルスクリプトを見つけることができます。
Vivadoは、各バージョンで1つのIPバージョンのみをサポートしています。生成されたスクリプトを使用する場合、それは非常に承認します。幸いなことに、それを回避する1つの方法があります。次のコードは、IP文字列を変数に置き換えます。ただし、更新されたIPに異なるポートがある場合は注意してください。
set axis_data_fifo [get_ipdefs -filter NAME==axis_data_fifo]
Replace all `xilinx.com:ip:axis_data_fifo:1.1` with `$axis_data_fifo
Vivado HLSスクリプトは、Vivadoスクリプトよりも比較的簡単です。 Templateスクリプトはscripts/template_run_hls.tclで見つけることができます。パーツ、追加されたファイル、頻度などをカスタマイズする必要があります。同じフォルダーの下で複数のHLSを自動的に構築する場合は、 scripts/template_generate_hls.shを使用します