Skip to content

v0.8.0

Compare
Choose a tag to compare
@andreaskurth andreaskurth released this 19 Dec 14:03
· 1154 commits to master since this release

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_* and AXI_LITE_SET_FROM_*) and outside a process like an assignment
      (AXI_ASSIGN_FROM_* and AXI_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_* and AXI_LITE_SET_TO_*) and outside a process like
      an assignment (AXI_ASSIGN_TO_*, AXI_LITE_ASSIGN_TO_*).
  • 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 to axi_join_intf, and axi_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 with axi_lite_xbar and is removed along with it. If a
    standalone replacement for this module is required, please use addr_decoder from common_cells.
  • axi_arbiter was used together with axi_lite_xbar and is removed along with it. If a
    standalone replacement of this module is required, please use rr_arb_tree from common_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 changing axi_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 any axi_lite_cut with the newly added axi_lite_cut_intf
    module.
  • axi_lite_multicut: same rationale and transition procedure as for axi_lite_cut.
  • In axi_pkg, the *Width localparams and the id_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 in typedef.svh to define your
    own types with a few lines of code (which you can put into your own package, for example).