2017-07-21 4 views
0

Je suis en train de déclarer un tableau de taille variable basée sur une générer variable mais mon outil de peluchage SpyGlass se plaint de règle BitOrder-ML et affiche le message d'erreur suivant:Declare taille du vecteur avec l'expression de générer variables

Declare 'Taille du vecteur' ordre des bits '[((1 < niveau <) -1): 0]' comme par convention

Ceci est le code qui génère le problème:

genvar level; 
localparam integer LEVELS = 3; 
generate 
    for (level=0; level<LEVELS; level=level+1) begin 
     wire result[(1 << level)-1:0]; 
    end 
endgenerate 

Est-ce que SpyGlass est sain ici? Pense-t-elle en quelque sorte que l'expression (1 << level)-1 générerait une valeur négative?

La synthèse se termine sans problème lorsque l'erreur est levée.

+0

quel sera le résultat de 'niveau == 0'? vous obtiendrez le 'résultat [-1: 0]' je ne voudrais pas blâmer spyglass pour cela. – Serge

+0

@Serge: Non, (1 << 0) - 1 = 0 – Moberg

+0

oups, votre droite. aurait dû se réveiller en premier :-) – Serge

Répondre

1

d'abord

1 vous avez problème syntaxe

résultat de fil [(1 < < niveau) -1: 0]]; vous devriez supprimer le dernier].

2-vous devriez déclarer le niveau comme un genvar non entier! niveau de genvar; est correct.

NOTE: [(2^niveau) -1: 0] est plus régulière que [(1 < niveau <) -1: 0]

+0

Désolé, fautes de frappe. Correction du code. Je peux ajouter que le code se synthétise bien si je m'échappe de ces lignes. – Moberg

+0

J'utilise l'outil de synthèse ISE xilinx ci-dessous le code et il n'y a aucun problème peut U télécharger votre code complet à je le vérifie? –

+0

C'est l'outil de pelage spyglass et aussi nlint qui a un problème avec le code. Le code est bien sinon et capable de synthé. – Moberg