¿Cómo escribir un archivo de restricción para el reloj dividido en Verilog?

1

Estoy utilizando la placa FPGA Basys 3 en mi universidad, con una frecuencia de reloj de 100MHZ, dividí el reloj predeterminado ( clk ) por 216 y obtuve clk_out en la salida como el reloj minimizado después de la división. Si se usa el siguiente comando para el reloj predeterminado en el archivo de restricción,

set_property PACKAGE_PIN W5 [get_ports clk]                         
    set_property IOSTANDARD LVCMOS33 [get_ports clk]
    create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk]

entonces, ¿cuál será el archivo de restricción para el clk_out ? La división del reloj se realiza de la siguiente manera:

module clk_divi(clk,rst,clk_out);
input clk;
input rst;
output reg clk_out;
    reg [7:0] delay;
    initial begin
       delay = 0;
       clk_out = 0;
    end

    always @(posedge clk or posedge rst)

//       if(rst)
//       begin
       if (delay < 108)
       begin
          delay <= delay+1;
          end
       else begin
          delay <= 0;
          clk_out <= !clk_out;
         // $display("clkout=%d  ",$unsigned(clk_out)); 


       end
endmodule
    
pregunta David

1 respuesta

0

Si clk_divi es su módulo de nivel superior, no tiene que restringir clk_out para la síntesis. No controla ningún elemento secuencial (FF, latch, etc.).

Por otro lado, algunas herramientas de síntesis y STA (análisis de temporización estática) realizan comprobaciones adicionales (por ejemplo, comprobación de fallas) para señales de reloj. Estas verificaciones pueden ser críticas, especialmente a altas velocidades, sin embargo, no creo que 100MHz sea tan crítico para la FPGA en la placa Basys 3.

En cualquier caso, el formato SDC debería permitirle restringir clk_out de la siguiente manera.

create_generated_clock -name MyClkOut -divide_by 216 \
                       -source clk [get_pins clk_out_reg/Q]

El nombre real del pin depende de la herramienta de síntesis que utilice. Una vez que ejecute la síntesis sin esta restricción, puede obtener el nombre del pin de los registros, informes o netlist de nivel de puerta de acceso.

    
respondido por el ahmedus

Lea otras preguntas en las etiquetas