Skip to content

Commit 5de9ba4

Browse files
authored
Merge pull request #2469 from CAS-Atlantic/weekly-test-koios
Organize koios benchmarks
2 parents 398e898 + 8b7fc51 commit 5de9ba4

File tree

82 files changed

+934
-628
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+934
-628
lines changed

README.developers.md

Lines changed: 98 additions & 21 deletions
Large diffs are not rendered by default.

libs/EXTERNAL/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ if (${WITH_PARMYS})
3232
GIT_REPOSITORY https://github.com/chipsalliance/Surelog.git
3333
GIT_TAG v1.71
3434
GIT_PROGRESS TRUE
35+
GIT_SHALLOW TRUE
3536

3637
# setting source, build and install directories
3738
SOURCE_DIR "${SURELOG_SOURCE_DIR}"
@@ -49,7 +50,7 @@ if (${WITH_PARMYS})
4950
LOG_BUILD ON
5051
LOG_UPDATE ON
5152
LOG_INSTALL ON
52-
LOG_CONFIGURE ON
53+
LOG_CONFIGURE OFF
5354
LOG_OUTPUT_ON_FAILURE ON
5455

5556
# dependency
@@ -63,6 +64,7 @@ if (${WITH_PARMYS})
6364
GIT_REPOSITORY https://github.com/chipsalliance/yosys-f4pga-plugins.git
6465
GIT_TAG v1.20230808
6566
GIT_PROGRESS TRUE
67+
GIT_SHALLOW TRUE
6668

6769
# setting source, build and install directories
6870
SOURCE_DIR "${YOSYS_F4PGA_PLUGINS_SOURCE_DIR}"
@@ -82,7 +84,7 @@ if (${WITH_PARMYS})
8284
LOG_BUILD ON
8385
LOG_UPDATE ON
8486
LOG_INSTALL ON
85-
LOG_CONFIGURE ON
87+
LOG_CONFIGURE OFF
8688
LOG_OUTPUT_ON_FAILURE ON
8789

8890
# dependency
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# SV_benchmarks
2+
Koios Benchmarks for FPGA Research with SystemVerilog features

vtr_flow/benchmarks/verilog/koios/README.md

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Koios benchmarks use advanced DSP features that are available in only a few FPGA
1313

1414
Similarly, Koios benchmark instantiate hard memory blocks (single port and dual port BRAM). These blocks are available in most architectures provided with VTR, but may not be available in a user's architecture. These hard memory blocks can be controlled by using the macro ``hard_mem``. If `hard_mem` is defined in a benchmark file (using `` `define hard_mem``), then hard memory blocks will be used. If `hard_mem` is not defined, then equivalent functionality is obtained through behavioral Verilog that the synthesis tools can automatically infer as RAMs.
1515

16-
From a flow perspective, you can enable/disable a macro (like `complex_dsp`) without actually modifying the benchmark file(s). You can specify a separate Verilog header file while running a flow/task that contains these macros. For `run_vtr_flow` users, `-include <filename>` needs to be added. For `run_vtr_task` users, `includes_dir` and `include_list_add` need to be specified in the task file. An example task file can be seen [here](https://github.com/verilog-to-routing/vtr-verilog-to-routing/blob/master/vtr_flow/tasks/regression_tests/vtr_reg_basic/hdl_include/config/config.txt).
16+
From a flow perspective, you can enable/disable a macro (like `complex_dsp`) without actually modifying the benchmark file(s). You can specify a separate Verilog header file while running a flow/task that contains these macros. For `run_vtr_flow` users, `-include <filename>` needs to be added. For `run_vtr_task` users, `includes_dir` and `include_list_add` need to be specified in the task file. An example task file can be seen [here](https://github.com/verilog-to-routing/vtr-verilog-to-routing/blob/master/vtr_flow/vtr_reg_basic/hdl_include/config/config.txt).
1717

1818
Using hard macros for DSPs and BRAMs to utilize advanced features (like chaining) is common in modern designs used with contemporary FPGAs. When using these benchmarks and enabling these advanced features, an FPGA architecture that supports these features must be provided. Supporting these features implies that the architecture XML file provided to VTR must describe such features (e.g. by defining a hard block macro DSP slice). We provide such architectures with Koios. The FPGA architectures with advanced DSP that work out-of-the-box with Koios benchmarks are available here:
1919

@@ -29,17 +29,41 @@ If users want to use a different FPGA architecture file, they can replace the ma
2929
## Proxy benchmarks
3030
In Koios 2.0, there are 8 synthetic/proxy benchmarks. These were generated using a framework that is present [here](https://github.com/UT-LCA/koios_proxy_benchmarks). To generate more benchmarks using this framework, use the generate_benchmark.py script.
3131

32+
## SystemVerilog benchmarks
33+
In Koios, there are 3 system-verilog benchmarks. These are based on ARM FixyNN DeepFreeze and accelerate some layers of MobileNet.
34+
3235
## Regressions
33-
Koios benchmarks are tested by the following regression tests in VTR:
34-
| Suite |Test Description | Config file | Wall-clock time |
35-
|---------------|----------------------|---------------|-------------------|
36-
| Strong | A test circuit. Goal is to check the architecture files. | tasks/regression_tests/vtr_reg_strong/koios | 6 seconds |
37-
| Strong | Same test circuit without enabling complex dsp features | tasks/regression_tests/vtr_reg_strong/koios_no_complex_dsp | 6 seconds|
38-
| Nightly | Small-to-medium sized designs from Koios run with one arch file | tasks/regression_tests/vtr_reg_nightly_test6/koios | 2 hours with -j3 |
39-
| Nightly | Small-to-medium sized designs from Koios run with an arch file without enabling complex dsp features | tasks/regression_tests/vtr_reg_nightly_test6/koios_no_complex_dsp | 2 hours with -j3 |
40-
| Nightly | A small design from Koios run with various flavors of the arch file that enables complex dsp features | tasks/regression_tests/vtr_reg_nightly_test6/koios_multi_arch | 2 hours with -j3 |
41-
| Weekly | Large designs from Koios run with one arch file | tasks/regression_tests/vtr_reg_weekly/koios | a little over 24 hours with -j4 |
42-
| Weekly | Large designs from Koios run with an arch file without enabling complex dsp features | tasks/regression_tests/vtr_reg_weekly/koios_no_complex_dsp | a little over 24 hours with -j4 |
36+
Koios benchmarks are tested by the following tasks in VTR:
37+
| Suite |Test Description | Target | Complex DSP Features | Config file | Frontend | Parser |
38+
|---------------|----------------------|---------------|---------------|---------------|---------------|---------------|
39+
| Nightly | Medium designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | &#10003; | vtr_reg_nightly_test4/koios_medium | Parmys | |
40+
| Nightly | Medium designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | | vtr_reg_nightly_test4/koios_medium_no_hb | Parmys | |
41+
| Nightly | Medium designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | &#10003; | vtr_reg_nightly_test4_odin/koios_medium | Odin | |
42+
| Nightly | Medium designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | | vtr_reg_nightly_test4_odin/koios_medium_no_hb | Odin | |
43+
| Weekly | Large designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | &#10003; | vtr_reg_weekly/koios_large | Parmys | |
44+
| Weekly | Large designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | | vtr_reg_weekly/koios_large_no_hb | Parmys | |
45+
| Weekly | Large designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | &#10003; | vtr_reg_weekly/koios_large_odin | Odin | |
46+
| Weekly | Large designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | | vtr_reg_weekly/koios_large_no_hb_odin | Odin | |
47+
| Weekly | Proxy designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | &#10003; | vtr_reg_weekly/koios_proxy | Parmys | |
48+
| Weekly | Proxy designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | | vtr_reg_weekly/koios_proxy_no_hb | Parmys | |
49+
| Weekly | deepfreeze designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | &#10003; | vtr_reg_weekly/koios_sv | Parmys | System-Verilog |
50+
| Weekly | deepfreeze designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | | vtr_reg_weekly/koios_sv_no_hb | Parmys | System-Verilog |
51+
52+
The following are only for regression testing and less important for benchmarking:
53+
| Suite |Test Description | Target | Complex DSP Features | Config file | Frontend |
54+
|---------------|----------------------|---------------|---------------|---------------|---------------|
55+
| Strong | A test circuit to check the architecture file | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | &#10003; | vtr_reg_strong/koios_test | Parmys |
56+
| Strong | Same test circuit without hard blocks | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | | vtr_reg_strong/koios_test_no_hb | Parmys |
57+
| Strong | A test circuit to check the architecture file | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | &#10003; | vtr_reg_strong_odin/koios_test | Odin |
58+
| Strong | Same test circuit without hard blocks | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | | vtr_reg_strong_odin/koios_test_no_hb | Odin |
59+
| Nightly | The `conv_layer.v` design | multiple | &#10003; | vtr_reg_nightly_test4/koios_medium_multi_arch | Parmys |
60+
| Nightly | The `conv_layer.v` design | multiple | &#10003; | vtr_reg_nightly_test4_odin/koios_medium_multi_arch | Odin |
61+
| Nightly | Other designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | &#10003; | vtr_reg_nightly_test6/koios_other | Parmys |
62+
| Nightly | Other designs | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | | vtr_reg_nightly_test6/koios_other_no_hb | Parmys |
63+
| Nightly | The `bwave_like.fixed.small.v` design | multiple | &#10003; | vtr_reg_nightly_test6/koios_other_multi_arch | Parmys |
64+
| Weekly | The `dla_like.large.v` design | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | &#10003; | vtr_reg_weekly/koios_dla_large | Parmys |
65+
| Weekly | The `bwave_like.float.large.v` design | k6FracN10LB_mem20K_complexDSP_customSB_22nm.xml | &#10003; | vtr_reg_weekly/koios_bwave_float_large | Parmys | |
66+
4367

4468
## Collecting QoR measurements
4569
For collecting QoR measurements on Koios benchmarks, follow the instructions [here](https://docs.verilogtorouting.org/en/latest/README.developers/#example-koios-benchmarks-qor-measurement).
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# proxy_benchmarks
2+
Generate Synthetic Benchmarks for FPGA Research
3+
4+
More information: [koios_proxy_benchmarks](https://github.com/UT-LCA/koios_proxy_benchmarks.git)

0 commit comments

Comments
 (0)