ID de l'article: 000080324 Type de contenu: Messages d'erreur Dernière révision: 11/02/2013

Erreur interne : sous-système : VRFX, fichier : /quartus/synth/vrfx/verific/vhdl/vhdlvalue_elab.cpp, ligne : 6821

Environnement

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descriptif

En raison d’un problème dans le logiciel Quartus® II, vous pouvez constater cette erreur interne si votre code VHDL inférer une mémoire double port à double horloge à largeur mixte avec le processus pour le port plus large placé avant le processus pour le port plus étroit.

Par exemple :

portA_p : PROCESS (clk)
BEGIN
IF (rising_edge(clk)) THEN
 IF we_a = '1' THEN
  -- Write access
  ram(addr_a / 2)(addr_a mod 2) := data_a;
  -- Read during write on the same port returns NEW data
  q_a <= data_a;
 ELSE
  -- Read returns OLD data
  q_a <= ram(addr_a / 2)(addr_a mod 2);
 END IF;
END IF;
END PROCESS portA_p;

portB_p : PROCESS (clk)
BEGIN
IF (rising_edge(clk)) THEN
 IF we_b = '1' THEN
  ram(addr_b) := data_b;
  -- Read during write on the same port returns NEW data
  q_b <= data_b;
 ELSE
  -- Read returns OLD data
  q_b <= ram(addr_b);
 END IF;
END IF;
END PROCESS portB_p;
Résolution

Pour contourner ce problème, inversez l’ordre des processus afin que le processus du port élargi apparaisse en premier.

Ce problème devrait être résolu dans une prochaine version du logiciel Quartus II.

Produits associés

Cet article concerne 1 produits

Circuits programmables Intel®

Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.