У меня есть макрос препроцессора, который представляет собой иерархический путь в моем проекте.
Пример:
`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 для блоков внутри проекта, как строки. У меня уже есть `define для иерархических путей и я пытаюсь повторно использовать их при указании hdl_paths, поэтому у меня нет одинакового пути, определенного дважды. Мой testbench будет использовать как иерархический путь, так и строковый путь.