¿Cuál es la mejor manera de controlar los proyectos de Xilinx PlanAhead?

2

En realidad, estoy migrando algunos proyectos maduros de Xilinx ISE a Xilinx PlanAhead. Necesito aprovechar las secuencias de comandos TCL y la partición de PlanAhead.

Estos proyectos ISE están bajo control de versión en un repositorio SubVersion, por lo que debo definir los archivos que deben estar bajo control de versión pero en los proyectos de PlanAhead.

Por un lado, esta pregunta habla sobre los archivos necesarios para poner bajo el control de versiones para recrear exactamente los resultados de la implementación. Incluso en PlanAhead 13.2 existe el comando "File- > Archive Project ..." que guarda las fuentes y otros proyectos y archivos de opciones en un archivo ZIP, lo que nos permite identificar los archivos que deben estar en la versión controlar. Esta es la primera opción.

Pero, por otro lado, no está claro si utilizar esta colección de archivos es la forma correcta de administrar un control de versión para un proyecto PlanAhead. Esta conversación en el foro de xilinx habla sobre utilizando un script tcl para volver a crear el proyecto completo, pero este script debe mantenerse aparte cuando se introduce un nuevo cambio en el proyecto de PA

Vivado (hijo de PlanAhead) tiene la nota de la aplicación XAPP1165 que habla sobre el control de versión y se recomienda poner el script TCL de recreación bajo el control de versión, pero Vivado puede generar automáticamente este script TCL.

Me gustaría saber cuál es la mejor manera de controlar los proyectos de PlanAhead. ¿Identificando los archivos necesarios o manteniendo un script TCL de recreación?

Muchas gracias por sus respuestas. Saludos cordiales.

    
pregunta David Quiñones

1 respuesta

6

Mi flujo de trabajo personal (menciono planAhead, pero el vivado es similar), con el objetivo de agregar lo menos posible al control de código fuente:

  • Los archivos existen fuera del directorio del proyecto planAhead. Tenga cuidado, ya que si utiliza la GUI para agregar / crear archivos, probablemente estará dentro del directorio del proyecto.
  • Los núcleos de IP existen en mis directorios de origen, una subcarpeta por núcleo de IP.
  • Cada fuente HDL está controlada por la fuente, así como cada .xco / .xci, * .xmp, * .mhs, archivos de restricciones, etc.
  • Las fuentes de simulación se encuentran en una carpeta separada de las fuentes de síntesis para configurar sus propiedades fácilmente.
  • El directorio del proyecto planAhead / .ppr es no controlado por fuente.
  • Los archivos generados por IP core / microblaze no están controlados por la fuente. Esto depende del debate. Creo que si agrega * .ngc, * .vhd, * .v, * .xise, no tendrá que regenerar los núcleos cada vez que realice el checkout desde source-control, lo que le puede ahorrar una gran cantidad de datos. cantidad de tiempo. Apenas uso los núcleos IP en mis propios proyectos, pero si usas mucho es posible que desees ver esto.

Luego, agrego una secuencia de comandos para crear el proyecto en control de fuente:

# Obtain the script directory and pass to a variable
set projDir [file dirname [info script]]
# Change active directory to directory of the script
cd $projDir

# Define directories labels
set hdlDir ./src/hdl
set simDir ./src/sim
set ipsDir ./src/IPs
set conDir ./src/constrs

# Define other labels
set projName projectname
set topName toplevel
set device partname

# Create project in prj directory
create_project -force $projName prj -part $device

# Add simulation files from sim directory and disable synthesis property
# Do it before adding any other source!!
add_files -fileset sim_1 $simDir
set_property used_in_synthesis false [ get_files -of_objects [get_filesets sim_1] -filter {FILE_TYPE == VHDL || FILE_TYPE == Verilog} ]

# Add HDL sources
add_files $hdlDir

# Add IP cores
add_files $ipsDir/ip0/ip0.xco
add_files $ipsDir/ip1/ip1.xco
add_files $ipsDir/mb/system.xmp 

# Add constraints
add_files -fileset constrs_1 $conDir

# Set VHDL libraries
set_property library awesome_lib [get_files $hdlDir/awsome_library/*]

# Set top module
set_property top $topName [current_fileset]

make_wrapper -files [get_files *.xmp] -top -fileset [get_filesets sources_1] -import

Si organiza los archivos de origen de forma adecuada, la secuencia de comandos debería necesitar una cantidad mínima de líneas y no cambiar cuando agregue los archivos de origen. Dado que el script está en control de código fuente, debería permanecer sincronizado de todos modos (debe mantenerlo, ya que espero que utilice la GUI en su uso diario).

Debería poder comenzar desde allí y agregar lo que necesita. Si no está al tanto, la mayor parte de lo que hace en la GUI de planAhead es un comando TCL. Puede ver qué comandos se ejecutaron en Archivo- > Abrir diario.

    
respondido por el Jonathan Drolet

Lea otras preguntas en las etiquetas