Results 1 to 1 of 1

Thread: SCFIFO in LE-mode: empty and full not affected by write/read

  1. #1
    Join Date
    Jul 2015
    Posts
    1
    Rep Power
    1

    Default SCFIFO in LE-mode: empty and full not affected by write/read

    Hi,

    I am implementing a small Avalon-ST buffer using the SCFIFO in showahead mode implemented as LEs. I converted my project from Quartus Pro 17.1 to Pro 18.0 and since then I have had problems with the empty/full signals. When I write to the FIFO, the usedw signal is incremented as it should but empty and full don't chance.

    In the attached SignalTap screenshot I am writing my second two-word packet to the FIFO. Usedw starts from 2 and the FIFO goes full, but the status signals don't chance.

    At closer inspection with RTL Viewer, the empty and full signals seem to be static values generated in the fifo_state (a_fefifo) module. I have attached a picture of that as well.

    Is this a bug in the FIFO implementation, or is there something wrong with my parameters or some change in the recent version I have not noticed? I am now compiling the project with the FIFOs implemented on RAM blocks for testing.

    I am using the following parameters to instantiate the FIFO (ram output register and over/underflow checks were previously on):
    Code:
    ...
        parameter BYTES         = 32,
        parameter WIDTH         = 8,
        parameter CHANNELS      = 4,
        parameter ERROR_WIDTH   = 2,
        parameter DEVICE_FAMILY = "Arria 10",
        parameter BUFFER_DEPTH  = 4
    ...
        scfifo #(
            .intended_device_family  (DEVICE_FAMILY),
            .lpm_width               (BYTES*WIDTH + $clog2(BYTES) + 2 + $clog2(CHANNELS) + ERROR_WIDTH),
            .lpm_widthu              ($clog2(BUFFER_DEPTH)),
            .lpm_numwords            (BUFFER_DEPTH),
            
            .lpm_type                ("scfifo"),
            .enable_ecc              ("FALSE"),
            .add_ram_output_register ("OFF"),
            .lpm_showahead           ("ON"),
            .overflow_checking       ("OFF"),
            .underflow_checking      ("OFF"),
            .use_eab                 ("OFF")
        ) fifo_buf (
            .clock                   (clk),
            .wrreq                   (in.valid & ~fifo_full),
            .data                   ({in.data, in.empty, in.sop, in.eop, in.channel, in.error}),
            .usedw                   (fifo_usedw),
            .full                    (fifo_full),
            .empty                   (fifo_empty),
            .rdreq                   (out.ready & out.valid),
            .q                      ({out.data, out.empty, out.sop, out.eop, out.channel, out.error}),
            
            .aclr                    (arst),
            .almost_empty            (),
            .almost_full             (),
            .eccstatus               (),
            .sclr                    ()
        );
    Edit: Switching to RAM-implemented FIFO worked, but still curious to find out why this happened.
    Attached Images Attached Images
    Last edited by Arzk; July 4th, 2018 at 01:56 AM.

Similar Threads

  1. FIFO IP Full and Empty Simultaneously
    By ABierman1986 in forum Quartus II and EDA Tools Discussion
    Replies: 16
    Last Post: September 11th, 2017, 02:13 AM
  2. OnChip Fifo Status Shows simultaneous FULL and EMPTY!
    By happy420 in forum General Discussion Forum
    Replies: 2
    Last Post: March 10th, 2014, 05:41 PM
  3. Replies: 0
    Last Post: February 28th, 2014, 11:32 AM
  4. Replies: 0
    Last Post: December 9th, 2013, 06:45 AM
  5. read from scfifo wrong!how to use it?
    By chengangfeng in forum IP Discussion
    Replies: 1
    Last Post: November 15th, 2009, 05:01 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •