Skip to main content

A Network Generator for FlooNoC

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

floogen-0.8.4.tar.gz (46.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

floogen-0.8.4-py3-none-any.whl (65.8 kB view details)

Uploaded Python 3

File details

Details for the file floogen-0.8.4.tar.gz.

File metadata

  • Download URL: floogen-0.8.4.tar.gz
  • Upload date:
  • Size: 46.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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}

File hashes

Hashes for floogen-0.8.4.tar.gz
Algorithm Hash digest
SHA256 ee0312d5d4ed97913c23099d8d66372db2bb3982a27783ac169e601376a538d7
MD5 bfb5d2223771d7bc6ce0b5e655a75cf4
BLAKE2b-256 f1de8eef3d85fcc894505225814c659847ed31d245f82f01377cff7f274bb4a7

See more details on using hashes here.

File details

Details for the file floogen-0.8.4-py3-none-any.whl.

File metadata

  • Download URL: floogen-0.8.4-py3-none-any.whl
  • Upload date:
  • Size: 65.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","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}

File hashes

Hashes for floogen-0.8.4-py3-none-any.whl
Algorithm Hash digest
SHA256 15bf59239d81e25e7bc6e39c9640e839be3f5c45f83803ecb507e31dfc8ab559
MD5 0cd0f47b6c0dec757adac9c185a0dd8c
BLAKE2b-256 c3b5ab6566f42a27ec7a9d18d698c80f0ea31d2c0d1da787dfea212a699d4250

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page