Koluchiy 0 21 апреля, 2017 Опубликовано 21 апреля, 2017 · Жалоба Здравствуйте, уважаемые гуру. Есть 2 константы (или переменные), в одной из них путь к файлу, в другой - название. Ну типа, localparam Path = "D:\Path"; localparam Filename = "Filename.txt"; Надо из них слепить некую переменную, которую поймет Modelsim в функциях обращения к файлам. $readmemh и т.д.. Пока чего ни пробую - моделсим не понимает и ругается, что файл "" не находит. Подскажите, куда копать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fitc 0 21 апреля, 2017 Опубликовано 21 апреля, 2017 · Жалоба localparam Path = "D:\\Path\\"; localparam Filename = "Filename.txt"; $readmemh({Path, Filename}, mem); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 21 апреля, 2017 Опубликовано 21 апреля, 2017 · Жалоба А как сделать, чтобы работало вот такое: localparam Path = "D:/Sig0/test"; localparam Filename = "/ref.hex"; wire [7:0] Number; assign Number = "1"; initial begin $readmemh({Path, Number, Filename}, RefMem); end Результат такой: Failed to open readmem file "D:/Sig0/test/ref.hex" in read mode Т.е. не видит цифру, которую я пытаюсь приделать к названию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fitc 0 21 апреля, 2017 Опубликовано 21 апреля, 2017 · Жалоба localparam Path = "D:/Sig0/test"; localparam Filename = "/ref.hex"; reg[7:0] Number; initial begin Number = "1"; $readmemh({Path, Number, Filename}, RefMem); end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Koluchiy 0 24 апреля, 2017 Опубликовано 24 апреля, 2017 · Жалоба Спасибо! А почему с reg работает, а с wire - нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Fitc 0 24 апреля, 2017 Опубликовано 24 апреля, 2017 · Жалоба Спасибо! А почему с reg работает, а с wire - нет? Потому что assign и initial являются параллельными процессами, порядок выполнения которых не определен. В данном случае первым выполняется процесс initial, когда assign еще не выполнился и не присвоил значение wire. А inline-инициализация статических переменных ЕМНИП выполняется раньше выполнения процессов. Если в initial в начале добавить задержку, то вариант с wire также сработает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться