v0.8.0
Changes since 0.7.2
All modules have been changed from SystemVerilog interfaces to struct ports. Thus, all modules in
this repository are now available in tools that do not support interfaces. Interfaces are now
opt-in: every module has a variant with _intf
suffix that is functionally equivalent but has
interfaces instead of struct ports. If you would like to keep using interfaces, please add an
_intf
suffix to any module you are using from this repository. Some _intf
variants require more
parameters (e.g., to define the ID width) than the module prior to this release, but otherwise the
_intf
variants are drop-in replacements.
We encourage the use of structs to build AXI infrastructure, and we have added a set of typdef
macros and have extended the assign
macros to keep designers productive and prevent mismatches.
Additionally, we have removed a set of modules that had known issues. We will provide new
implementations for these modules in near-term releases and no longer support the removed modules.
The individual changes for each module follow.
Added
assign.svh
:- Macros for setting an AXI or AXI-Lite interface from channel or request/response structs inside
a process (AXI_SET_FROM_*
andAXI_LITE_SET_FROM_*
) and outside a process like an assignment
(AXI_ASSIGN_FROM_*
andAXI_LITE_ASSIGN_FROM_*
). - Macros for setting channel or request/response structs to the signals of an AXI or AXI-Lite
interface inside a process (AXI_SET_TO_*
andAXI_LITE_SET_TO_*
) and outside a process like
an assignment (AXI_ASSIGN_TO_*
,AXI_LITE_ASSIGN_TO_*
).
- Macros for setting an AXI or AXI-Lite interface from channel or request/response structs inside
typedef.svh
: Macros for defining AXI or AXI-Lite channel (AXI_TYPEDEF_*_CHAN_T
and
AXI_LITE_TYPEDEF_*_CHAN_T
) and request/response structs (AXI_TYPEDEF_RE{Q,SP}_T
and
AXI_LITE_TYPEDEF_RE{Q,SP}_T
).
Changed
axi_atop_filter
has been changed from interfaces to struct ports. Please use the newly added
axi_atop_filter_intf
module if you prefer interfaces.axi_cut
has been changed from interfaces to struct ports. Please use the newly added
axi_cut_intf
module if you prefer interfaces.axi_delayer
has been changed from interfaces to struct ports. Please use the newly added
axi_delayer_intf
module if you prefer interfaces.axi_join
has been renamed toaxi_join_intf
, andaxi_lite_join
has been renamed to
axi_lite_join_intf
. To join two structs, simply assign them instead.axi_multicut
has been changed from interfaces to struct ports. Please use the newly added
axi_multicut_intf
module if you prefer interfaces.axi_modify_address
has been changed from interfaces to struct ports. Please use the newly added
axi_modify_address_intf
module if you prefer interfaces.axi_lite_to_axi
has been changed from interfaces to struct ports. Please use the newly added
axi_lite_to_axi_intf
module if you prefer interfaces.
Removed
axi_lite_xbar
: This interconnect module was not a full crossbar and its routing rules interface
no longer fits our demands. A replacement will be provided in a near-term release.axi_address_resolver
was used together withaxi_lite_xbar
and is removed along with it. If a
standalone replacement for this module is required, please useaddr_decoder
fromcommon_cells
.axi_arbiter
was used together withaxi_lite_xbar
and is removed along with it. If a
standalone replacement of this module is required, please userr_arb_tree
fromcommon_cells
.
A near-term release will introduce an AXI multiplexer and demultiplexer to suit protocol-specific
needs.axi_id_remap
had problems with ordering and ATOPs. A new, correct implementation will be
provided in a near-term release.axi_lite_cut
has been rendered unnecessary by changingaxi_cut
to struct ports. To get a cut
with AXI-Lite ports, simply pass AXI-Lite channels and request/response structs as parameters. If
you prefer interfaces, please replace anyaxi_lite_cut
with the newly addedaxi_lite_cut_intf
module.axi_lite_multicut
: same rationale and transition procedure as foraxi_lite_cut
.- In
axi_pkg
, the*Width
localparam
s and theid_t
,addr_t
, etc.typedef
s have been
removed. There is no one-fits-all value of these parameters, so we cannot provide a generic
definition for them in this package. Please use the added macros intypedef.svh
to define your
own types with a few lines of code (which you can put into your own package, for example).