diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f81d81ac6..31702f82b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,17 +1,18 @@ before_script: - - export CXX=g++-4.8.3 CC=gcc-4.8.3 - # paths to local or network installation (the riscv toolchain and - # verilator are not built in a ci job in this case) - - export QUESTASIM_HOME=/scratch/$USER/questasim + - export CXX=g++-7 CC=gcc-7 + # paths to local or network installations (the riscv toolchain and + # verilator are not built in the ci job as in travis) + - export QUESTASIM_HOME= - export QUESTASIM_VERSION= - - export RISCV=/scratch/$USER/riscv_install - - export VERILATOR_ROOT=/scratch/$USER/verilator-3.924 + - export QUESTASIM_FLAGS= + - export RISCV=/scratch/$USER/projects/riscv_install + - export VERILATOR_ROOT=/scratch/$USER/projects/verilator-3.924 # setup dependent paths - export PATH=${RISCV}/bin:$VERILATOR_ROOT/bin:${PATH} - - export LIBRARY_PATH=$CI_PROJECT_DIR/tmp/lib - - export LD_LIBRARY_PATH=$CI_PROJECT_DIR/tmp/lib - - export C_INCLUDE_PATH=$CI_PROJECT_DIR/tmp/include:$VERILATOR_ROOT/include - - export CPLUS_INCLUDE_PATH=$CI_PROJECT_DIR/tmp/include:$VERILATOR_ROOT/include + - export LIBRARY_PATH=$RISCV/lib + - export LD_LIBRARY_PATH=$RISCV/lib + - export C_INCLUDE_PATH=$RISCV/include:$VERILATOR_ROOT/include + - export CPLUS_INCLUDE_PATH=$RISCV/include:$VERILATOR_ROOT/include # number of parallel jobs to use for make commands and simulation - export NUM_JOBS=4 - ci/make-tmp.sh @@ -27,7 +28,6 @@ stages: build: stage: build script: - - ci/install-fesvr.sh - ci/build-riscv-tests.sh - make clean - make build questa_version=$QUESTASIM_VERSION diff --git a/.travis.yml b/.travis.yml index 2ed114006..557dd2697 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,8 +13,8 @@ addons: sources: - ubuntu-toolchain-r-test packages: - - gcc-4.8 - - g++-4.8 + - gcc-7 + - g++-7 - gperf - autoconf - automake @@ -29,7 +29,6 @@ addons: - texinfo - python-pexpect - libusb-1.0-0-dev - - device-tree-compiler env: global: - RISCV="/home/travis/riscv_install" @@ -41,13 +40,13 @@ branches: - ariane_next before_install: - - export CXX=g++-4.8 CC=gcc-4.8 + - export CXX=g++-7 CC=gcc-7 # setup dependent paths - export PATH=$RISCV/bin:$VERILATOR_ROOT/bin:$PATH - - export LIBRARY_PATH=$TRAVIS_BUILD_DIR/tmp/lib - - export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/tmp/lib - - export C_INCLUDE_PATH=$TRAVIS_BUILD_DIR/tmp/include:$VERILATOR_ROOT/include - - export CPLUS_INCLUDE_PATH=$TRAVIS_BUILD_DIR/tmp/include:$VERILATOR_ROOT/include + - export LIBRARY_PATH=$RISCV/lib + - export LD_LIBRARY_PATH=$RISCV/lib + - export C_INCLUDE_PATH=$RISCV/include:$VERILATOR_ROOT/include + - export CPLUS_INCLUDE_PATH=$RISCV/include:$VERILATOR_ROOT/include # number of parallel jobs to use for make commands and simulation - export NUM_JOBS=4 - ci/make-tmp.sh @@ -64,24 +63,23 @@ jobs: script: - ci/build-riscv-gcc.sh - ci/install-verilator.sh + - ci/install-fesvr.sh + - ci/install-dtc.sh - stage: test name: run riscv benchmarks script: - - ci/install-fesvr.sh - ci/build-riscv-tests.sh - make -j${NUM_JOBS} run-benchmarks-verilator verilator=$VERILATOR_ROOT/bin/verilator # rv64ui-p-* tests - stage: test - name: run rv64ui-p-* asm tests + name: run asm tests1 script: - - ci/install-fesvr.sh - ci/build-riscv-tests.sh - make -j${NUM_JOBS} run-asm-tests1-verilator verilator=$VERILATOR_ROOT/bin/verilator # rv64ui-v-* tests - stage: test - name: run rv64ui-v-* asm tests + name: run asm tests2 script: - - ci/install-fesvr.sh - ci/build-riscv-tests.sh - make -j${NUM_JOBS} run-asm-tests2-verilator verilator=$VERILATOR_ROOT/bin/verilator diff --git a/Makefile b/Makefile index 9f6ab6342..157e960b2 100755 --- a/Makefile +++ b/Makefile @@ -112,7 +112,7 @@ work/%.o: tb/dpi/%.cc $(dpi_hdr) $(library)/ariane_dpi.so: $(dpi) # Compile C-code and generate .so file - g++ -shared -m64 -o $(library)/ariane_dpi.so $? -lfesvr + $(CXX) -shared -m64 -o $(library)/ariane_dpi.so $? -lfesvr $(library): # Create the library diff --git a/ci/build-riscv-gcc.sh b/ci/build-riscv-gcc.sh index 233364e0b..4548bc370 100755 --- a/ci/build-riscv-gcc.sh +++ b/ci/build-riscv-gcc.sh @@ -1,6 +1,7 @@ #!/bin/bash set -e ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +VERSION="691e4e826251c7ec59f883cab18440c87baf45e7" cd $ROOT/tmp if [ -z ${NUM_JOBS} ]; then @@ -10,7 +11,7 @@ fi if ! [ -e $RISCV/bin ]; then [ -d $ROOT/tmp/riscv-gnu-toolchain ] || git clone https://github.com/riscv/riscv-gnu-toolchain.git cd riscv-gnu-toolchain - git checkout 691e4e826251c7ec59f883cab18440c87baf45e7 + git checkout $VERSION git submodule update --init --recursive mkdir -p $RISCV diff --git a/ci/build-riscv-tests.sh b/ci/build-riscv-tests.sh index d21f747fd..2c335cbcc 100755 --- a/ci/build-riscv-tests.sh +++ b/ci/build-riscv-tests.sh @@ -1,6 +1,8 @@ #!/bin/bash set -e ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +VERSION="294bfce8a1ca2fc501b8939292146e44f813a2b8" + cd $ROOT/tmp if [ -z ${NUM_JOBS} ]; then @@ -9,7 +11,7 @@ fi [ -d $ROOT/tmp/riscv-tests ] || git clone https://github.com/riscv/riscv-tests.git cd riscv-tests -git checkout 294bfce8a1ca2fc501b8939292146e44f813a2b8 +git checkout $VERSION git submodule update --init --recursive autoconf mkdir -p build diff --git a/ci/gitlab-ci-emul.sh b/ci/gitlab-ci-emul.sh index 287d21dbc..9435a1452 100755 --- a/ci/gitlab-ci-emul.sh +++ b/ci/gitlab-ci-emul.sh @@ -3,8 +3,8 @@ # source this with a bash shell in the project root # comment out next command if you don't want to use sudo sudo apt install \ - gcc-4.8 \ - g++-4.8 \ + gcc-7 \ + g++-7 \ gperf \ autoconf \ automake \ @@ -18,8 +18,7 @@ sudo apt install \ flex \ texinfo \ python-pexpect \ - libusb-1.0-0-dev \ - device-tree-compiler + libusb-1.0-0-dev # customize your paths here source ci/path-setup.sh @@ -30,6 +29,8 @@ ci/build-riscv-gcc.sh ci/install-fesvr.sh ci/install-verilator.sh ci/build-riscv-tests.sh +ci/install-dtc.sh +ci/install-spike.sh make clean # run asm tests on verilator diff --git a/ci/install-dtc.sh b/ci/install-dtc.sh new file mode 100755 index 000000000..60dd0d62e --- /dev/null +++ b/ci/install-dtc.sh @@ -0,0 +1,22 @@ +#!/bin/bash +set -e +ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +VERSION="b94c056b137e59deefc62fbfe0cd3a23edfcc07c" + +cd $ROOT/tmp + +if [ -z ${NUM_JOBS} ]; then + NUM_JOBS=1 +fi + +if [ ! -e "$RISCV/dtc/dtc" ]; then + echo "Installing DTC" + git clone https://git.kernel.org/pub/scm/utils/dtc/dtc.git + cd dtc + git checkout $VERSION + make -j${NUM_JOBS} PREFIX=$RISCV/ NO_PYTHON=1 + make -j${NUM_JOBS} check NO_PYTHON=1 + make -j${NUM_JOBS} install PREFIX=$RISCV/ NO_PYTHON=1 +else + echo "Using DTC from cached directory." +fi diff --git a/ci/install-fesvr.sh b/ci/install-fesvr.sh index 899083126..2b9c0d7aa 100755 --- a/ci/install-fesvr.sh +++ b/ci/install-fesvr.sh @@ -1,19 +1,27 @@ #!/bin/bash set -e ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +VERSION=30e85ce253788b29bd4ac0b5e5c23a077d96dc24 + cd $ROOT/tmp -RELEASE=0.1.0 if [ -z ${NUM_JOBS} ]; then NUM_JOBS=1 fi -if ! [ -e $ROOT/tmp/riscv-fesvr ]; then +if [ ! -e "${RISCV}/lib/libfesvr.so" ]; then + echo "Installing RISCV FESVR" git clone https://github.com/riscv/riscv-fesvr.git + cd riscv-fesvr + git checkout $VERSION + mkdir -p build + cd build + ../configure --prefix="$RISCV/" + make -j${NUM_JOBS} + make install +else + echo "Using RISCV FESVR from cached directory." fi -cd $ROOT/tmp/riscv-fesvr -mkdir -p build -cd build -../configure --prefix="$ROOT/tmp" -make -j${NUM_JOBS} -make install + + + diff --git a/ci/install-spike.sh b/ci/install-spike.sh new file mode 100755 index 000000000..77fd803b6 --- /dev/null +++ b/ci/install-spike.sh @@ -0,0 +1,27 @@ +#!/bin/bash +set -e +ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +VERSION="def4c5b104efd382e633d5fdca49508757bb5e23" + +cd $ROOT/tmp + +if [ -z ${NUM_JOBS} ]; then + NUM_JOBS=1 +fi + +if [ ! -e "${RISCV}/bin/spike" ]; then + echo "Installing Spike" + git clone https://github.com/riscv/riscv-isa-sim.git + cd riscv-isa-sim + git checkout $VERSION + mkdir -p build + cd build + ../configure --prefix="$RISCV/" + make -j${NUM_JOBS} + make install +else + echo "Using Spike from cached directory." +fi + + + diff --git a/ci/path-setup.sh b/ci/path-setup.sh index d7d4b33f0..66394262a 100644 --- a/ci/path-setup.sh +++ b/ci/path-setup.sh @@ -5,17 +5,18 @@ export CI_BUILD_DIR=$TOP/ariane-repo #customize this to your setup export QUESTASIM_HOME= export QUESTASIM_VERSION= -export CXX=g++-4.8 CC=gcc-4.8 +export QUESTASIM_FLAGS= +export CXX=g++-7 CC=gcc-7 # where to install the tools export RISCV=$TOP/riscv_install export VERILATOR_ROOT=$TOP/verilator-3.924/ export PATH=$RISCV/bin:$VERILATOR_ROOT/bin:$PATH -export LIBRARY_PATH=$CI_BUILD_DIR/tmp/lib -export LD_LIBRARY_PATH=$CI_BUILD_DIR/tmp/lib -export C_INCLUDE_PATH=$CI_BUILD_DIR/tmp/include:$VERILATOR_ROOT/include -export CPLUS_INCLUDE_PATH=$CI_BUILD_DIR/tmp/include:$VERILATOR_ROOT/include +export LIBRARY_PATH=$RISCV/lib +export LD_LIBRARY_PATH=$RISCV/lib +export C_INCLUDE_PATH=$RISCV/include:$VERILATOR_ROOT/include +export CPLUS_INCLUDE_PATH=$RISCV/include:$VERILATOR_ROOT/include # number of parallel jobs to use for make commands and simulation export NUM_JOBS=8