13 votos

¿Usando SVN con Xilinx Vivado?

Sólo declaró utilizando Vivado en un nuevo proyecto y le gustaría poner los archivos de proyecto en SVN.

Vivado parece crear todos los archivos de proyecto bajo el nombre de proyecto (decir proj1):

/<path to the project>/proj1/
                            proj1.xpr
                            proj1.srcs/
                                       constrs_1/
                                                new/
                                                    const1.xdc
                            proj1.runs/
                            proj1.data/
                            proj1.cache/

Mi pregunta es ¿Cuáles son los archivos que tengo que poner bajo SVN excepto el XDC y el archivo XPR?

6voto

spassig Puntos 661

Xilinx crear un vídeo de YouTube (suspiro) para lidiar con esto. Aquí está el enlace para el video

http://www.xilinx.com/training/vivado/vivado-version-control-overview.htm

Aquí está mi resumen del vídeo (8 minutos)

Antes de empezar

Si realmente te gusta un control total de Xilinx, se sugiere que renunciar a la interfaz gráfica de usuario completamente y hacer de todo en la línea de comandos y, a continuación, usted sabe cuál es su origen y qué no lo es.

De lo contrario, Xilinx se da cuenta de que Vivado proyectos no están diseñados para el control de versiones. NO REVISE EN TODO EL PROYECTO. Pero leer en sugerencias...

Línea de base

Por supuesto, todo lo que se escribe fuera de la Vivado herramienta debe ser facturado.

Verificación en los siguientes archivos

*.v, *.vh, *.vhdl, *.edif  - HDL and Netlist
*.xdc - Constraints
*.xci - IP Core
*.bd  - IP Integrator Block Diagram
*.xmp - Embedded Subsystem
*.sgp - System Generator Subsystem
*.bmm
*.cdc - Chipscope
*.elf
*.mem

Los bloques de IP

Si el uso de bloques de IP, generar la IP en una única carpeta, y comprobar en todo.

Los puntos de control

Si usted quiere ser capaz de ejecutar partes del flujo sin correr todo revisar en los archivos de punto de control.

*.dcp - Design Checkpoints

Mi Addendum

Si las herramientas de Xilinx fueron eficientes, no se recomienda la comprobación de la dcp archivos, pero llevan muchas horas para que se ejecute, puede ser que vale la pena en el costo de un feo versión el sistema de control.

El video no dice nada sobre los Vivado archivos de proyecto (*.xpr) así que aquí va mi sugerencia:

*.xpr
*.data/*/fileset.xml
*.data/*/runs.xml

La alternativa que Xilinx recomienda (que en realidad es un hack, no es adecuado para el control de versiones) es ejecutar el File -> Write Project Tcl comando cada vez que quiera comprometerse, y, a continuación, confirmar que TCL archivo de control de versiones. Al actualizar su carpeta local, es necesario volver a ejecutar que TCL archivo para crear todos los archivos del proyecto. Puaj.

3voto

Jonas Puntos 1764

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.

2voto

Patrick Ritchie Puntos 1292

Hay una Xilinx video de entrenamiento que se explica cómo utilizar los sistemas de control de versiones con Vivado. Básicamente, la lista de archivos depende de las características que usted está utilizando.

Si utiliza un guión (vermaete), usted puede tener Vivado escribir todos intermedio / temporal de los archivos en un directorio separado (ver aquí), así que usted puede separar fácilmente de ellos.

De lo contrario, usted puede limpiar la carpeta de compilación por Vivado, y de todo lo que está a la izquierda podría ser puesto bajo el control de versiones.

1voto

jscott Puntos 17041

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X