Ich habe ein Präprozessor-Makro, das einen hierarchischen Pfad in mein Design darstellt.So erstellen Sie eine Zeichenfolge aus einem Makro vor dem Prozessor
Beispiel:
`define HPATH top.chip.block
Ich brauche einen String zu erstellen, die den Wert von `HPATH
hält, so in meinem Beispiel soll die Zeichenfolge top.chip.block
gleich.
Gibt es eine Möglichkeit, eine solche Zeichenfolge zu konstruieren?
Keiner der folgenden Versuche gearbeitet:
string hpath;
hpath = "`HPATH"; // Results in hpath = "`HPATH"
hpath = \"``HPATH\"; // Doesn't compile
hpath = `HPATH; // Doesn't compile
I hpath
gleichwertig sein wollen diese Zuordnung zu tun hpath = "top.chip.block"
, aber wieder `HPATH
statt eines festen Pfad.
Ich kann nicht %m
verwenden, weil ich die Zeichenfolge innerhalb meiner Top-Level-UVM-Umgebung, nicht innerhalb eines Moduls benötigen.
Ein wenig mehr Hintergrund: Der Grund, warum ich dies tun möchte, ist, weil ich Backdoor-Register-Zugriff in der UVM-Klassenbibliothek verwenden. Die Backdoor-API erfordert das Festlegen des HDL-Pfads auf die Blöcke innerhalb des Designs als Zeichenfolge. Ich habe bereits definiert für die hierarchischen Pfade und versuche, diese bei der Angabe der hdl_paths wiederzuverwenden, so dass ich nicht denselben Pfad zweimal definiert habe. Meine Testbench verwendet den hierarchischen Pfad und den Zeichenfolgenpfad.
Was haben Sie mit der Zeichenfolge zu tun, wenn Sie es haben? Wird dir der Spezifizierer '% m' helfen? – toolic
@toolic - Ich habe die Frage mit etwas mehr Details aktualisiert.Ich brauche den Pfad sowohl als String (für UVM Backdoor reg access) als auch als hierarchischen Pfad (für einige andere Funktionen). '% m' wird nicht helfen, da ich den Pfad in einem Bereich außerhalb des Moduls brauche. – dwikle