github pulp-platform/FlooNoC v0.9.0

3 hours ago

Added

FlooGen

  • New floogen schema command, emitting a JSON schema of the configuration file so editors can complete field names and flag mistakes while a configuration is written. See the CLI documentation for how to wire it up.
  • Add a help command, to print the general help message (floogen help) or the help message of a specific command (floogen help <command>).
  • Configuration files can declare parameters in a top-level params block and reference them anywhere else in the file as ${...}, with arithmetic, bit operations and comparisons supported inside the braces. Every command that reads a configuration accepts -P NAME=VALUE to override a declared parameter, so a single configuration can be generated for several mesh sizes or address maps without being edited. Parameters are resolved before validation and inlined into the generated output; they are additionally emitted as localparams in the generated package. See the parameter documentation.
  • Address ranges accept an rdl_params field, binding parameters on the SystemRDL component named by rdl_name (e.g. cluster_regs #(.NumCores(4)) cluster @0x10000000;). Values are resolved at generation time - typically from a configuration parameter - so the generated addrmap has no parameters of its own left to override. See the endpoint documentation.

Changed

Hardware

  • Refactor collective support to make the NoC agnostic of the collective operations: chimneys, routers and the reduction units now accept a generic collect_op_t parameter type (an opcode vector) instead of the fixed collect_op_e enum. Eventaul opcodes are treated transparently by the NoC.

  • Add XYRoutingMirrored and YXRoutingMirrored algorithms to support mixed req/rsp algorithms.

  • Bump and adapt RTL to latest common_cells v2.0.0-beta.3 and bump related IPs: axi, axi_riscv_atomics, idma and FPnew

FlooGen

  • Align collective configuration with the generic collect_op_t: reductions are now configured with a required num_ops count, and the generated package emits NumNarrowSeqOps, NumWideSeqOps, NumCollectOps and collect_op_t, which is passed to chimneys and routers at the system level.
  • Add mixed req/rsp algorithm support.
  • Unknown keys in the protocols section are now rejected instead of silently ignored, so a misspelled field name reports an error at its line and column rather than falling back to the default.
  • Fields that FlooGen derives during elaboration - sam, num_x_bits, num_y_bits, num_route_bits, num_endpoints, addr_offset_bits, xy_id_offset and addr_width - are no longer accepted under routing:. Setting one now reports an error rather than being overwritten or ignored during elaboration.
  • Enum-valued keys such as route_algo, vc_impl and decouple_rw now match case-insensitively, so route_algo: xy is accepted alongside route_algo: XY.
  • Custom templates that test whether decouple_rw/vc_impl were configured must use noc.routing.decouple_rw is not None instead of "decouple_rw" in noc.routing.model_fields_set. The generated output is unchanged.

Fixed

  • Fixed floo_reduction_unit: missing backpressure mechanism to avoid pushing data into full FIFO.

Don't miss a new FlooNoC release

NewReleases is sending notifications on new releases.