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 ?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top