All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
stream_register
: FixDATA_WIDTH
of instantiated FIFO.stream_xbar
: Add missing argument in assertion error string.
- stream_to_mem: Allows to use memories with flow control (req/gnt) for requests but without flow control for output data to be used in streams.
- isochronous_spill_register: Isochronous clock domain crossing cutting all paths.
rr_arb_tree_tb
: Systemverilog testbench forrr_arb_tree
, which checks for fair throughput.cf_math_pkg::idx_width
: Constant function for defining the binary representation width of an index signal.
addr_decode
: Usecf_math_pkg::idx_width
for computing the index width, inline documentation.lzc
: Usecf_math_pkg::idx_width
for computing the index width, inline documentation.Bender
: Change levels of modules affected by depending oncf_math_pkg::idx_width()
.stream_xbar
: Fully connected stream bassed interconnect with variable number of inputs and outputs.stream_xbar
: Fully connected stream-bassed interconnect with a variable number of inputs and outputs.
- Improve tool compatibility.
rr_arb_tree
: Properly degeneraterr_i
andidx_o
signals.rr_arb_tree
: Add parameterFairArb
to distribute throughput of input requests evenly when not all inputs have requests active.stream_demux
: Properly degenerateinp_sel_i
signal.
- stream_fork_dynamic: Wrapper around
stream_fork
for partial forking. - stream_join: Join multiple Ready/Valid handshakes to one common handshake.
- SECDED (Single Error Correction, Double Error Detection) encoder and decoder
- SECDED Verilator-based testbench
- Travis build for SECDED module
- stream_fifo: Ready/Valid handshake wrapper around
fifo_v3
- id_queue: Fix generation of
head_tail_q
registers
- Handle degenerated
addr_decode
withNoIndices == 1
, change default parameters to32'd0
- Fix author section in Bender.yml
rr_arb_tree
: Add guard SVA statement for Verilator- Added missing sources in
Bender.yml
andsrc_files.yml
- Handle degenerated
onehot_to_bin
withONEHOT_WIDTH == 1
- Handle degenerated
id_queue
withCAPACITY == 1
orHT_CAPACITY == 1
- Fix
cdc_fifo_gray
to be a safe clock domain crossing (CDC)
- Added address map decoder module
- Handle degenerated
lzc
withWIDTH == 1
- Added spubstitution-permutation hash function module
- Added couning-bloom-filter module
spill_register
: Added Bypass parametercounter
: Added sticky overflow- Added counter with variable delta
- Added counter that tracks its maximum value
- Added formal testbench for
fifo
andfall_through_regsiter
- Fix path in
src_files.yml
forstream_arbiter
andstream_arbiter_flushable
- Added exponential backoff window module
- Added parametric Galois LFSR module with optional whitening feature
- Added
cf_math_pkg
: Constant Function implementations of mathematical functions for HDL elaboration
- Parametric payload data type for
rr_arb_tree
- The following arbiter implementations are deprecated and superseded by
rr_arb_tree
: - Priority arbiter
prioarbiter
- Round-robin arbiter
rrarbiter
- Add priority arbiter
- Add Pseudo Least Recently Used tree
- Add round robin arbiter mux tree
- Add selectable arbiter implementation for
stream_arbiter
andstream_arbiter_flushable
. One can choose between priority (prio
) and round-robin arbitration (rr
). - Add
$onehot0
assertion in one-hot to bin - Rework
rrarbiter
unit (usesrr_arb_tree
implementation underneath)
- Add stream fork
- Add fall-through register
- Add stream filter
- Add ID queue
sync_wedge
use existing synchronizer. This defines a single place where a tech-specific synchronizer can be defined.
- Fix FIFO push and pop signals in
stream_register
to observe interface prerequisites. - In
fifo_v3
, fix data output when pushing into empty fall-through FIFO. Previously, the data output of an empty fall-through FIFO with data at its input (andpush_i=1
) depended onpop_i
: Whenpop_i=0
, old, invalid data were visible at the output (even thoughempty_o=0
, indicating that the data output is valid). Only whenpop_i=1
, the data from the input fell through. One consequence of this bug was thatdata_o
of thefall_through_register
could change whilevalid_o=1
, violating the basic stream specification.
- Add
fifo_v3
with generic fill count - Add 16 bit LFSR
- Add stream delayer
- Add stream arbiter
- Add register macros for RTL
- Add shift register
- Make number of registers of
rstgen_bypass
a parameter.
- Fix
valid_i
andgrant_i
guarantees ingeneric_fifo
for backward compatibility. - LZC: Synthesis of streaming operators in ternary operators
- Add missing entry for
popcount
toBender.yml
. - Add default values for parameters to improve compatibility with Synopsys DC and Vivado.
- Add popcount circuit
popcount
- Add lock feature to the rrarbiter. This prevents the arbiter to change the decision when we have pending requests that remain unaknowledged for several cycles.
- Add deglitching circuit
- Add generic clock divider
- Add edge detecter as alias to sync_wedge (name is more expressive)
- Add generic counter
- Add moving deglitcher
- Add reset synchronizer with explicit reset bypass in testmode
- Fix incompatibility with verilator
- Fix dependency to open-source repo
- Fix assertions in
fifo_v2
(write on full / read on empty did not trigger properly)
- Use proper
fifo_v2
ingeneric_fifo
module.
- Almost full/empty flags to FIFO, as
fifo_v2
.
- FIFO moved to
fifo_v1
and instantiatesfifo_v2
.
- Revert breaking changes to
fifo
.
- Add stream register (
stream_register
). - Add stream multiplexer and demultiplexer (
stream_mux
,stream_demux
). - Add round robin arbiter (
rrarbiter
). - Add leading zero counter (
lzc
).
- Deprecate
find_first_one
in favor oflzc
.
- Add binary to Gray code converter.
- Add Gray code to binary converter.
- Add Gray code testbench.
- Add CDC FIFO based on Gray counters. This is a faster alternative to the 2-phase FIFO which also works if a domain's clock has stopped.
- Rename
cdc_fifo
tocdc_fifo_2phase
. - Adjust CDC FIFO testbench to cover both implementations.
- Replace explicit clock gate in
fifo
with implicit one.
- Remove duplicate deprecated modules.
- Remove deprecated
rstgen
and fix interface.
- Remove deprecated
onehot_to_bin
.
- Add behavioural SRAM model
- Clock domain crossing FIFO
- Re-name new sync modules to resolve namespace collisions
- 2-phase clock domain crossing
- Add old common cells as deprecated legacy modules
- Backwards compatibility wrapper for
generic_LFSR_8bit
- Backwards compatibility wrapper for
generic_fifo
- Fix an issue in the spill register which causes transactions to be lost
- Add spill register
- Find first zero
- Re-implementation of the generic FIFO supporting all kinds of use-cases
- Testbench for FIFO
- Re-formatting and artistic code clean-up
- Fork of PULP common cells repository