Identifiant de l'article: 000084426 Type de contenu: Dépannage Dernière révision :: 09/11/2012

Pourquoi la synthèse de Quartus II traite-t-elle incorrectement les bits sélectionnés à partir de variables signées ?

Environnement

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descriptif

Les logiciels Quartus® II version 6.0 et 6.0 SP1 traitent incorrectement les sélections de bits à partir de variables signées en raison d’un problème logiciel connu. Le code Verilog comportant des sélections de bits à partir de variables signés doit renvoyer des valeurs non signées comme spécifié dans le LRM Verilog (Std 1364-2001 Version C, Sec 4.5.1).

Ce problème n’existe pas dans les versions 5.1 ou antérieures. Le problème est résolu à partir du logiciel Quartus II version 6.1.

À titre d’exemple de ce problème, la version 6.0 du logiciel Quartus II traite incorrectement l’exemple de code suivant :

reg [7:0] unrounded;

reg [6:0] rounded;

always @ (posedge clk) begin

 rounded <= unrounded[7:1]   unrounded[0];

Le logiciel doit étendre à zéro le signal sans déverminer[0] pour s’assurer que la valeur d’un bit est ajoutée à la tranche de bits unrounded[7:1] de .

Les versions 6.0 et 6.0 SP1 du logiciel Quartus II étendent le signal unrounded[0] au lieu de l’étendre à zéro. Dans l’exemple, si le unrounded[0] signal est une valeur 1, le logiciel interprète le 1 comme le signe du numéro et le convertit donc en une représentation 7 bits signée de -1 au lieu d’une valeur non signée. Par conséquent, le logiciel ajoute -1 à unrounded[7:1] , au lieu d’ajouter 1.

Pour éviter ce problème (dans les versions 6.0 ou 6.0 SP1), procédez comme suit :

  • Contactez mySupport pour demander le correctif 1.20 pour le logiciel Quartus II version 6.0 SP1.
  • Placez les parenthèses autour d’une des variables et forcez toute l’expression à évaluer comme non signée à l’aide de la fonction Verilog-2001 :
rounded <= (unrounded[7:1])   unrounded[0]
  • Pad manuellement les zéros de pointe comme suit (c.-à-d. indiquer explicitement que les bits de pointe doivent être 0) :
  • rounded <= unrounded[7:1]   {{6{1'b 0}}, unrounded[0]};

     

Produits associés

Cet article concerne 1 Produits

FPGA Stratix® II

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.