openpiton+ariane: the risc-v hardware research...

38
OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University and ETH Zürich http://openpiton.org http://pulp-platform.org

Upload: others

Post on 12-Jun-2020

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

OpenPiton+Ariane: The RISC-V Hardware Research Platform

Princeton University and ETH Zürich

http://openpiton.orghttp://pulp-platform.org

Page 2: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Simulating OpenPiton RTL

2

Page 3: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Anatomy of a Simulation

• Simulation model– Design under test (DUT) RTL– Top-level test bench– Simulator compiler arguments

• Verilog macros, include directories, monitor params, etc.

• Test stimuli– Assembly tests– C tests– Source/sink bit vectors

• Based on infrastructure from Christopher Batten’s group at Cornell

3

Page 4: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

OpenPiton Simulation Models

4

Page 5: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Simulation Scripts/Tools• sims

– piton/tools/src/sims/sims,2.0– Adapted from OpenSPARC T1– Build individual simulation models and run test stimuli– Regressions

• Single simulation model– Supports Synopsys VCS, Mentor ModelSim, and Verilator

• contint– piton/tools/src/contint/contint,1.0– Calls sims– Continuous integration bundles

• Multiple simulation models– Currently only supports SLURM job scheduler and Synopsys VCS

5

Page 6: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Simulator Choice

• Synopsys VCS, Mentor ModelSim, and Verilatorare all supported– SPARC only: Cadence Incisive and Icarus Verilog

• Commands shown are for Verilator

• For VCS, replace vlt with vcs

• For ModelSim, replace vlt with msm

6

Page 7: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Building a Simulation Model

• Required sims arguments-sys=<simulation model>

-vlt_build

• Other useful arguments-vlt_build_args=<verilator arguments>

-debug_all (for VCS)

7

Page 8: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Simulation Model Build Outputs

• stdout and sims.log

• build/<simulation_model>/<build_id>/

-build_id=<name>• Default is rel-0.1

8

Page 9: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Example: The manycore Model

• sims -sys=manycore -vlt_build-ariane

– sims.log: check for build errors• Check for SIGDIE

– build/manycore/rel-0.1/

9

Page 10: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Hands-on: The manycore Model

• cd $PITON_ROOT• source piton/ariane_setup.sh• cd $PITON_ROOT/build• sims -sys=manycore -vlt_build–ariane

• Check Outputs– sims.log: check for build errors– build/manycore/rel-0.1/obj_dir/Vcmp_top

10

Page 11: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Running a Simulation• Required sims arguments

-sys=<simulation model>-vlt_run<test stimuli>

• Varies by simulation model type (assembly file, source/sink prefix)

• Other useful arguments-build_id=<name>-gui (for VCS, ModelSim)

• Requires –debug_all during build

11

Page 12: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Simulation Outputs

• Depends on test type• stdout and sims.log– PASS (HIT GOOD TRAP)

• Test binary (diag.exe)• Memory image (mem.image)• Symbol table (symbol.tbl)• Performance log (perf.log)• Status log (status.log)

12

Page 13: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Example: C Program Simulation

• sims -sys=manycore -vlt_run-ariane hello_world.c

– RISC-V assembly tests have the same syntax, but end with .S or.riscv

13

Page 14: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Hands-on: C Program Simulation

• cd $PITON_ROOT/build• sims -sys=manycore -vlt_run-ariane hello_world.c–rtl_timeout=1000000

• Check fake_uart.log for output

14

Page 15: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Example output

15

Page 16: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Debugging Simulations• Monitors (manycore)– Non-synthesizeable Verilog modules– Instantiated in top-level test bench– X-module references DUT signals

• Print useful output• Check properties

– Building with the following flag reduces verbosity• -config_rtl=MINIMAL_MONITORING

• Tools for parsing simulation output– pc_grep <log>, reg_grep <log>, etc.

16

Page 17: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Debugging Simulations

17

Page 18: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Debugging Simulations with VCS & DVE

• Waveforms - DVE– Build with -debug_all– Run with –gui

• Example:– sims -sys=manycore -ariane -vcs_build–debug_all

– sims -sys=manycore -ariane -vcs_runhello_world.c -gui

18

Page 19: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Debugging Simulations

19

Page 20: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Debugging Simulations

20

Page 21: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Debugging Simulations with MSM

• Waveforms– Run with –gui –log_all

• Example:– sims -sys=manycore -ariane -msm_build– sims -sys=manycore -ariane -msm_runhello_world.c –gui –log_all

21

Page 22: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Debugging Simulations

22

Page 23: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Debugging Simulations

23

Page 24: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Exploring the assembly test suite• piton/verif/diag/assembly/

• Diaglists (piton/verif/diag/*.diaglist)– Groups of assembly tests and assembly test declarations– Assembly test declaration

label testfile.s <sims arguments>

– Assembly group definitions<groupname sys=mymodel sims args>

test1 test1.s</groupname>

– Groups can be nested

24

Page 25: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Diaglists

25

Page 26: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Common Test Flags

• -rtl_timeout=– Number of cycles sims will wait before timing out the test

• -sim_run_args=– Arguments (e.g. plusargs) to Verilog simulator

• -midas_args=– Arguments to SPARC assembler, midas– Thread count, thread stride, and more

• -finish_mask=– Mask specifying threads to wait for

26

Page 27: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Example: Precompiled RISC-V Assembly Tests and Benchmarks

• Assembly tests (e.g. rv64ui-p-addi.S):• sims -sys=manycore -vlt_run -arianerv64ui-p-addi.S -precompiled -rtl_timeout=1000000

• Benchmarks (e.g. dhrystone.riscv):• sims -sys=manycore -vlt_run -arianedhrystone.riscv -precompiled -rtl_timeout=1000000

27

Page 28: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Running a Regression

• Groups of tests as defined in diaglists

• Tests utilize the same simulation model– One build, multiple test runs

• sims -sim_type=vlt –group=<regression name>– Simulation model specified by group declaration– -sim_type=vlt replaces -vlt_build and –vlt_run

29

Page 29: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Running a Regression

• Example:• sims -sim_type=vlt -group=ariane_tile1_asm_tests_p• sims -sim_type=vlt -group=ariane_tile1_asm_tests_v

• sims -sim_type=vlt -group=ariane_tile1_amo_tests_p

• sims -sim_type=vlt -group=ariane_tile1_amo_tests_v• sims -sim_type=vlt -group=ariane_tile1_benchmarks

• sims -sim_type=vlt -group=ariane_tile1_simple

• sims -sim_type=vlt -group=ariane_tile16_simple

30

Page 30: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Regression Outputs

• Simulation model will be built as usual in build/<simulation_model>/<build_id>/

• Tests run sequentially– Test results stored in build/<date>_<id>

• Check results– regreport <test results directory>

31

Page 31: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Regression Outputs

32

Page 32: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Continuous Integration Bundles

• Infrastructure for large scale continuous integration testing

• Supports multiple different simulation models

• Specified by XML files

33

Page 33: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Continuous Integration Bundles<bundles>

<bundle_name>

<asm_test name=“asm_test_name”><sys>sim_model</sys><asm_diag_name>test.s</asm_diag_name>

</asm_test>

<asm_regress name=“regress_name”><sys>sim_model</sys><group>regression name</group>

</asm_regress>

<include>sub-bundle name</include>

.

.

.

</bundle_name>

</bundles>

34

Page 34: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Continuous Integration Bundles

35

Page 35: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

Running a contint Bundle

• contint – continuous integration tool– Currently requires SLURM job scheduler

• contint --bundle=<bundle name>

• Example:– contint --bundle=git_push

36

Page 36: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

contint Bundle Outputs• All simulation models will be built and simulations submitted to

scheduler

• Results will be aggregated and printed to stdout

• Individual simulation results located in – build/contint_<bundle_name>_<date>_<id>

• Re-process results– contint --bundle=<bundle name> --check_results--contint_dir=<results directory>

• Example:– contint --bundle=git_push --check_results --contint_dir=$PWD/contint_git_push_2016_6_19_0

37

Page 37: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

contint Bundle Outputs

38

Page 38: OpenPiton+Ariane: The RISC-V Hardware Research Platformparallel.princeton.edu/openpiton/tutorial_slides/... · OpenPiton+Ariane: The RISC-V Hardware Research Platform Princeton University

contint Bundle Outputs

39