Você pode fazer isso passando o nome do arquivo de inicialização como parâmetro para o arquivo gerado pelo MegaWizard® para cada instância da ROM ou RAM no design de nível superior. Para isso, use o procedimento a seguir para editar o arquivo de wrapper gerado pelo Gerenciador de plug-in MegaWizard e instanciar as instâncias em seu design. O exemplo a seguir usa Verilog HDL para um bloco de memória ROM.
- Adicione a definição do parâmetro init_file ao arquivo de wrapper gerado pelo MegaWizard, da seguinte forma:
parameter init_file = "";
- Modifique a instação de megafunção no arquivo wrapper para atribuir o novo
init_file
parâmetro como oaltsyncram_component.init_file
valor do parâmetro, como se segue. Esta alteração torna o módulo DE ROM personalizado gerado pelo MegaWizard parametrizável e permite a instaenciação da ROM personalizada para definir o valor do arquivo de inicialização.defparam
altsyncram_component.init_file = init_file, - Exclua o valor existente do
altsyncram_component.init_file
parâmetro, se houver um no arquivo wrapper. O seguinte é um exemplo do arquivo de invólucro modificado:module my_rom (address, clock, q);
input [2:0] address;
input clock;
output [7:0] q;
parameter init_file = "";
wire [7:0] sub_wire0;
wire [7:0] q = sub_wire0[7:0];
altsyncram altsyncram_component (
...
defparam
altsyncram_component.init_file = init_file, ... - Para cada instância de ROM no design de nível superior, defina o
init_file
parâmetro para o nome do arquivo de inicialização desejado.O exemplo a seguir mostra uma instauração
my_rom
do módulo, onde o defparam é usado para passar o arquivo de inicialização .mif para o parâmetroinit_file
. O design pode incluir muitas instações desta ROM, cada uma usando um arquivo de inicialização diferente, configurando o defparam.module top_level_roms (addr, clk, q);
output [7:0] q;
input clk;
input [2:0] addr;my_rom u1 (.address(addr),.clock(clk),.q(q));
defparam u1.init_file = "rom_test.mif";
endmodule