Skip to main content

FlooGen: The NoC Generation Framework

FlooGen is the Python-based configuration and generation framework bundled with FlooNoC. While FlooNoC provides the efficient hardware IP blocks (mainly routers and network interfaces), FlooGen acts as the system architect that assembles them into a functional Network-on-Chip.

It transforms a high-level, human-readable description of your network (topology, routing rules, protocols) into fully connected, verified, and synthesizable SystemVerilog RTL.

Why use a Generator?

Designing a Network-on-Chip manually is tedious and error-prone. Connecting hundreds of router ports, calculating deadlock-free routing tables, and maintaining consistent global address maps becomes unmanageable as system complexity grows.

FlooGen solves this by raising the abstraction level. Instead of writing Verilog wire connections, you define endpoints, routers and their connections. FlooGen handles the low-level implementation details, ensuring that:

  • Protocol conversion: Network interfaces are automatically instantiated to bridge different endpoint protocols to the NoC link protocol.
  • Routing is correct: Paths are calculated automatically based on the topology.
  • Configuration is consistent: Address maps and endpoint IDs are allocated globally without overlaps.

Key Capabilities

  • Topology Agnostic: Generate standard topologies (Mesh, Ring, Tree) or completely custom irregular graphs based on your system constraints.
  • Automatic Routing: Built-in engines to calculate routing tables for different routing algorithms.
  • Protocol Abstraction: Define endpoints using high-level protocols (e.g., AXI4). FlooGen automatically manages the conversion to the internal NoC link protocol.
  • Network Visualization: Generate visual graphs of your network topology to inspect connections and routing paths before simulation.
  • Validation: The internal graph model checks for errors such as overlapping address regions, isolated nodes, or invalid port assignments before a single line of RTL is generated.

The Generation Flow

FlooGen operates in four distinct stages to turn your configuration into hardware:

  1. Parse & Elaborate: Reads the YAML configuration file to understand the requested nodes, links, and system parameters.
  2. Graph Construction: Builds an internal Network Graph representation of the system.
  3. Routing & Mapping:
    • Runs routing algorithms on the graph.
    • Allocates Endpoint IDs.
    • Computes the global system address map.
  4. Render: Generates the final SystemVerilog code using validated templates.

Generated Artifacts

When you run FlooGen, it produces two primary outputs:

  • The NoC Top-Level (floo_<name>_noc.sv): A structural SystemVerilog module that instantiates all routers and network interfaces and connects them according to the topology.
  • The NoC Package (floo_<name>_noc_pkg.sv): A SystemVerilog package containing all the necessary metadata, including:
    • Typedefs for flits and links.
    • Routing tables and rules.
    • System address maps and endpoint ID enumerations.

Metadata

Release files for floogen 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for floogen 0.9.0
File Size Uploaded
floogen-0.9.0.tar.gz 70.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for floogen 0.9.0
File Interpreter ABI Platform
floogen-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 155.6 kB

Release files / floogen-0.9.0.tar.gz

Download URL floogen-0.9.0.tar.gz
Size 70.8 kB
Tags Source
SHA-256 checksum
How to use checksums
486bc2c9d26a69a9001f42bfbeead0fb926f4d94c31003149dd143e26e09e84a
BLAKE2b-256 checksum
How to use checksums
f6653d22f156789eebe66b0644df0353de62662066697b67384bfb42e248406a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / floogen-0.9.0-py3-none-any.whl

Download URL floogen-0.9.0-py3-none-any.whl
Size 84.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
522430620d93543255866c35d046624b81218f5473cbec3921f04b8f1fd3c538
BLAKE2b-256 checksum
How to use checksums
6522c89e233d502380ada255274aeee9bdd3f19c58d0206eaff002c105796ddf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.9.0 This release

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page