Copyright (C) 2018-2020, Wuklab, UCSD.
Dies ist ein Betriebssystem (OS), das in FPGA ausgeführt wird, das bekannte Betriebssystemabstraktionen (z. B. MM, Schedule, NET) für FPGA -Anwendungen bietet. Dies ist ein Forschungsprototyp im Frühstadium. Der größte Teil des Codes ist in Xilinx HLS geschrieben. Es wurde auf VCU118 und VCU108 getestet.
Es wird zu Bildungszwecken veröffentlicht. Ich hoffe, Sie finden es nützlich.
host/ : Host Side Network Stack und DMA -Treiberalloc/ : Speicher Allocatormm/ : Speicherverwaltungnet/ : Netzwerksubsystemkernel/ : ein PR -verwandter Codesystem/ : endgültige große integrierte Systemeapp/ : Die Anwendung kann sowohl FPGA- als auch Host -Code haben.include/ : Header -Dateien, die sowohl von FPGA als auch von Hostcode verwendet werden. Z. B. Netzwerke.include/fpga : Nur von HLS verwendete Headerinclude/uapi : Header, die sowohl von HLS als auch von Hostcode verwendet werdentools/ : Verschiedene Helferscripts/ : Vorlagenskriptdateiengenerated_ip/ : Alle generierten IPS -Schlaf hiergenerated_hls_project/ : Vivado HLS -Projektgenerated_vivado_project/ : Vivado -ProjektFormat:
run_hls.tcl -Name.mm_axi_wrapper ist die Axi -Wrapper -IP unter MM -Subsystem.make help , um eine detaillierte Erklärung anzuzeigen.make In Top-Ebene kompiliert das gesamte Projekt mithilfe der Standardboard.system/ Ordnermake Bei jedem Unterordner kompiliert nur diesen Ordner.Workflow: Sie sollten das Projekt kompilieren, wenn Sie den Quellcode zum ersten Mal herunterladen. Alle kleinen, mittleren IPs und großen Projekte sind bereit zu verwenden. Danach können Sie sich auf die IPs konzentrieren, die Sie bauen. Änderungen werden in Vivado automatisch reflektiert.
Achten Sie auch darauf, auf welchem Board Sie sich ansprechen.
Das Ziel der Verwendung von Skripten ist zweifach
generated_vivado_project/ Ordner im selben Ordner platziert, in dem sich der entsprechende Skript und der Quellcode befinden.Diese Vivado Project-Mode-Skripte werden von Vivado selbst generiert. Und diese Skripte können verwendet werden, um das gesamte Projekt so zu erstellen, wie es ist.
Dies sind meine unformalen Schritte zum Erstellen und Hacken dieser Skripte:
Laufen:
vivado -mode tcl -source run_vivado.tclgenerated_vivado_project/ wird im aktuellen Ordner erstelltgenerated_ip/ Ordner exportiert.Schaffung:
write_project_tcl , um das Skript zu generieren. Sie sollten das neue Skript wissen lassen, dass das auf dem Weg befindliche Projekt unter den Ordner generated_vivado_project untergebracht werden sollte. Und Sie sollten das Skript zu run_vivado.tcl benennen.write_project_tcl -force -no_copy_sources -target_proj_dir ./generated_vivado_project ./run_vivado.tcl , verwendenwrite_project_tcl -force -target_proj_dir ./generated_vivado_project ./run_vivado.tcl im Projekt BD -Designs gibt, verwendenHacken:
Fügen Sie IP-Pfade zum Skript auf oberster Ebene hinzu:
generated_ip/ Ordner. Dies erleichtert die IP -Verfolgung. Sie können dem Skript nur wenige Zeilen hinzufügen, damit Vivado weiß, wo Sie nach neuen IPs suchen müssen. Sehen Sie sich scripts/template_vivado_ip.tcl für diese Zeilen an.Paket IP automatisch:
generated_ip/ . Zum Beispiel 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_filesFügen Sie weitere Quell-/XDC/Simulationsdateien hinzu:
top.v , add_files usw.write_project_tcl , um ein anderes Skript zu generieren. Schauen Sie sich dann die Unterschiede an.BD Wrapper autogenerieren
Andere Einstellungen:
write_project_tcl verwenden, um ein neues Skript zu generieren und die entsprechenden Änderungen zu speichern. Sobald Sie sich mit Vivado -Befehlen vertraut machen, sollten Sie in der Lage sein, das Skript manuell zu ändern.Vorbehalte:
Im Moment finden Sie Beispielskripte bei mm/axi_wrapper/run_vivado.tcl und mm/sys/run_vivado.tcl .
Vivado unterstützt nur eine IP -Version in jeder Version. Es ist Super Annonying, wenn wir generiertes Skript verwenden. Zum Glück gibt es einen Weg, es umgehalten zu haben. Der folgende Code ersetzen die IP -Zeichenfolge durch eine Variable. Seien Sie jedoch vorsichtig, wenn die aktualisierte IP unterschiedliche Ports hat.
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
Das Vivado HLS -Skript ist relativ einfacher als das Vivado -Skript. Sie finden das Vorlagenskript in scripts/template_run_hls.tcl . Sie sollten die Teile, Dateien, hinzugefügte, Frequenz usw. anpassen. Wenn Sie automatisch mehrere HLs unter demselben Ordner erstellen möchten, verwenden Sie die scripts/template_generate_hls.sh