Release notes
Release history and changelog for the hdl-modules project.
We follow the semantic versioning scheme MAJOR.MINOR.PATCH:
MAJORis bumped when incompatible API changes are made.MINORis bumped when functionality is added in a backward-compatible manner.PATCHis bumped when backward-compatible bug fixes are made.
Unreleased (YYYY-MM-DD)
Changes since previous release
Fixes
Fix
ARREADYhandshaking bug in axi_lite_register_file.vhd.Fix bug in axi_simple_read_crossbar.vhd, axi_simple_write_crossbar.vhd, axi_lite_simple_read_crossbar.vhd and axi_lite_simple_write_crossbar.vhd.
Fix limitation/bug in axi_lite_mux.vhd.
Fix bug in axi_lite_register_file.vhd.
Breaking changes
Use more-compact VUnit mechanism for getting random seed in BFMs. Removes the
seedgeneric from
Requires VUnit version 5.0.0.dev11 or later.
6.2.1 (1 may 2025)
Changes since previous release
Fixes
Improvements in AXI write DMA C++ driver.
6.2.0 (31 march 2025)
Changes since previous release
Added
Add reset support to axi_lite_register_file.vhd.
6.1.0 (25 march 2025)
Changes since previous release
Added
Add event_aggregator.vhd.
Add
write_doneinterrupt aggregation mechanism to Module dma_axi_write_simple.
6.0.0 (18 january 2025)
Changes since previous release
Added
Fixed
Fix bug where asynchronous_fifo.vhd constraint would fail on UltraScale+ devices when FIFO mapped to LUTRAM primitives.
Breaking changes
Rename
resync_slv_level_coherentto resync_twophase.vhd.Rename
resync_slv_handshaketo resync_twophase_handshake.vhd.Rename common_pkg.vhd function
itetoif_then_else.Rename old
reg_filemodule to register_file and rework it. Note that this change is compatible with hdl-registers version 7.0.0 and later. If you use hdl-registers, the changes should be transparent. The changes are:Rename “reg” to “register”, “idx” to “index”, “reg_type” to “mode” for all files, types, constants.
Add
utilized_widthfield to register definition type.Optimize resource utilization of axi_lite_register_file.vhd.
Remove unused functions.
5.0.1 (9 july 2024)
Changes since previous release
Added
Add
resync_slv_handshake.Add
enable_iobgeneric to debounce.vhd.
Bug fixes
Respect the
include_unisimflag inmodule_hard_fifo.get_simulation_filesmethod.Ensure deterministic latency of resync_pulse.vhd,
resync_slv_level_coherent, and debounce.vhd.
Other changes
Waive irrelevant Vivado CDC warnings to make reports more clean.
5.0.0 (8 may 2024)
Changes since previous release
Added
Add Module lfsr.
Add saturate_signed.vhd.
Internal changes
Optimize library and package imports in a way that decreases simulation time by 20-40% for small testbenches using GHDL.
Breaking changes
Remove protocol checking from handshake_master.vhd and handshake_slave.vhd. If protocol checking is still wanted in places where these are instantiated, an axi_stream_protocol_checker.vhd instance alongside is recommended.
Split
bfm.bfm_pkgintoChange
stall_configgeneric ofto use type
stall_configuration_tfrom stall_bfm_pkg.vhd.
4.0.0 (25 january 2024)
Changes since previous release
Added
Implement our own lightweight axi_stream_protocol_checker.vhd that greatly reduces CPU cycles consumed during simulation.
Add axi_read_range_checker.vhd and axi_write_range_checker.vhd.
Add
userport to width_conversion.vhd.
Fixes
Fix bug in axi_lite_register_file.vhd where a non-zero default value for a register of mode
wpulseorr_wpulsewould only be asserted onregs_downthe very first clock cycle.Fix bug where axi_read_throttle.vhd could lower
ARVALIDwithout an AR transaction having occurred.
Breaking changes
Remove unused
addr_widthgeneric from axi_read_master.vhd and axi_write_master.vhd.Rename axi_lite_mux.vhd generic
slave_addrstobase_addressesand change type toaddr_vec_t, i.e. a list of base addresses. Same for axi_lite_to_vec.vhd genericaxi_lite_slaves. The address mask is now calculated internally.Rename optional axi_write_master.vhd generic
set_axi3_w_idtoenable_axi3.Remove optional
rule_4_performance_check_max_waitsgeneric from handshake_master.vhd and handshake_slave.vhd which is not needed by new axi_stream_protocol_checker.vhd.Break axi module into axi_lite and axi_stream.
Move from axi to axi_stream:
3.0.2 (27 september 2023)
Changes since previous release
Added
Add
num_bits_needed_signedto math_pkg.vhd.
3.0.1 (27 september 2023)
Changes since previous release
Added
Add
stable_rising_edgeandstable_falling_edgeports to debounce.vhd.Add handshake_merger.vhd.
3.0.0 (2 march 2023)
Changes since previous release
Added
Add handshake_mux.vhd.
Add time_pkg.vhd.
Bug fixes
Fix bug where fifo.vhd in packet mode could propagate erroneous data when a packet of length one was written to an almost empty FIFO.
Fix bug where fifo.vhd and asynchronous_fifo.vhd in packet mode could have bubble cycles in packet readout when output register was enabled.
Fix bug where axi_stream_master.vhd, axi_write_master.vhd and axi_read_master.vhd would not drive bus with
'X'whenvalidwas low.
Breaking changes
Rename axi_stream_slave.vhd port
num_bursts_checkedtonum_packets_checked.Rename width_conversion.vhd generic
support_unaligned_burst_lengthtosupport_unaligned_packet_length.Remove the
remove_strobed_out_invalid_datageneric from axi_stream_slave.vhd and axi_write_slave.vhd. This behavior is now always enabled.Change to use unresolved VHDL types consistently.
std_ulogicinstead ofstd_logic.std_ulogic_vectorinstead ofstd_logic_vector.u_signedinstead ofsigned.u_unsignedinstead ofunsigned.
Move
to_periodandto_frequency_hzfunctions from types_pkg.vhd to time_pkg.vhd.Remove erroneous assignment of
asynchronous_fifoportread_levelwhen packet mode is enabled.Remove the rarely used
axi_w_fifoportread_levelwhich does not have valid value in all configurations.Remove the rarely used
axi_write_cdcportoutput_data_fifo_levelwhich does not have valid value in all configurations.
2.0.0 (24 august 2022)
Changes since previous release
Added
Add handshake_pipeline.vhd generic
pipeline_data_signalswith default valuetrue, and implement mode that pipelines control signals but not data.Add fifo.vhd and asynchronous_fifo.vhd generic
enable_output_registerwith default valuefalse, which adds a pipeline stage for RAM output data.Add axi_read_master.vhd and axi_write_master.vhd BFMs that create and verify AXI transactions.
Add axi_read_pipeline.vhd and axi_write_pipeline.vhd blocks that pipeline an AXI bus.
Bug fixes
Fix full throughput in keep_remover.vhd when not all input lanes are strobed.
Fix bug in axi_write_throttle.vhd where rogue
AWtransactions could occur.Fix handling of handshake signals in handshake_splitter.vhd to be AXI-Stream compliant.
Breaking changes
Rework handshake_splitter.vhd to use
std_logic_vectorforoutput_readyandoutput_valid. Introduce mandatory genericnum_interfaces.Change handshake_pipeline.vhd and axi_lite_pipeline.vhd generics
allow_poor_input_ready_timingwith default valuefalsetopipeline_control_signalswith default valueTrue.Rename axi_stream_slave.vhd and handshake_slave.vhd generic
remove_strobed_out_dont_caretoremove_strobed_out_invalid_data.Drive output signals with
'X'per default whenvalidis low in axi_stream_master.vhd.Rename generics
data_width_bitstodata_width,id_width_bitstoid_width, andstrobe_unit_width_bitstostrobe_unit_width_bitsin axi_stream_master.vhd and axi_stream_slave.vhd.Remove default value for
id_widthgeneric, which could potentially hide errors, in axi_slave.vhd, axi_read_slave.vhd and axi_write_slave.vhd. Now the user has to set an explicit value for every instance.Rework axi_write_throttle.vhd concept completely, as part of a bug fix. It is simpler and more light weight now. The
data_fifo_levelport as well as all generics have been removed.Rename generic
pipelinetopipeline_axi_litein axi_to_axi_lite_vec.vhd.
1.0.0 (20 october 2021)
Changes since previous release
Use get_hdl_modules() call in all module_*.py.
0.0.1 (19 october 2021)
First release of the standalone hdl-modules project.
modules folder copied directly from tsfpga release 9.0.0.
See tsfpga release notes for changelog of
earlier releases.