Salida HDMI (TMDS) con Digilent Atlys: los ejemplos no se compilan con ISE 14.7

Estoy trabajando en XAPP495 en la placa Digilent Atlys con ISE 14.7. Quiero ejecutar y probar "vct_demo" que viene con XAP 495. Intenté compilarlo (con ISE 14.7) y fallé debido a los siguientes errores:

ERROR: PhysDesignRules: 2502 - Problema con conexiones pin y/o configuración en bloque::. BUFIO2 tiene una configuración no válida de DIVIDE por 2. Esta configuración no es compatible. Para obtener más información, consulte el registro de respuestas 56113.

ERROR:Pack:1642 - Errores en el DRC físico.

Simplemente importé todos los archivos *.v así como los correspondientes *.ucf

¿Puede esto aquí ser un problema de versión simple? - ¿Es una cuestión de nivel de error que es más estricto que en versiones anteriores?

Cualquier ayuda es apreciada.

Gracias

Respuestas (1)

Bienvenido al mundo de Xilinx :)

El problema es conocido, y no creo que mantengan esta aplicación de manera muy activa y si busca el Registro de respuesta mencionado en la lista de errores, verá que requiere algunos cambios en el código de ejemplo para compilarlo con versiones más nuevas. de ISE.

Puede encontrar la solución a su problema en:

Discusión sobre el problema con Digilent/Xilinx Ejemplo de diseño en el foro de Xilinx

Necesita modificar el vtc_demo.v a:

// Original code, doesn't work on ISE >= 14.6
//  BUFIO2 #(.DIVIDE_BYPASS("FALSE"), .DIVIDE(2))
//  sysclk_div (.DIVCLK(clk50m), .IOCLK(), .SERDESSTROBE(), .I(sysclk));

  wire clkfb;

   DCM_SP #(
      .CLKDV_DIVIDE(2.0),
      .CLKFX_DIVIDE(1),
      .CLKFX_MULTIPLY(4),
      .CLKIN_DIVIDE_BY_2("TRUE"),
      .CLKIN_PERIOD(10.0),       
      .CLKOUT_PHASE_SHIFT("NONE"),
      .CLK_FEEDBACK("1X"),        
      .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"),
      .DFS_FREQUENCY_MODE("LOW"),         
      .DLL_FREQUENCY_MODE("LOW"),         
      .DSS_MODE("NONE"),                  
      .DUTY_CYCLE_CORRECTION("TRUE"),     
      .FACTORY_JF(16'hc080),              
      .PHASE_SHIFT(0),                    
      .STARTUP_WAIT("FALSE")              
   )
   DCM_SP_inst (
      .CLK0(clk50m),
      .CLK180(),    
      .CLK270(),    
      .CLK2X(),     
      .CLK2X180(),  
      .CLK90(),     
      .CLKDV(),     
      .CLKFX(),     
      .CLKFX180(),  
      .LOCKED(),    
      .PSDONE(),    
      .STATUS(),    
      .CLKFB(clkfb),
      .CLKIN(sysclk),
      .DSSEN(1'b0),  
      .PSCLK(1'b0),  
      .PSEN(1'b0),   
      .PSINCDEC(1'b0),
      .RST(1'b0)      
   );

   BUFIO2FB #( .DIVIDE_BYPASS("TRUE") )
   BUFIO2FB_inst ( .O(clkfb), .I(clk50m) );