У меня есть макрос препроцессора, который представляет собой иерархический путь в моем проекте.
Пример:
`define HPATH top.chip.block
Мне нужно построить строку, которая содержит значение `HPATH
, поэтому в моем примере строка должна равняться top.chip.block
.
Есть ли способ построить такую строку?
Ни одна из следующих попыток не сработала:
string hpath;
hpath = "`HPATH"; // Results in hpath = "`HPATH"
hpath = \"``HPATH\"; // Doesn't compile
hpath = `HPATH; // Doesn't compile
Я хочу, чтобы hpath
было эквивалентно выполнению этого назначения hpath = "top.chip.block"
, но с использованием `HPATH
вместо повторного указания пути.
Я не могу использовать %m
, потому что мне нужна строка в моей среде UVM верхнего уровня, а не в модуле.
Еще немного предыстории: причина, по которой я хочу это сделать, заключается в том, что я использую бэкдор-доступ к регистрам в библиотеке классов UVM. API бэкдора требует установки hdl_path для блоков в дизайне в виде строки. У меня уже есть `определения для иерархических путей, и я пытаюсь повторно использовать их при указании hdl_paths, чтобы один и тот же путь не определялся дважды. Мой тестовый стенд будет использовать как иерархический путь, так и строковый путь.