คุณสามารถทําได้โดยการส่งชื่อไฟล์เริ่มต้นเป็นพารามิเตอร์ไปยังไฟล์ที่สร้างขึ้น MegaWizard® สําหรับแต่ละอินสแตนซ์ของ ROM หรือ RAM ในการออกแบบระดับบนสุด โดยทําตามขั้นตอนต่อไปนี้เพื่อแก้ไขไฟล์ห่อหุ้มที่สร้างขึ้นโดย MegaWizard Plug-In Manager และสร้างอินสแตนซ์ในการออกแบบของคุณทันที ตัวอย่างต่อไปนี้ใช้ Verilog HDL สําหรับบล็อกหน่วยความจํา ROM
- เพิ่มคําจํากัดความของพารามิเตอร์init_fileลงในไฟล์ห่อหุ้มที่สร้างขึ้น MegaWizard ดังนี้:
parameter init_file = "";
- แก้ไขการสร้างอินสแตนซ์เมกะฟังก์ชันในไฟล์ห่อหุ้มเพื่อกําหนดใหม่
init_file
พารามิเตอร์เป็นaltsyncram_component.init_file
ค่าพารามิเตอร์ เป็นดังนี้ การเปลี่ยนแปลงนี้ทําให้โมดูล ROM ที่กําหนดเอง MegaWizard สามารถปรับแต่งพารามิเตอร์ได้และช่วยให้การสร้างอินสแตนซ์ของ ROM ที่กําหนดเองเพื่อกําหนดค่าของไฟล์เริ่มต้นdefparam
altsyncram_component.init_file = init_file, - ลบค่าที่มีอยู่ของ
altsyncram_component.init_file
หากมีอยู่ในไฟล์ห่อหุ้ม ต่อไปนี้เป็นตัวอย่างของไฟล์ห่อหุ้มที่ดัดแปลง: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, ... - สําหรับอินสแตนซ์ ROM แต่ละตัวในการออกแบบระดับสูงสุด ให้ตั้งค่า
init_file
เป็นชื่อไฟล์การเริ่มต้นที่ต้องการตัวอย่างต่อไปนี้แสดงการสร้างอินสแตนซ์ของ
my_rom
โมดูลหนึ่งตัว ที่ซึ่งมีการใช้ defparam เพื่อส่งไฟล์เริ่มต้น .mif ไปยังพารามิเตอร์init_file
การออกแบบอาจรวมถึงการสร้างอินสแตนซ์ของ ROM นี้มากมาย แต่ละไฟล์ใช้ไฟล์เริ่มต้นที่แตกต่างกันโดยการตั้งค่า defparammodule 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