Article ID: 000078264 Content Type: Product Information & Documentation Last Reviewed: 09/09/2012

How to simulaiton the RAM with the Memory Initialization File (.mif)?

Environment

    Simulation
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Description How to simulaiton the RAM with the Memory Initialization File (.mif) ?
Resolution

The memory initializaiton file (.mif) format is not supported for some 3rd-party simulation tools, the workaround is following,

First, convert .mif to Hexadecimal (Intel-Format) .hex format with Sav as...

Second, modify the HDL code to change memory file name reference 

 altsyncram altsyncram_component (
    .clock0 (inclock),
    .wren_a (wren_a),
    .address_b (address_b),
    .clock1 (outclock),
    .data_b (data_b),
    .wren_b (wren_b),
    .address_a (address_a),
    .data_a (data_a),
    .q_a (sub_wire0),
    .q_b (sub_wire1),
    .aclr0 (1\'b0),
    .aclr1 (1\'b0),
    .addressstall_a (1\'b0),
    .addressstall_b (1\'b0),
    .byteena_a (1\'b1),
    .byteena_b (1\'b1),
    .clocken0 (1\'b1),
    .clocken1 (1\'b1),
    .clocken2 (1\'b1),
    .clocken3 (1\'b1),
    .eccstatus (),
    .rden_a (1\'b1),
    .rden_b (1\'b1));
 defparam
  altsyncram_component.address_reg_b = "CLOCK0",
  altsyncram_component.clock_enable_input_a = "BYPASS",
  altsyncram_component.clock_enable_input_b = "BYPASS",
  altsyncram_component.clock_enable_output_a = "BYPASS",
  altsyncram_component.clock_enable_output_b = "BYPASS",
  altsyncram_component.indata_reg_b = "CLOCK0",
  altsyncram_component.init_file = "test.mif",
  altsyncram_component.intended_device_family = "Cyclone IV GX",
  altsyncram_component.lpm_type = "altsyncram",
  altsyncram_component.numwords_a = 32,
  altsyncram_component.numwords_b = 32,
  altsyncram_component.operation_mode = "BIDIR_DUAL_PORT",
  altsyncram_component.outdata_aclr_a = "NONE",
  altsyncram_component.outdata_aclr_b = "NONE",
  altsyncram_component.outdata_reg_a = "CLOCK1",
  altsyncram_component.outdata_reg_b = "CLOCK1",
  altsyncram_component.power_up_uninitialized = "FALSE",
  altsyncram_component.read_during_write_mode_mixed_ports = "OLD_DATA",
  altsyncram_component.read_during_write_mode_port_a = "OLD_DATA",
  altsyncram_component.read_during_write_mode_port_b = "OLD_DATA",
  altsyncram_component.widthad_a = 5,
  altsyncram_component.widthad_b = 5,
  altsyncram_component.width_a = 8,
  altsyncram_component.width_b = 8,
  altsyncram_component.width_byteena_a = 1,
  altsyncram_component.width_byteena_b = 1,
  altsyncram_component.wrcontrol_wraddress_reg_b = "CLOCK0";

to

 altsyncram altsyncram_component (
    .clock0 (inclock),
    .wren_a (wren_a),
    .address_b (address_b),
    .clock1 (outclock),
    .data_b (data_b),
    .wren_b (wren_b),
    .address_a (address_a),
    .data_a (data_a),
    .q_a (sub_wire0),
    .q_b (sub_wire1),
    .aclr0 (1\'b0),
    .aclr1 (1\'b0),
    .addressstall_a (1\'b0),
    .addressstall_b (1\'b0),
    .byteena_a (1\'b1),
    .byteena_b (1\'b1),
    .clocken0 (1\'b1),
    .clocken1 (1\'b1),
    .clocken2 (1\'b1),
    .clocken3 (1\'b1),
    .eccstatus (),
    .rden_a (1\'b1),
    .rden_b (1\'b1));
 defparam
  altsyncram_component.address_reg_b = "CLOCK0",
  altsyncram_component.clock_enable_input_a = "BYPASS",
  altsyncram_component.clock_enable_input_b = "BYPASS",
  altsyncram_component.clock_enable_output_a = "BYPASS",
  altsyncram_component.clock_enable_output_b = "BYPASS",
  altsyncram_component.indata_reg_b = "CLOCK0",
  altsyncram_component.init_file = "test.hex",
  altsyncram_component.intended_device_family = "Cyclone IV GX",
  altsyncram_component.lpm_type = "altsyncram",
  altsyncram_component.numwords_a = 32,
  altsyncram_component.numwords_b = 32,
  altsyncram_component.operation_mode = "BIDIR_DUAL_PORT",
  altsyncram_component.outdata_aclr_a = "NONE",
  altsyncram_component.outdata_aclr_b = "NONE",
  altsyncram_component.outdata_reg_a = "CLOCK1",
  altsyncram_component.outdata_reg_b = "CLOCK1",
  altsyncram_component.power_up_uninitialized = "FALSE",
  altsyncram_component.read_during_write_mode_mixed_ports = "OLD_DATA",
  altsyncram_component.read_during_write_mode_port_a = "OLD_DATA",
  altsyncram_component.read_during_write_mode_port_b = "OLD_DATA",
  altsyncram_component.widthad_a = 5,
  altsyncram_component.widthad_b = 5,
  altsyncram_component.width_a = 8,
  altsyncram_component.width_b = 8,
  altsyncram_component.width_byteena_a = 1,
  altsyncram_component.width_byteena_b = 1,
  altsyncram_component.wrcontrol_wraddress_reg_b = "CLOCK0";

Related Products

This article applies to 1 products

Intel® Programmable Devices

1