J'ai créé un design et je voudrais compiler le design afin de créer un fichier binaire pour le CPLD. Toutefois, lorsque j'essaie de compiler la conception, elle émet un avertissement indiquant que les exigences de synchronisation ne sont pas satisfaites. Il semble que ce se plaint du composant VHDL suivant où l'horloge externe est divisée en une fréquence d'horloge inférieure qui est utilisée par les autres composants VHDL dans la conception:L'exigence de timing n'est pas satisfaite lors de la compilation du design
entity clk_divider is
generic (COUNTER_MAX : integer := 256000);
port(
clk_in : in std_logic;
reset : in std_logic;
clk_out : out std_logic
);
end clk_divider;
architecture Behavioral of clk_divider is
signal signal_level : std_logic := '0';
signal counter : integer range 0 to COUNTER_MAX := 0;
begin
clk_divider : process (clk_in, reset)
begin
if (reset = '1') then
signal_level <= '0';
counter <= 0;
elsif rising_edge(clk_in) then
if (counter = COUNTER_MAX) then
signal_level <= not(signal_level);
counter <= 0;
else
counter <= counter + 1;
end if;
end if;
end process;
clk_out <= signal_level;
end Behavioral;
Le message d'avertissement critique montré lors de la compilation de conception est montré ci-dessous:
Critical Warning (332012): Synopsys Design Constraints File file not found: 'monitor.sdc'.
A Synopsys Design Constraints File is required by the TimeQuest Timing Analyzer to get proper timing constraints.
Without it, the Compiler will not properly optimize the design.
Info (332142): No user constrained base clocks found in the design. Calling "derive_clocks -period 1.0"
Info (5): Deriving Clocks
Info (5): create_clock -period 1.000 -name clk clk
Info (5): create_clock -period 1.000 -name clk_divider:clk_module|signal_level clk_divider:clk_module|signal_level
Info: Found TIMEQUEST_REPORT_SCRIPT_INCLUDE_DEFAULT_ANALYSIS = ON
Info: Can't run Report Timing Closure Recommendations. The current device family is not supported.
Critical Warning (332148): Timing requirements not met
Info (332146): Worst-case setup slack is -7.891
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -7.891 -123.541 clk
Info (332119): -1.602 -5.110 clk_divider:clk_module|signal_level
Info (332146): Worst-case hold slack is -0.816
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -0.816 -0.816 clk
Info (332119): 1.732 0.000 clk_divider:clk_module|signal_level
Info (332146): Worst-case recovery slack is -4.190
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -4.190 -20.950 clk_divider:clk_module|signal_level
Info (332119): -3.654 -76.734 clk
Info (332146): Worst-case removal slack is 4.320
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): 4.320 0.000 clk
Info (332119): 4.856 0.000 clk_divider:clk_module|signal_level
Info (332146): Worst-case minimum pulse width slack is -2.289
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -2.289 -2.289 clk
Info (332119): 0.247 0.000 clk_divider:clk_module|signal_level
Info (332001): The selected device family is not supported by the report_metastability command.
Info (2): Design is not fully constrained for setup requirements
Info (2): Design is not fully constrained for hold requirements
Quelle est la raison de ce message d'avertissement et comment puis-je le résoudre? Aussi, que disent les chiffres sur mon design?
Merci pour la réponse. Oui, il semble que le fichier .sdc était manquant. J'ai ajouté les deux lignes dans mon fichier .sdc et modifié le paramètre -period. Pour 'clk' j'ai réglé à 488.281 (2.048 MHz) et' signal_level' j'ai réglé sur 1000000000 (1 Hz) puisque je veux avoir 'clk_divider' comme horloge de 1 Hz. Cependant, j'obtiens un avertissement disant que: _Warning (332049): Ignoré create_clock à synopsys-design-constraints.sdc (2): La valeur de temps "1000000000" n'est pas valide Info (332050): create_clock -period 1000000000 -name clk_divider: clk_module | signal_level clk_divider: clk_module | signal_level_ Qu'ai-je fait de mal? Merci – Mrchacha
@Mrchacha Vous pouvez essayer une période plus courte (par exemple 10000). De plus, je vous recommande de mettre une marge pour la première contrainte d'horloge. Par exemple, 20% (~ 400ns). – ahmedus
J'ai enlevé le signal d'horloge interne et l'ai modifié pour émettre une impulsion. Donc, ça fonctionne correctement maintenant. Pourquoi recommanderiez-vous d'avoir une marge pour la contrainte d'horloge? – Mrchacha