Используемая мной решетка FPGA имеет встроенные ОЗУ, в которые можно предварительно загружать данные через двоичный файл конфигурации.
Предопределенные модули Verilog для этих ОЗУ реализуют это, предоставляя параметры с именами INIT_0, INIT_1, INIT_2,. .., каждое 256-битное значение, чтобы сделать это.
Так что мой код для создания ОЗУ выглядит следующим образом:
SB_RAM40_4KNRNW #(
.INIT_0(256'h00000FA00BB807D003E859E905E2F529486300000000000059E099E3404219E2),
.INIT_1(256'h0123456701234567012345670123456701234567012345670123456701234567),
.READ_MODE(0) ,
.WRITE_MODE(0)
) buf0L
(
.RDATA(readline0[15:0]),
.RADDR({3'b0,RAMadr[7:0]}),
......
);
Пока он работает, я хотел бы вытащить данные из другого файла, которые генерируются другими программами в процессе создания. Изменение файла .v в сборке не очень удобно, так как он отслеживается git.
Есть ли способ извлечь параметры модуля из другого файла или каким-либо другим способом передать их в компилятор?
В настоящее время я генерирую данные, вставляю их в источник .v, а затем собираю и загружаю их. Пока он работает, но не очень.
Конечно, есть несколько экземпляров этого модуля SB_RAM40_4KNRNW. В устройстве их 30.
(я использую инструменты с открытым исходным кодом yosys / nextpnr / icepack)
Спасибо за помощь!