Мне нужно открыть файл в системном коде Verilog, и мне нужно знать его относительный путь ко мне, чтобы использовать $ fopen. Итак, во-первых, мне нужно знать, где я стою. Есть ли возможность узнать мой текущий путь к каталогу? (с помощью $ display или чего-то еще)как я могу узнать свой текущий путь в системном verilog?
2
A
ответ
2
На языке SystemVerilog нет ничего, чтобы предоставить вам эту информацию напрямую. Самый простой способ - использовать $value$plusargs
для получения опции командной строки (например, + current_directory = pathname), которую вы предоставляете из сценария при вызове симулятора.
Других вариантов включают в себя:
- импортирование рутины DPI C, которая возвращает текущий рабочий каталог. Эта процедура будет специфичной для ОС.
- Использование специальной конструкции, которая дает вам доступ к командной строке моделирования. ModelSim имеет пакет mti_fli, который вы можете импортировать, и он позволяет вам выполнить команду Tcl и вернуть результат в виде строки.
- Используя макрос
`__ FILE__
, чтобы получить путь к файлу, он появляется в виде строки и каким-то образом удаляет ее до пути к каталогу.
4
Основываясь на другой вопрос how-do-i-read-an-environment-variable-in-verilog-system-verilog:
import "DPI-C" function string getenv(input string env_name);
module top;
initial begin
$write("env = %s\n", {getenv("HOME"), "/FileName"});
end
endmodule
Рабочий каталог должен быть в $ PWD так и для вашего вопроса, вы можете использовать getenv("PWD")
.
Не напрямую. Обычно перед копированием или связыванием входных файлов в текущий каталог обычно запускается симуляция. Обычно это делается через скрипт. – toolic
Рассмотрите возможность получения ответа, если они вам помогут –