Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
7 years ago

dcfifo "add_width" generic

Hello,

Attached is a prototype of a DCFIFO copied from altera_mf.vhd

entity DCFIFO is
-- GENERIC DECLARATION
    generic (
    lpm_width               : natural;
    lpm_widthu              : natural;
    lpm_numwords            : natural;
    delay_rdusedw           : natural := 1;
    delay_wrusedw           : natural := 1;
    rdsync_delaypipe        : natural := 0;
    wrsync_delaypipe        : natural := 0;
    intended_device_family  : string := "Stratix";
    lpm_showahead           : string := "OFF";
    underflow_checking      : string := "ON";
    overflow_checking       : string := "ON";
    clocks_are_synchronized : string := "FALSE";
    use_eab                 : string := "ON";
    add_ram_output_register : string := "OFF";
    add_width               : natural := 1;
    ram_block_type          : string := "AUTO";
    add_usedw_msb_bit       : string := "OFF";
    read_aclr_synch         : string := "OFF";
    write_aclr_synch        : string := "OFF";
    lpm_hint                : string := "USE_EAB=ON";
    enable_ecc              : string := "FALSE";
    lpm_type                : string := "dcfifo");
-- PORT DECLARATION
    port (
-- INPUT PORT DECLARATION
    data    : in std_logic_vector(lpm_width-1 downto 0);
    rdclk   : in std_logic;
    wrclk   : in std_logic;
    aclr    : in std_logic := '0';
    rdreq   : in std_logic;
    wrreq   : in std_logic;
-- OUTPUT PORT DECLARATION
    rdfull  : out std_logic;
    wrfull  : out std_logic;
    rdempty : out std_logic;
    wrempty : out std_logic;
    rdusedw : out std_logic_vector(lpm_widthu-1 downto 0);
    wrusedw : out std_logic_vector(lpm_widthu-1 downto 0);
    q       : out std_logic_vector(lpm_width-1 downto 0);
    eccstatus : out std_logic_vector(1 downto 0));
end DCFIFO;

What's the purpose of the "add_width" (marked in red) generic ?

I couldn't find any documentation about it online...

7 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    What about "lpm_hint" generic ?

    Have you seen any good documentation about it ?

    For example - the XML mentions only "UNUSED" as a possible entry. But I've seen it accept also other values...
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Contrary to what's written in this 6 year old post - I see LPM_HINT assigned different values by the tool (when I change some parameters in the GUI) , so I assume these ARE necessary for proper instantiation of the IP...

    What I'm looking for is good documentation of this generic.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    The only thing I ever used lpm_hint for in the past was for passing ALTSYNCRAM generics through a SC/DCFIFO. But they added those generics to the top of the FIFOs. I havent needed LPM_HINT since.

    What are you seeing passed through LPM_HINT?
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    The only thing I ever used lpm_hint for in the past was for passing ALTSYNCRAM generics through a SC/DCFIFO

    --- Quote End ---

    But does this mean that you can now ignore "lpm_hint" altogether?

    Shouldn't the string entered into "lpm_hint" coexist (and match) with all the new generics you mentioned ?
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Raise a my_support ticket if you want a better explination.

    Or just dont use it. Ive lived without it for years.