Comment déclarer une liste de longueur fixe dans specman ?
-
09-06-2019 - |
Question
Dans E (specman), je veux déclarer des variables qui sont des listes et je veux corriger leurs longueurs.
C'est facile à faire pour un membre d'une structure :
thread[2] : list of thread_t;
alors que pour une variable "normale" dans une fonction, ce qui précède ne fonctionne pas, et je dois faire quelque chose comme :
var warned : list of bool;
gen warned keeping {
it.size() == 5;
};
Existe-t-il une meilleure façon de déclarer une liste de taille fixe ?
La solution
Un stockage dur comme celui que vous avez ne corrigera la taille qu'à l'initialisation, mais des éléments pourraient toujours être ajoutés ou supprimés plus tard, essayez-vous de vous prémunir contre cette condition ?La seule façon à laquelle je peux penser pour garantir que des éléments ne seront pas ajoutés ou supprimés ultérieurement est d'émettre un événement synchronisé sur la taille != le montant prédéterminé :
event list_size_changed is true (wanted.size() != 5) @clk;
La seule autre chose que je peux offrir est un peu de sucre syntaxique pour les durs à cuire :
var warned : list of bool;
keep warned.size() == 5;
Autres conseils
Je ne connais rien à Specman, mais une liste de taille fixe est un tableau, cela pourrait donc vous diriger quelque part.