Copyright (C) 2018-2020, Wuklab, UCSD.
Il s'agit d'un système d'exploitation (OS) exécutant à l'intérieur de FPGA fournissant des abstractions de système d'exploitation familières (par exemple, mm, sched, net) pour les applications FPGA. Il s'agit d'un prototype de recherche en un stade précoce inmature. La plupart du code est écrit en Xilinx HLS. Il a été testé sur VCU118 et VCU108.
Il est rendu public à des fins éducatives. J'espère que vous le trouverez utile.
host/ : hôte côté réseau et pilotes DMAalloc/ : allocateur de mémoiremm/ : Gestion de la mémoirenet/ : Sous-système réseaukernel/ : un code lié aux relations publiquessystem/ : Final Big Integrated Systemsapp/ : L'application peut avoir à la fois FPGA et le code hôte.include/ : fichiers d'en-tête utilisés à la fois par FPGA et le code hôte. Par exemple, en-têtes de réseau.include/fpga : les en-têtes utilisées par HLS uniquementinclude/uapi : En-têtes utilisées par HLS et le code hôtetools/ : divers aidesscripts/ : Fichiers de script de modèlegenerated_ip/ : tous les IP générés sont dormes icigenerated_hls_project/ : Projet VIVADO HLSgenerated_vivado_project/ : projet VivadoFormat:
run_hls.tcl .mm_axi_wrapper est l'ip de wrapper Axid sous MM Sous-système.make help pour voir des explications détaillées.make at Top-Level compilera l'ensemble du projet à l'aide de la carte par défaut.system/ le dossiermake à chaque sous-dossier compilera ce dossier uniquement.Workflow: vous devez compiler le projet lorsque vous téléchargez le code source pour la première fois. Tous les petits IP et les grands projets moyens seront prêts à l'emploi. Après cela, vous pouvez vous concentrer sur les IPS que vous construisez. Les modifications seront reflétées automatiquement dans Vivado.
Faites également attention au conseil d'administration que vous ciblez.
Le but d'utiliser les scripts est double
generated_vivado_project/ , dans le même dossier où se trouvent le script et le code source correspondants.Ces scripts en mode de projet Vivado sont générés par Vivado lui-même. Et ces scripts peuvent être utilisés pour reconstruire l'ensemble du projet tel quel.
Ce sont mes étapes non forales pour créer et pirater ces scripts:
Courir:
vivado -mode tcl -source run_vivado.tclgenerated_vivado_project/ sera créé dans le dossier actuelgenerated_ip/ .Création:
write_project_tcl pour générer le script. Vous devriez faire savoir au nouveau script que le projet de renoncement à la référence doit être placé sous le dossier generated_vivado_project . Et vous devez nommer le script pour run_vivado.tcl .write_project_tcl -force -no_copy_sources -target_proj_dir ./generated_vivado_project ./run_vivado.tclwrite_project_tcl -force -target_proj_dir ./generated_vivado_project ./run_vivado.tclPirater:
Ajoutez des chemins IP au script de niveau supérieur:
generated_ip/ . Cela facilite le suivi IP. Vous pouvez ajouter quelques lignes au script afin que Vivado sache où chercher de nouveaux IP. Consultez scripts/template_vivado_ip.tcl pour ces lignes.Package IP automatiquement:
generated_ip/ . Par exemple, 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_filesAjoutez plus de fichiers source / xdc / simulation:
top.v , add_files etc.write_project_tcl pour générer un autre script. Consultez ensuite les différences.Emballage BD automatique
Autres paramètres:
write_project_tcl pour générer un nouveau script et enregistrer les modifications correspondantes. Une fois que vous vous êtes familiarisé avec les commandes Vivado, vous devriez pouvoir faire manuellement en changeant de script.Mises en garde:
Pour l'instant, vous pouvez trouver des exemples de scripts au mm/axi_wrapper/run_vivado.tcl et mm/sys/run_vivado.tcl .
Vivado ne prend en charge qu'une seule version IP dans chaque version. C'est super annonce si nous utilisons le script généré. Heureusement, il existe un moyen de solution. Le code suivant remplace la chaîne IP par une variable. Cependant, soyez prudent si l'IP mise à jour a des ports différents.
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
Le script Vivado HLS est relativement plus facile que le script Vivado. Vous pouvez trouver le script de modèle dans scripts/template_run_hls.tcl . Vous devez personnaliser les pièces, les fichiers ajoutés, la fréquence, etc. Si vous souhaitez créer automatiquement plusieurs HLS dans le même dossier, utilisez les scripts/template_generate_hls.sh