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_Tand
AXI_LITE_TYPEDEF_*_CHAN_T) and request/response structs (AXI_TYPEDEF_RE{Q,SP}_Tand
AXI_LITE_TYPEDEF_RE{Q,SP}_T).
Changed
axi_atop_filterhas been changed from interfaces to struct ports. Please use the newly added
axi_atop_filter_intfmodule if you prefer interfaces.axi_cuthas been changed from interfaces to struct ports. Please use the newly added
axi_cut_intfmodule if you prefer interfaces.axi_delayerhas been changed from interfaces to struct ports. Please use the newly added
axi_delayer_intfmodule if you prefer interfaces.axi_joinhas been renamed toaxi_join_intf, andaxi_lite_joinhas been renamed to
axi_lite_join_intf. To join two structs, simply assign them instead.axi_multicuthas been changed from interfaces to struct ports. Please use the newly added
axi_multicut_intfmodule if you prefer interfaces.axi_modify_addresshas been changed from interfaces to struct ports. Please use the newly added
axi_modify_address_intfmodule if you prefer interfaces.axi_lite_to_axihas been changed from interfaces to struct ports. Please use the newly added
axi_lite_to_axi_intfmodule 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_resolverwas used together withaxi_lite_xbarand is removed along with it. If a
standalone replacement for this module is required, please useaddr_decoderfromcommon_cells.axi_arbiterwas used together withaxi_lite_xbarand is removed along with it. If a
standalone replacement of this module is required, please userr_arb_treefromcommon_cells.
A near-term release will introduce an AXI multiplexer and demultiplexer to suit protocol-specific
needs.axi_id_remaphad problems with ordering and ATOPs. A new, correct implementation will be
provided in a near-term release.axi_lite_cuthas been rendered unnecessary by changingaxi_cutto 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_cutwith the newly addedaxi_lite_cut_intf
module.axi_lite_multicut: same rationale and transition procedure as foraxi_lite_cut.- In
axi_pkg, the*Widthlocalparams and theid_t,addr_t, etc.typedefs 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.svhto define your
own types with a few lines of code (which you can put into your own package, for example).