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.
- Remove
timeprecision/timeunitarguments - Update
common_verificationto0.2.0 - Update
tech_cells_genericto0.2.3
id_queue: Replace default or reset value of signals that were assigned'xwith'0.id_queue: Usecf_math_pkg::idx_width()for computation of localparams.
- Add
XSIMdefine guard for statements incompatible withxsim.
- assertions: Assertion include header with macros (from lowrisc)
sram.sv: Deprecated as it has been moved totech_cells_generic
stream_register: FixDATA_WIDTHof instantiated FIFO.stream_xbar: Add missing argument in assertion error string.- Lint style fixes
stream_omega: Fix parse issue with verible.src_files.yml: Fix compile order and missing modules.
- 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_widthfor computing the index width, inline documentation.lzc: Usecf_math_pkg::idx_widthfor 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.stream_omega_net: Stream-based network implementing an omega topology. Variable number of inputs, outputs and radix. Topology is isomorphic to a butterfly network.
- Improve tool compatibility.
rr_arb_tree: Properly degeneraterr_iandidx_osignals.rr_arb_tree: Add parameterFairArbto distribute throughput of input requests evenly when not all inputs have requests active.stream_demux: Properly degenerateinp_sel_isignal.
- stream_fork_dynamic: Wrapper around
stream_forkfor 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_qregisters
- Handle degenerated
addr_decodewithNoIndices == 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.ymlandsrc_files.yml
- Handle degenerated
onehot_to_binwithONEHOT_WIDTH == 1 - Handle degenerated
id_queuewithCAPACITY == 1orHT_CAPACITY == 1 - Fix
cdc_fifo_grayto be a safe clock domain crossing (CDC)
- Added address map decoder module
- Handle degenerated
lzcwithWIDTH == 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
fifoandfall_through_regsiter
- Fix path in
src_files.ymlforstream_arbiterandstream_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_arbiterandstream_arbiter_flushable. One can choose between priority (prio) and round-robin arbitration (rr). - Add
$onehot0assertion in one-hot to bin - Rework
rrarbiterunit (usesrr_arb_treeimplementation underneath)
- Add stream fork
- Add fall-through register
- Add stream filter
- Add ID queue
sync_wedgeuse existing synchronizer. This defines a single place where a tech-specific synchronizer can be defined.
- Fix FIFO push and pop signals in
stream_registerto 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_oof thefall_through_registercould change whilevalid_o=1, violating the basic stream specification.
- Add
fifo_v3with 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_bypassa parameter.
- Fix
valid_iandgrant_iguarantees ingeneric_fifofor backward compatibility. - LZC: Synthesis of streaming operators in ternary operators
- Add missing entry for
popcounttoBender.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_v2ingeneric_fifomodule.
- Almost full/empty flags to FIFO, as
fifo_v2.
- FIFO moved to
fifo_v1and 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_onein 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_fifotocdc_fifo_2phase. - Adjust CDC FIFO testbench to cover both implementations.
- Replace explicit clock gate in
fifowith implicit one.
- Remove duplicate deprecated modules.
- Remove deprecated
rstgenand 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