Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
04def38
Analytical FIFO sizing with a set of tests for generation trees and f…
Oct 27, 2025
b1a14a9
switched to assert tests, added a helper sizing function, removed reu…
Oct 29, 2025
04eb103
change testing function name
Oct 29, 2025
f5c9c43
add pool layer characterization, reorder fifo sizing step to after hw…
Oct 30, 2025
d5320bf
add SWG tree model which is not super accurate, TODO to fix it
Oct 30, 2025
58c3f9f
fix fmpadding wrong func name
Oct 30, 2025
7adbd80
added downsampler, 30 delta on the tests, will improve together with …
Oct 31, 2025
aba822c
updates to pol and label select, introduce more debugging information
Nov 6, 2025
3507019
pool and swg improvements
Nov 10, 2025
68c822e
SWG mobilenet node test
Nov 10, 2025
9254061
Merge branch 'dev' into feature/analytical-fifo-sizing
lstasytis Dec 16, 2025
63e0c58
Merge remote-tracking branch 'upstream/dev' into feature/analytical-f…
auphelia Jan 7, 2026
cf0ba17
Run pre-commit
auphelia Jan 7, 2026
d02ab90
Merge remote-tracking branch 'lukas/feature/analytical-fifo-sizing' i…
fpjentzsch Feb 4, 2026
cb7e237
[CI] Add baseline fifosizing experiment config
fpjentzsch Feb 4, 2026
41a7034
[CI] Do not build bitfile for RN-50
fpjentzsch Feb 4, 2026
1549f9e
Do not round FIFO size in report
fpjentzsch Feb 8, 2026
107ee27
Merge branch 'dev' into merge/fifo_heuristic
fpjentzsch Feb 8, 2026
8b38226
[CI] Update fifosizing experiment configs
fpjentzsch Feb 8, 2026
da70e50
nasty analytical fifosizing bugfix
lstasytis Feb 16, 2026
904ec9f
Fix testing_util imports
fpjentzsch Feb 16, 2026
7f86278
second adjustment - fixing aggressive strategy, small refactor
lstasytis Feb 17, 2026
5bda11e
bugfix
lstasytis Feb 17, 2026
f2a17ba
remove prints from swg characterization
lstasytis Feb 17, 2026
7be2629
fix wrong merge removing JIT
lstasytis Feb 17, 2026
c76d433
Generate rtlsim TAVs for every input/output
fpjentzsch Feb 18, 2026
03347bf
Merge branch 'fix/attention_sim' into merge/fifo_heuristic
fpjentzsch Feb 18, 2026
8e74558
Parallelize codegen/ipgen during JustInTimeSynthesize
fpjentzsch Feb 18, 2026
633b121
Log detailed time spent on analytical FIFO-sizing sub-steps
fpjentzsch Feb 18, 2026
84d21aa
Set skip_resynth_during_fifo_sizing default to True
fpjentzsch Feb 18, 2026
7c04a5b
[Experiments] Add n=4 largefifo_rtlsim run
fpjentzsch Feb 18, 2026
e2dae80
[LiveFIFO] Adjust iteration runtime heuristic
fpjentzsch Feb 18, 2026
68345bc
[Experiments] Disable Transformer verification
fpjentzsch Feb 18, 2026
8e3d0d6
[CI] Choose best available live FIFO-sizing for follow-up run
fpjentzsch Feb 18, 2026
bce0f25
Parallelize stitched-IP creation of SDPs in ZynqBuild
fpjentzsch Feb 18, 2026
ff6d419
Merge remote-tracking branch 'lukas/feature/analytical-fifo-sizing' i…
fpjentzsch Feb 18, 2026
f5b087d
[Experiments] Disable analytical FIFO sizing for Transformers
fpjentzsch Feb 20, 2026
c5601b2
[CI] Force use of system SSL libs on N2
fpjentzsch Feb 20, 2026
3d8843b
Fix FIFO maxcount width
fpjentzsch Feb 22, 2026
72fad3f
[Experiments] Add largefifo_rtlsim sweep
fpjentzsch Feb 22, 2026
0cfea47
Merge branch 'dev' into merge/fifo_heuristic
fpjentzsch Mar 14, 2026
6f95634
[Experiments] Adjust configs
fpjentzsch Mar 14, 2026
d308552
Revert "[LiveFIFO] Adjust iteration runtime heuristic"
fpjentzsch Feb 21, 2026
2888a52
[LiveFIFO] Adjust latency relaxation
fpjentzsch Mar 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
455 changes: 455 additions & 0 deletions ci/cfg/baseline_fifosizing.yml

Large diffs are not rendered by default.

176 changes: 176 additions & 0 deletions ci/cfg/default_fifosizing_sweep.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
[
# KWS (MLP)
{
"dut": ["kws"],
"auto_fifo_depths": [True],
"auto_fifo_strategy": ["largefifo_rtlsim"],
"fifosim_input_throttle": [True, False],
"fifosim_n_inferences": [2, 4, 6, 8],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package", "estimate_reports"]],
"synth_clk_period_ns": [10],
},

# Cybersecurity (MLP)
{
"dut": ["cybsec"],
"auto_fifo_depths": [True],
"auto_fifo_strategy": ["largefifo_rtlsim"],
"fifosim_input_throttle": [True, False],
"fifosim_n_inferences": [2, 4, 6, 8],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package", "estimate_reports"]],
"synth_clk_period_ns": [10],
},

### BNN-PYNQ ###
# tfc-w1a1
{
"dut": ["bnn-pynq"],
"model_path": [models/bnn-pynq/tfc-w1a1_qonnx.onnx],
"folding_config_file": [models/bnn-pynq/tfc-w1a1_folding_config.json],
"specialize_layers_config_file": [models/bnn-pynq/tfc-w1a1_specialize_layers.json],
"auto_fifo_depths": [True],
"auto_fifo_strategy": ["largefifo_rtlsim"],
"fifosim_input_throttle": [True, False],
"fifosim_n_inferences": [2, 4, 6, 8],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package", "estimate_reports"]],
"synth_clk_period_ns": [10],
},

# tfc-w2a2
{
"dut": ["bnn-pynq"],
"model_path": [models/bnn-pynq/tfc-w2a2_qonnx.onnx],
"folding_config_file": [models/bnn-pynq/tfc-w2a2_folding_config.json],
"specialize_layers_config_file": [models/bnn-pynq/tfc-w2a2_specialize_layers.json],
"auto_fifo_depths": [True],
"auto_fifo_strategy": ["largefifo_rtlsim"],
"fifosim_input_throttle": [True, False],
"fifosim_n_inferences": [2, 4, 6, 8],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package", "estimate_reports"]],
"synth_clk_period_ns": [10],
},

# cnv-w1a1
{
"dut": ["bnn-pynq"],
"model_path": [models/bnn-pynq/cnv-w1a1_qonnx.onnx],
"folding_config_file": [models/bnn-pynq/cnv-w1a1_folding_config.json],
"specialize_layers_config_file": [models/bnn-pynq/cnv-w1a1_specialize_layers.json],
"auto_fifo_depths": [True],
"auto_fifo_strategy": ["largefifo_rtlsim"],
"fifosim_input_throttle": [True, False],
"fifosim_n_inferences": [2, 4, 6, 8],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package", "estimate_reports"]],
"synth_clk_period_ns": [10],
},

# cnv-w2a2
{
"dut": ["bnn-pynq"],
"model_path": [models/bnn-pynq/cnv-w2a2_qonnx.onnx],
"folding_config_file": [models/bnn-pynq/cnv-w2a2_folding_config.json],
"specialize_layers_config_file": [models/bnn-pynq/cnv-w2a2_specialize_layers.json],
"auto_fifo_depths": [True],
"auto_fifo_strategy": ["largefifo_rtlsim"],
"fifosim_input_throttle": [True, False],
"fifosim_n_inferences": [2, 4, 6, 8],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package", "estimate_reports"]],
"synth_clk_period_ns": [10],
},

# GTSRB (cnv-w1a1)
{
"dut": ["gtsrb"],
"auto_fifo_depths": [True],
"auto_fifo_strategy": ["largefifo_rtlsim"],
"fifosim_input_throttle": [True, False],
"fifosim_n_inferences": [2, 4, 6, 8],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package", "estimate_reports"]],
"synth_clk_period_ns": [10],
},

# VGG-10 (1D CNN) (RadioML)
{
"dut": ["vgg10"],
"auto_fifo_depths": [True],
"auto_fifo_strategy": ["largefifo_rtlsim"],
"fifosim_input_throttle": [True, False],
"fifosim_n_inferences": [2, 4, 6, 8],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package", "estimate_reports"]],
"synth_clk_period_ns": [10],
},

# MobileNetV1 (ImageNet)
{
"dut": ["mobilenetv1"],
"auto_fifo_depths": [True],
"auto_fifo_strategy": ["largefifo_rtlsim"],
"fifosim_input_throttle": [True, False],
"fifosim_n_inferences": [2, 4, 6, 8],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package", "estimate_reports"]],
"synth_clk_period_ns": [10],
},

# # ResNet-50 (ImageNet)
# {
# "dut": ["resnet50"],
# "auto_fifo_depths": [True],
# "auto_fifo_strategy": ["largefifo_rtlsim"],
# "fifosim_n_inferences": [2, 4],
# "generate_outputs": [["stitched_ip", "rtlsim_performance"]],
# "synth_clk_period_ns": [10],
# "board": ["U250"],
# "enable_instrumentation": [False],
# "rtlsim_batch_size": [3],
# },

### NEW Transformer models (dvc-imported from finn-transformers repo):
# TODO: analytical FIFO sizing temporarily disabled because it is broken for these models
# radioml model
{
"dut": ["transformer"],
#"model_dir": ["models/transformer/finn-transformers/radioml"],
"model_path": ["models/transformer/finn-transformers/radioml/streamlined.onnx"],
"verify_input_npy": ["models/transformer/finn-transformers/radioml/inp.npy"],
"verify_expected_output_npy": ["models/transformer/finn-transformers/radioml/out.npy"],
"verify_steps": ["None"], # disable verification to not affect build time measurements
"auto_fifo_depths": [True],
"auto_fifo_strategy": ["largefifo_rtlsim"],
"fifosim_input_throttle": [True, False],
"fifosim_n_inferences": [2, 4, 6, 8],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package", "estimate_reports"]],
"target_fps": [65536],
},

# vision model
{
"dut": ["transformer"],
#"model_dir": ["models/transformer/finn-transformers/vision"],
"model_path": ["models/transformer/finn-transformers/vision/streamlined.onnx"],
"verify_input_npy": ["models/transformer/finn-transformers/vision/inp.npy"],
"verify_expected_output_npy": ["models/transformer/finn-transformers/vision/out.npy"],
"verify_steps": ["None"], # disable verification to not affect build time measurements
"auto_fifo_depths": [True],
"auto_fifo_strategy": ["largefifo_rtlsim"],
"fifosim_input_throttle": [True, False],
"fifosim_n_inferences": [2, 4, 6, 8],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package", "estimate_reports"]],
"target_fps": [1525],
},

# language model
{
"dut": ["transformer"],
#"model_dir": ["models/transformer/finn-transformers/language"],
"model_path": ["models/transformer/finn-transformers/language/streamlined.onnx"],
"verify_input_npy": ["models/transformer/finn-transformers/language/inp.npy"],
"verify_expected_output_npy": ["models/transformer/finn-transformers/language/out.npy"],
"verify_steps": ["None"], # disable verification to not affect build time measurements
"auto_fifo_depths": [True],
"auto_fifo_strategy": ["largefifo_rtlsim"],
"fifosim_input_throttle": [True, False],
"fifosim_n_inferences": [2, 4, 6, 8],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package", "estimate_reports"]],
"target_fps": [1024],
},
]
127 changes: 49 additions & 78 deletions ci/cfg/live_fifosizing.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,21 @@
[
### BNN-PYNQ ###
# cnv-w1a1
{
"dut": ["bnn-pynq"],
"model_path": [models/bnn-pynq/cnv-w1a1_qonnx.onnx],
"folding_config_file": [models/bnn-pynq/cnv-w1a1_folding_config.json],
"specialize_layers_config_file": [models/bnn-pynq/cnv-w1a1_specialize_layers.json],
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"synth_clk_period_ns": [10],
},
# cnv-w1a2
# KWS (MLP)
{
"dut": ["bnn-pynq"],
"model_path": [models/bnn-pynq/cnv-w1a2_qonnx.onnx],
"folding_config_file": [models/bnn-pynq/cnv-w1a2_folding_config.json],
"specialize_layers_config_file": [models/bnn-pynq/cnv-w1a2_specialize_layers.json],
"dut": ["kws"],
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"synth_clk_period_ns": [10],
},
# cnv-w2a2

# Cybersecurity (MLP)
{
"dut": ["bnn-pynq"],
"model_path": [models/bnn-pynq/cnv-w2a2_qonnx.onnx],
"folding_config_file": [models/bnn-pynq/cnv-w2a2_folding_config.json],
"specialize_layers_config_file": [models/bnn-pynq/cnv-w2a2_specialize_layers.json],
"dut": ["cybsec"],
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"synth_clk_period_ns": [10],
},

### BNN-PYNQ ###
# tfc-w1a1
{
"dut": ["bnn-pynq"],
Expand All @@ -40,16 +26,6 @@
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"synth_clk_period_ns": [10],
},
# tfc-w1a2
{
"dut": ["bnn-pynq"],
"model_path": [models/bnn-pynq/tfc-w1a2_qonnx.onnx],
"folding_config_file": [models/bnn-pynq/tfc-w1a2_folding_config.json],
"specialize_layers_config_file": [models/bnn-pynq/tfc-w1a2_specialize_layers.json],
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"synth_clk_period_ns": [10],
},
# tfc-w2a2
{
"dut": ["bnn-pynq"],
Expand All @@ -60,42 +36,46 @@
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"synth_clk_period_ns": [10],
},

# GTSRB (cnv-w1a1)
# cnv-w1a1
{
"dut": ["gtsrb"],
"dut": ["bnn-pynq"],
"model_path": [models/bnn-pynq/cnv-w1a1_qonnx.onnx],
"folding_config_file": [models/bnn-pynq/cnv-w1a1_folding_config.json],
"specialize_layers_config_file": [models/bnn-pynq/cnv-w1a1_specialize_layers.json],
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"synth_clk_period_ns": [10],
},

# KWS (MLP)
# cnv-w2a2
{
"dut": ["kws"],
"dut": ["bnn-pynq"],
"model_path": [models/bnn-pynq/cnv-w2a2_qonnx.onnx],
"folding_config_file": [models/bnn-pynq/cnv-w2a2_folding_config.json],
"specialize_layers_config_file": [models/bnn-pynq/cnv-w2a2_specialize_layers.json],
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"synth_clk_period_ns": [10],
},

# Cybersecurity (MLP)
# GTSRB (cnv-w1a1)
{
"dut": ["cybsec"],
"dut": ["gtsrb"],
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"synth_clk_period_ns": [10],
},

# MobileNetV1 (ImageNet)
# VGG-10 (1D CNN) (RadioML)
{
"dut": ["mobilenetv1"],
"dut": ["vgg10"],
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"synth_clk_period_ns": [10],
},

# VGG-10 (1D CNN) (RadioML)
# MobileNetV1 (ImageNet)
{
"dut": ["vgg10"],
"dut": ["mobilenetv1"],
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"synth_clk_period_ns": [10],
Expand All @@ -110,51 +90,28 @@
},

# ResNet-18 (CIFAR100)
{
"dut": ["resnet18"],
"model_path": [models/resnet18/resnet18_w3a3_cifar100.onnx],
"folding_config_file": [models/resnet18/resnet18_folding_config.json],
"specialize_layers_config_file": [models/resnet18/resnet18_specialize_layers.json],
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"synth_clk_period_ns": [10],
},
# {
# "dut": ["resnet18"],
# "model_path": [models/resnet18/resnet18_w3a3_cifar100.onnx],
# "folding_config_file": [models/resnet18/resnet18_folding_config.json],
# "specialize_layers_config_file": [models/resnet18/resnet18_specialize_layers.json],
# "live_fifo_sizing": [True],
# "generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
# "synth_clk_period_ns": [10],
# },

### NEW Transformer models (dvc-imported from finn-transformers repo):
# benchmark model ("dummy")
{
"dut": ["transformer"],
#"model_dir": ["models/transformer/finn-transformers/benchmark"],
"model_path": ["models/transformer/finn-transformers/benchmark/streamlined.onnx"],
"verify_input_npy": ["models/transformer/finn-transformers/benchmark/inp.npy"],
"verify_expected_output_npy": ["models/transformer/finn-transformers/benchmark/out.npy"],
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"target_fps": [1000],
},

# language model
{
"dut": ["transformer"],
#"model_dir": ["models/transformer/finn-transformers/language"],
"model_path": ["models/transformer/finn-transformers/language/streamlined.onnx"],
"verify_input_npy": ["models/transformer/finn-transformers/language/inp.npy"],
"verify_expected_output_npy": ["models/transformer/finn-transformers/language/out.npy"],
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"target_fps": [1000],
},

# radioml model
{
"dut": ["transformer"],
#"model_dir": ["models/transformer/finn-transformers/radioml"],
"model_path": ["models/transformer/finn-transformers/radioml/streamlined.onnx"],
"verify_input_npy": ["models/transformer/finn-transformers/radioml/inp.npy"],
"verify_expected_output_npy": ["models/transformer/finn-transformers/radioml/out.npy"],
"verify_steps": ["None"], # disable verification to not affect build time measurements
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"target_fps": [1000],
"target_fps": [65536],
},

# vision model
Expand All @@ -164,9 +121,23 @@
"model_path": ["models/transformer/finn-transformers/vision/streamlined.onnx"],
"verify_input_npy": ["models/transformer/finn-transformers/vision/inp.npy"],
"verify_expected_output_npy": ["models/transformer/finn-transformers/vision/out.npy"],
"verify_steps": ["None"], # disable verification to not affect build time measurements
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"target_fps": [1525],
},

# language model
{
"dut": ["transformer"],
#"model_dir": ["models/transformer/finn-transformers/language"],
"model_path": ["models/transformer/finn-transformers/language/streamlined.onnx"],
"verify_input_npy": ["models/transformer/finn-transformers/language/inp.npy"],
"verify_expected_output_npy": ["models/transformer/finn-transformers/language/out.npy"],
"verify_steps": ["None"], # disable verification to not affect build time measurements
"live_fifo_sizing": [True],
"generate_outputs": [["bitfile", "pynq_driver", "deployment_package"]],
"target_fps": [1000],
"target_fps": [1024],
},

# Synthetic non-linear models
Expand Down
Loading
Loading