restricciones SDC para componente reutilizable

1

Tengo un simple componente de divisor de reloj basado en registro que puedo ingresar cuando no tengo un PLL de repuesto:

library IEEE;

use IEEE.std_logic_1164.ALL;
use IEEE.numeric_std.ALL;

entity div128 is
    port(
        inclk0 : in std_logic;
        locked : out std_logic;
        c0 : out std_logic
    );
end entity;

architecture syn of div128 is
begin
    div : process(inclk0) is
        variable counter : unsigned(6 downto 0);
    begin
        if(rising_edge(inclk0)) then
            counter := counter + 1;
            c0 <= counter(6);
        end if;
    end process;

    locked <= '1';
end architecture;

Ahora me gustaría reutilizar este componente en múltiples lugares, en diferentes dominios de reloj, sin repetirme más a menudo que estrictamente necesario.

  • ¿Debo crear una declaración create_generated_clock para cada instancia, o puedo especificar una vez que cada instancia genere un reloj -divide_by 128 desde su entrada?

  • ¿También podría extraer el divisor de un parámetro generic y transferirlo a las restricciones de tiempo?

  • ¿Tendría sentido usar atributos aquí en lugar de un archivo SDC?

pregunta Simon Richter

1 respuesta

1

Puede especificar comandos SDC dentro de su código VHDL con atributos ALTERA. La biblioteca PoC está utilizando esto para aplicar restricciones de tiempo relativas para los sincronizadores:

architecture rtl of sync_Bits_Altera is
  attribute ALTERA_ATTRIBUTE  : string;

  -- Apply a SDC constraint to meta stable flip flop
  attribute ALTERA_ATTRIBUTE of rtl : architecture is "-name SDC_STATEMENT ""set_false_path -to [get_registers {*|sync_Bits_Altera:*|\gen:*:Data_meta}] """;
begin

Fuente: enlace

Creo que podrías hacer un enfoque similar para tu reloj generado.

Tenga en cuenta que c0 no cumple con todos los requisitos para ser una señal de reloj .

    
respondido por el Paebbels

Lea otras preguntas en las etiquetas