90e21e8e58ac9f2d5a24bd98426110b68117cc11
It seems many of the initial arch/uarch states, including the GPR, are uninitialized in the VCS simulation, which results in functional errors caused by propagated X's. In this particular case it resulted in a dcache request not being fired due to the rs1 data for an lw instruction having values as X, causing the smem_unit to not arbitrate the request correctly. A workaround of this issue is to stop the X propagation by using the ===-operation instead of == in the GPR unit, which had been the main source of X propagation into the raddr port of the GPR. Also, we run the simulation with GSR_RESET set to 1 so that the contents of the GPR are initialized at the beginning of the simulation (however, this alone does not prevent reading in X's, hence this fix.) FIXME: This is a slight deviation from the upstream code; ideally, we want to do clean & full initialization of microarchitectural states.
Vortex GPGPU
Vortex is a full-stack open-source RISC-V GPGPU.
Specifications
- Support RISC-V RV32IMAF and RV64IMAFD
- Microarchitecture:
- configurable number of cores, warps, and threads.
- configurable number of ALU, FPU, LSU, and SFU units per core.
- configurable pipeline issue width.
- optional shared memory, L1, L2, and L3 caches.
- Software:
- OpenCL 1.2 Support.
- Supported FPGAs:
- Altera Arria 10
- Altera Stratix 10
- Xilinx Alveo U50, U250, U280
- Xilinx Versal VCK5000
Directory structure
doc: Documentation.hw: Hardware sources.driver: Host drivers repository.runtime: Kernel Runtime software.sim: Simulators repository.tests: Tests repository.ci: Continuous integration scripts.miscs: Miscellaneous resources.
Build Instructions
Supported OS Platforms
- Ubuntu 18.04
- Centos 7
Toolchain Dependencies
Install development tools
$ sudo apt-get install build-essential
$ sudo apt-get install git
Install Vortex codebase
$ git clone --recursive https://github.com/vortexgpgpu/vortex.git
$ cd Vortex
Install prebuilt toolchain
By default, the toolchain will install to /opt folder.
You can install the toolchain to a different directory by overriding TOOLDIR (e.g. export TOOLDIR=$HOME/tools).
$ ./ci/toolchain_install.sh --all
$ source ./ci/toolchain_env.sh
Build Vortex sources
$ make -s
Quick demo running vecadd OpenCL kernel on 2 cores
$ ./ci/blackbox.sh --cores=2 --app=vecadd
Description
Languages
C++
30%
PostScript
29.1%
SystemVerilog
13.3%
Verilog
12.7%
C
8.4%
Other
6.4%