bsg_dataflow

tag

bsg_1_to_n_tagged

  • Overview

    This module is intended to take one input and send it to one of several channels according to tag.

  • Parameter

    NAME DESCRIPTION DEFAULT
    num_out_p input and output data width -1
    tag_width_lp input data width `BSG_SAFE_CLOG2(num_out_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock port
    RESET reset_i 1 reset port
    INPUT v_i width_p data input port
    tag_i tag_width_lp data input port
    ready_i num_out_p data input port
    OUTPUT yumi_o 1 data output port
    v_o num_out_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_1_to_n_tagged.jpg

bsg_1_to_n_tagged_fifo

  • Overview

    This module implements a FIFO that takes in a multiplexed stream on one end, and provides demultiplexed access on the other.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    num_out_p input data width -1
    els_p input data width “inv”
    unbuffered_mask_p input data width 0
    use_pseudo_large_fifo_p input data width 0
    tag_width_lp input data width `BSG_SAFE_CLOG2(num_out_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock port
    RESET reset_i 1 reset port
    INPUT v_i 1 data input port
    tag_i tag_width_lp data input port
    data_i width_p data input port
    yumi_i num_out_p data input port
    OUTPUT yumi_o 1 data output port
    v_o num_out_p data output port
    data_o num_out_p*width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_1_to_n_tagged_fifo.jpg

bsg_1_to_n_tagged_fifo_shared

  • Overview

    This module implements a FIFO that takes in a multiplexed stream on one end, and provides demultiplexed access on the other.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    num_out_p input data width -1
    els_p input data width “inv”
    unbuffered_mask_p input data width 0
    use_pseudo_large_fifo_p input data width 0
    tag_width_lp input data width `BSG_SAFE_CLOG2(num_out_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock port
    RESET reset_i 1 reset port
    INPUT v_i 1 data input port
    tag_i tag_width_lp data input port
    data_i width_p data input port
    yumi_i num_out_p data input port
    OUTPUT yumi_o 1 data output port
    v_o num_out_p data output port
    data_o num_out_p*width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_1_to_n_tagged_fifo_shared.jpg

Decode Releted Unit

bsg_8b10b_decode_comb

  • Overview

    This module is byte oriented DC balanced 8B/10B block transfer decoder.

  • Parameter

    None

  • Port

    TYPE NAME WIDTH DESCRIPTION
    INPUT data_i 10 data input port
    rd_i 1 data input port
    OUTPUT data_o 8 data output port
    k_o 1 data output port
    rd_o 1 data output port
    data_err_o 1 data output port
    rd_err_o 1 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_8b10b_decode_comb.jpg

bsg_8b10b_encode_comb

  • Overview

    This module is byte oriented DC balanced 8B/10B block transfer encoder.

  • Parameter

    None

  • Port

    TYPE NAME WIDTH DESCRIPTION
    INPUT data_i 8 data input port
    k_i 1 data input port
    rd_i 1 data input port
    OUTPUT data_o 10 data output port
    rd_o 1 data output port
    kerr_o 1 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_8b10b_encode_comb.jpg

bsg_8b10b_shift_decoder

  • Overview

    This module is byte oriented DC balanced 8B/10B block transfer decoder with shift register.

  • Parameter

    None

  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clock 1 clock input port
    INPUT data_i 1 data input port
    OUTPUT data_o 8 data output port
    k_o 1 data output port
    v_o 1 data output port
    frame_align_o 1 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_8b10b_shift_decoder.jpg

Channel Narrow Unit

bsg_channel_narrow

  • Overview

    This module takes output of a previous module and sends this data in smaller number of bits by receiving deque from next module.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_in_p input data width -1
    width_out_p output data width -1
    lsb_to_msb_p select signal 1
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clock 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_in_p data input port
    deque_i 1 data input port
    OUTPUT deque_o 1 data output port
    data_o 1width_out_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_channel_narrow.jpg

bsg_channel_narrow

  • Overview

    This module takes output of a previous module and sends this data in smaller number of bits by receiving deque from next module.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_in_p input data width -1
    width_out_p output data width -1
    lsb_to_msb_p select signal 1
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clock 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_in_p data input port
    deque_i 1 data input port
    OUTPUT deque_o 1 data output port
    data_o 1width_out_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_channel_narrow.jpg

Channel Tunnel Releted Unit

bsg_channel_tunnel

  • Overview

    This module allows you to multiplex multiple streams over a shared interconnect without having deadlock occur because of stream interleaving.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width 1
    num_in_p input and output data width “inv”
    remote_credits_p input data width “inv”
    use_pseudo_large_fifo_p input data width 0
    lg_remote_credits_lp internal signal width $clog2(remote_credits_p+1)
    lg_credit_decimation_p input data width `BSG_MIN(lg_remote_credits_lp,4)
    tag_width_lp input data width $clog2(num_in_p+1)
    tagged_width_lp input data width tag_width_lp + width_p
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clock 1 clock input port
    RESET reset_i 1 reset input port
    INPUT multi_data_i tagged_width_lp data input port
    multi_v_i 1 data input port
    multi_yumi_i 1 data input port
    data_i num_in_p*width_p data input port
    v_i num_in_p data input port
    yumi_i num_in_p data input port
    OUTPUT multi_yumi_o 1 data output port
    multi_data_o tagged_width_lp data output port
    multi_v_o 1 data output port
    yumi_o num_in_p data output port
    data_o num_in_p*width_p data output port
    v_o num_in_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_channel_tunnel.jpg

bsg_channel_tunnel_in

  • Overview

    This module takes N channels and tunnels them, with credit flow control.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    num_in_p input and output data width “inv”
    remote_credits_p input data width “inv”
    use_pseudo_large_fifo_p input data width 0
    lg_remote_credits_lp internal signal width $clog2(remote_credits_p+1)
    lg_credit_decimation_p input data width 4
    tag_width_lp input data width $clog2(num_in_p+1)
    tagged_width_lp input data width tag_width_lp+width_p
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clock 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i tagged_width_lp data input port
    v_i 1 data input port
    yumi_i num_in_p data input port
    OUTPUT yumi_o 1 data output port
    data_o num_in_p*width_p data output port
    v_o num_in_p data output port
    credit_local_return_data_o num_in_p*lg_remote_credits_lp data output port
    credit_local_return_v_o num_in_p*width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_channel_tunnel_in.jpg

bsg_channel_tunnel_out

  • Overview

    This module takes N channels and tunnels them, with credit flow control.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    num_in_p input and output data width “inv”
    remote_credits_p input data width “inv”
    lg_remote_credits_lp internal signal width $clog2(remote_credits_p+1)
    lg_credit_decimation_p input data width 4
    tag_width_lp input data width $clog2(num_in_p+1)
    tagged_width_lp input data width tag_width_lp+width_p
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clock 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i num_in_p*width_p data input port
    v_i num_in_p data input port
    yumi_i 1 data input port
    credit_local_return_data_i 1 data output port
    credit_local_return_v_i 1 data output port
    credit_remote_return_data_i 1 data output port
    OUTPUT yumi_o num_in_p data output port
    data_o tagged_width_lp data output port
    v_o 1 data output port
    credit_remote_return_yumi_o 1 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_channel_tunnel_out.jpg

bsg_channel_tunnel_wormhole

  • Overview

    This module is a special version bsg_channel_tunnel that accepts wormhole packet.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    x_cord_width_p data width “inv”
    y_cord_width_p data width “inv”
    len_width_p length width “inv”
    reserved_width_p data width “inv”
    num_in_p total number of inputs multiplexed “inv”
    remote_credits_p max number of wormhole packets buffer can store “inv”
    max_payload_flits_p max possible “wormhole packet payload length” setting “inv”
    lg_credit_decimation_p how often does channel tunnel return credits to sender `BSG_MIN($clog2(remote_credits_p+1),4)
    use_pseudo_large_fifo_p use pseudo large fifo when read / write utilization is less than 50% 1
    bsg_ready_and_link_sif_width_lp local parameters `bsg_ready_and_link_sif_width(width_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clock 1 clock input port
    RESET reset_i 1 reset input port
    INPUT multi_data_i width_p data input port
    multi_v_i 1 data input port
    multi_yumi_i 1 data input port
    link_i num_in_p*bsg_ready_and_link_sif_width_lp data input port
    OUTPUT multi_ready_o 1 data output port
    multi_data_o width_p data output port
    multi_v_o 1 data output port
    link_o num_in_p*bsg_ready_and_link_sif_width_lp data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_channel_tunnel_wormhole.jpg

Compare Swap Releted Unit

bsg_compare_and_swap

  • Overview

    This module compare two values and swap them if they are not in order.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    t_p data range `BSG_SAFE_CLOG2(num_out_p)
    b_p data range `BSG_SAFE_CLOG2(num_out_p)
    cond_swap_on_equal_p select signal `BSG_SAFE_CLOG2(num_out_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    INPUT data_i 2*width_p data input port
    swap_on_equal_i 1 data input port
    OUTPUT data_o 2*width_p data output port
    swapped_o 1 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_compare_and_swap.jpg

Counter Releted Unit

bsg_credit_to_token

  • Overview

    This module is a counter for credits, that every decimation_p credits it would assert token_o signal once.

  • Parameter

    NAME DESCRIPTION DEFAULT
    decimation_p signal width -1
    max_val_p signal width -1
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT credit_i 1 data input port
    ready_i 1 data input port
    OUTPUT token_o 1 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_credit_to_token.jpg

RAM Releted Unit

bsg_fifo_1r1w_large

  • Overview

    This implementation is specifically intended for processes where 1RW rams are much cheaper than 1R1W rams.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    els_p internal signal width -1
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p data input port
    v_i 1 data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    v_o 1 data output port
    data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_1r1w_large.jpg

bsg_fifo_1r1w_large_banked

  • Overview

    This implementation using two banks is specifically intended for processes where 1RW rams are much cheaper than 1R1W rams.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    els_p internal signal width -1
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p data input port
    v_i 1 data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    v_o 1 data output port
    data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_1r1w_large_banked.jpg

bsg_fifo_1r1w_narrowed

  • Overview

    This module is a small fifo which has a bsg_channel_narrow on its output, that would send out each data in several steps based on the input and output width.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input data width -1
    els_p internal signal width -1
    width_out_p output data width -1
    lsb_to_msb_p select signal -1
    ready_THEN_valid_p select signal 0
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p data input port
    v_i 1 data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    v_o 1 data output port
    data_o width_out_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_1r1w_narrowed.jpg

bsg_fifo_1r1w_pseudo_large

  • Overview

    This fifo looks like a 1R1W fifo but actually is implemented with a 1RW FIFO for the bulk of its storage, and has a small 1R1W FIFO to help decouple reads and writes that may conflict.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input data width -1
    els_p internal signal width -1
    early_yumi_p select signal 1
    verbose_p select signal 0
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p data input port
    v_i 1 data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    v_o 1 data output port
    data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_1r1w_pseudo_large.jpg

bsg_fifo_1r1w_small

  • Overview

    This module implements a FIFO with 1 read and 1 write and can use different memory implementations.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    els_p internal signal width -1
    harden_p use harden IP or not 0
    ready_THEN_valid_p select signal 0
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p data input port
    v_i 1 data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    v_o 1 data output port
    data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_1r1w_pseudo_large.jpg

bsg_fifo_1r1w_small_credit_on_input

  • Overview

    This module converts between the valid-credit (input) and valid-ready (output) handshakes, by using a fifo to keep the data.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    els_p internal signal width -1
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p data input port
    v_i 1 data input port
    yumi_i 1 data input port
    OUTPUT credit_o 1 data output port
    v_o 1 data output port
    data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_1r1w_small_credit_on_input.jpg

bsg_fifo_1r1w_small_hardened

  • Overview

    This module is a FIFO with 1 read and 1 write,used for smaller FIFOs.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    els_p internal signal width -1
    ready_THEN_valid_p select signal 0
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p data input port
    v_i 1 data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    v_o 1 data output port
    data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_1r1w_small_hardened.jpg

bsg_fifo_1r1w_small_unhardened

  • Overview

    This module is a FIFO with 1 read and 1 write,using 1-write 1-async-read resgister file implementation.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    els_p internal signal width -1
    ready_THEN_valid_p select signal 0
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p data input port
    v_i 1 data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    v_o 1 data output port
    data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_1r1w_small_unhardened.jpg

bsg_fifo_1rw_large

  • Overview

    This module is a FIFO with only one read or write port, using a 1RW synchronous read ram.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    els_p internal signal width -1
    verbose_p select signal 0
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p data input port
    v_i 1 data input port
    enq_not_deq_i 1 data input port
    OUTPUT full_o 1 data output port
    empty_o 1 data output port
    data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_1rw_large.jpg

bsg_fifo_bypass

  • Overview

    This module is a FIFO bypass circuit.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    ready_THEN_valid_p select signal 0
  • Port

    TYPE NAME WIDTH DESCRIPTION
    INPUT data_i width_p data input port
    v_i 1 data input port
    yumi_i 1 data input port
    fifo_ready_i width_p data input port
    fifo_data_i width_p data input port
    fifo_v_i 1 data input port
    OUTPUT ready_o 1 data output port
    data_o width_p data output port
    v_o 1 data output port
    fifo_data_o width_p data output port
    fifo_v_o 1 data output port
    fifo_yumi_o 1 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_bypass.jpg

bsg_fifo_reorder

  • Overview

    This module is a reordering circuit for FIFO.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    els_p Internal signal range “inv”
    lg_els_lp input and output data width `BSG_SAFE_CLOG2(els_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT fifo_alloc_yumi_i 1 data input port
    write_v_i 1 data input port
    write_id_i 1 data input port
    write_data_i width_p data input port
    fifo_deq_yumi_i 1 data input port
    OUTPUT fifo_alloc_v_o 1 data output port
    fifo_alloc_id_o lg_els_lp data output port
    fifo_deq_v_o 1 data output port
    fifo_deq_data_o width_p data output port
    empty_o 1 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_reorder.jpg

bsg_fifo_shift_datapath

  • Overview

    This module creates an array of shift registers, with independently controlled three input muxes.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    els_p input data width “inv”
    default_p default initial value { (width_p) {1’b0} }
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    INPUT data_i width_p data input port
    sel_i els_p*2 data input port
    OUTPUT data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_shift_datapath.jpg

bsg_fifo_tracker

  • Overview

    This module returns whether FIFO is empty or full.

  • Parameter

    NAME DESCRIPTION DEFAULT
    els_p input and output data width -1
    ptr_width_lp input and output data width `BSG_SAFE_CLOG2(els_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT enq_i 1 data input port
    deq_i 1 data input port
    OUTPUT wptr_r_o ptr_width_lp data output port
    rptr_r_o ptr_width_lp data output port
    rptr_n_o ptr_width_lp data output port
    full_o 1 data output port
    empty_o 1 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_fifo_tracker.jpg

bsg_flatten_2D_array

  • Overview

    This module converts a two-dimensional array to a one-dimensional array.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    items_p input and output data width -1
  • Port

    TYPE NAME WIDTH DESCRIPTION
    INPUT i width_p*items_p data input port
    OUTPUT o width_p*items_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_flatten_2D_array.jpg

bsg_flow_convert

  • Overview

    This module converts between the various link-level flow-control protocols.

  • Parameter

    NAME DESCRIPTION DEFAULT
    send_v_and_ready_p input data width 0
    send_v_then_yumi_p select signal 0
    send_ready_then_v_p select signal 0
    send_retry_then_v_p select signal 0
    send_v_and_retry_p select signal 0
    recv_v_and_ready_p select signal 0
    recv_v_then_yumi_p select signal 0
    recv_ready_then_v_p select signal 0
    recv_v_and_retry_p select signal 0
    recv_v_then_retry_p select signal 0
    width_p input and output data width 1
  • Port

    TYPE NAME WIDTH DESCRIPTION
    INPUT v_i width_p data input port
    fc_i width_p data input port
    OUTPUT fc_o width_p data output port
    v_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_flow_convert.jpg

bsg_flow_counter

  • Overview

    This module counts the number of free elements or number of existing elements in the connected module.

  • Parameter

    NAME DESCRIPTION DEFAULT
    els_p output data width -1
    count_free_p select signal 0
    ready_THEN_valid_p select signal 0
    ptr_width_lp output data width `BSG_WIDTH(els_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT v_i 1 data input port
    ready_i 1 data input port
    yumi_i 1 data input port
    OUTPUT count_o ptr_width_lp data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_flow_counter.jpg

bsg_make_2D_array

  • Overview

    This module creates a two-dimensional array.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    items_p input and output data width -1
  • Port

    TYPE NAME WIDTH DESCRIPTION
    INPUT i width_p*items_p data input port
    OUTPUT o width_p*items_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_make_2D_array.jpg

bsg_one_fifo

  • Overview

    This module is used to pipeline links and convert interfaces from valid/ready to valid->yumi.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p data input port
    v_i 1 data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    v_o 1 data output port
    data_o ptr_width_lp data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_one_fifo.jpg

parallel in serial out

bsg_parallel_in_serial_out

  • Overview

    This module takes in a multi-word data and serializes it to a single word output.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    els_p input data width -1
    hi_to_lo_p select signal 0
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i els_p*width_p data input port
    valid_i 1 data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    valid_o 1 data output port
    data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_parallel_in_serial_out.jpg

bsg_parallel_in_serial_out_dynamic

  • Overview

    This module takes in a multi-word data and serializes it to a single word output.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    max_els_p input data width “inv”
    lg_max_els_lp input data width `BSG_SAFE_CLOG2(max_els_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT v_i 1 data input port
    len_i lg_max_els_lp data input port
    data_i max_els_p*width_p data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    v_o 1 data output port
    len_v_o 1 data output port
    data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_parallel_in_serial_out_dynamic.jpg

selector

bsg_permute_box

  • Overview

    This module selects the input signal and outputs it.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    items_p input and output data width “inv”
    lg_items_lp input data width $bits(items_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    INPUT data_i width_p*items_p data input port
    select_i lg_items_lp*items_p data input port
    OUTPUT data_o width_p*items_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_permute_box.jpg

converter

bsg_ready_to_credit_flow_converter

  • Overview

    This module converts between the valid-ready (input) and valid-credit (output) handshakes, by keeping the count of available credits.

  • Parameter

    NAME DESCRIPTION DEFAULT
    credit_initial_p input and output data width -1
    credit_max_val_p input data width -1
    decimation_p select signal 1
    ptr_width_lp internal signal bit width `BSG_WIDTH(credit_max_val_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT v_i 1 data input port
    credit_i 1 data input port
    OUTPUT ready_o 1 data output port
    v_o 1 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_ready_to_credit_flow_converter.jpg

bsg_relay_fifo

  • Overview

    This module converts between the valid-ready (input) and valid-credit (output) handshakes, by keeping the count of available credits.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p data input port
    v_i 1 data input port
    ready_i 1 data input port
    OUTPUT ready_o 1 data output port
    v_o 1 data output port
    data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_relay_fifo.jpg

Round Robin Releted Unit

bsg_round_robin_1_to_n

  • Overview

    This module is intended to take one input and send it to one of several channels in round robin order.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p useless “inv”
    num_out_p input and output data width 2
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT valid_i 1 data input port
    ready_i num_out_p data input port
    OUTPUT ready_o 1 data output port
    valid_o num_out_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_round_robin_1_to_n.jpg

bsg_round_robin_2_to_2

  • Overview

    This module is intended for round robining on the input to a pair of fifos.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p*2 data input port
    v_i 2 data input port
    ready_i 2 data input port
    OUTPUT ready_o 2 data output port
    data_o width_p*2 data output port
    v_o 2 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_round_robin_2_to_2.jpg

bsg_rr_f2f_input

  • Overview

    This module is intended for round robining on the input to a pair of fifos.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i width_p*2 data input port
    v_i 2 data input port
    ready_i 2 data input port
    OUTPUT ready_o 2 data output port
    data_o width_p*2 data output port
    v_o 2 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_rr_f2f_input.jpg

bsg_round_robin_n_to_1

  • Overview

    This module is intended to merge the outputs of several fifos together to act as one.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    num_in_p input and output data width -1
    strict_p select signal “inv”
    tag_width_lp output data width `BSG_SAFE_CLOG2(num_in_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i num_in_p*width_p data input port
    v_i num_in_p data input port
    yumi_i 1 data input port
    OUTPUT yumi_o num_in_p data output port
    v_o 1 data output port
    data_o width_p data output port
    tag_o tag_width_lp data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_round_robin_n_to_1.jpg

sbox

bsg_sbox

  • Overview

    This module concentrates working channel signals to reduce the complexity of downstream logic.

  • Parameter

    NAME DESCRIPTION DEFAULT
    num_channels_p input and output data width “inv”
    channel_width_p input and output data width “inv”
    pipeline_indir_p select signal “inv”
    pipeline_outdir_p select signal 0
    one_hot_p select signal 1
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT calibration_done_i 1 data input port
    channel_active_i num_channels_p data input port
    in_v_i num_channels_p data input port
    in_data_i channel_width_p*num_channels_p data input port
    out_me_v_i num_in_p*width_p data input port
    out_me_data_i num_in_p data input port
    out_me_ready_i 1 data input port
    in_yumi_i 1 data input port
    OUTPUT in_yumi_o num_channels_p data output port
    in_v_o num_channels_p data output port
    in_data_o channel_width_p*num_channels_p data output port
    out_me_ready_o num_channels_p data output port
    out_me_v_o num_channels_p data output port
    out_me_data_o channel_width_p*num_channels_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_sbox.jpg

bsg_sbox_ctrl_concentrate

  • Overview

    This module generates permutation vectors that perform concentration (fwd) and deconcentration (bkwd).

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    lg_width_p output data width -1
  • Port

    TYPE NAME WIDTH DESCRIPTION
    INPUT vec_i width_p data input port
    OUTPUT fwd_perm_o lg_width_p*width_p data output port
    fwd_valid_o width_p data output port
    bkwd_perm_o lg_width_p*width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_sbox_ctrl_concentrate.jpg

Vectors Releted Unit

bsg_scatter_gather

  • Overview

    This module generates permutation vectors that perform concentration (fwd) and deconcentration (bkwd).

  • Parameter

    NAME DESCRIPTION DEFAULT
    vec_size_lp input and output data width “inv”
  • Port

    TYPE NAME WIDTH DESCRIPTION
    INPUT vec_i width_p data input port
    OUTPUT fwd_o lg_width_p*width_p data output port
    fwd_datapath_o width_p data output port
    bk_o lg_width_p*width_p data output port
    bk_datapath_o lg_width_p*width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_scatter_gather.jpg

data structure

bsg_serial_in_parallel_out

  • Overview

    This module is a data structure that takes one word per cycle and allows more than one word per cycle to exit and the number of words extracted can vary dynamically.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
    els_p internal initial signal bit width -1
    out_els_p input and output data width els_p
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT valid_i 1 data input port
    data_i width_p data input port
    yumi_cnt_i $clog2(out_els_p+1) data input port
    OUTPUT ready_o 1 data output port
    valid_o out_els_p data output port
    data_o out_els_p*width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_serial_in_parallel_out.jpg

bsg_serial_in_parallel_out_dynamic

  • Overview

    This module is a data structure that takes one word per cycle and allows more than one word per cycle to exit and the number of words extracted can vary dynamically.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    max_els_p internal initial signal bit width “inv”
    lg_max_els_lp input and output data width `BSG_SAFE_CLOG2(max_els_p)
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT v_i 1 data input port
    len_i width_p data input port
    data_i $clog2(out_els_p+1) data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    len_ready_o 1 data output port
    v_o 1 data output port
    data_o max_els_p*width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_serial_in_parallel_out_dynamic.jpg

bsg_serial_in_parallel_out_full

  • Overview

    This module is a simpler version of bsg_serial_in_parallel_out.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    els_p output data width “inv”
    hi_to_lo_p select signal 0
    use_minimal_buffering_p select signal 0
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT v_i 1 data input port
    data_i width_p data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    data_o els_p*width_p data output port
    v_o 1 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_serial_in_parallel_out_full.jpg

Shift Register Releted Unit

bsg_shift_reg

  • Overview

    This module implements a shift register of fixed latency.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    stages_p internal initial signal bit width “inv”
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT valid_i 1 data input port
    data_i width_p data input port
    OUTPUT valid_o 1 data output port
    data_o width_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_shift_reg.jpg

Sort Network Releted Unit

bsg_sort_4

  • Overview

    This module is a sorting network implementation.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    items_p input and output data width 4
    t_p inclusive range of bits width_p-1
    b_p inclusive range of bits 0
  • Port

    TYPE NAME WIDTH DESCRIPTION
    INPUT i width_p*items_p data input port
    OUTPUT o width_p*items_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_sort_4.jpg

bsg_sort_stable

  • Overview

    This module implements a stable 4-item sort.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    items_p input and output data width 4
    t_p inclusive range of bits width_p-1
    b_p inclusive range of bits 0
  • Port

    TYPE NAME WIDTH DESCRIPTION
    INPUT i width_p*items_p data input port
    OUTPUT o width_p*items_p data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_sort_stable.jpg

two buncher

bsg_two_buncher

  • Overview

    This module takes an incoming stream of words. if the output is read every cycle, the data passes straight through without latency. if the output is not read, then one element is buffered internally and either one or two elements may be pulled out on the next cycle.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width -1
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT data_i 1 data input port
    v_i width_p data input port
    ready_i width_p data input port
    OUTPUT ready_o 1 data output port
    data_o 2*width_p data output port
    v_o 2 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_two_buncher.jpg

Two FIFO

bsg_two_fifo

  • Overview

    This module implements two element FIFO.

  • Parameter

    NAME DESCRIPTION DEFAULT
    width_p input and output data width “inv”
    verbose_p select signal 0
    allow_enq_deq_on_full_p select signal 0
    ready_THEN_valid_p select signal allow_enq_deq_on_full_p
  • Port

    TYPE NAME WIDTH DESCRIPTION
    CLOCK clk_i 1 clock input port
    RESET reset_i 1 reset input port
    INPUT v_i 1 data input port
    yumi_i 1 data input port
    OUTPUT ready_o 1 data output port
    data_o width_p data output port
    v_o 1 data output port
  • Assertion

    None

  • Details & Circuit structure

    source/image/bsg_two_fifo.jpg