Copyright (c) 2018-2020, Wuklab, UCSD.
Este es un sistema operativo (OS) que se ejecuta dentro de FPGA que proporciona abstracciones de sistema operativo familiares (p. Ej., MM, SCHE, NET) para aplicaciones FPGA. Este es un prototipo de investigación en etapa inicial de inMature. La mayor parte del código está escrito en Xilinx HLS. Se ha probado en VCU118 y VCU108.
Se hace público para fines educativos. Espero que lo encuentres útil.
host/ : pila de red del lado del host y controladores DMAalloc/ : asignador de memoriamm/ : gestión de memorianet/ : subsistema de redkernel/ : algún código relacionado con relaciones públicassystem/ : Sistemas finales de Big Integratedapp/ : La aplicación puede tener FPGA y código de host.include/ : archivos de encabezado utilizados por FPGA y código de host. Por ejemplo, encabezados de red.include/fpga : encabezados utilizados solo por HLSinclude/uapi : encabezados utilizados por HLS y código hosttools/ : varios ayudantesscripts/ : plantilla archivos de scriptgenerated_ip/ : todos los IP generados duermen aquígenerated_hls_project/ : proyecto Vivado HLSgenerated_vivado_project/ : proyecto VivadoFormato:
run_hls.tcl .mm_axi_wrapper es la IP de envoltura AXI en el subsistema MM.make help para ver una explicación detallada.make en el nivel superior compilará todo el proyecto utilizando la placa predeterminada.system/ carpetamake en cada subcarpeta compilará solo esa carpeta.Flujo de trabajo: debe compilar el proyecto cuando descargue por primera vez el código fuente. Todos los IPS pequeños, medianos y grandes proyectos estarán listos para usar. Después de esto, puedes concentrarte en las IP que estás construyendo. Los cambios se reflejarán automáticamente dentro de Vivado.
Además, preste atención a a la que se dirige.
El objetivo de usar scripts es doble
generated_vivado_project/ , en la misma carpeta donde están el script y el código fuente correspondiente.Esos scripts de modo de proyecto Vivado son generados por Vivado. Y esos scripts se pueden usar para reconstruir todo el proyecto tal como está.
Esos son mis pasos desagradables para crear y hackear esos scripts:
Correr:
vivado -mode tcl -source run_vivado.tclgenerated_vivado_project/ se creará en la carpeta actualgenerated_ip/ .Creación:
write_project_tcl para generar el script. Debe informar que el nuevo script sepa que el proyecto de referencia para ir a ser se debe colocar en la carpeta generated_vivado_project . Y debe nombrar el script a 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.tclCortar:
Agregar rutas IP al script de nivel superior:
generated_ip/ . Esto hace que el seguimiento de IP sea más fácil. Puede agregar pocas líneas al script para que Vivado sepa dónde buscar nuevas IP. Consulte scripts/template_vivado_ip.tcl para obtener esas líneas.Paquete IP automáticamente:
generated_ip/ . Por ejemplo, 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_filesAgregue más archivos de fuente/xdc/simulación:
top.v , add_files etc.write_project_tcl nuevamente para generar otro script. Luego mira las diferencias.Autogeneer envoltura BD
Otras configuraciones:
write_project_tcl para generar un nuevo script y guardar los cambios correspondientes. Una vez que se familiarice con los comandos de Vivado, debería poder hacerlo manualmente cambiando el script.Advertencias:
Por ahora, puede encontrar scripts de ejemplo en mm/axi_wrapper/run_vivado.tcl , y mm/sys/run_vivado.tcl .
Vivado solo admite una versión IP en cada versión. Es muy anual si usamos script generado. Afortunadamente, hay una forma de solucionarlo. El siguiente código reemplaza la cadena IP con una variable. Sin embargo, tenga cuidado si la IP actualizada tiene diferentes puertos.
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
El script Vivado HLS es relativamente más fácil que el script Vivado. Puede encontrar el script de plantilla en scripts/template_run_hls.tcl . Debe personalizar las piezas, los archivos agregados, la frecuencia, y así. Si desea construir automáticamente múltiples HLS en la misma carpeta, use los scripts/template_generate_hls.sh