Skip to content

Extend support for FlooDMA traffic generation#182

Open
gbellocchi wants to merge 30 commits into
mainfrom
gb/gen-jobs-from-cfg-v0.8.1
Open

Extend support for FlooDMA traffic generation#182
gbellocchi wants to merge 30 commits into
mainfrom
gb/gen-jobs-from-cfg-v0.8.1

Conversation

@gbellocchi
Copy link
Copy Markdown

SUMMARY OF CONTRIBUTIONS

Add FlooDMA traffic generation from YAML configuration files
I have extended the FlooDMA job generator (gen_jobs.py) to support FlooDMA job generation from traffic configuration files (YAML).
This feature simplifies the generation of custom traffic patterns, reusing FlooGen to retrieve the target FlooNoC topology information.

Below are the main contributions:

  • Parse the NoC configuration file (typically under: floogen/examples/) using FlooGen and produce a NoC model;
  • Parse the traffic configuration file (typically under: hw/test/traffic_cfg/);
  • Use the NoC model to resolve initiator and endpoint addresses for each traffic flow;
  • Create a traffic model;
  • Use the traffic model to generate DMA jobs;
  • Extend miscellaneous components (Makefile targets, etc.).

Then, I have verified the new feature using the supported testbenches, making use of FlooDMA:

  • Examples of traffic configuration files (traffic_cfg) have been added under hw/test/traffic_cfg;
  • Launch tests using tb_floo_axi_mesh.sv and tb_floo_nw_mesh.sv;
  • Use axi_bw_monitor to compare traffic generated directly in Python against traffic generated using traffic_cfg.

Extend the FlooDMA control plane
I have modified the control plane of floo_dma_test_node to launch DMA jobs after triggering a start signal.
This feature enables running FlooDMA multiple times during one simulation run, which might prove useful during design space exploration.

Below are the main contributions:

  • Add start_of_sim_i signal to the floo_dma_test_node interface;
  • Extend the control plane of the floo_dma_test_node;
  • Extend the control plane of tb_floo_axi_mesh.sv and tb_floo_nw_mesh.sv;
  • Verify functionality in RTL simulation.

Gianluca Bellocchi added 30 commits May 7, 2026 15:38
* Floogen is used to populate the traffic model with information
concerning the FlooNoC instance.
* The class content match the traffic cfg information, similarly to what
floogen also does.
The generator currently loads and compiles floonoc and traffic models.
* Add start, done, and ready control signals to control the execution of
floo dma.

* Loop execution of floo dma based on control interface.

* Access queues with array indexing to preserve dma jobs between
different execution runs.
* Handle execution corner case where floo dma is activated without jobs to
execute.
* hw: Add floogen makefile recipe.
* hw: Add `nw_mesh` to bender compilation.
* util: Add makefile arguments for traffic generation.
* util: Change default `traffic_type` to `dma_mesh` as `random` type is not supported.
I have removed the ready signal as it was redundant and was creating
problems if initialized to 1'b1 at reset-time, which would however make
sense from a logical pov. Thus, end_of_sim_o is directly used in place
of ready.
* Update interfaces of floo_dma_test_node and axi_bw_monitor.
* Add procedural start-wait controls.
* Tested in rtl simulation.
Clean the tb procedural block.
* Add support in Makefile.

* Add two examples of `traffic_cfg` files for xy-based mesh testbenches
(narrow, narrow-wide).
The floonoc protocol type is used to populate the traffic model and
distinguish between narrow, wide, or other floonoc channel types. If
this is not specified in the floogen configuration, then the job
generator will assert warnings.
@gbellocchi gbellocchi requested review from Lore0599 and fischeti May 12, 2026 10:00
@gbellocchi gbellocchi self-assigned this May 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant