Radical Computer Technologies
Primitives / entity

radhdl_lattice_tdp_ram

Documentation version: 0.2.2-beta.1 / Subpackage: primitive_ram / Source package: radprimitive

ECP5 true dual-port RAM wrapper backed by explicit DP16KD blocks. This first implementation covers one 18x1024 DP16KD shape; wider/deeper banking should be added here rather than inferred in consumer cores.

Use Cases

Block Diagram

radhdl_lattice_tdp_ram radhdl entity clka a_addr a_din a_we clkb b_addr b_din b_we a_dout b_dout
VHDL Include And Instantiation Template

File Header

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

library radhdl;
-- Direct entity instantiation below does not require importing the entity name.

Component Declaration

component radhdl_lattice_tdp_ram is
  generic (
    DATA_WIDTH : positive := 18;
    ADDR_WIDTH : positive := 10;
    DEPTH : positive := 1024;
    SIMULATION : boolean := false
  );
  port (
    clka : in std_logic;
    a_addr : in std_logic_vector(ADDR_WIDTH - 1 downto 0);
    a_din : in std_logic_vector(DATA_WIDTH - 1 downto 0);
    a_dout : out std_logic_vector(DATA_WIDTH - 1 downto 0);
    a_we : in std_logic;
    clkb : in std_logic;
    b_addr : in std_logic_vector(ADDR_WIDTH - 1 downto 0);
    b_din : in std_logic_vector(DATA_WIDTH - 1 downto 0);
    b_dout : out std_logic_vector(DATA_WIDTH - 1 downto 0);
    b_we : in std_logic
  );
end component;

Direct Entity Instantiation

u_radhdl_lattice_tdp_ram : entity radhdl.radhdl_lattice_tdp_ram
  generic map (
    DATA_WIDTH => 18,
    ADDR_WIDTH => 10,
    DEPTH      => 1024,
    SIMULATION => false
  )
  port map (
    clka   => <clka_signal>,
    a_addr => <a_addr_signal>,
    a_din  => <a_din_signal>,
    a_dout => <a_dout_signal>,
    a_we   => <a_we_signal>,
    clkb   => <clkb_signal>,
    b_addr => <b_addr_signal>,
    b_din  => <b_din_signal>,
    b_dout => <b_dout_signal>,
    b_we   => <b_we_signal>
  );

Generics

NameTypeDefaultDescription
DATA_WIDTHpositive18
ADDR_WIDTHpositive10
DEPTHpositive1024
SIMULATIONbooleanfalse

Ports

NameDirectionTypeDescription
clkainstd_logic
a_addrinstd_logic_vector(ADDR_WIDTH - 1 downto 0)
a_dininstd_logic_vector(DATA_WIDTH - 1 downto 0)
a_doutoutstd_logic_vector(DATA_WIDTH - 1 downto 0)
a_weinstd_logic
clkbinstd_logic
b_addrinstd_logic_vector(ADDR_WIDTH - 1 downto 0)
b_dininstd_logic_vector(DATA_WIDTH - 1 downto 0)
b_doutoutstd_logic_vector(DATA_WIDTH - 1 downto 0)
b_weinstd_logic

Testbenches

tb_raddsp_lattice_mul interface timing diagram

Source: projects/colorlight_i9_primitive_smoke/testbenches/tb_raddsp_lattice_mul.vhd

No testbench description has been written yet.

Interface Timing Diagram

Source: projects/colorlight_i9_primitive_smoke/testbenches/tb_raddsp_lattice_mul.vhd

clka
clkb
a_addr
b_addr
a_din
a_dout
a_we
b_din
b_dout
b_we

Sources