|
|
||
|---|---|---|
| .. | ||
| saif_trace_example | ||
| src/saif_trace_example | ||
| README.md | ||
| gcd.v | ||
| saif_trace.cpp | ||
| sta_commands | ||
README.md
This example workflow was tested on Debian 12.
Introduction
To demonstrate the workflow of creating a SAIF file from the simulation trace and a power consumption report generation, we have prepared a simple example located in the Verilator project directory under the examples/saif_example path.
Prerequisites
This example assumes that cloned repositories are located in the ~/dev directory. You will need to clone and build these projects:
-
Verilatorfromhttps://github.com/antmicro/verilatoron branchsaif. You can build it with running these commands in the project directoryautoconf ./configure --prefix $(pwd) make -j $(nproc)and then add the binary directory
~/dev/verilator/bin/to thePATHenvironmental variable. -
OpenSTAfromhttps://github.com/The-OpenROAD-Project/OpenSTA. For building instructions, you can refer to the projectREADMEfile. Keep in mind to add the directory where thestabinary is located to thePATHenvironmental variable. -
OpenROAD-flow-scriptswithYosysfromhttps://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts. To buildYosysinOpenROAD-flow-scripts, you will need to clone it's submodule withgit submodule update --init --recursive tools/yosysthen go to the
tools/yosysdirectory and runmake -j $(nproc) PREFIX=~/dev/OpenROAD-flow-scripts/tools/install/yosys install
Workflow
Generating SAIF file from trace
From the examples/saif_example directory in the verilator project, run verilation and compile model to executable with SAIF trace flag enabled --trace-saif:
verilator --cc --exe --build --trace-saif -j -Wno-latch gcd.v saif_trace.cpp
Then run simulation with the generated binary
./obj_dir/Vgcd
This will generate the simx.saif file in the current directory with the trace output.
Generating power consumption report
For power consumption report generation you will need to prepare simulated model sources for Yosys synthesis in the OpenROAD project directory. This example workflow uses the asap7 platform. From the examples/saif_example directory in the verilator project, copy saif_trace_example contents to OpenROAD-flow-scripts/flow/designs/asap7/ and src/saif_trace_example to OpenROAD-flow-scripts/flow/designs/src/
cp -r saif_trace_example ~/dev/OpenROAD-flow-scripts/flow/designs/asap7/
cp -r src/saif_trace_example ~/dev/OpenROAD-flow-scripts/flow/designs/src/
Then go to the OpenROAD-flow-scripts project top directory and run the Yosys synthesis with
make -C flow DESIGN_CONFIG=designs/asap7/saif_trace_example/config.mk synth
Result of the synthesis will be located in the ~/dev/OpenROAD-flow-scripts/flow/results/asap7/saif_trace_example/base/ directory.
Copy previously generated SAIF file from trace to the synthesis result directory with
cp ~/dev/verilator/examples/saif_example/simx.saif ~/dev/OpenROAD-flow-scripts/flow/results/asap7/saif_trace_example/base/
For liberty files paths simplicity, you can export the path to their directory as the LIB_DIR environmental variable. In this example it will be
export LIB_DIR=~/dev/OpenROAD-flow-scripts/flow/platforms/asap7/lib/NLDM/
Go to the synthesis results directory, run sta and then execute commands below
read_liberty $::env(LIB_DIR)/asap7sc7p5t_AO_RVT_FF_nldm_211120.lib.gz
read_liberty $::env(LIB_DIR)/asap7sc7p5t_INVBUF_RVT_FF_nldm_220122.lib.gz
read_liberty $::env(LIB_DIR)/asap7sc7p5t_OA_RVT_FF_nldm_211120.lib.gz
read_liberty $::env(LIB_DIR)/asap7sc7p5t_SIMPLE_RVT_FF_nldm_211120.lib.gz
read_liberty $::env(LIB_DIR)/asap7sc7p5t_SEQ_RVT_FF_nldm_220123.lib
read_verilog 1_synth.v
link_design gcd
read_sdc 1_synth.sdc
read_saif -scope gcd simx.saif
report_power
This will generate power consumption report that should look like this
Group Internal Switching Leakage Total
Power Power Power Power (Watts)
----------------------------------------------------------------
Sequential 5.19e-05 5.18e-06 5.34e-09 5.71e-05 43.5%
Combinational 4.15e-05 3.26e-05 2.17e-08 7.42e-05 56.5%
Clock 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%
Macro 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%
Pad 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.0%
----------------------------------------------------------------
Total 9.35e-05 3.78e-05 2.70e-08 1.31e-04 100.0%
71.2% 28.8% 0.0%