Pour ce faire, vous pouvez transmettre le nom du fichier d’initialisation en tant que paramètre au fichier généré par MegaWizard® pour chaque instance de la ROM ou de la RAM dans la conception de haut niveau. Pour ce faire, utilisez la procédure suivante pour modifier le fichier de l’emballage généré par le gestionnaire de plug-in MegaWizard et activer instantanément les instances dans votre conception. L’exemple suivant utilise Verilog HDL pour un bloc mémoire rom.
- Ajoutez la définition du paramètre init_file au fichier de l’emballage généré par MegaWizard, comme suit :
parameter init_file = "";
- Modifiez l’instancation megafunction dans le fichier de l’emballage pour attribuer la nouvelle
init_file
paramètre comme lealtsyncram_component.init_file
valeur des paramètres, comme suit. Ce changement rend le module de ROM personnalisé généré par MegaWizard paramétrable, et permet l’instanciation de la ROM personnalisée pour définir la valeur du fichier d’initialisation.defparam
altsyncram_component.init_file = init_file, - Supprimer la valeur existante du
altsyncram_component.init_file
paramètre, s’il existe un paramètre dans le fichier de l’emballage. Vous trouverez ci-dessous un exemple de fichier de l’emballage modifié :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, ... - Pour chaque instance de ROM dans la conception de haut niveau, définissez la
init_file
paramètre au nom du fichier d’initialisation souhaité.L’exemple suivant montre une instanciation du
my_rom
module, où la defparam est utilisée pour passer le fichier d’initialisation .mif au paramètreinit_file
. La conception peut inclure de nombreuses instanciations de cette ROM, chacune utilisant un fichier d’initialisation différent, en paramétrant la 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