Domanda

In E (specman) voglio dichiarare variabili che sono elenchi e voglio fissarne la lunghezza.

È facile da fare per un membro di una struttura:

thread[2] : list of thread_t;

mentre per una variabile "normale" in una funzione quanto sopra non funziona, e devo fare qualcosa del tipo:

var warned : list of bool;
gen warned keeping {
    it.size() == 5;
};

Esiste un modo migliore per dichiarare un elenco di dimensioni fisse?

È stato utile?

Soluzione

Un hard keep come il tuo risolverà solo la dimensione al momento dell'inizializzazione, ma gli elementi potrebbero comunque essere aggiunti o eliminati in seguito, stai cercando di proteggerti da questa condizione?L'unico modo che mi viene in mente per garantire che gli elementi non vengano aggiunti o eliminati in seguito è emettere un evento sincronizzato sulla dimensione! = l'importo predeterminato:

event list_size_changed is true (wanted.size() != 5) @clk;

L'unica altra cosa che posso offrire è un po' di zucchero sintattico per il duro lavoro:

var warned : list of bool;
keep warned.size() == 5;

Altri suggerimenti

Non so nulla di specman, ma un elenco di dimensioni fisse è un array, quindi potrebbe indirizzarti da qualche parte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top