Frage

In E (specman) möchte ich Variablen deklarieren, die Listen sind, und ich möchte ihre Länge festlegen.

Für ein Mitglied einer Struktur ist das ganz einfach:

thread[2] : list of thread_t;

während für eine „reguläre“ Variable in einer Funktion das oben Gesagte nicht funktioniert und ich so etwas tun muss:

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

Gibt es eine bessere Möglichkeit, eine Liste mit fester Größe zu deklarieren?

War es hilfreich?

Lösung

Bei einem Hard Keep, wie Sie ihn haben, wird die Größe nur bei der Initialisierung festgelegt, aber Elemente könnten später immer noch hinzugefügt oder gelöscht werden. Versuchen Sie, sich vor diesem Zustand zu schützen?Die einzige Möglichkeit, die ich mir vorstellen kann, um sicherzustellen, dass Elemente später nicht hinzugefügt oder gelöscht werden, besteht darin, ein Ereignis auszusenden, das mit der Größe != der vorgegebenen Menge synchronisiert wird:

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

Das Einzige, was ich sonst noch anbieten kann, ist ein bisschen syntaktischer Zucker für den Hard Keep:

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

Andere Tipps

Ich weiß nichts über specman, aber eine Liste fester Größe ist ein Array, das könnte Sie also irgendwohin führen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top