Come posso dichiarare un elenco di lunghezza fissa in specman?
-
09-06-2019 - |
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?
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.