Vivado 2014.1 permite el uso de .los scripts tcl para regenerar los proyectos.
Para ello, con el proyecto abierto, vaya a Archivo -> Escribir el Proyecto de tcl.
Proyectos Básicos
Yo suelo guardar mis fuentes y .script tcl en una ubicación fuera del directorio del proyecto. El xilinx núcleos IP generado dentro del proyecto puede ser copiado en otra parte haciendo clic derecho sobre el núcleo y seleccionando "Copiar IP". Y eliminar el original. Cuando el script tcl se genera, crea vínculos relativos a estos archivos. Esto es generalmente lo que mi estructura de directorios parece:
base_project/
srcs/
project.v
ip/
ip1/
ip1.xml
ip1.xci
genproject.tcl
Solo la IP .xml y .xci archivos que necesitan ser confirmados. (Y aun esto no es necesario, técnicamente, ver notas al final).
Esto es lo que se ha comprometido a git, se nota la falta de proyecto.xpr o directorios de proyecto.
Cuando ejecuto genproject.tcl
, se crea otro directorio para el proyecto.
base_project/
srcs/
ip/
genproject.tcl
projectdir/
project.runs/
project.cache/
project.xpr
Esta nueva carpeta es completamente desechable. Con el fin de crear esta estructura, puedo modificar el script tcl de la siguiente manera.
Puedo cambiar las 3 primeras líneas de la siguiente manera:
# Set the reference directory for source file relative paths (by default the value is script directory path)
set origin_dir [file dirname [info script]]
# Set the directory path for the original project from where this script was exported
set orig_proj_dir "[file normalize "$origin_dir/projectdir"]"
# Create project
create_project project $projectdir/project
Esto crea un nuevo directorio de proyecto y el nuevo proyecto en el que dir.
Entonces puedo modificar las rutas de punto a los lugares correctos. Puede que necesite cambiar estas rutas de acceso en otros lugares en el script.
# Set 'sources_1' fileset object
set obj [get_filesets sources_1]
set files [list \
"[file normalize "$origin_dir/srcs/project.v"]"\
"[file normalize "$origin_dir/ip/ip1/ip1.xci"]"\
]
add_files -norecurse -fileset $obj $files
Yo también modificar el diseño corre por núcleos IP como se ve en esta respuesta.
El .wcfg archivos pueden ser incluidos en una manera similar a la ip y srcs.
Esto es cuando el tratamiento termina, por más simple de los proyectos (que contiene sólo las fuentes y la IP, no de los diagramas de bloques). El siguiente necesita también ser hecho con el fin de almacenar el diagrama de bloques de datos.
Diagrama De Bloques De Los Proyectos
Con el fin de guardar el diagrama de bloques, con el diagrama de bloque abierto, vaya a Archivo -> Exportar -> Diagrama de Bloques para Tcl, y guárdelo en el mismo dir como el otro tcl archivo.
Luego me hizo un Generate_Wrapper.tcl
script que crea el diagrama de bloques de contenedor de archivos por lo que no es necesario hacerlo manualmente. El proyecto/proyecto.srcs carpeta se utiliza para almacenar la bd de datos, pero aún así es completamente desechable, ya que la bd se almacena en el script tcl. Guardar este con los otros dos.
set origin_dir [file dirname [info script]]
make_wrapper -files [get_files $origin_dir/project/project.srcs/sources_1/bd/design_1/design_1.bd] -top
add_files -norecurse -force $origin_dir/project/project.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v
update_compile_order -fileset sources_1
update_compile_order -fileset sim_1
Al final de mi genproject.tcl
me agregue las líneas siguientes a generar el diagrama de bloques y envolturas:
source $origin_dir/Create_bd.tcl
source $origin_dir/Generate_Wrapper.tcl
regenerate_bd_layout
Para proyectos sin fuente (solo diagrama de bloques), mi git commit es el siguiente:
base_project/
Generate_Wrapper.tcl
Create_Bd.tcl
genproject.tcl
Con el fin de generar todo, ejecute genproject.tcl
.
Usted puede incluso combinar todos estos en uno si usted es particularmente eficiente, no tengo la ronda a la que sin embargo.
Personalizado Componentes: El componente de proyecto
Otra nota rápida sobre cómo crear un componente personalizado. Si usted tiene un component.xml, añadir que a su tcl lista de fuentes:
"[file normalize "$origin_dir/component.xml"]"\
Y también añadir la siguiente sección:
set file "$origin_dir/component.xml"
set file [file normalize $file]
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
set_property "file_type" "IP-XACT" $file_obj
Esto incluye el diseño de componente en el proyecto para una fácil personalización.
Componentes personalizados: hacen Referencia a su componente
Usted puede spacify su componente personalizado de repos ruta como esta:
# Set IP repository paths
set obj [get_filesets sources_1]
set_property "ip_repo_paths" "[file normalize "$origin_dir/path/to/repository"]" $obj
En mi repo carpeta, hay carpetas individuales que contiene .los archivos xml. Por lo tanto no estamos haciendo referencia a la carpeta que contiene el .xml, pero el de los padres de uno. Por ejemplo:
repository/
component1/component1.xml
component2/component2.xml
¿Cómo podemos ejecutar estos scripts tcl?
Abierto Vivado, y sin abrir los proyectos, seleccione Herramientas -> Ejecutar script TCL, y vaya a la secuencia de comandos.
Extra TCL notas
Cada comando a ejecutar en Vivado se muestra en el tcl consola como un comando tcl. Por ejemplo, cuando se generó un nuevo Xilinx IP a través de la interfaz gráfica de usuario, esto apareció en el tcl consola:
create_ip -name floating_point -vendor xilinx.com -library ip -module_name floating_point_0
set_property -dict [list CONFIG.Operation_Type {Fixed_to_float} CONFIG.A_Precision_Type {Custom} CONFIG.C_A_Exponent_Width {38} CONFIG.C_A_Fraction_Width {0} CONFIG.Result_Precision_Type {Custom} CONFIG.C_Result_Exponent_Width {8} CONFIG.C_Result_Fraction_Width {16} CONFIG.Flow_Control {NonBlocking} CONFIG.Has_ARESETn {true}] [get_ips floating_point_0]
Esto significa un par de cosas:
Usted realmente no necesita ni siquiera guardar xilinx núcleos ip - una vez que están de la manera que desea, copie los comandos del script tcl y que no es necesario comprometerse ip/ más.
especifique la dirección IP de un directorio con el -dir argumento después de nombre_modulo para ponerlo donde quieras (en defecto está en proyecto.mlrs).
Todo lo que usted hace en la interfaz de usuario se puede hacer en tcl, la forma más sencilla de ver cómo xilinx hace cosas es hacerlo en la interfaz de usuario y, a continuación, mire lo que el TCL consola después.
Este descomunal pdf detalles de todos los vivado comandos de tcl.