Skip to content

Commit e05a570

Browse files
georgkrylovjeanlego
authored andcommitted
ODIN_II: regression tests for mixing optimization for complex synthesis
This commit introduces a new regression test based off of micro bench- mark. The test implements half of the available multipliers in soft logic for micro benchmark. It is a first test in the series, proposed as a simple sanity check. Signed-off-by: Georgiy Krylov <[email protected]>
1 parent f3ff956 commit e05a570

File tree

7 files changed

+121
-1
lines changed

7 files changed

+121
-1
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
regression_test/benchmark/task/mixing_optimization/*

ODIN_II/regression_test/benchmark/suite/light_suite/task_list.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ regression_test/benchmark/task/keywords/*
88
regression_test/benchmark/task/syntax
99
regression_test/benchmark/task/FIR
1010
regression_test/benchmark/task/micro
11+
regression_test/benchmark/suite/complex_synthesis_suite
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
##############################################
2+
# Configuration file for running experiments
3+
##############################################
4+
# Path to directory of circuits to use
5+
# setup the architecture
6+
archs_dir=../vtr_flow/arch/timing
7+
8+
# hard adder and frac mul
9+
arch_list_add=k6_frac_N10_frac_chain_mem32K_40nm.xml
10+
# frac mul
11+
arch_list_add=k6_frac_N10_mem32k_40nm.xml
12+
# mul
13+
arch_list_add=k6_N10_mem32k_40nm.xml
14+
# no hard block
15+
arch_list_add=k6_N10_40nm.xml
16+
17+
# setup the circuits
18+
circuits_dir=regression_test/benchmark/verilog
19+
20+
# unit test
21+
circuit_list_add=operators/twobits_arithmetic_multiply.v
22+
# simple wide multiplication
23+
circuit_list_add=micro/bm_base_multiply.v
24+
# harblock mul
25+
circuit_list_add=micro/multiply_hard_block.v
26+
# complex mutliplication
27+
circuit_list_add=micro/bm_match[012345]_str_arch.v
28+
29+
synthesis_params= --mults_ratio 1.0
30+
31+
synthesis_parse_file=regression_test/parse_result/conf/synth.toml
32+
simulation_parse_file=regression_test/parse_result/conf/sim.toml
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
##############################################
2+
# Configuration file for running experiments
3+
##############################################
4+
# Path to directory of circuits to use
5+
# setup the architecture
6+
archs_dir=../vtr_flow/arch/timing
7+
8+
# hard adder and frac mul
9+
arch_list_add=k6_frac_N10_frac_chain_mem32K_40nm.xml
10+
# frac mul
11+
arch_list_add=k6_frac_N10_mem32k_40nm.xml
12+
# mul
13+
arch_list_add=k6_N10_mem32k_40nm.xml
14+
# no hard block
15+
arch_list_add=k6_N10_40nm.xml
16+
17+
# setup the circuits
18+
circuits_dir=regression_test/benchmark/verilog
19+
20+
# unit test
21+
circuit_list_add=operators/twobits_arithmetic_multiply.v
22+
# simple wide multiplication
23+
circuit_list_add=micro/bm_base_multiply.v
24+
# harblock mul
25+
circuit_list_add=micro/multiply_hard_block.v
26+
# complex mutliplication
27+
circuit_list_add=micro/bm_match[012345]_str_arch.v
28+
29+
synthesis_params= --mults_ratio 0.5
30+
31+
synthesis_parse_file=regression_test/parse_result/conf/synth.toml
32+
simulation_parse_file=regression_test/parse_result/conf/sim.toml
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
##############################################
2+
# Configuration file for running experiments
3+
##############################################
4+
# Path to directory of circuits to use
5+
# setup the architecture
6+
archs_dir=../vtr_flow/arch/timing
7+
8+
# hard adder and frac mul
9+
arch_list_add=k6_frac_N10_frac_chain_mem32K_40nm.xml
10+
# frac mul
11+
arch_list_add=k6_frac_N10_mem32k_40nm.xml
12+
# mul
13+
arch_list_add=k6_N10_mem32k_40nm.xml
14+
# no hard block
15+
arch_list_add=k6_N10_40nm.xml
16+
17+
# setup the circuits
18+
circuits_dir=regression_test/benchmark/verilog
19+
20+
# unit test
21+
circuit_list_add=operators/twobits_arithmetic_multiply.v
22+
# simple wide multiplication
23+
circuit_list_add=micro/bm_base_multiply.v
24+
# harblock mul
25+
circuit_list_add=micro/multiply_hard_block.v
26+
# complex mutliplication
27+
circuit_list_add=micro/bm_match[012345]_str_arch.v
28+
29+
synthesis_params= --mults_ratio 0.0
30+
31+
synthesis_parse_file=regression_test/parse_result/conf/synth.toml
32+
simulation_parse_file=regression_test/parse_result/conf/sim.toml

doc/src/odin/dev_guide/regression_test.md

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,11 @@ This regression test targets cases that require a lot of ram and time.
297297

298298
The micro regression tests targets hards blocks and pieces that can be easily instantiated in architectures.
299299

300-
### opertators
300+
### mixing_optimization
301+
302+
The mixing optimization regression tests targets mixing implementations for operations implementable in hard blocks and their soft logic counterparts that can be can be easily instantiated in architectures.
303+
304+
### operators
301305

302306
This regression test targets the functionality of different opertators. It checks bit size capacity and behaviour.
303307

@@ -318,6 +322,8 @@ This set of regression test includes benchmarks targetting compiler directives a
318322
```bash
319323
benchmark
320324
├── suite
325+
│   ├── complex_synthesis_suite
326+
│   │ └── task_list.conf
321327
│   ├── full_suite
322328
│   │   └── task_list.conf
323329
│   ├── heavy_suite
@@ -410,6 +416,19 @@ benchmark
410416
│   │   ├── simulation_result.json
411417
│   │   ├── synthesis_result.json
412418
│   │   └── task.conf
419+
│   ├── mixing_optimization
420+
|   |   ├── mults_auto_full
421+
│   │   |   ├── simulation_result.json
422+
│   │   |   |── synthesis_result.json
423+
│   │   |   └── task.conf
424+
|   |   ├── mults_auto_half
425+
│   │   |   ├── simulation_result.json
426+
│   │   |   |── synthesis_result.json
427+
│   │   |   └── task.conf
428+
|   |   ├── mults_auto_none
429+
│   │   |   ├── simulation_result.json
430+
│   │   |   |── synthesis_result.json
431+
│   │   |   └── task.conf
413432
│   ├── operators
414433
│   │   ├── simulation_result.json
415434
│   │   ├── synthesis_result.json

doc/src/odin/dev_guide/verify_script.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ The following examples are being performed in the ODIN_II directory:
3333

3434
### Generating Results for a New Task
3535

36+
To generate new results, `synthesis_parse_file` and `simulation_parse_file` must be specified
37+
in task.conf file.
38+
3639
The following commands will generate the results of a new regression test using N processors:
3740

3841
```bash

0 commit comments

Comments
 (0)