diff --git a/README.md b/README.md index 3235c2c8..3f671898 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,10 @@ This repository provides modules for the FlooNoC, a Network-on-Chip (NoC) which [![CI status](https://github.com/pulp-platform/FlooNoC/actions/workflows/gitlab-ci.yml/badge.svg?branch=main)](https://github.com/pulp-platform/FlooNoC/actions/workflows/gitlab-ci.yml?query=branch%3Amain) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/pulp-platform/FlooNoC?color=blue&label=current&sort=semver)](CHANGELOG.md) -![License](https://img.shields.io/badge/license-Apache--2.0-green) -![License](https://img.shields.io/badge/license-SHL--0.51-green) +[![License](https://img.shields.io/badge/license-Apache--2.0-green)](LICENSE-APACHE) +[![License](https://img.shields.io/badge/license-SHL--0.51-green)](LICENSE-SHL) +[![Static Badge](https://img.shields.io/badge/IEEE_D%26T-blue?style=flat&label=DOI&color=00629b)](https://doi.org/10.1109/MDAT.2023.3306720) +[![Static Badge](https://img.shields.io/badge/2409.17606-blue?style=flat&label=arXiv&color=b31b1b)](https://arxiv.org/abs/2409.17606) [Design Principles](#-design-principles) • [Getting started](#-getting-started) • @@ -45,20 +47,40 @@ The names of the IPs are inspired by the [Harry Potter](https://en.wikipedia.org All code checked into this repository is made available under a permissive license. All software sources are licensed under the Apache License 2.0 (see [`LICENSE-APACHE`](LICENSE-APACHE)), and all hardware sources in the `hw` folder are licensed under the Solderpad Hardware License 0.51 (see [`LICENSE-SHL`](LICENSE-SHL)). ## 📚 Publication -If you use FlooNoC in your research, please cite the following paper: +If you use FlooNoC in your research, please cite the following papers:
-FlooNoC: A Multi-Tbps Wide NoC for Heterogeneous AXI4 Traffic +FlooNoC: A 645 Gbps/link 0.15 pJ/B/hop Open-Source NoC with Wide Physical Links and End-to-End AXI4 Parallel Multi-Stream Support

``` -@misc{fischer2023floonoc, - title={FlooNoC: A Multi-Tbps Wide NoC for Heterogeneous AXI4 Traffic}, - author={Tim Fischer and Michael Rogenmoser and Matheus Cavalcante and Frank K. Gürkaynak and Luca Benini}, - year={2023}, - eprint={2305.08562}, +@misc{fischer2024floonoc645gbpslink015, + title={FlooNoC: A 645 Gbps/link 0.15 pJ/B/hop Open-Source NoC with Wide Physical Links and End-to-End AXI4 Parallel Multi-Stream Support}, + author={Tim Fischer and Michael Rogenmoser and Thomas Benz and Frank K. Gürkaynak and Luca Benini}, + year={2024}, + eprint={2409.17606}, archivePrefix={arXiv}, - primaryClass={cs.AR} -} + primaryClass={cs.AR}, + url={https://arxiv.org/abs/2409.17606}} +``` + +

+
+
+FlooNoC: A Multi-Tbps Wide NoC for Heterogeneous AXI4 Traffic +

+ +``` +@ARTICLE{10225380, + author={Fischer, Tim and Rogenmoser, Michael and Cavalcante, Matheus and Gürkaynak, Frank K. and Benini, Luca}, + journal={IEEE Design & Test}, + title={FlooNoC: A Multi-Tb/s Wide NoC for Heterogeneous AXI4 Traffic}, + year={2023}, + volume={40}, + number={6}, + pages={7-17}, + keywords={Bandwidth;Protocols;Scalability;Routing;Payloads;Complexity theory;Network interfaces;Network-on-chip;Network-On-Chip;AXI;Network Interface;Physical design}, + doi={10.1109/MDAT.2023.3306720}} + ```

diff --git a/floogen/model/graph.py b/floogen/model/graph.py index e9424030..3544e613 100644 --- a/floogen/model/graph.py +++ b/floogen/model/graph.py @@ -194,6 +194,7 @@ def add_nodes_as_tree( tree: List[int], node_type: str, edge_type: str, + *, lvl: int = 0, node_obj=None, edge_obj=None, @@ -213,7 +214,14 @@ def add_nodes_as_tree( node, parent, type=edge_type, obj=edge_obj, src_dir=None, dst_dir=None ) self.add_nodes_as_tree( - node, tree, node_type, edge_type, lvl + 1, node_obj, edge_obj, connect + node, + tree, + node_type, + edge_type, + lvl=lvl + 1, + node_obj=node_obj, + edge_obj=edge_obj, + connect=connect, ) def add_nodes_as_array( @@ -221,6 +229,7 @@ def add_nodes_as_array( name: str, array: Tuple[int], node_type: str, + *, edge_type: str = "", node_obj=None, edge_obj=None, diff --git a/floogen/tests/graph_test.py b/floogen/tests/graph_test.py index 324ee7c5..b4533647 100644 --- a/floogen/tests/graph_test.py +++ b/floogen/tests/graph_test.py @@ -311,7 +311,7 @@ def assert_edge(edge): assert graph.has_edge(*edge[::-1]) assert graph.is_link_edge(edge[::-1]) - graph.add_nodes_as_array("A", [2], "router", "link") + graph.add_nodes_as_array("A", [2], "router", edge_type="link") assert_node("A_0", (0,)) assert_node("A_1", (1,)) assert_edge(("A_0", "A_1")) @@ -329,7 +329,7 @@ def assert_edge(edge): assert graph.has_edge(*edge) assert graph.is_link_edge(edge) - graph.add_nodes_as_array("A", [2, 2], "router", "link") + graph.add_nodes_as_array("A", [2, 2], "router", edge_type="link") assert_node("A_0_0", (0, 0)) assert_node("A_0_1", (0, 1)) assert_node("A_1_0", (1, 0)) diff --git a/util/gen_jobs.py b/util/gen_jobs.py index 877638fb..4a2a669c 100755 --- a/util/gen_jobs.py +++ b/util/gen_jobs.py @@ -38,6 +38,7 @@ def gen_job_str( length: int, src_addr: int, dst_addr: int, + *, max_src_burst_size: int = 256, max_dst_burst_size: int = 256, r_aw_decouple: bool = False, @@ -101,7 +102,7 @@ def gen_nw_chimney2chimney_traffic( bidir: bool, out_dir: str ): - # pylint: disable=too-many-arguments + # pylint: disable=too-many-arguments, too-many-positional-arguments """Generate Narrow Wide Chimney to Chimney traffic.""" num_masters = 2 for i in range(num_masters): @@ -131,7 +132,7 @@ def gen_mesh_traffic( out_dir: str, **_kwargs ): - # pylint: disable=too-many-arguments, too-many-locals, too-many-branches, too-many-statements + # pylint: disable=too-many-arguments, too-many-locals, too-many-branches, too-many-statements, too-many-positional-arguments """Generate Mesh traffic.""" for x in range(0, NUM_X): for y in range(0, NUM_Y):