Add your own design¶
Step 1: Initialize the directory¶
Place yourself in your design’s directory, or any other directory.
Run the init command of Odatix to create configuration files.
odatix init
Step 2: Architecture folder¶
Create a folder named after your design in the odatix_userconfig/architectures folder.
Step 3: Architecture settings file¶
Add a
_settings.ymlfile to your newly created folder and fill it with one of the templates below
1---
2rtl_path: "examples/alu_sv"
3
4top_level_file: "alu_top.sv"
5top_level_module: "alu_top"
6
7clock_signal: "i_clk"
8reset_signal: "i_rst"
9
10# copy a file into synthesis directory?
11file_copy_enable: "false"
12file_copy_source: "/dev/null"
13file_copy_dest: "/dev/null"
14
15# delimiters for parameter files
16use_parameters: "true"
17start_delimiter: "#("
18stop_delimiter: ")("
19
20# target-specific options
21xc7s25-csga225-1:
22 fmax_synthesis:
23 lower_bound: 100
24 upper_bound: 450
25 custom_freq_synthesis:
26 # list definition
27 list: [50, 100]
28xc7a100t-csg324-1:
29 fmax_synthesis:
30 lower_bound: 150
31 upper_bound: 800
32 custom_freq_synthesis:
33 # range definition
34 lower_bound: 200
35 upper_bound: 1800
36 step: 200
37...
1---
2# generate the rtl (from chisel for example)
3generate_rtl: "true"
4generate_command: "sbt 'runMain ALUTop --o=rtl'" # command for rtl generation
5
6design_path: "examples/alu_chisel"
7rtl_path: "examples/alu_chisel/rtl"
8
9# generated design settings
10top_level_file: "ALUTop.sv"
11top_level_module: "ALUTop"
12clock_signal: "clock"
13reset_signal: "reset"
14
15# copy a file into synthesis directory?
16file_copy_enable: "false"
17file_copy_source: "/dev/null"
18file_copy_dest: "/dev/null"
19
20# delimiters for parameter files
21use_parameters: "true"
22param_target_file: "src/main/scala/ALUTop.scala"
23start_delimiter: "new ALUTop("
24stop_delimiter: ")"
25
26# target-specific options
27xc7s25-csga225-1:
28 fmax_synthesis:
29 lower_bound: 100
30 upper_bound: 450
31 custom_freq_synthesis:
32 # list definition
33 list: [50, 100]
34xc7a100t-csg324-1:
35 fmax_synthesis:
36 lower_bound: 150
37 upper_bound: 800
38 custom_freq_synthesis:
39 # range definition
40 lower_bound: 200
41 upper_bound: 1800
42 step: 200
43...
Edit the file, so it matches your design source files directory, top level filename, module name, and clock signal name.
The rtl/design path can be both absolute or relative to the directory from where you start Odatix.
Set
start_delimiterandstop_delimiter, so it matches the delimiters of the parameter section in your top level source file.Add target-specific bounds for the binary search in
fmax_synthesis.Add a list of frequencies, a range (lower and upper bounds and a step) or a combination of both in
custom_freq_synthesisfor custom frequency synthesis.A documentation of the keys for
_settings.ymlfiles can be found in section Settings
Step 4: Parameter files¶
Add parameter files to the folder. Parameter files should match the parameter section of your top-level source file with the desired values.
For instance, with the following Verilog module
1module alu_top #(
2 parameter BITS = 8
3)(
4 input wire i_clk,
5 input wire i_rst,
6 input wire [4:0] i_sel_op,
7 input wire [BITS-1:0] i_op_a,
8 input wire [BITS-1:0] i_op_b,
9 output wire [BITS-1:0] o_res
10);
One of the parameter file could contain:
1 parameter BITS = 16
Another parameter file could contain:
1 parameter BITS = 32
You can create as many parameter files as you wish, with different parameter values. There is no limit to the number of parameters in parameter files. The only constraint is the strict correspondence between the contents of the parameter files and the parameter section of the top-level in terms of numbers and names.
Step 5: Run your design configurations!¶
- Follow the same steps as in section Fmax synthesis for Fmax synthesis or Custom Frequency synthesis for custom frequency synthesis.:
Edit
odatix_userconfig/fmax_synthesis_settings.ymlto add your design’s configurationsEdit
odatix_userconfig/custom_freq_synthesis_settings.ymlto add your design’s configurationsSelect the target device or technology in the yaml file corresponding to your EDA tool.
Run the selected designs
Visualize and explore the results