This is an old revision of the document!
The DySER opensource project has gone through a radical change. This includes change in file structure scripts, new compiler DyCC, and some new tools.
The opensplyser evaluation framework contains two pieces:
git clone /p/vertical/projects/dyser/svn/splyser.git . <check_out_dir>
The following instructions describe how to build the toolchain.
cd <checkout_dir>/opensparc
and look for
OpenSPARCT1.bash
# ***Modification required for new install*** # Top of opensparc portion export HW_ROOT="<path to your checkout dir>" export SW_ROOT="<path to your SW toolchain install dir>"
The HW_ROOT should be your <check_out_dir>, and the SW_ROOT now is /p/vertical/projects/dyser/install/dyser-tools-full.
# ***Modification required for new install*** #Regression run-time scratchspace export DRMJOBSCRATCHSPACE=/scratch/vcsjobscratch
In DySER opensource project, the benchmarks are maintained in HW toolchain. The main working directories are:
opensparc/verif/diag/c/<benchmark_sets>
- This is the directory that has all the benchmarks:hardDYSER
- includes scalar/
(scalar code) and splyser/
(hand DySERized code)micro13
- includes vec/
directory, which are the annotated c codes for DyCC to compile (Compiler DySERized code)opensparc/regr_runs/<benchmark_sets>
- This is the directory that has all the VCS simulation scripts.hardDYSER
- VCS simulation scripts with hand DySERized codemicro13
- VCS simulation scripts with compiler DySERized code
We provide GEM5 simulation script and embedded it into the makefiles under diag
directory, such that we can compile and run gem5-simulation in place. On the other hand, the VCS framework searches the diag
directory, compile the benchmarks and verilog RTL, and invoke VCS for RTL-level simulation.
The DySER evaluation framework can evaluate the design on 3 different platforms:
The GEM5+DySER simulator is part of the SW toolchain. After installed the SW toolchain, a wrapper script run-gem5
is created. This wrapper script is then used in config.mk
under opensparc/verif/diag/c/<benchmark_sets>
. Here is an example to simulate fft in hardDYSER
:
Navigate to:
opensparc/verif/diag/c/hardDYSER/fft/splyser
Compile and run simulation:
make run_perf GEM5=1 1W=1
A GEM5 simulation should be executed, and the output will be in m5out
directory. the m5out/stats.txt
is the simulation report, where the system.switch_cpus.numCycles
is the number of total cycles in the interested region.
In hardDySER benchmark set, Makefile commandline options are GEM5
, FPGA
, 1W
and 8W
. The GEM5
adds -DFF
flag which translates the inserted marker (which marks the interested region) in the benchmark for GEM5 simulation. The FPGA
flag translates the marker for FPGA simulation. The 1W
and 8W
flags compiles for 1W and 8W (vectorized) version of the DySERized code.
In micro13 benchmark set, Makefile commandline options are GEM5
, FPGA
, AUTO_DYSER
and AUTO_VEC
. The GEM5
and FPGA
flags are the same as above. The AUTO_DYSER
flag tells compiler to DySERize the annotated region, and the AUTO_VEC
flag tells the compiler to DySERize and vectorize the annotated region.
The VCS simulation framework is based on OpenSPARC sims
script. Read OpenSPARC manual in opensparc/doc/OpenSPARCT1_DVGuide.pdf
for more information of sims
script. In brief, the sims
script compiles verilog files, compile and link benchmark code, create image and run VCS simulation.
First, navigate to:
/p/vertical/dyser-huge/dyser-micro13/opensparc/regr_runs/hardDYSER/fft.splyser.8w
You will see two files in this directory:
run.sh
: This script sources the OpenSPARCT1.bash
to set up the environment, and executes the sims
script. You can find variables that controls VCS output, such as wavefront dump, switching activity for power estimation, and DySER trace files.sims
script will call another tool MIDAS
in the OpenSPARC toolchain to read this file and compile the benchmark.Now, execute:
bash run.sh
Several files will be created after simulation:
build/
: This directory contains every intermediate assembly and executable.vlog.log
is the VCS OpenSPARC execution trace, the d0.dycore.log
is the DySER core trace, the d0.dyser.log
is the DySER interface trace, and the sims.log
is the script execution log. FPGA is same as last revision. [TODO: new FPGA tutorial]