L'incrémentation de Plusieurs Genvars en Verilog Générer de la Déclaration
Je suis en train de créer un multi-étape de comparaison en verilog et je ne peux pas comprendre comment faire pour incrémenter plusieurs genvars dans un seul générer de la boucle. Je suis en train suivantes:
genvar i,j;
//Level 1
generate
j=0;
for (i=0;i<128;i=i+1)
begin: level1Comp
assign ci1[i] = minw(tc[j],tc[j+1]);
j = j+2;
end
endgenerate
Et d'obtenir l'erreur suivante:
Error-[SE] Syntax error
Following verilog source has syntax error :
"encoder.v", 322: token is '='
j=0;
Ce que quelqu'un sait comment faire pour incrémenter plusieurs genvars dans le même générer de la déclaration? Ou au moins d'obtenir des fonctionnalités équivalentes?
OriginalL'auteur Adam | 2012-03-05
Vous devez vous connecter pour publier un commentaire.
En supposant que
ci1
a la moitié de la profondeur detc
et vous voulez, disonsci1[0] = min(tc[0], tc[1])
,ci[1] = min(tc[2], tc[3])
etc, la suivante devrait fonctionner:OriginalL'auteur Marty
Ce n'est pas permis parce que générer de la boucle crée un implicite localparam déclaration de la variable de boucle et élabore les éléments de la boucle de base uniquement sur ce localparam. Cela signifie que tous les éléments à l'intérieur de la boucle doit être valide à l'extérieur de la boucle si le genvar a été déclaré comme un localparam.
devient
Dans ce cas, vous pourriez créer une "constante" de la valeur dépend de la genvar à l'aide d'un paramètre explicite à l'intérieur de la boucle.
Pas de. Localparams sont des constantes qui sont utilisés pour la conception d'élaboration.
Ce doit être la accepté de répondre. La réponse qui a été acceptée peut avoir résolu le cas des OP problème, mais cette réponse effectivement répondu à l'OP de la question. Je me suis retrouvé avec la même question, et cela m'a aidé. Merci.
OriginalL'auteur