121 lines
3.5 KiB
Plaintext
121 lines
3.5 KiB
Plaintext
use the following step to build vortex and run it on fpga on intel cloud server using OPAE.
|
||
This script is also present at ~/dev/runVortex
|
||
|
||
## To configure quartus and opae. Run this after logging in.
|
||
source /export/fpga/bin/setup-fpga-env fpga-pac-a10
|
||
#########################
|
||
## Vortex Run commands ##
|
||
#########################
|
||
|
||
#
|
||
## Synthesis
|
||
#
|
||
|
||
cd /driver/hw/opae
|
||
|
||
# Configure a Quartus build area
|
||
afu_synth_setup -s sources.txt build_fpga
|
||
|
||
# Run Quartus in the vLab batch queue
|
||
cd build_fpga && qsub-synth
|
||
|
||
# check last 10 lines in build log for possible errors
|
||
tail -n 10 ./build_fpga_1c/build.log
|
||
|
||
# Check if the job is submitted to the queue and running. Status should be R
|
||
qstat | grep tinebp
|
||
|
||
# Constantly monitoring the job submitted to the queue. Stop this using Ctrl+C
|
||
watch ‘qstat | grep tinebp’
|
||
|
||
#
|
||
## Executing on FPGA
|
||
#
|
||
|
||
# From the build_fpga directory acquire a fpga node
|
||
qsub-fpga
|
||
|
||
# Go to the directory whree qsub-synth was run above
|
||
cd $PBS_O_WORKDIR
|
||
|
||
# Load the image onto an FPGA
|
||
fpgaconf vortex_afu.gbs
|
||
|
||
# If this says Multiple ports. Then use --bus with fpgaconf. #bus info can be found by fpgainfo port
|
||
fpgaconf --bus 0xaf vortex_afu.gbs
|
||
|
||
# Running the Test case
|
||
cd /driver/tests/basic
|
||
make run-fpga
|
||
|
||
#
|
||
## ASE build instructions
|
||
#
|
||
source /export/fpga/bin/setup-fpga-env fpga-pac-a10
|
||
|
||
# Acquire a sever node for running ASE simulations
|
||
qsub-sim
|
||
|
||
# build
|
||
make ase
|
||
|
||
# tests
|
||
./run_ase.sh build_ase_1c ../../driver/tests/basic/basic -n16
|
||
./run_ase.sh build_ase_1c ../../driver/tests/demo/demo -n 16
|
||
./run_ase.sh build_ase_1c ../../driver/tests/dogfood/dogfood -n16
|
||
./run_ase.sh build_ase_1c ../../benchmarks/opencl/vecadd/vecadd
|
||
|
||
# modify "vsim_run.tcl" to dump VCD trace
|
||
vcd file vortex.vcd
|
||
vcd add -r /*/Vortex/hw/rtl/*
|
||
run -all
|
||
|
||
# compress FPGA output files
|
||
tar -zcvf output_files_1c.tar.gz `find ./build_fpga_1c -type f \( -iname \*.rpt -o -iname \*.txt -o -iname \*summary -o -iname \*.log \)`
|
||
|
||
# compress VCD trace
|
||
tar -zcvf vortex.vcd.tar.gz ./build_ase_1c/work/vortex.vcd
|
||
tar -zcvf trace.vcd.tar.gz obj_dir/trace.vcd
|
||
tar -zcvf trace.fst.tar.gz trace.fst run.log
|
||
tar -zcvf run.log.tar.gz run.log
|
||
tar -cvjf vortex.vcd.tar.bz2 build_ase_1c/work/vortex.vcd
|
||
tar -zcvf vortex.vcd.tar.gz build_ase_1c/work/vortex.vcd
|
||
tar -zcvf run.log.tar.gz build_ase_1c/work/run.log
|
||
tar -zcvf vx_scope.vcd.tar.gz vx_scope.vcd
|
||
tar -cvjf vx_scope.vcd.tar.bz2 vx_scope.vcd
|
||
tar -cvjf trace.fst.tar.bz2 trace.fst run.log
|
||
tar -cvjf trace.vcd.tar.bz2 trace.vcd run.log
|
||
|
||
# decompress VCD trace
|
||
tar -zxvf /mnt/c/Users/Blaise/Downloads/vortex.vcd.tar.gz
|
||
tar -xvf /mnt/c/Users/Blaise/Downloads/vortex.vcd.tar.bz2
|
||
|
||
# launch Gtkwave
|
||
gtkwave ./build_ase_1c/work/vortex.vcd &
|
||
|
||
# kill process by Users
|
||
ps -u tinebp
|
||
kill -9 <pid>
|
||
|
||
# fixing device resource busy issue when deleting /build_ase_1c/
|
||
lsof +D build_ase_1c
|
||
|
||
# quick off synthesis
|
||
make -C pipeline clean && make -C pipeline > pipeline/build.log 2>&1 &
|
||
make -C cache clean && make -C cache > cache/build.log 2>&1 &
|
||
make -C core clean && make -C core > core/build.log 2>&1 &
|
||
make -C vortex clean && make -C vortex > vortex/build.log 2>&1 &
|
||
make -C top clean && make -C top > top/build.log 2>&1 &
|
||
|
||
# How to calculate the maximum operating frequency?
|
||
200 Mhz -> period = 1/200x10^6 = 5ns
|
||
if slack = +1.664 -> minimal period = 5-1.664 = 3.336 -> fmax = 1/3.336 = 300 Mhz
|
||
|
||
# build rtlsim from driver tests
|
||
make -C ../../rtlsim clean && reset && make -C ../../rtlsim
|
||
|
||
# split tar into multiple parts
|
||
split -b 50M home.tar.bz2 "home.tar.bz2.part"
|
||
|
||
|
||
cat run.log | grep -c "cache[0-9]*:[0-9]* dram_req" |