Skip to content

Commit 6c61c46

Browse files
Release v0.39.0
1 parent 1c9a102 commit 6c61c46

25 files changed

+116
-68
lines changed

.github/workflows/doc.yml

+14-32
Original file line numberDiff line numberDiff line change
@@ -17,38 +17,20 @@ jobs:
1717
runs-on: ubuntu-latest # will fail)
1818
steps:
1919
- name: Checkout
20-
uses: actions/checkout@v2
20+
uses: actions/checkout@v3
2121
with:
2222
persist-credentials: false
2323

24-
- name: Cache cargo registry
25-
uses: actions/cache@v1
24+
- name: Install Bender
25+
uses: pulp-platform/pulp-actions/bender-install@v2
2626
with:
27-
path: ~/.cargo/registry
28-
key: ubuntu-latest-cargo-registry-${{ hashFiles('.github/workflows/doc.yml') }}
27+
version: 0.27.2
2928

30-
- name: Cache cargo index
31-
uses: actions/cache@v1
32-
with:
33-
path: ~/.cargo/git
34-
key: ubuntu-latest-cargo-index-${{ hashFiles('.github/workflows/doc.yml') }}
35-
36-
- name: Cache cargo binaries
37-
uses: actions/cache@v1
38-
with:
39-
path: ~/.cargo/bin
40-
key: ubuntu-latest-cargo-binaries-${{ hashFiles('.github/workflows/doc.yml') }}
41-
42-
- name: Install Bender and Morty
29+
- name: Install Morty
4330
run: |
44-
rustup update stable --no-self-update && rustup default stable
45-
if ! $(which bender); then
46-
cargo install bender --version 0.23.1
47-
fi
48-
if ! $(which morty); then
49-
cargo install --git https://github.com/zarubaf/morty --rev 4855119c1378d45d9ac35cfa525725d2786e68f3
50-
fi
51-
shell: bash
31+
sudo mkdir -p /tools/morty && sudo chmod 777 /tools/morty
32+
cd /tools/morty && curl --proto '=https' --tlsv1.2 https://pulp-platform.github.io/morty/init -sSf | bash -s -- 0.9.0
33+
echo "PATH=/tools/morty:$PATH" >> ${GITHUB_ENV}
5234
5335
- name: Build documentation
5436
run: |
@@ -76,14 +58,14 @@ jobs:
7658
echo "DOC_TARGET=$DOC_TARGET" >> $GITHUB_ENV
7759
7860
- name: Deploy documentation
79-
uses: JamesIves/github-pages-deploy-action@releases/v3
61+
uses: JamesIves/github-pages-deploy-action@v4
8062
if: >
8163
github.event_name == 'push'
8264
|| github.event.pull_request.head.repo.full_name == github.repository
8365
with:
84-
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
85-
BRANCH: gh-pages # The branch the action should deploy to.
86-
FOLDER: docs # The folder the action should deploy.
87-
TARGET_FOLDER: ${{ env.DOC_TARGET }}
88-
CLEAN: true # remove files from `TARGET_FOLDER` that are not in `FOLDER`
66+
token: ${{ secrets.GH_PAGES }}
67+
branch: gh-pages # The branch the action should deploy to.
68+
folder: docs # The folder the action should deploy.
69+
target-folder: ${{ env.DOC_TARGET }}
70+
clean: true # remove files from `TARGET_FOLDER` that are not in `FOLDER`
8971
# (`rsync --delete`)

Bender.yml

+2
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ package:
77
- "Matheus Cavalcante <[email protected]>"
88
- "Tim Fischer <[email protected]>"
99
- "Noah Huetter <[email protected]>"
10+
- "Cyril Koenig <[email protected]>"
1011
- "Andreas Kurth <[email protected]>"
1112
- "Stefan Mach <[email protected]>"
1213
- "Samuel Riedel <[email protected]>"
1314
- "Wolfgang Rönninger <[email protected]>"
15+
- "Paul Scheffler <[email protected]>"
1416
- "Fabian Schuiki <[email protected]>"
1517
- "Luca Valente <[email protected]>"
1618
- "Nils Wistoff <[email protected]>"

CHANGELOG.md

+50-18
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,62 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
88
## Unreleased
99

1010
### Added
11-
- Add `axi_chan_compare.sv`: Non-synthesizable module comparing two AXI channels of the same type
12-
- Add `axi_bus_compare` and `axi_slave_compare`; two synthesizable verification IPs meant to be used
13-
to compare two AXI buses on an FPGA.
14-
- Add `axi_lite_from_mem` and `axi_from_mem` acting like SRAMs making AXI4 requests downstream.
15-
- Add `axi_rw_join` and `axi_rw_split` to split/join AXI buses.
16-
- Add `#_width` functions returning the width of the AXI channels.
17-
- Add `axi_lite_dw_converter`: Convert the data width of AXI4-Lite transactions. Emmits the
18-
appropriate amount of downstream transactions to perform the whole requested access.
19-
11+
- Synthesizable IPs:
12+
- `axi_bus_compare` and `axi_slave_compare`; two synthesizable verification IPs meant to be used
13+
to compare two AXI buses on an FPGA.
14+
- `axi_lite_from_mem` and `axi_from_mem` acting like SRAMs making AXI4 requests downstream.
15+
- `axi_lite_dw_converter`: Convert the data width of AXI4-Lite transactions. Emits the
16+
appropriate amount of downstream transactions to perform the whole requested access.
17+
- `axi_rw_join` and `axi_rw_split` to split/join the read and write channels of an AXI bus.
18+
- `CT`-macros allowing to instantiate AXI structs with custom channel type names.
19+
- `axi_pkg': Add documentation to `xbar_cfg_t`.
20+
- Testbench IPs:
21+
- `axi_chan_compare.sv`: Non-synthesizable module comparing two AXI channels of the same type
22+
- Add `axi_file_master` to `axi_test`, allowing file-based AXI verification approaches.
23+
- Add `#_width` functions to `axi_test` returning the width of the AXI channels.
2024

2125
### Changed
22-
- `axi_demux`: Replace FIFO between AW and W channel by a register plus a counter. This prevents
23-
AWs from being issued to one master port while Ws from another burst are ongoing to another
24-
master port. This is required to prevents deadlocks due to circular waits downstream.
25-
- `axi_xbar`: Add parameter `PipelineStages` to `axi_pkg::xbar_cfg_t`. This adds `axi_multicuts`
26-
in the crossed connections in the xbar between the demuxes and muxes.
27-
- `axi_pkg`: Add documentation to `xbar_cfg_t`.
28-
- Move `mem_to_banks` to `common_cells`.
29-
- Update `common_cells` from version `v1.26.0` to `v1.27.0`.
26+
- Synthesizable IPs:
27+
- `axi_demux`: Replace FIFO between AW and W channel by a register plus a counter. This prevents
28+
AWs from being issued to one master port while Ws from another burst are ongoing to another
29+
master port. This is required to prevents deadlocks due to circular waits downstream. Removes
30+
`FallThrough` parameter from `axi_demux`.
31+
- Split the `axi_demux` logic and timing decoupling. A new module called `axi_demux_simple` contains
32+
the core logic.
33+
- `axi_dw_downsizer` uses `axi_pkg::RESP_EXOKAY` as a default value.
34+
- Simplify the `casez` in `axi_id_remap`.
35+
- Add optional explicit mapping to the `axi_id_serialize` module.
36+
- Expand `axi_to_mem` to `axi_to_detailed_mem` exposing all of AXI's side-signals; namely `id`, `user`,
37+
`cache`, `prot`, `qos`, `region`, `atop`. Add possibility to inject `err` and `exokay`.
38+
- `axi_xbar`: Add parameter `PipelineStages` to `axi_pkg::xbar_cfg_t`. This adds `axi_multicuts`
39+
in the crossed connections in the `xbar` between the *demuxes* and *muxes*. Improve inline
40+
documentation.
41+
- Move `mem_to_banks` to `common_cells`.
42+
- `axi_pkg`: Improve for better compatibility with *Vivado*.
43+
- `axi_test:
44+
- `axi_lite_rand_slave`: `R` response field is now randomized.
45+
- Remove excessive prints from random master and slave.
46+
- Properly size-align the address.
3047
- `axi_pkg`: Define `localparams` to define AXI type widths.
31-
- `axi_test:axi_rand_lite_slave`: R response field is now random.
48+
- Update `common_cells` from version `v1.26.0` to `v1.27.0`.
49+
- Tooling:
50+
- Use `pulp-platform/pulp-actions/gitlab-ci@v2` in the GitHub CI to communicate with the internal CI.
51+
- Bump `DC Shell version` from `2019.12` to `2022.03`
52+
- No longer check *ModelSim* versions `10.7e` and `2021.3`, add `2022.3`.
53+
- More thorough verification runs for the `xbar`.
54+
- Start transitioning from shell script to Makefile to run simulations.
55+
- Use `scripts/update_authors` to update authors, slight manual fixes performed.
3256

3357
### Fixed
58+
- `axi_to_mem_banked`: Reduce hardware by properly setting `UniqueIds`.
59+
- `axi_to_mem_interleaved` and `axi_to_mem_split` properly instantiates a demultiplexer now.
60+
Adds `test_i` port for DFT.
3461

62+
### Breaking Changes
63+
There are breaking changes between `v0.38.0` and `v0.39.0`:
64+
- `axi_demux`: `FallThrough` parameter was removed.
65+
- `axi_xbar`: `axi_pkg::xbar_cfg_t` added `PipelineStages` parameter.
66+
- `axi_to_mem_interleaved` and `axi_to_mem_split`: Added `test_i` input port.
3567

3668
## 0.38.0 - 2022-09-28
3769

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ In addition to the documents linked in the following table, we are setting up [d
2626
| [`axi_cdc`](src/axi_cdc.sv) | AXI clock domain crossing based on a Gray FIFO implementation. | |
2727
| [`axi_cut`](src/axi_cut.sv) | Breaks all combinatorial paths between its input and output. | |
2828
| [`axi_delayer`](src/axi_delayer.sv) | Synthesizable module which can (randomly) delays AXI channels. | |
29+
| [`axi_demux_simple`](src/axi_demux_simple.sv) | Demux without spill registers. | [Doc](doc/axi_demux.md) |
2930
| [`axi_demux`](src/axi_demux.sv) | Demultiplexes an AXI bus from one slave port to multiple master ports. | [Doc](doc/axi_demux.md) |
3031
| [`axi_dw_converter`](src/axi_dw_converter.sv) | A data width converter between AXI interfaces of any data width. | |
3132
| [`axi_dw_downsizer`](src/axi_dw_downsizer.sv) | A data width converter between a wide AXI master and a narrower AXI slave. | |
@@ -59,6 +60,7 @@ In addition to the documents linked in the following table, we are setting up [d
5960
| [`axi_rw_join`](src/axi_rw_join.sv) | Joins a read and a write slave into one single read / write master. | |
6061
| [`axi_rw_split`](src/axi_rw_split.sv) | Splits a single read / write slave into one read and one write master. | |
6162
| [`axi_serializer`](src/axi_serializer.sv) | Serializes transactions with different IDs to the same ID. | |
63+
| [`axi_slave_compare`](src/axi_slave_compare.sv) | Compares two slave devices. | |
6264
| [`axi_throttle`](src/axi_throttle.sv) | Limits the maximum number of outstanding transfers sent to the downstream logic. | |
6365
| [`axi_test`](src/axi_test.sv) | A set of testbench utilities for AXI interfaces. | |
6466
| [`axi_to_axi_lite`](src/axi_to_axi_lite.sv) | AXI4 to AXI4-Lite protocol converter. | |
@@ -85,6 +87,7 @@ In addition to the modules above, which are available in synthesis and simulatio
8587
| [`axi_chan_logger`](src/axi_test.sv) | Logs the transactions of an AXI4(+ATOPs) port to files. |
8688
| [`axi_driver`](src/axi_test.sv) | Low-level driver for AXI4(+ATOPs) that can send and receive individual beats on any channel. |
8789
| [`axi_dumper`](src/axi_dumper.sv) | Dumps log to file to be interpreted by `axi_dumper_interpret` script for debugging purposes. |
90+
| [`axi_file_master`](src/axi_test.sv) | AXI4 master for file-based testbenches |
8891
| [`axi_lite_driver`](src/axi_test.sv) | Low-level driver for AXI4-Lite that can send and receive individual beats on any channel. |
8992
| [`axi_lite_rand_master`](src/axi_test.sv) | AXI4-Lite master component that issues random transactions within user-defined constraints. |
9093
| [`axi_lite_rand_slave`](src/axi_test.sv) | AXI4-Lite slave component that responds to transactions with constrainable random delays and data. |

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.38.0
1+
0.39.0

axi.core

+10-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CAPI=2:
22

3-
name : pulp-platform.org::axi:0.38.0
3+
name : pulp-platform.org::axi:0.39.0
44

55
filesets:
66
rtl:
@@ -22,7 +22,7 @@ filesets:
2222
- src/axi_cdc_src.sv
2323
- src/axi_cut.sv
2424
- src/axi_delayer.sv
25-
- src/axi_demux.sv
25+
- src/axi_demux_simple.sv
2626
- src/axi_dw_downsizer.sv
2727
- src/axi_dw_upsizer.sv
2828
- src/axi_fifo.sv
@@ -31,6 +31,7 @@ filesets:
3131
- src/axi_isolate.sv
3232
- src/axi_join.sv
3333
- src/axi_lite_demux.sv
34+
- src/axi_lite_dw_converter.sv
3435
- src/axi_lite_from_mem.sv
3536
- src/axi_lite_join.sv
3637
- src/axi_lite_lfsr.sv
@@ -46,23 +47,25 @@ filesets:
4647
- src/axi_serializer.sv
4748
- src/axi_slave_compare.sv
4849
- src/axi_throttle.sv
49-
- src/axi_to_mem.sv
50+
- src/axi_to_detailed_mem.sv
5051
# Level 3
5152
- src/axi_cdc.sv
53+
- src/axi_demux.sv
5254
- src/axi_err_slv.sv
5355
- src/axi_dw_converter.sv
5456
- src/axi_from_mem.sv
5557
- src/axi_id_serialize.sv
5658
- src/axi_lfsr.sv
5759
- src/axi_multicut.sv
5860
- src/axi_to_axi_lite.sv
59-
- src/axi_to_mem_banked.sv
60-
- src/axi_to_mem_interleaved.sv
61-
- src/axi_to_mem_split.sv
61+
- src/axi_to_mem.sv
6262
# Level 4
6363
- src/axi_iw_converter.sv
6464
- src/axi_lite_xbar.sv
6565
- src/axi_xbar.sv
66+
- src/axi_to_mem_banked.sv
67+
- src/axi_to_mem_interleaved.sv
68+
- src/axi_to_mem_split.sv
6669
- src/axi_chan_compare.sv
6770
- src/axi_dumper.sv
6871
- src/axi_sim_mem.sv
@@ -87,6 +90,7 @@ filesets:
8790
- test/tb_axi_fifo.sv
8891
- test/tb_axi_isolate.sv
8992
- test/tb_axi_iw_converter.sv
93+
- test/tb_axi_lite_dw_converter.sv
9094
- test/tb_axi_lite_mailbox.sv
9195
- test/tb_axi_lite_regs.sv
9296
- test/tb_axi_lite_to_apb.sv

include/axi/typedef.svh

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//
1212
// Authors:
1313
// - Andreas Kurth <[email protected]>
14+
// - Thomas Benz <[email protected]>
1415
// - Florian Zaruba <[email protected]>
1516
// - Wolfgang Roenninger <[email protected]>
1617

scripts/run_verilator.sh

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
# - Fabian Schuiki <[email protected]>
1515
# - Florian Zaruba <[email protected]>
1616
# - Andreas Kurth <[email protected]>
17+
# - Thomas Benz <[email protected]>
1718

1819
set -e
1920
ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)

scripts/run_vsim.sh

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
# Authors:
1414
# - Andreas Kurth <[email protected]>
1515
# - Fabian Schuiki <[email protected]>
16+
# - Wolfgang Roenninger <[email protected]>
1617

1718
set -euo pipefail
1819
ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)

scripts/update_authors

+3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ declare -A hide=( \
1919
# Map each author name to an email address.
2020
declare -A emails=( \
2121
["Andreas Kurth"]="[email protected]" \
22+
["Cyril Koenig"]="[email protected]" \
2223
["Fabian Schuiki"]="[email protected]" \
2324
["Florian Zaruba"]="[email protected]" \
2425
["Matheus Cavalcante"]="[email protected]" \
@@ -30,6 +31,8 @@ declare -A emails=( \
3031
["Luca Valente"]="[email protected]" \
3132
["Noah Huetter"]="[email protected]" \
3233
["Nils Wistoff"]="[email protected]" \
34+
["Nicole Narr"]="[email protected]" \
35+
["Paul Scheffler"]="[email protected]" \
3336
["Tim Fischer"]="[email protected]" \
3437
)
3538

src/axi_chan_compare.sv

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
// specific language governing permissions and limitations under the License.
1010
//
1111
// Authors:
12-
// - Thomas Benz <[email protected]>
12+
// - Thomas Benz <[email protected]>
1313
// - Paul Scheffler <[email protected]>
14-
// - Tim Fischer <[email protected]>
14+
// - Tim Fischer <[email protected]>
1515

1616
/// Non-synthesizable module comparing two AXI channels of the same type
1717
module axi_chan_compare #(

src/axi_demux.sv

+2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
// specific language governing permissions and limitations under the License.
1010
//
1111
// Authors:
12+
// - Michael Rogenmoser <[email protected]>
1213
// - Wolfgang Roenninger <[email protected]>
14+
// - Thomas Benz <[email protected]>
1315
// - Andreas Kurth <[email protected]>
1416

1517
`include "common_cells/assertions.svh"

src/axi_demux_simple.sv

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
//
1111
// Authors:
1212
// - Wolfgang Roenninger <[email protected]>
13+
// - Michael Rogenmoser <[email protected]>
14+
// - Thomas Benz <[email protected]>
1315
// - Andreas Kurth <[email protected]>
1416

1517
`include "common_cells/assertions.svh"

src/axi_from_mem.sv

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
//
1111
// Authors:
1212
// - Christopher Reinwardt <[email protected]>
13-
// - Nicole Narr <[email protected]
13+
// - Nicole Narr <[email protected]>
1414

1515
`include "axi/typedef.svh"
1616

src/axi_id_serialize.sv

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//
1212
// Authors:
1313
// - Andreas Kurth <[email protected]>
14+
// - Paul Scheffler <[email protected]>
1415

1516
`include "axi/assign.svh"
1617
`include "axi/typedef.svh"

src/axi_lite_dw_converter.sv

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// specific language governing permissions and limitations under the License.
1010

1111
// Authors:
12-
// - Wolfgang Rönninger <[email protected]>
12+
// - Wolfgang Roenninger <[email protected]>
1313

1414
/// # AXI4-Lite data width downsize module.
1515
///

src/axi_lite_from_mem.sv

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
//
1111
// Authors:
1212
// - Wolfgang Roenninger <[email protected]>
13+
// - Nicole Narr <[email protected]>
1314

1415
/// Protocol adapter which translates memory requests to the AXI4-Lite protocol.
1516
///

src/axi_pkg.sv

+2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@
1212
// Authors:
1313
// - Andreas Kurth <[email protected]>
1414
// - Florian Zaruba <[email protected]>
15+
// - Thomas Benz <[email protected]>
1516
// - Wolfgang Roenninger <[email protected]>
1617
// - Fabian Schuiki <[email protected]>
18+
// - Cyril Koenig <[email protected]>
1719
// - Matheus Cavalcante <[email protected]>
1820

1921
//! AXI Package

src/axi_test.sv

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// - Andreas Kurth <[email protected]>
1414
// - Wolfgang Roenninger <[email protected]>
1515
// - Fabian Schuiki <[email protected]>
16+
// - Thomas Benz <[email protected]>
1617
// - Matheus Cavalcante <[email protected]>
1718

1819

src/axi_to_detailed_mem.sv

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
// Authors:
1212
// - Michael Rogenmoser <[email protected]>
13+
// - Thomas Benz <[email protected]>
1314

1415
`include "common_cells/registers.svh"
1516
/// AXI4+ATOP slave module which translates AXI bursts into a memory stream.

src/axi_to_mem.sv

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
// Authors:
1212
// - Michael Rogenmoser <[email protected]>
13+
// - Thomas Benz <[email protected]>
1314

1415
`include "common_cells/registers.svh"
1516
/// AXI4+ATOP slave module which translates AXI bursts into a memory stream.

0 commit comments

Comments
 (0)