Parameterizable Macros for Intel® FPGAs User Guide

ID 772350
Date 9/30/2024
Public
Document Table of Contents

2.1.5. Simple Dual-Port RAM SystemVerilog Instantiation Template

Simple Dual-Port RAM SystemVerilog Instantiation Template

//Quartus Prime Parameterizable Macro Template
//Simple Dual Port RAM
//Documentation :
//https://www.intel.com/content/www/us/en/docs/programmable/772350/
//Macro Location :
//$QUARTUS_ROOTDIR/libraries/megafunctions/simple_dual_port_ram.v	
	
simple_dual_port_ram #(
 .IN_CLOCK_EN_A                           ("NORMAL"),
 .IN_CLOCK_EN_B                           ("NORMAL"),
 .OUT_CLOCK_EN_B                          ("NORMAL"),
 .DATA_WIDTH_A                            (8),
 .ADDR_WIDTH_A                            (11),
 .BYTE_EN_WIDTH_A                         (1),
 .DATA_WIDTH_B                            (8),
 .ADDR_WIDTH_B                            (11),
 .OUT_DATA_REG_CLK_B                      ("UNREGISTERED"),
 .ADDR_REG_CLK_B                          ("CLOCK0"),
 .OUT_DATA_ACLR_B                         ("NONE"),
 .OUT_DATA_SCLR_B                         ("NONE"),
 .ADDR_ACLR_B                             ("NONE"),
 .READ_DURING_WRITE_MODE_MIXED_PORTS      ("DONT_CARE"),
 .INIT_FILE                               (""),
 .INIT_FILE_LAYOUT                        ("PORT_A"),
 .MAX_DEPTH                               (2048),
 .RDCONTROL_REG_B                         ("CLOCK0"),
 .BYTEENA_REG_B                           ("CLOCK0"),
 .BYTE_SIZE                               (8)
  ) <instance_name> (
  .clock0         (_connected_to_clock0_),         //input, width = 1
  .clock1         (_connected_to_clock1_),         //input, width = 1
  .clocken0       (_connected_to_clocken0_),       //input, width = 1
  .clocken1       (_connected_to_clocken1_),       //input, width = 1
  .aclr0          (_connected_to_aclr0_),          //input, width = 1
  .aclr1          (_connected_to_aclr1_),          //input, width = 1
  .sclr           (_connected_to_sclr_),           //input, width = 1
  .data_a         (_connected_to_data_a_),         //input, width = DATA_WIDTH_A
  .address_a      (_connected_to_address_a_),      //input, width = ADDR_WIDTH_A
  .wren_a         (_connected_to_wren_a_),         //input, width =1
  .byteena_a      (_connected_to_byteena_a_),      //input, width = (BYTE_EN_WIDTH_A != 0 ? BYTE_EN_WIDTH_A : 1)
  .address_b      (_connected_to_address_b_),      //input, width = ADDR_WIDTH_B
  .rden_b         (_connected_to_rden_b_),         //input, width = 1
  .addressstall_a (_connected_to_addressstall_a_), //input, width = 1
  .addressstall_b (_connected_to_addressstall_b_), //input, width = 1
  .q_b            (_connected_to_q_b_)             //output, width = DATA_WIDTH_B
	);