séparé l'affectation à Q dans sa propre déclaration de processus avec la même liste de sensibilité. Le comportement des modèles de simulation sera identique bien qu'ils varient dans le nombre de processus.
DUT:
process (CLK,RESET)
begin
if RESET = '1' then
temp_sig <='0';
elsif CLK'event and CLK ='1' then
temp_sig <= I;
end if;
-- Q <= temp_sig;
end process;
QDEVICE:
process (CLK, RESET)
begin
Q <= temp_sig;
end process;
Le bord périphérique de stockage sensible à l'attribution temp_sig est clairement un front positif cadencé bascule sensible à CLK et asynchrone remis à zéro par RESET (élevé).
Le processus QDEVICE est-il une construction cible de synthèse? Il se comporte comme un verrou suiveur sur la bascule temp_sig, mais il n'y a aucune indication quant à la polarité d'une validation. Voir IEEE Std norme IEEE pour 1076,6 à 2004 VHDL Registre Transfer Level (RTL) Synthèse, 6.2.1.1 stockage sensible au niveau du processus avec la liste de sensibilité:
Un élément de stockage sensible au niveau doit être modélisé pour un signal (ou variable) lorsque toutes les conditions suivantes s'appliquent:
c) Il existe des exécutions du processus qui n'exécutent pas une affectation explicite (via une instruction d'affectation) au signal (ou variable).
Sans qualification (par niveau), la règle c n'est pas respectée. En outre, dans le processus d'origine, vous citez le comportement ne correspond pas à l'une des spécifications IEEE Std 1076.6-2004 6.2 Clock edge dont aucune ne comprend l'utilisation d'un signal intermédiaire. Brian a raison, c'est une question piège. Un flip flop avec un suiveur-quelque chose d'autre fournissant un retard. Et la valeur «U» dans la simulation pour q jusqu'à un événement sur CLK ou RESET devrait être révélatrice.
indentation du code approprié empêche le cancer des yeux - j'ai entendu .. – drahnr