SystemVerilog foreach syntaxe pour faire une boucle à travers la baisse de la dimension de tableau multidimensionnel
Quel est le standard moyen d'une boucle dans le bas de la dimension d'un tableau multidimensionnel? Avec la dimension supérieure fixe.
Dans l'exemple suivant:
automatic int i = 2;
foreach (my_req[i][j]) begin //<-- WARNING
$display("i:%0d,j:%0d", i, j);
end
Je vois l'avertissement:
** Warning: testbench.sv(16): (vlog-LRM-2897) Using non-standard foreach loop variable list syntax.
Complet exemple de code sur EDA aire de Jeux: http://www.edaplayground.com/x/nh
OriginalL'auteur Victor Lyuboslavsky | 2014-04-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire ceci:
Code de travail sur EDA aire de Jeux: http://www.edaplayground.com/x/2Qn
foreach (array[0][j])
mais n'acceptant pasautomatic int h = 0; foreach (array[,j])
donner de message d'erreur Erreur-[NYI] Pas Encore mis en œuvre bus.sv, 318 Fonctionnalité n'est pas encore pris en charge: Foreach avec omis les variables de boucle précédent de taille variable dimensionsAussi Questa ne prend pas en charge cette dynamique de tableau: Ne peut pas omettre la variable de boucle lors de l'itération sur un tableau dynamique
OriginalL'auteur Tudor Timi
L'avertissement est pour vous faire savoir que le code que vous écrivez peut ne pas être compatible avec d'autres simulateurs.
Je sais qu'à une époque, un autre simulateur accepté
foreach (array[i][j])
oùi
n'a pas été préalablement définie pour dire la même chose queforeach(array[i,j])
, et que la syntaxe ne serait pas compatible avec ce que vous essayez de faire.La syntaxe correcte est
foreach (my_req[,j])
foreach (array[,j])
format partie de la LRM? Si oui, où? J'ai pu trouver quelque chose de mentionné. Grande fonctionnalité, espère juste que c'est la partie de la norme.Dans 18.5.8.1, de la Syntaxe 18-7 (Foreach itératif contrainte de syntaxe),
loop_variables
pouvez commencer avec une virgule, pas nécessairement un identificateur: foreach ( ps_or_hierarchical_array_identifier [ loop_variables ] ) constraint_set loop_variables ::= [ index_variable_identifier ] { , [ index_variable_identifier ] }Ah, je l'ai raté parce qu'il a été écrit à la BNF (Backus-Naur Form).
OriginalL'auteur dave_59