2015-10-28 3 views
2

Мне нужно открыть файл в системном коде Verilog, и мне нужно знать его относительный путь ко мне, чтобы использовать $ fopen. Итак, во-первых, мне нужно знать, где я стою. Есть ли возможность узнать мой текущий путь к каталогу? (с помощью $ display или чего-то еще)как я могу узнать свой текущий путь в системном verilog?

+0

Не напрямую. Обычно перед копированием или связыванием входных файлов в текущий каталог обычно запускается симуляция. Обычно это делается через скрипт. – toolic

+0

Рассмотрите возможность получения ответа, если они вам помогут –

ответ

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").