├── emulator ├── BUGS ├── results.txt ├── enc.o ├── mem.o ├── args.o ├── core.o ├── harptool ├── util.o ├── .DS_Store ├── harptool.o ├── instruction.o ├── libharplib.a ├── libharplib.so ├── vortex_software │ ├── .DS_Store │ ├── vortex_test.elf │ ├── vx_os │ │ ├── .DS_Store │ │ ├── vx_io │ │ │ ├── .DS_Store │ │ │ ├── vx_io.h │ │ │ ├── vx_io.c │ │ │ └── vx_io.s │ │ ├── vx_util │ │ │ ├── .DS_Store │ │ │ └── queue.h │ │ └── vx_back │ │ │ └── vx_back.h │ ├── vx_include │ │ ├── .DS_Store │ │ └── vx_front.h │ ├── Makefile │ ├── linker.ld │ └── vx_main.c ├── test_riscv.sh ├── riscv_tests │ ├── debugPlugin.hex │ ├── I-EBREAK-01.elf.hex │ ├── I-ECALL-01.elf.hex │ ├── I-CSRRWI-01.elf.hex │ ├── I-FENCE.I-01.elf.hex │ ├── I-ENDIANESS-01.elf.hex │ ├── I-CSRRSI-01.elf.hex │ ├── rv32ui-p-simple.hex │ ├── I-CSRRCI-01.elf.hex │ ├── I-LUI-01.elf.hex │ ├── rv32ui-p-auipc.hex │ ├── rv32ui-p-jal.hex │ ├── rv32ui-p-lui.hex │ ├── rv32ui-p-lui.hex.hex │ ├── C.ADDI16SP.elf.hex │ ├── C.ADDI4SPN.elf.hex │ ├── I-RF_x0-01.elf.hex │ ├── I-DELAY_SLOTS-01.elf.hex │ ├── testA.hex │ ├── C.BNEZ.elf.hex │ ├── I-CSRRW-01.elf.hex │ ├── C.J.elf.hex │ ├── C.JAL.elf.hex │ ├── C.BEQZ.elf.hex │ ├── I-LW-01.elf.hex │ ├── I-SW-01.elf.hex │ ├── C.JR.elf.hex │ ├── C.JALR.elf.hex │ ├── rv32ui-p-jalr.hex │ ├── rv32um-p-div.hex │ ├── rv32um-p-divu.hex │ ├── rv32um-p-rem.hex │ ├── rv32um-p-remu.hex │ ├── machineCsrCompressed.hex │ ├── I-NOP-01.elf.hex │ ├── I-CSRRS-01.elf.hex │ ├── C.LW.elf.hex │ ├── debugPluginExternal.hex │ ├── I-CSRRC-01.elf.hex │ ├── I-LH-01.elf.hex │ ├── I-LHU-01.elf.hex │ ├── C.LWSP.elf.hex │ ├── rv32ui-p-fence_i.hex │ ├── C.SW.elf.hex │ ├── C.SWSP.elf.hex │ ├── I-SH-01.elf.hex │ ├── I-AUIPC-01.elf.hex │ ├── I-MISALIGN_LDST-01.elf.hex │ ├── C.LI.elf.hex │ ├── C.LUI.elf.hex │ ├── C.ADDI.elf.hex │ ├── C.ANDI.elf.hex │ ├── C.SLLI.elf.hex │ ├── C.SRAI.elf.hex │ ├── C.SRLI.elf.hex │ ├── I-SB-01.elf.hex │ ├── I-RF_size-01.elf.hex │ ├── I-JAL-01.elf.hex │ ├── C.ADD.elf.hex │ ├── C.AND.elf.hex │ ├── C.MV.elf.hex │ ├── C.OR.elf.hex │ ├── C.SUB.elf.hex │ ├── C.XOR.elf.hex │ ├── I-SLLI-01.elf.hex │ ├── I-SRAI-01.elf.hex │ ├── I-SRLI-01.elf.hex │ ├── I-LB-01.elf.hex │ ├── I-LBU-01.elf.hex │ ├── I-SLTI-01.elf.hex │ ├── I-SLTIU-01.elf.hex │ ├── DIV.elf.hex │ ├── DIVU.elf.hex │ ├── MUL.elf.hex │ ├── MULH.elf.hex │ ├── MULHSU.elf.hex │ ├── MULHU.elf.hex │ ├── REM.elf.hex │ ├── REMU.elf.hex │ └── rv32ui-p-andi.hex ├── include │ ├── asm-tokens.h │ ├── types.h │ ├── debug.h │ ├── util.h │ ├── help.h │ └── args.h ├── WISHLIST ├── LICENSE ├── args.cpp ├── qsim-harp.cpp ├── util.cpp └── Makefile ├── results.txt ├── .gitignore ├── .DS_Store ├── TODO ├── kernel ├── .DS_Store ├── vortex_test.elf ├── vx_os │ ├── .DS_Store │ ├── vx_io │ │ ├── .DS_Store │ │ ├── vx_io.h │ │ ├── vx_io.c │ │ └── vx_io.s │ ├── vx_util │ │ ├── .DS_Store │ │ └── queue.h │ └── vx_back │ │ └── vx_back.h ├── vx_include │ ├── .DS_Store │ └── vx_front.h ├── Makefile ├── linker.ld └── vx_main.c ├── rtl ├── obj_dir │ ├── VVortex │ ├── test_bench.o │ ├── verilated.o │ ├── VVortex__ALL.a │ ├── VVortex__ALLcls.o │ ├── VVortex__ALLsup.o │ ├── VVortex__ALLcls.cpp │ ├── VVortex__ALLsup.cpp │ ├── VVortex__ALLcls.d │ ├── test_bench.d │ ├── VVortex__ALLsup.d │ ├── VVortex__ver.d │ ├── VVortex__Syms.cpp │ ├── verilated.d │ ├── VVortex__Syms.h │ ├── VVortex_classes.mk │ └── VVortex.mk ├── Makefile ├── results.txt ├── VX_register_file.v ├── VX_csr_handler.v ├── VX_writeback.v ├── VX_define.h ├── VX_f_d_reg.v ├── VX_warp.v ├── VX_register_file_slave.v ├── VX_define.v ├── VX_m_w_reg.v └── VX_register_file_master_slave.v └── README.md /emulator/BUGS: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /results.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /emulator/results.txt: -------------------------------------------------------------------------------- 1 | start 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ./rtl/obj_dir/debug.txt 2 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/.DS_Store -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | 2 | 3 | * Add L1 cache + banked scratchpad 4 | * csri bug? 5 | -------------------------------------------------------------------------------- /emulator/enc.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/enc.o -------------------------------------------------------------------------------- /emulator/mem.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/mem.o -------------------------------------------------------------------------------- /emulator/args.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/args.o -------------------------------------------------------------------------------- /emulator/core.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/core.o -------------------------------------------------------------------------------- /emulator/harptool: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/harptool -------------------------------------------------------------------------------- /emulator/util.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/util.o -------------------------------------------------------------------------------- /kernel/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/kernel/.DS_Store -------------------------------------------------------------------------------- /emulator/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/.DS_Store -------------------------------------------------------------------------------- /emulator/harptool.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/harptool.o -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/rtl/obj_dir/VVortex -------------------------------------------------------------------------------- /emulator/instruction.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/instruction.o -------------------------------------------------------------------------------- /emulator/libharplib.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/libharplib.a -------------------------------------------------------------------------------- /emulator/libharplib.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/libharplib.so -------------------------------------------------------------------------------- /kernel/vortex_test.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/kernel/vortex_test.elf -------------------------------------------------------------------------------- /kernel/vx_os/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/kernel/vx_os/.DS_Store -------------------------------------------------------------------------------- /rtl/obj_dir/test_bench.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/rtl/obj_dir/test_bench.o -------------------------------------------------------------------------------- /rtl/obj_dir/verilated.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/rtl/obj_dir/verilated.o -------------------------------------------------------------------------------- /kernel/vx_include/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/kernel/vx_include/.DS_Store -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex__ALL.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/rtl/obj_dir/VVortex__ALL.a -------------------------------------------------------------------------------- /kernel/vx_os/vx_io/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/kernel/vx_os/vx_io/.DS_Store -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex__ALLcls.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/rtl/obj_dir/VVortex__ALLcls.o -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex__ALLsup.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/rtl/obj_dir/VVortex__ALLsup.o -------------------------------------------------------------------------------- /kernel/vx_os/vx_util/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/kernel/vx_os/vx_util/.DS_Store -------------------------------------------------------------------------------- /emulator/vortex_software/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/vortex_software/.DS_Store -------------------------------------------------------------------------------- /emulator/vortex_software/vortex_test.elf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/vortex_software/vortex_test.elf -------------------------------------------------------------------------------- /emulator/vortex_software/vx_os/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/vortex_software/vx_os/.DS_Store -------------------------------------------------------------------------------- /emulator/vortex_software/vx_include/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/vortex_software/vx_include/.DS_Store -------------------------------------------------------------------------------- /emulator/vortex_software/vx_os/vx_io/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/vortex_software/vx_os/vx_io/.DS_Store -------------------------------------------------------------------------------- /emulator/vortex_software/vx_os/vx_util/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/felsabbagh3/Vortex/HEAD/emulator/vortex_software/vx_os/vx_util/.DS_Store -------------------------------------------------------------------------------- /emulator/test_riscv.sh: -------------------------------------------------------------------------------- 1 | echo start > results.txt 2 | 3 | echo ../kernel/vortex_test.hex 4 | ./harptool -E -a rv32i --core ../kernel/vortex_test.hex -s -b 5 | -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex__ALLcls.cpp: -------------------------------------------------------------------------------- 1 | // DESCRIPTION: Generated by verilator_includer via makefile 2 | #define VL_INCLUDE_OPT include 3 | #include "VVortex.cpp" 4 | -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex__ALLsup.cpp: -------------------------------------------------------------------------------- 1 | // DESCRIPTION: Generated by verilator_includer via makefile 2 | #define VL_INCLUDE_OPT include 3 | #include "VVortex__Syms.cpp" 4 | -------------------------------------------------------------------------------- /emulator/riscv_tests/debugPlugin.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000009300A000130140019301E0017300100070 3 | :10001000B381200073001000938111009381A1002F 4 | :080020009381410673001000FA 5 | :04000005800000284F 6 | :00000001FF 7 | -------------------------------------------------------------------------------- /rtl/Makefile: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | all: RUNFILE 5 | 6 | 7 | VERILATOR: 8 | verilator -Wall -cc Vortex.v --exe test_bench.cpp 9 | 10 | RUNFILE: VERILATOR 11 | (cd obj_dir && make -j -f VVortex.mk) 12 | 13 | clean: 14 | rm ./obj_dir/* 15 | 16 | -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex__ALLcls.d: -------------------------------------------------------------------------------- 1 | VVortex__ALLcls.o: VVortex__ALLcls.cpp VVortex.cpp VVortex.h \ 2 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilated.h \ 3 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilatedos.h \ 4 | VVortex__Syms.h 5 | -------------------------------------------------------------------------------- /rtl/obj_dir/test_bench.d: -------------------------------------------------------------------------------- 1 | test_bench.o: ../test_bench.cpp ../test_bench.h ../VX_define.h ../ram.h \ 2 | VVortex.h \ 3 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilated.h \ 4 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilatedos.h 5 | -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex__ALLsup.d: -------------------------------------------------------------------------------- 1 | VVortex__ALLsup.o: VVortex__ALLsup.cpp VVortex__Syms.cpp VVortex__Syms.h \ 2 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilated.h \ 3 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilatedos.h \ 4 | VVortex.h 5 | -------------------------------------------------------------------------------- /kernel/vx_os/vx_io/vx_io.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include 5 | 6 | static char * hextoa[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; 7 | void vx_print_hex(unsigned); 8 | void vx_print_str(char *); 9 | void vx_printf(char *, unsigned); -------------------------------------------------------------------------------- /rtl/results.txt: -------------------------------------------------------------------------------- 1 | # Dynamic Instructions: 260843 2 | # of total cycles: 260850 3 | # of forwarding stalls: 0 4 | # of branch stalls: 0 5 | # CPI: 1.00003 6 | # time to simulate: 6.95312e-310 milliseconds 7 | # GRADE: Failed on test: 4294967295 8 | -------------------------------------------------------------------------------- /emulator/vortex_software/vx_os/vx_io/vx_io.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include 5 | 6 | static char * hextoa[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; 7 | void vx_print_hex(unsigned); 8 | void vx_print_str(char *); 9 | void vx_printf(char *, unsigned); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | # Vortex Currently lives in a different Repo. This Version is very outdated. 7 | # New Repo: https://github.gatech.edu/casl/Vortex 8 | 9 | # Vortex RISC-V GPGPU 10 | 11 | Vortex currently supported RV32IM. 12 | 13 | ./Kernel is a demo of exposing the warps and threads to a program. (Stable) 14 | 15 | 16 | ./emulator is an emulator for RV32IM with warp and thread support. (Stable) 17 | 18 | 19 | ./rtl is verilog for the processor. Currently supports RV32IM and passes all tests. 20 | 21 | -------------------------------------------------------------------------------- /kernel/vx_os/vx_io/vx_io.c: -------------------------------------------------------------------------------- 1 | 2 | #include "vx_io.h" 3 | 4 | void vx_print_hex(unsigned f) 5 | { 6 | if (f < 16) 7 | { 8 | vx_print_str(hextoa[f]); 9 | return; 10 | } 11 | int temp; 12 | int sf = 32; 13 | bool start = false; 14 | do 15 | { 16 | temp = (f >> (sf - 4)) & 0xf; 17 | if (temp != 0) start = true; 18 | if (start) vx_print_str(hextoa[temp]); 19 | sf -= 4; 20 | } while(sf > 0); 21 | } 22 | 23 | 24 | void vx_printf(char * c, unsigned f) 25 | { 26 | vx_print_str(c); 27 | vx_print_hex(f); 28 | vx_print_str("\n"); 29 | } -------------------------------------------------------------------------------- /kernel/vx_os/vx_io/vx_io.s: -------------------------------------------------------------------------------- 1 | 2 | 3 | .type vx_print_str, @function 4 | .global vx_print_str 5 | vx_print_str: 6 | addi sp, sp, -12 7 | sw ra, 0(sp) 8 | sw a1, 4(sp) 9 | bl: 10 | lbu a1,0(a0) 11 | beqz a1,be 12 | jal vx_printc 13 | addi a0, a0, 1 14 | j bl 15 | be: 16 | lw ra, 0(sp) 17 | lw a1, 4(sp) 18 | addi sp, sp, 12 19 | ret 20 | 21 | 22 | .type vx_printc, @function 23 | .global vx_printc 24 | vx_printc: 25 | la a7, 0x00010000 26 | sw a1, 0(a7) 27 | ret 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /emulator/vortex_software/vx_os/vx_io/vx_io.c: -------------------------------------------------------------------------------- 1 | 2 | #include "vx_io.h" 3 | 4 | void vx_print_hex(unsigned f) 5 | { 6 | if (f < 16) 7 | { 8 | vx_print_str(hextoa[f]); 9 | return; 10 | } 11 | int temp; 12 | int sf = 32; 13 | bool start = false; 14 | do 15 | { 16 | temp = (f >> (sf - 4)) & 0xf; 17 | if (temp != 0) start = true; 18 | if (start) vx_print_str(hextoa[temp]); 19 | sf -= 4; 20 | } while(sf > 0); 21 | } 22 | 23 | 24 | void vx_printf(char * c, unsigned f) 25 | { 26 | vx_print_str(c); 27 | vx_print_hex(f); 28 | vx_print_str("\n"); 29 | } -------------------------------------------------------------------------------- /emulator/vortex_software/vx_os/vx_io/vx_io.s: -------------------------------------------------------------------------------- 1 | 2 | 3 | .type vx_print_str, @function 4 | .global vx_print_str 5 | vx_print_str: 6 | addi sp, sp, -12 7 | sw ra, 0(sp) 8 | sw a1, 4(sp) 9 | bl: 10 | lbu a1,0(a0) 11 | beqz a1,be 12 | jal vx_printc 13 | addi a0, a0, 1 14 | j bl 15 | be: 16 | lw ra, 0(sp) 17 | lw a1, 4(sp) 18 | addi sp, sp, 12 19 | ret 20 | 21 | 22 | .type vx_printc, @function 23 | .global vx_printc 24 | vx_printc: 25 | la a7, 0x00010000 26 | sw a1, 0(a7) 27 | ret 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex__ver.d: -------------------------------------------------------------------------------- 1 | obj_dir/VVortex.cpp obj_dir/VVortex.h obj_dir/VVortex.mk obj_dir/VVortex__Syms.cpp obj_dir/VVortex__Syms.h obj_dir/VVortex__ver.d obj_dir/VVortex_classes.mk : /usr/local/Cellar/verilator/4.010/bin/verilator_bin /usr/local/Cellar/verilator/4.010/bin/verilator_bin VX_alu.v VX_context.v VX_context_slave.v VX_csr_handler.v VX_d_e_reg.v VX_decode.v VX_define.v VX_e_m_reg.v VX_execute.v VX_f_d_reg.v VX_fetch.v VX_forwarding.v VX_m_w_reg.v VX_memory.v VX_register_file.v VX_register_file_master_slave.v VX_register_file_slave.v VX_warp.v VX_writeback.v Vortex.v 2 | -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex__Syms.cpp: -------------------------------------------------------------------------------- 1 | // Verilated -*- C++ -*- 2 | // DESCRIPTION: Verilator output: Symbol table implementation internals 3 | 4 | #include "VVortex__Syms.h" 5 | #include "VVortex.h" 6 | 7 | // FUNCTIONS 8 | VVortex__Syms::VVortex__Syms(VVortex* topp, const char* namep) 9 | // Setup locals 10 | : __Vm_namep(namep) 11 | , __Vm_didInit(false) 12 | // Setup submodule names 13 | { 14 | // Pointer to top level 15 | TOPp = topp; 16 | // Setup each module's pointers to their submodules 17 | // Setup each module's pointer back to symbol table (for public functions) 18 | TOPp->__Vconfigure(this, true); 19 | } 20 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-EBREAK-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000970000009380C002F39F503097100000CB 3 | :10001000938040FF3711111113011111730010006B 4 | :1000200023A0000073905F306F008002732F1034A4 5 | :10003000130F4F0073101F34732F203423A0E001DF 6 | :1000400023A2200023A400009380C000730020306E 7 | :1000500017150000130505FB97150000938585FB18 8 | :10006000370610F01306C6F26306B5028326C500F4 9 | :100070002320D600832685002320D6008326450032 10 | :100080002320D600832605002320D6001305050172 11 | :100090006FF09FFD370510F0130505F223200500D2 12 | :0400A000000000005C 13 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 14 | :040000058000000077 15 | :00000001FF 16 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-ECALL-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000970000009380C002F39F503097100000CB 3 | :10001000938040FF3711111113011111730000007B 4 | :1000200023A0000073905F306F008002732F1034A4 5 | :10003000130F4F0073101F34732F203423A0E001DF 6 | :1000400023A2200023A400009380C000730020306E 7 | :1000500017150000130505FB97150000938585FB18 8 | :10006000370610F01306C6F26306B5028326C500F4 9 | :100070002320D600832685002320D6008326450032 10 | :100080002320D600832605002320D6001305050172 11 | :100090006FF09FFD370510F0130505F223200500D2 12 | :0400A000000000005C 13 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 14 | :040000058000000077 15 | :00000001FF 16 | -------------------------------------------------------------------------------- /rtl/obj_dir/verilated.d: -------------------------------------------------------------------------------- 1 | verilated.o: \ 2 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilated.cpp \ 3 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilatedos.h \ 4 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilated_imp.h \ 5 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilated.h \ 6 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilated_heavy.h \ 7 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilated_syms.h \ 8 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilated_sym_props.h \ 9 | /usr/local/Cellar/verilator/4.010/share/verilator/include/verilated_config.h 10 | -------------------------------------------------------------------------------- /emulator/include/asm-tokens.h: -------------------------------------------------------------------------------- 1 | #ifndef HARPTOOL_ASM_TOKENS 2 | #define HARPTOOL_ASM_TOKENS 3 | 4 | namespace HarpTools { 5 | enum AsmTokens { 6 | ASM_T_DIR_DEF = 1, ASM_T_DIR_PERM, ASM_T_DIR_BYTE, ASM_T_DIR_WORD, 7 | ASM_T_DIR_SPACE, ASM_T_DIR_STRING, ASM_T_DIR_ALIGN, ASM_T_DIR_ENTRY, 8 | ASM_T_DIR_GLOBAL, ASM_T_DIR_ARG_NUM, ASM_T_DIR_ARG_STRING, 9 | ASM_T_DIR_ARG_SYM, ASM_T_DIR_ARG_R, ASM_T_DIR_ARG_W, ASM_T_DIR_ARG_X, 10 | ASM_T_DIR_END, ASM_T_LABEL, ASM_T_PRED, ASM_T_INST, 11 | ASM_T_PREG, ASM_T_REG, ASM_T_REG_RA, ASM_T_REG_SP, 12 | ASM_T_REG_FP, ASM_T_LIT, ASM_T_SYM, ASM_T_PEXP 13 | }; 14 | }; 15 | 16 | #endif 17 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-CSRRWI-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000097170000938707007310003473D10034F2 3 | :100010007352003473D30F3473DE0734735F0834C4 4 | :10002000F35F003423A0070023A2270023A4470086 5 | :1000300023A6670023A8C70123AAE70123ACF70181 6 | :10004000971000009380C0FD73D0073473500034C4 7 | :1000500023A00000171500001305C5FA971500002E 8 | :10006000938545FC370610F01306C6F26306B50209 9 | :100070008326C5002320D600832685002320D600B2 10 | :10008000832645002320D600832605002320D600A2 11 | :10009000130505016FF09FFD370510F0130505F2FC 12 | :0400A0002320050014 13 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 14 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 15 | :040000058000000077 16 | :00000001FF 17 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-FENCE.I-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000171800001308480097180000938888000C 3 | :10001000930100008320080003214800171A000004 4 | :10002000130A4AFE970A0000938A4A0183270A00AE 5 | :1000300023A0FA000F1000003701000023A01800D1 6 | :1000400023A2280023A4380023A6F80017150000D7 7 | :10005000130545FC971500009385C5FC370610F085 8 | :100060001306C6F26306B5028326C5002320D60018 9 | :10007000832685002320D600832645002320D60032 10 | :10008000832605002320D600130505016FF09FFD90 11 | :10009000370510F0130505F22320050000000000CD 12 | :0400A000000000005C 13 | :10100000B3011100300000001200000000000000D9 14 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 15 | :040000058000000077 16 | :00000001FF 17 | -------------------------------------------------------------------------------- /emulator/include/types.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | HARPtools by Chad D. Kersey, Summer 2011 3 | *******************************************************************************/ 4 | #ifndef __TYPES_H 5 | #define __TYPES_H 6 | 7 | #include 8 | 9 | namespace Harp { 10 | typedef uint8_t Byte; 11 | typedef uint32_t Word; 12 | typedef uint32_t Word_u; 13 | typedef int32_t Word_s; 14 | 15 | typedef Word_u Addr; 16 | typedef Word_u Size; 17 | 18 | typedef unsigned RegNum; 19 | typedef unsigned ThdNum; 20 | 21 | enum MemFlags {RD_USR = 1, WR_USR = 2, EX_USR = 4, 22 | RD_SUP = 8, WR_SUP = 16, EX_SUP = 32}; 23 | }; 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /emulator/vortex_software/Makefile: -------------------------------------------------------------------------------- 1 | 2 | COMP = /opt/riscv/bin/riscv32-unknown-elf-gcc 3 | CC_FLAGS = -march=rv32im -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostdlib 4 | 5 | DMP = /opt/riscv/bin/riscv32-unknown-elf-objdump 6 | CPY = /opt/riscv/bin/riscv32-unknown-elf-objcopy 7 | 8 | VX_LIB = ./vx_os/vx_back/vx_back.s ./vx_os/vx_back/vx_back.c ./vx_os/vx_util/queue.s 9 | VX_IO = ./vx_os/vx_io/vx_io.s ./vx_os/vx_io/vx_io.c 10 | VX_FR = ./vx_include/vx_front.c 11 | 12 | all: HEX DUMP ELF 13 | 14 | DUMP: ELF 15 | $(DMP) -D vortex_test.elf > vortex_test.dump 16 | 17 | HEX: ELF 18 | $(CPY) -O ihex vortex_test.elf vortex_test.hex 19 | 20 | ELF: 21 | $(COMP) $(CC_FLAGS) $(VX_LIB) $(VX_IO) $(VX_FR) vx_main.c -o vortex_test.elf 22 | -------------------------------------------------------------------------------- /emulator/include/debug.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | HARPtools by Chad D. Kersey, Spring 2013 3 | *******************************************************************************/ 4 | #ifndef __DEBUG_H 5 | #define __DEBUG_H 6 | 7 | // #define USE_DEBUG 9 8 | 9 | #ifdef USE_DEBUG 10 | #include 11 | 12 | #define D(lvl, x) do { \ 13 | using namespace std; \ 14 | if ((lvl) <= USE_DEBUG) { \ 15 | cout << "DEBUG " << __FILE__ << ':' << dec << __LINE__ << ": " \ 16 | << x << endl; \ 17 | } \ 18 | } while(0) 19 | 20 | #define D_RAW(x) do { \ 21 | std::cout << x; \ 22 | } while (0) 23 | #else 24 | 25 | #define D(lvl, x) do {} while(0) 26 | 27 | #endif 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-ENDIANESS-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000171800001308480097180000938888000C 3 | :100010008320080003510800835128000342F8FFA1 4 | :100020008342080003431800834328000344380038 5 | :1000300023A0180023A2280023A4380023A64800E8 6 | :1000400023A8580023AA680023AC780023AE8800B8 7 | :1000500017150000130505FC97150000938585FD15 8 | :10006000370610F01306C6F26306B5028326C500F4 9 | :100070002320D600832685002320D6008326450032 10 | :100080002320D600832605002320D6001305050172 11 | :100090006FF09FFD370510F0130505F223200500D2 12 | :0400A000000000005C 13 | :10100000EFCDAB8967452301000000000000000020 14 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 15 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 16 | :040000058000000077 17 | :00000001FF 18 | -------------------------------------------------------------------------------- /emulator/WISHLIST: -------------------------------------------------------------------------------- 1 | - Anonymous chunks whose names are not saved by the object writer. 2 | - 32-bit instruction encoding for larger-pointered architecture versions. 3 | - HOFDump mode for HARPTool/HOFTool 4 | - Make operation information tables into member functions of Instruction, if 5 | possible. 6 | - Anonymous assigned values in the assembler. 7 | - References (pointers) as .word directive contents in the assembler. 8 | - Instruction validation before encoding. 9 | - Make readError in obj.cpp throw something instead of printing a message and 10 | exiting. 11 | - Limit checking for byte/word encoders (e.g. 255 pRegs, 256 regs for byte) 12 | - Eliminate the tmp_buf nonsense from the chunk encoder. 13 | - Loosen arch restrictions imposed for interoperability (the number of lanes is 14 | typically unimportant) 15 | -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex__Syms.h: -------------------------------------------------------------------------------- 1 | // Verilated -*- C++ -*- 2 | // DESCRIPTION: Verilator output: Symbol table internal header 3 | // 4 | // Internal details; most calling programs do not need this header 5 | 6 | #ifndef _VVortex__Syms_H_ 7 | #define _VVortex__Syms_H_ 8 | 9 | #include "verilated.h" 10 | 11 | // INCLUDE MODULE CLASSES 12 | #include "VVortex.h" 13 | 14 | // SYMS CLASS 15 | class VVortex__Syms : public VerilatedSyms { 16 | public: 17 | 18 | // LOCAL STATE 19 | const char* __Vm_namep; 20 | bool __Vm_didInit; 21 | 22 | // SUBCELL STATE 23 | VVortex* TOPp; 24 | 25 | // CREATORS 26 | VVortex__Syms(VVortex* topp, const char* namep); 27 | ~VVortex__Syms() {} 28 | 29 | // METHODS 30 | inline const char* name() { return __Vm_namep; } 31 | 32 | } VL_ATTR_ALIGNED(64); 33 | 34 | #endif // guard 35 | -------------------------------------------------------------------------------- /kernel/vx_os/vx_util/queue.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __QUEUE__ 3 | 4 | #define __QUEUE__ 5 | 6 | 7 | 8 | #define SIZE 50 9 | #define WARPS 7 10 | 11 | 12 | typedef struct Job_t 13 | { 14 | unsigned wid; 15 | unsigned n_threads; 16 | unsigned base_sp; 17 | unsigned func_ptr; 18 | void * args; 19 | unsigned assigned_warp; 20 | 21 | } Job; 22 | 23 | typedef struct Queue_t 24 | { 25 | unsigned start_i; 26 | unsigned end_i; 27 | unsigned num_j; 28 | unsigned total_warps; 29 | unsigned active_warps; 30 | struct Job_t jobs[SIZE]; 31 | 32 | } Queue; 33 | 34 | Queue q[8]; 35 | 36 | void queue_initialize(Queue *); 37 | 38 | void queue_enqueue(Queue *, Job *); 39 | 40 | void queue_dequeue(Queue *, Job *); 41 | 42 | int queue_isFull(Queue *); 43 | int queue_isEmpty(Queue *); 44 | int queue_availableWarps(Queue *); 45 | 46 | 47 | void func(); 48 | 49 | #endif -------------------------------------------------------------------------------- /emulator/vortex_software/vx_os/vx_util/queue.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef __QUEUE__ 3 | 4 | #define __QUEUE__ 5 | 6 | 7 | 8 | #define SIZE 50 9 | #define WARPS 7 10 | 11 | 12 | typedef struct Job_t 13 | { 14 | unsigned wid; 15 | unsigned n_threads; 16 | unsigned base_sp; 17 | unsigned func_ptr; 18 | void * args; 19 | unsigned assigned_warp; 20 | 21 | } Job; 22 | 23 | typedef struct Queue_t 24 | { 25 | unsigned start_i; 26 | unsigned end_i; 27 | unsigned num_j; 28 | unsigned total_warps; 29 | unsigned active_warps; 30 | struct Job_t jobs[SIZE]; 31 | 32 | } Queue; 33 | 34 | Queue q[8]; 35 | 36 | void queue_initialize(Queue *); 37 | 38 | void queue_enqueue(Queue *, Job *); 39 | 40 | void queue_dequeue(Queue *, Job *); 41 | 42 | int queue_isFull(Queue *); 43 | int queue_isEmpty(Queue *); 44 | int queue_availableWarps(Queue *); 45 | 46 | 47 | void func(); 48 | 49 | #endif -------------------------------------------------------------------------------- /emulator/include/util.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | HARPtools by Chad D. Kersey, Summer 2011 3 | *******************************************************************************/ 4 | #ifndef __UTIL_H 5 | #define __UTIL_H 6 | 7 | #include 8 | #include "types.h" 9 | 10 | namespace Harp { 11 | Word_u bytesToWord(const Byte *b, Size wordSize); 12 | void wordToBytes(Byte *b, Word_u w, Size wordSize); 13 | Word_u flagsToWord(bool r, bool w, bool x); 14 | void wordToFlags(bool &r, bool &w, bool &x, Word_u f); 15 | 16 | class OutOfBytes {}; 17 | 18 | Byte readByte(const std::vector &b, Size &n); 19 | Word_u readWord(const std::vector &b, Size &n, Size wordSize); 20 | void writeByte(std::vector &p, Size &n, Byte b); 21 | void writeWord(std::vector &p, Size &n, Size wordSize, Word w); 22 | }; 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /kernel/Makefile: -------------------------------------------------------------------------------- 1 | 2 | COMP = /opt/riscv/bin/riscv32-unknown-elf-gcc 3 | # COMP = /opt/riscv/bin/riscv32-unknown-linux-gnu-gcc 4 | CC_FLAGS = -march=rv32im -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostdlib 5 | 6 | DMP = /opt/riscv/bin/riscv32-unknown-elf-objdump 7 | CPY = /opt/riscv/bin/riscv32-unknown-elf-objcopy 8 | 9 | # DMP = /opt/riscv/bin/riscv32-unknown-linux-gnu-objdump 10 | # CPY = /opt/riscv/bin/riscv32-unknown-linux-gnu-objcopy 11 | 12 | VX_LIB = ./vx_os/vx_back/vx_back.s ./vx_os/vx_back/vx_back.c ./vx_os/vx_util/queue.s 13 | VX_IO = ./vx_os/vx_io/vx_io.s ./vx_os/vx_io/vx_io.c 14 | VX_FR = ./vx_include/vx_front.c 15 | 16 | all: HEX DUMP ELF 17 | 18 | DUMP: ELF 19 | $(DMP) -D vortex_test.elf > vortex_test.dump 20 | 21 | HEX: ELF 22 | $(CPY) -O ihex vortex_test.elf vortex_test.hex 23 | 24 | ELF: 25 | $(COMP) $(CC_FLAGS) $(VX_LIB) $(VX_IO) $(VX_FR) vx_main.c -o vortex_test.elf 26 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-CSRRSI-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000971700009387070073100034F3E0003463 3 | :10001000F31000347361003473110034F3E10F34D2 4 | :10002000F31100347362083473120034F3E20734BE 5 | :10003000F312003423A0070023A2170023A42700F3 6 | :1000400023A6370023A8470023AA570097120000D1 7 | :100050009382C2FC73100034F3E5003473660034FD 8 | :10006000F3E60F3473670834F3E70734736800343A 9 | :1000700023A0020023A2B20023A4C20023A6D20020 10 | :1000800023A8E20023AAF20023AC0201971000008B 11 | :10009000938080FA375A1632130A8A4973100A3449 12 | :1000A00073E00734F31A0A3423A0000023A250019E 13 | :1000B00023A44001171500001305C5F4971500008F 14 | :1000C000938545F8370610F01306C6F26306B502AD 15 | :1000D0008326C5002320D600832685002320D60052 16 | :1000E000832645002320D600832605002320D60042 17 | :1000F000130505016FF09FFD370510F0130505F29C 18 | :0401000023200500B3 19 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 20 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 21 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 22 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 23 | :040000058000000077 24 | :00000001FF 25 | -------------------------------------------------------------------------------- /emulator/riscv_tests/rv32ui-p-simple.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F00C004732F2034930F8000630AFF0336 3 | :10001000930F90006306FF03930FB0006302FF038A 4 | :10002000170F0080130F0FFE63040F0067000F000F 5 | :10003000732F203463540F006F004000136E9E53E3 6 | :10004000171F00002320CFFD6FF09FFF732540F1A5 7 | :100050006310050073251030635805000F00F00F82 8 | :10006000130E100073000000130E00009702000032 9 | :10007000938282F973905230735020307350303035 10 | :1000800073504030970200809382C2F7638C020065 11 | :10009000739052109302B01A739022307323203061 12 | :1000A000E39E62F873500030970200009382420191 13 | :1000B00073901234732540F1730020300F00F00F5D 14 | :1000C000130E100073000000731000C00000000049 15 | :1000D0000000000000000000000000000000000020 16 | :1000E0000000000000000000000000000000000010 17 | :1000F0000000000000000000000000000000000000 18 | :0401000000000000FB 19 | :1010000000000000000000000000000000000000E0 20 | :1010100000000000000000000000000000000000D0 21 | :1010200000000000000000000000000000000000C0 22 | :1010300000000000000000000000000000000000B0 23 | :081040000000000000000000A8 24 | :040000058000200057 25 | :00000001FF 26 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-CSRRCI-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000097170000938707001304F0FF7310043460 3 | :10001000F3F00034F31004347371003473110434BA 4 | :10002000F3F10F34F311043473720834731204348F 5 | :10003000F3F20734F312043423A0070023A21700BD 6 | :1000400023A4270023A6370023A8470023AA57008C 7 | :1000500023AC870097120000938282FC1304F0FF08 8 | :1000600073100434F3F5003473760034F3F60F3470 9 | :1000700073770834F3F707347378003423A0B200A1 10 | :1000800023A2C20023A4D20023A6E20023A8F200E8 11 | :1000900023AA020123AC820097100000938000FA8B 12 | :1000A000375A1632130A8A4973100A3473F0073428 13 | :1000B000731A0A3423A0000023A240011715000080 14 | :1000C000130545F4971500009385C5F7370610F022 15 | :1000D0001306C6F26306B5028326C5002320D600A8 16 | :1000E000832685002320D600832645002320D600C2 17 | :1000F000832605002320D600130505016FF09FFD20 18 | :10010000370510F0130505F223200500000000005C 19 | :0401100000000000EB 20 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 21 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 22 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 23 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 24 | :040000058000000077 25 | :00000001FF 26 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-LUI-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000009717000093870701B7000000B7110000A1 3 | :10001000B7F2FFFFB7FEFF7FB70F008023A01700E6 4 | :1000200023A2370023A4570023A6D70123A8F70152 5 | :1000300097170000938707FD171800001308C8FEE4 6 | :1000400003A1070003A2070003A3070003AE0700F4 7 | :1000500003AF07003701008037F2FF7F370300004E 8 | :10006000371E000037FFFFFF23202800232248000F 9 | :10007000232468002326C8012328E80197180000DC 10 | :100080009388C8FBB77072429380F0E6B75734127A 11 | :100090009387876737EFBC9A130F0FEF3771724260 12 | :1000A0001301F1E63758341213088867B7EFBC9A8A 13 | :1000B000938F0FEF23A0180023A2F80023A4E801D8 14 | :1000C00023A6280023A8080123AAF8011715000079 15 | :1000D000130545F4971500009385C5F7370610F012 16 | :1000E0001306C6F26306B5028326C5002320D60098 17 | :1000F000832685002320D600832645002320D600B2 18 | :10010000832605002320D600130505016FF09FFD0F 19 | :10011000370510F0130505F223200500000000004C 20 | :0401200000000000DB 21 | :10100000111111110000000000000000000000009C 22 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 23 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 24 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 25 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 26 | :040000058000000077 27 | :00000001FF 28 | -------------------------------------------------------------------------------- /emulator/riscv_tests/rv32ui-p-auipc.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F00C004732F2034930F8000630AFF0336 3 | :10001000930F90006306FF03930FB0006302FF038A 4 | :10002000170F0080130F0FFE63040F0067000F000F 5 | :10003000732F203463540F006F004000136E9E53E3 6 | :10004000171F00002320CFFD6FF09FFF732540F1A5 7 | :100050006310050073251030635805000F00F00F82 8 | :10006000130E100073000000130E00009702000032 9 | :10007000938282F973905230735020307350303035 10 | :1000800073504030970200809382C2F7638C020065 11 | :10009000739052109302B01A739022307323203061 12 | :1000A000E39E62F873500030970200009382420191 13 | :1000B00073901234732540F1730020301300000058 14 | :1000C000172500001305C571EF0540003305B54045 15 | :1000D000B72E0000938E0E71130E20006314D5030B 16 | :1000E00017E5FFFF1305C58FEF0540003305B54049 17 | :1000F000B7EEFFFF938E0E8F130E30006314D50101 18 | :10010000631CC0010F00F00F63000E00131E1E00E1 19 | :10011000136E1E00730000000F00F00F130E10008E 20 | :1001200073000000731000C0000000000000000019 21 | :1001300000000000000000000000000000000000BF 22 | :1010000000000000000000000000000000000000E0 23 | :1010100000000000000000000000000000000000D0 24 | :1010200000000000000000000000000000000000C0 25 | :1010300000000000000000000000000000000000B0 26 | :081040000000000000000000A8 27 | :040000058000200057 28 | :00000001FF 29 | -------------------------------------------------------------------------------- /emulator/riscv_tests/rv32ui-p-jal.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F00C004732F2034930F8000630AFF0336 3 | :10001000930F90006306FF03930FB0006302FF038A 4 | :10002000170F0080130F0FFE63040F0067000F000F 5 | :10003000732F203463540F006F004000136E9E53E3 6 | :10004000171F00002320CFFD6FF09FFF732540F1A5 7 | :100050006310050073251030635805000F00F00F82 8 | :10006000130E100073000000130E00009702000032 9 | :10007000938282F973905230735020307350303035 10 | :1000800073504030970200809382C2F7638C020065 11 | :10009000739052109302B01A739022307323203061 12 | :1000A000E39E62F873500030970200009382420191 13 | :1000B00073901234732540F173002030130E20002A 14 | :1000C00093000000EF010001130000001300000086 15 | :1000D0006F00000417010000130141FF631A310291 16 | :1000E000930010006F004001938010009380100077 17 | :1000F0009380100093801000938010009380100074 18 | :10010000930E3000130E30006394D001631CC001C5 19 | :100110000F00F00F63000E00131E1E00136E1E0072 20 | :10012000730000000F00F00F130E100073000000AA 21 | :10013000731000C00000000000000000000000007C 22 | :0401400000000000BB 23 | :1010000000000000000000000000000000000000E0 24 | :1010100000000000000000000000000000000000D0 25 | :1010200000000000000000000000000000000000C0 26 | :1010300000000000000000000000000000000000B0 27 | :081040000000000000000000A8 28 | :040000058000200057 29 | :00000001FF 30 | -------------------------------------------------------------------------------- /emulator/riscv_tests/rv32ui-p-lui.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F00C004732F2034930F8000630AFF0336 3 | :10001000930F90006306FF03930FB0006302FF038A 4 | :10002000170F0080130F0FFE63040F0067000F000F 5 | :10003000732F203463540F006F004000136E9E53E3 6 | :10004000171F00002320CFFD6FF09FFF732540F1A5 7 | :100050006310050073251030635805000F00F00F82 8 | :10006000130E100073000000130E00009702000032 9 | :10007000938282F973905230735020307350303035 10 | :1000800073504030970200809382C2F7638C020065 11 | :10009000739052109302B01A739022307323203061 12 | :1000A000E39E62F873500030970200009382420191 13 | :1000B00073901234732540F173002030B7000000B4 14 | :1000C000930E0000130E2000639AD005B7F0FFFFD7 15 | :1000D00093D01040930E0080130E30006390D00533 16 | :1000E000B7F0FF7F93D04041930EF07F130E400096 17 | :1000F0006396D003B700008093D04041930E0080F8 18 | :10010000130E5000639CD00137000080930E000056 19 | :10011000130E60006314D001631CC0010F00F00FC8 20 | :1001200063000E00131E1E00136E1E0073000000FD 21 | :100130000F00F00F130E100073000000731000C0CA 22 | :0401400000000000BB 23 | :1010000000000000000000000000000000000000E0 24 | :1010100000000000000000000000000000000000D0 25 | :1010200000000000000000000000000000000000C0 26 | :1010300000000000000000000000000000000000B0 27 | :081040000000000000000000A8 28 | :040000058000200057 29 | :00000001FF 30 | -------------------------------------------------------------------------------- /emulator/riscv_tests/rv32ui-p-lui.hex.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F00C004732F2034930F8000630AFF0336 3 | :10001000930F90006306FF03930FB0006302FF038A 4 | :10002000170F0080130F0FFE63040F0067000F000F 5 | :10003000732F203463540F006F004000136E9E53E3 6 | :10004000171F00002320CFFD6FF09FFF732540F1A5 7 | :100050006310050073251030635805000F00F00F82 8 | :10006000130E100073000000130E00009702000032 9 | :10007000938282F973905230735020307350303035 10 | :1000800073504030970200809382C2F7638C020065 11 | :10009000739052109302B01A739022307323203061 12 | :1000A000E39E62F873500030970200009382420191 13 | :1000B00073901234732540F173002030B7000000B4 14 | :1000C000930E0000130E2000639AD005B7F0FFFFD7 15 | :1000D00093D01040930E0080130E30006390D00533 16 | :1000E000B7F0FF7F93D04041930EF07F130E400096 17 | :1000F0006396D003B700008093D04041930E0080F8 18 | :10010000130E5000639CD00137000080930E000056 19 | :10011000130E60006314D001631CC0010F00F00FC8 20 | :1001200063000E00131E1E00136E1E0073000000FD 21 | :100130000F00F00F130E100073000000731000C0CA 22 | :0401400000000000BB 23 | :1010000000000000000000000000000000000000E0 24 | :1010100000000000000000000000000000000000D0 25 | :1010200000000000000000000000000000000000C0 26 | :1010300000000000000000000000000000000000B0 27 | :081040000000000000000000A8 28 | :040000058000200057 29 | :00000001FF 30 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.ADDI16SP.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E0000100010001000100010001000100971062 17 | :1000F0000000938020F1410123A020009710000010 18 | :10010000938080F0056123A0200097100000938069 19 | :10011000E0EF216123A0200097100000938040EFC2 20 | :100120007D6123A02000971000009380A0EE017154 21 | :1001300023A02000171500001305C5EC971500003B 22 | :10014000938545EE370610F01306C6F2630CB50032 23 | :10015000544514C2144514C2544114C2144114C26B 24 | :100160004105EDB7370510F0130505F22320050012 25 | :0201700000008D 26 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 27 | :10101000FFFFFFFF000000000000000000000000D4 28 | :040000058000000077 29 | :00000001FF 30 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.ADDI4SPN.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E0000100010001000100010001000100971062 17 | :1000F0000000938020F1500023A0C0009710000062 18 | :10010000938080F0340023A0D000971000009380EB 19 | :10011000E0EF780023A0E00097100000938040EF0C 20 | :100120001C0823A0F000971000009380A0EEE01FB1 21 | :1001300023A08000171500001305C5EC97150000DB 22 | :10014000938545EE370610F01306C6F2630CB50032 23 | :10015000544514C2144514C2544114C2144114C26B 24 | :100160004105EDB7370510F0130505F22320050012 25 | :0201700000008D 26 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 27 | :10101000FFFFFFFF000000000000000000000000D4 28 | :040000058000000077 29 | :00000001FF 30 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-RF_x0-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000971F0000938F0F0137E0CDAB1300100056 3 | :100010001360007F1370F0531340308013105000B2 4 | :10002000135020401350400023A00F00971F0000E2 5 | :10003000938F8FFE930010001301007F9301F05304 6 | :1000400013023080930250001303200093034000FA 7 | :100050001304800117E0CDAB3300100033602000A3 8 | :100060003370300033404000331050003350604054 9 | :10007000335070003300804023A00F00971F000012 10 | :10008000938FCFF9930010001301200033A02000BC 11 | :1000900023A00F0033B0200023A20F0013A02000E4 12 | :1000A00023A40F0013B0200023A60F00971F000009 13 | :1000B000938FCFF76F00400023A00F009700000040 14 | :1000C0009380C0006780000023A20F0097100000FB 15 | :1000D000938040F3971F0000938FCFF503A000009B 16 | :1000E00023A00F000390000023A20F000380000054 17 | :1000F00023A40F0003C0000023A60F001715000063 18 | :10010000130545F1971500009385C5F3370610F0E8 19 | :100110001306C6F26306B5028326C5002320D60067 20 | :10012000832685002320D600832645002320D60081 21 | :10013000832605002320D600130505016FF09FFDDF 22 | :10014000370510F0130505F223200500000000001C 23 | :0401500000000000AB 24 | :101000004F4E5242000000000000000000000000AF 25 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 26 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 27 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 28 | :040000058000000077 29 | :00000001FF 30 | -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex_classes.mk: -------------------------------------------------------------------------------- 1 | # Verilated -*- Makefile -*- 2 | # DESCRIPTION: Verilator output: Make include file with class lists 3 | # 4 | # This file lists generated Verilated files, for including in higher level makefiles. 5 | # See VVortex.mk for the caller. 6 | 7 | ### Switches... 8 | # Coverage output mode? 0/1 (from --coverage) 9 | VM_COVERAGE = 0 10 | # Threaded output mode? 0/1/N threads (from --threads) 11 | VM_THREADS = 0 12 | # Tracing output mode? 0/1 (from --trace) 13 | VM_TRACE = 0 14 | 15 | ### Object file lists... 16 | # Generated module classes, fast-path, compile with highest optimization 17 | VM_CLASSES_FAST += \ 18 | VVortex \ 19 | 20 | # Generated module classes, non-fast-path, compile with low/medium optimization 21 | VM_CLASSES_SLOW += \ 22 | 23 | # Generated support classes, fast-path, compile with highest optimization 24 | VM_SUPPORT_FAST += \ 25 | 26 | # Generated support classes, non-fast-path, compile with low/medium optimization 27 | VM_SUPPORT_SLOW += \ 28 | VVortex__Syms \ 29 | 30 | # Global classes, need linked once per executable, fast-path, compile with highest optimization 31 | VM_GLOBAL_FAST += \ 32 | verilated \ 33 | 34 | # Global classes, need linked once per executable, non-fast-path, compile with low/medium optimization 35 | VM_GLOBAL_SLOW += \ 36 | 37 | 38 | # Verilated -*- Makefile -*- 39 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-DELAY_SLOTS-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000009710000093800000371111111301111196 3 | :100010006F0080001301000023A020009710000053 4 | :10002000938080FE37212222130121221702000033 5 | :1000300013020201670002001301000023A0200048 6 | :1000400097100000938080FC93025000130360001F 7 | :10005000373133331301313363845200130100000D 8 | :1000600023A0200097100000938080FA9302500094 9 | :100070001303600037414444130141446394620018 10 | :100080001301000023A0200097100000938080F847 11 | :100090009302500013036000375155551301515519 12 | :1000A00063C462001301000023A020009710000029 13 | :1000B000938080F6930250001303600037616666F8 14 | :1000C0001301616663E462001301000023A02000B5 15 | :1000D00097100000938080F4930250001303600097 16 | :1000E0003771777713017177635453001301000060 17 | :1000F00023A0200097100000938080F2930250000C 18 | :10010000130360003791888813018188637453005A 19 | :100110001301000023A0200017150000130585EE31 20 | :1001200097150000938505F0370610F01306C6F208 21 | :100130006306B5028326C5002320D60083268500EA 22 | :100140002320D600832645002320D60083260500E1 23 | :100150002320D600130505016FF09FFD370510F031 24 | :10016000130505F223200500000000000000000038 25 | :04017000000000008B 26 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 27 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 28 | :040000058000000077 29 | :00000001FF 30 | -------------------------------------------------------------------------------- /emulator/riscv_tests/testA.hex: -------------------------------------------------------------------------------- 1 | :1000000013000000130000001300000013000000A4 2 | :100010001300000013000000130000009300A00074 3 | :100020001300000013000000130000001300000084 4 | :100030001300000013000000130000001301400132 5 | :100040001300000013000000130000001300000064 6 | :100050001300000013000000130000009381E00172 7 | :100060001300000013000000130000001300000044 8 | :100070001300000013000000130000003382210071 9 | :100080001300000013000000130000001300000024 10 | :100090001300000013000000130000009300A000F4 11 | :1000A000130140019381E00133822100130000001D 12 | :1000B00013000000130000001300000013000000F4 13 | :1000C00013000000130000001300000013000000E4 14 | :1000D00013000000130000001300000013000000D4 15 | :1000E00013000000130000001300000013000000C4 16 | :1000F00013000000130000001300000013000000B4 17 | :1001000013000000130000001300000013000000A3 18 | :100110001300000013000000130000009302100001 19 | :100120001300000013000000130000001300000083 20 | :100130001300000013000000130000006F00000413 21 | :100140001300000013000000130000001300000063 22 | :100150001300000013000000130000001303200030 23 | :100160001300000013000000130000001300000043 24 | :100170001300000013000000130000009303300080 25 | :100180001300000013000000130000001300000023 26 | :100190001300000013000000130000009302100081 27 | :0C01A0006F008000130320009303300068 28 | :0400000540000000B7 29 | :00000001FF 30 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.BNEZ.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F1814691E2814636C01711BB 18 | :100100000000130161F0054711E301473AC01711E0 19 | :1001100000001301A1EFFD5791E381473EC0171185 20 | :1001200000001301E1EE378400001304F4FF11E036 21 | :10013000014422C0171100001301C1EDA16491E038 22 | :10014000814426C0171500001305C5EB9715000064 23 | :10015000938545ED370610F01306C6F2630CB50023 24 | :10016000544514C2144514C2544114C2144114C25B 25 | :100170004105EDB7370510F0130505F22320050002 26 | :0201800000007D 27 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 28 | :10101000FFFFFFFF000000000000000000000000D4 29 | :040000058000000077 30 | :00000001FF 31 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-CSRRW-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000097170000938707009300100093010000EA 3 | :100010009302F0FFB70D0080938DFDFFB70E0080B7 4 | :10002000731000347391003473920134739302346B 5 | :10003000739E0D34739F0E34F31F003423A02700EA 6 | :1000400023A2470023A4670023A6C70123A8E70132 7 | :1000500023AAF701171D0000130D4DFCB7503412F1 8 | :100060009380806737E1BC9A130101EF73900034ED 9 | :10007000F311013473920134F31202347313003418 10 | :1000800023203D0023224D0023245D0023266D0004 11 | :1000900097100000938080F9377172421301F1E6E6 12 | :1000A000731001347310003423A0000017110000F6 13 | :1000B000130101F8B79DFFF7938D8D8173900D3477 14 | :1000C0007310003473100034F31200342320010045 15 | :1000D0002322510017110000130101F6B753163205 16 | :1000E000938383493763721413036383B75238963B 17 | :1000F0009382422773100334F3920234F393033450 18 | :100100007314003423205100232271002324810022 19 | :1001100017150000130505EF97150000938585F26C 20 | :10012000370610F01306C6F26306B5028326C50033 21 | :100130002320D600832685002320D6008326450071 22 | :100140002320D600832605002320D60013050501B1 23 | :100150006FF09FFD370510F0130505F22320050011 24 | :04016000000000009B 25 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 26 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 27 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 28 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 29 | :040000058000000077 30 | :00000001FF 31 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.J.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F1814529A0B7250100938556 18 | :10010000B53A2EC017110000130101F0054629A0D1 19 | :10011000372601001306B63A32C01711000013014A 20 | :10012000E1EEFD5629A0B72601009386B63A36C007 21 | :10013000171100001301C1ED378700001307F7FF07 22 | :1001400029A0372701001307B73A3AC0171100005A 23 | :10015000130141ECA16729A0B72701009387B73AA3 24 | :100160003EC0171500001305E5E9971500009385BB 25 | :1001700065EB370610F01306C6F2630CB500544564 26 | :1001800014C2144514C2544114C2144114C241058E 27 | :10019000EDB7370510F0130505F223200500000028 28 | :0201A00000005D 29 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 30 | :10101000FFFFFFFF000000000000000000000000D4 31 | :040000058000000077 32 | :00000001FF 33 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.JAL.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F101442920372401001304D9 18 | :10010000B43A22C017110000130101F085442920E0 19 | :10011000B72401009384B43A26C0171100001301DC 20 | :10012000E1EEFD552920B72501009385B53A2EC093 21 | :10013000171100001301C1ED378600001306F6FF0A 22 | :100140002920372601001306B63A32C017110000E5 23 | :10015000130141ECA1662920B72601009386B63A27 24 | :1001600036C0171500001305E5E9971500009385C3 25 | :1001700065EB370610F01306C6F2630CB500544564 26 | :1001800014C2144514C2544114C2144114C241058E 27 | :10019000EDB7370510F0130505F223200500000028 28 | :0201A00000005D 29 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 30 | :10101000FFFFFFFF000000000000000000000000D4 31 | :040000058000000077 32 | :00000001FF 33 | -------------------------------------------------------------------------------- /emulator/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011, Georgia Institute of Technology 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 | 8 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 | 10 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 11 | 12 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /emulator/riscv_tests/C.BEQZ.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F181479D8F89C7B7270100B7 18 | :100100009387B73A3EC0171100001301E1EF054491 19 | :10011000018C09C4372401001304B43A22C017111A 20 | :1001200000001301A1EEFD54858C89C4B7240100A1 21 | :100130009384B43A26C017110000130161EDB7850E 22 | :1001400000009385F5FF8D8D89C5B7250100938546 23 | :10015000B53A2EC0171100001301C1EB2166118EB4 24 | :1001600009C6372601001306B63A32C0171500003B 25 | :10017000130545E9971500009385C5EA370610F089 26 | :100180001306C6F2630CB500544514C2144514C2DC 27 | :10019000544114C2144114C24105EDB7370510F0A3 28 | :1001A000130505F2232005000000000000000000F8 29 | :0201B00000004D 30 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 31 | :10101000FFFFFFFF000000000000000000000000D4 32 | :040000058000000077 33 | :00000001FF 34 | -------------------------------------------------------------------------------- /kernel/vx_include/vx_front.h: -------------------------------------------------------------------------------- 1 | #include "../vx_os/vx_back/vx_back.h" 2 | #include "../vx_os/vx_io/vx_io.h" 3 | 4 | 5 | // -------------------------- Matrix Multiplication -------------------------- 6 | 7 | typedef struct 8 | { 9 | void * x; 10 | void * y; 11 | void * z; 12 | unsigned mat_dim; 13 | unsigned offset; 14 | 15 | } mat_mult_arg_t; 16 | void vx_sq_mat_mult(void *, void *, void *, unsigned); 17 | 18 | 19 | // -------------------------------------------------------------------------- 20 | 21 | typedef struct 22 | { 23 | void * x; 24 | void * y; 25 | void * z; 26 | unsigned num_cols; 27 | unsigned num_rows; 28 | unsigned offset; 29 | 30 | } mat_r_arg_t; 31 | // -------------------------- Matrix Addition ----------------------------- 32 | void vx_mat_add(void *, void *, void *, unsigned, unsigned); 33 | 34 | // -------------------------- Matrix Subtraction -------------------------- 35 | void vx_mat_sub(void *, void *, void *, unsigned, unsigned); 36 | 37 | 38 | 39 | // ----------------------------------------------------------------------- 40 | typedef struct 41 | { 42 | void * x; 43 | void * scal; 44 | void * z; 45 | unsigned num_cols; 46 | unsigned num_rows; 47 | unsigned offset; 48 | 49 | } mat_e_arg_t; 50 | 51 | // -------------------------- Matrix element Addition ------------------ 52 | void vx_e_mat_add(void *, void *, void *, unsigned, unsigned); 53 | 54 | // -------------------------- Matrix element Addition ------------------ 55 | void vx_e_mat_mult(void *, void *, void *, unsigned, unsigned); -------------------------------------------------------------------------------- /emulator/riscv_tests/I-LW-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000971F0000938F0F00171100001301810349 3 | :1000100083A10F0023203100171C0000130CDCFE0D 4 | :100020009712000093824202832CFCFF23A09201CE 5 | :1000300097130000938373FD171400001304040149 6 | :1000400083AF13002320F401171500001305457C2E 7 | :10005000971500009385C5FF0326058023A0C500E2 8 | :10006000970600009386167B17170000130787FE7C 9 | :1000700083A7F67F2320F70017180000130808FA5B 10 | :1000800097180000938848FD0329C8FF83290800BA 11 | :10009000032A480023A0280123A2380123A44801F1 12 | :1000A000971A0000938A0AF8171B0000130B8BFBAA 13 | :1000B00003A00A0023200B00971A0000938ACAF6B7 14 | :1000C000171B0000130B4BFA83AB0A0003AC0B00A9 15 | :1000D000930C0C0023209B01971C0000938C4CF583 16 | :1000E000171D0000130D8DF883AC0C0023209D011B 17 | :1000F000971D0000938D1DF4171E0000130E4EF780 18 | :1001000083ADFDFF2320BE0117150000130585F305 19 | :1001100097150000938505F6370610F01306C6F212 20 | :100120006306B5028326C5002320D60083268500FA 21 | :100130002320D600832645002320D60083260500F1 22 | :100140002320D600130505016FF09FFD370510F041 23 | :10015000130505F223200500000000000000000048 24 | :04016000000000009B 25 | :1010000022F2F111F44433F366F6F555F88877F7D8 26 | :10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8 27 | :101020007856341228100080F0DEBC9A10325476C4 28 | :1010300098BADCFE00000000000000000000000084 29 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 30 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 31 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 32 | :040000058000000077 33 | :00000001FF 34 | -------------------------------------------------------------------------------- /emulator/vortex_software/vx_include/vx_front.h: -------------------------------------------------------------------------------- 1 | #include "../vx_os/vx_back/vx_back.h" 2 | #include "../vx_os/vx_io/vx_io.h" 3 | 4 | 5 | // -------------------------- Matrix Multiplication -------------------------- 6 | 7 | typedef struct 8 | { 9 | void * x; 10 | void * y; 11 | void * z; 12 | unsigned mat_dim; 13 | unsigned offset; 14 | 15 | } mat_mult_arg_t; 16 | void vx_sq_mat_mult(void *, void *, void *, unsigned); 17 | 18 | 19 | // -------------------------------------------------------------------------- 20 | 21 | typedef struct 22 | { 23 | void * x; 24 | void * y; 25 | void * z; 26 | unsigned num_cols; 27 | unsigned num_rows; 28 | unsigned offset; 29 | 30 | } mat_r_arg_t; 31 | // -------------------------- Matrix Addition ----------------------------- 32 | void vx_mat_add(void *, void *, void *, unsigned, unsigned); 33 | 34 | // -------------------------- Matrix Subtraction -------------------------- 35 | void vx_mat_sub(void *, void *, void *, unsigned, unsigned); 36 | 37 | 38 | 39 | // ----------------------------------------------------------------------- 40 | typedef struct 41 | { 42 | void * x; 43 | void * scal; 44 | void * z; 45 | unsigned num_cols; 46 | unsigned num_rows; 47 | unsigned offset; 48 | 49 | } mat_e_arg_t; 50 | 51 | // -------------------------- Matrix element Addition ------------------ 52 | void vx_e_mat_add(void *, void *, void *, unsigned, unsigned); 53 | 54 | // -------------------------- Matrix element Addition ------------------ 55 | void vx_e_mat_mult(void *, void *, void *, unsigned, unsigned); -------------------------------------------------------------------------------- /emulator/riscv_tests/I-SW-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000971000009380000137F1F11113012122B4 3 | :1000100023A020009712000093821200B74C33F304 4 | :10002000938C4C4FA3AF92FF171400001304F4FEFF 5 | :10003000B7FFF555938F6F66A320F4019715000065 6 | :100040009385057E379677F71306868F23A0C580A4 7 | :10005000170700001307177DB71709999387A7AAF9 8 | :10006000A32FF77E97180000938848FC37D9BB0B65 9 | :100070001309C9C0B7190DDD9389E9EE370AFF0FDF 10 | :10008000130A0A0F23AE28FF23A0380123A2480138 11 | :10009000171B0000130B0BFA375034121300806744 12 | :1000A00023200B00971A0000938ACAF5B739221152 13 | :1000B0009389493483AB0A0023A03B01971B0000BE 14 | :1000C000938B8BF4171C0000130C4CF783AC0B00C4 15 | :1000D00023209C01171D0000130D8DF6B73C5476AC 16 | :1000E000938C0C2123209D01930C0000171E00000F 17 | :1000F000130E4EF5B7DDAB89938DFDDE2320BE01D7 18 | :10010000130ECEFF971E0000938E0EF4B76D72147F 19 | :10011000938D6D8323A0BE0103AF0E0023A2EE01D9 20 | :10012000971000009380C0F23751389613011120C8 21 | :10013000B75181259381319623A0200023A0300060 22 | :1001400017150000130505ED97150000938585F040 23 | :10015000370610F01306C6F26306B5028326C50003 24 | :100160002320D600832685002320D6008326450041 25 | :100170002320D600832605002320D6001305050181 26 | :100180006FF09FFD370510F0130505F223200500E1 27 | :04019000000000006B 28 | :1010000034100080F0DEBC9A0000000000000000F8 29 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 30 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 31 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 32 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 33 | :040000058000000077 34 | :00000001FF 35 | -------------------------------------------------------------------------------- /kernel/linker.ld: -------------------------------------------------------------------------------- 1 | /* ---- Original Script: /opt/riscv32i/riscv32-unknown-elf/lib/ldscripts/elf32lriscv.x ---- */ 2 | /* Default linker script, for normal executables */ 3 | /* Copyright (C) 2014-2017 Free Software Foundation, Inc. 4 | Copying and distribution of this script, with or without modification, 5 | are permitted in any medium without royalty provided the copyright 6 | notice and this notice are preserved. */ 7 | OUTPUT_FORMAT("elf32-littleriscv", "elf32-littleriscv", 8 | "elf32-littleriscv") 9 | OUTPUT_ARCH(riscv) 10 | ENTRY(_start) 11 | SECTIONS 12 | { 13 | . = 0x80000000; 14 | .text : 15 | { 16 | *(.text) 17 | *(.text.unlikely .text.*_unlikely .text.unlikely.*) 18 | *(.text.exit .text.exit.*) 19 | *(.text.startup .text.startup.*) 20 | *(.text.hot .text.hot.*) 21 | *(.stub .text.* .gnu.linkonce.t.*) 22 | /* .gnu.warning sections are handled specially by elf32.em. */ 23 | *(.gnu.warning) 24 | } 25 | .init : 26 | { 27 | KEEP (*(SORT_NONE(.init))) 28 | } 29 | .plt : { *(.plt) } 30 | .iplt : { *(.iplt) } 31 | .fini : 32 | { 33 | KEEP (*(SORT_NONE(.fini))) 34 | } 35 | PROVIDE (__etext = .); 36 | PROVIDE (_etext = .); 37 | PROVIDE (etext = .); 38 | PROVIDE (_edata = .); 39 | PROVIDE (_end = .); 40 | PROVIDE (__global_pointer$ = .); 41 | 42 | . = 0x81000000; 43 | .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } 44 | .rodata1 : { *(.rodata1) } 45 | . = 0x82000000; 46 | .comment : { *(.comment) } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /emulator/vortex_software/linker.ld: -------------------------------------------------------------------------------- 1 | /* ---- Original Script: /opt/riscv32i/riscv32-unknown-elf/lib/ldscripts/elf32lriscv.x ---- */ 2 | /* Default linker script, for normal executables */ 3 | /* Copyright (C) 2014-2017 Free Software Foundation, Inc. 4 | Copying and distribution of this script, with or without modification, 5 | are permitted in any medium without royalty provided the copyright 6 | notice and this notice are preserved. */ 7 | OUTPUT_FORMAT("elf32-littleriscv", "elf32-littleriscv", 8 | "elf32-littleriscv") 9 | OUTPUT_ARCH(riscv) 10 | ENTRY(_start) 11 | SECTIONS 12 | { 13 | . = 0x80000000; 14 | .text : 15 | { 16 | *(.text) 17 | *(.text.unlikely .text.*_unlikely .text.unlikely.*) 18 | *(.text.exit .text.exit.*) 19 | *(.text.startup .text.startup.*) 20 | *(.text.hot .text.hot.*) 21 | *(.stub .text.* .gnu.linkonce.t.*) 22 | /* .gnu.warning sections are handled specially by elf32.em. */ 23 | *(.gnu.warning) 24 | } 25 | .init : 26 | { 27 | KEEP (*(SORT_NONE(.init))) 28 | } 29 | .plt : { *(.plt) } 30 | .iplt : { *(.iplt) } 31 | .fini : 32 | { 33 | KEEP (*(SORT_NONE(.fini))) 34 | } 35 | PROVIDE (__etext = .); 36 | PROVIDE (_etext = .); 37 | PROVIDE (etext = .); 38 | PROVIDE (_edata = .); 39 | PROVIDE (_end = .); 40 | PROVIDE (__global_pointer$ = .); 41 | 42 | . = 0x81000000; 43 | .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } 44 | .rodata1 : { *(.rodata1) } 45 | . = 0x82000000; 46 | .comment : { *(.comment) } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /emulator/args.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | HARPtools by Chad D. Kersey, Summer 2011 3 | *******************************************************************************/ 4 | #include "include/args.h" 5 | 6 | #include 7 | #include 8 | 9 | using namespace HarpTools; 10 | using std::string; 11 | 12 | std::string CommandLineArg::helpString; 13 | std::map CommandLineArg::longArgs; 14 | std::map CommandLineArg::shortArgs; 15 | 16 | CommandLineArg::CommandLineArg(string s, string l, const char *helpText) 17 | { 18 | helpString += helpText; 19 | longArgs[l] = this; 20 | shortArgs[s] = this; 21 | } 22 | 23 | CommandLineArg::CommandLineArg(string l, const char *helpText) { 24 | helpString += helpText; 25 | longArgs[l] = this; 26 | } 27 | 28 | void CommandLineArg::readArgs(int argc, char **argv) { 29 | for (int i = 0; i < argc; i++) { 30 | std::map::iterator 31 | s = shortArgs.find(std::string(argv[i])), 32 | l = longArgs.find(std::string(argv[i])); 33 | 34 | if (s != shortArgs.end()) { 35 | i += s->second->read(argc - i, &argv[i]); 36 | } else if (l != longArgs.end()) { 37 | i += l->second->read(argc - i, &argv[i]); 38 | } else { 39 | throw BadArg(string(argv[i])); 40 | } 41 | } 42 | } 43 | 44 | void CommandLineArg::clearArgs() { 45 | shortArgs.clear(); 46 | longArgs.clear(); 47 | helpString = ""; 48 | } 49 | 50 | void CommandLineArg::showHelp(std::ostream &os) { 51 | os << helpString; 52 | } 53 | -------------------------------------------------------------------------------- /emulator/vortex_software/vx_main.c: -------------------------------------------------------------------------------- 1 | 2 | #include "./vx_include/vx_front.h" 3 | 4 | unsigned x[1024] = {0}; 5 | unsigned y[1024] = {0}; 6 | unsigned z[1024] = {0}; 7 | 8 | #define MAT_DIM 16 9 | 10 | #define NUM_COLS 16 11 | #define NUM_ROWS 16 12 | 13 | void initialize_mats() 14 | { 15 | for (int i = 0; i < (MAT_DIM * MAT_DIM); i++) 16 | { 17 | x[i] = 3; 18 | y[i] = 2; 19 | } 20 | } 21 | 22 | void print_matrix(unsigned * z) 23 | { 24 | vx_print_str("-------------------------------\n"); 25 | for (int j = 0; j < (MAT_DIM * MAT_DIM); j++) 26 | { 27 | if (j!=0) if ((j % MAT_DIM) == 0) vx_print_str("\n"); 28 | vx_print_hex(z[j]); 29 | vx_print_str(" "); 30 | } 31 | vx_print_str("\n-------------------------------\n"); 32 | } 33 | 34 | int main() 35 | { 36 | 37 | initialize_mats(); 38 | 39 | // matrix multiplication 40 | vx_sq_mat_mult(x, y, z, MAT_DIM); 41 | vx_print_str("\n\nMatrix multiplication\n"); 42 | print_matrix(z); 43 | 44 | 45 | // matrix addition 46 | vx_mat_add(x, y, z, NUM_ROWS, NUM_COLS); 47 | vx_print_str("\n\nMatrix Addition\n"); 48 | print_matrix(z); 49 | 50 | 51 | // matrix sub 52 | vx_mat_sub(x, y, z, NUM_ROWS, NUM_COLS); 53 | vx_print_str("\n\nMatrix Subtraction\n"); 54 | print_matrix(z); 55 | 56 | unsigned scal = 3; 57 | 58 | // matrix element add 59 | vx_e_mat_add(z, &scal, z, NUM_ROWS, NUM_COLS); 60 | vx_print_str("\n\nMatrix Element Addition\n"); 61 | print_matrix(z); 62 | 63 | // matrix element add 64 | vx_e_mat_mult(z, &scal, z, NUM_ROWS, NUM_COLS); 65 | vx_print_str("\n\nMatrix Element Addition\n"); 66 | print_matrix(z); 67 | 68 | 69 | return 0; 70 | } -------------------------------------------------------------------------------- /emulator/riscv_tests/C.JR.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F101459701000093812101C6 18 | :100100008281372501001305B53A0EC01711000092 19 | :10011000130181EF0545170200001302220102823C 20 | :10012000372501001305B53A12C01711000013015D 21 | :10013000E1ED7D55170400001304240102843725E6 22 | :1001400001001305B53A22C017110000130141EC5C 23 | :10015000378500001305F5FF970400009384240100 24 | :100160008284372501001305B53A26C01711000017 25 | :10017000130141EA216597050000938525018285D9 26 | :10018000372501001305B53A2EC0171500001305D9 27 | :1001900065E7971500009385E5E8370610F013062C 28 | :1001A000C6F2630CB500544514C2144514C2544140 29 | :1001B00014C2144114C24105EDB7370510F0130500 30 | :1001C00005F22320050000000000000000000000F0 31 | :0201D00000002D 32 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 33 | :10101000FFFFFFFF000000000000000000000000D4 34 | :040000058000000077 35 | :00000001FF 36 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.JALR.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F10145170600001306260137 18 | :100100000296372501001305B53A32C017110000D9 19 | :10011000130181EF0545970600009386260182961C 20 | :10012000372501001305B53A36C017110000130139 21 | :10013000E1ED7D55170700001307270102973725CA 22 | :1001400001001305B53A3AC017110000130141EC44 23 | :10015000378500001305F5FF9707000093872701F7 24 | :100160008297372501001305B53A3EC017110000EC 25 | :10017000130141EA216517080000130828010298BD 26 | :10018000372501001305B53A42C0171500001305C5 27 | :1001900065E7971500009385E5E8370610F013062C 28 | :1001A000C6F2630CB500544514C2144514C2544140 29 | :1001B00014C2144114C24105EDB7370510F0130500 30 | :1001C00005F22320050000000000000000000000F0 31 | :0201D00000002D 32 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 33 | :10101000FFFFFFFF000000000000000000000000D4 34 | :040000058000000077 35 | :00000001FF 36 | -------------------------------------------------------------------------------- /rtl/VX_register_file.v: -------------------------------------------------------------------------------- 1 | 2 | 3 | module VX_register_file ( 4 | input wire clk, 5 | input wire in_wb_warp, 6 | input wire in_valid, 7 | input wire in_write_register, 8 | input wire[4:0] in_rd, 9 | input wire[31:0] in_data, 10 | input wire[4:0] in_src1, 11 | input wire[4:0] in_src2, 12 | 13 | output wire[(32*32)-1:0] out_regs, 14 | output reg[31:0] out_src1_data, 15 | output reg[31:0] out_src2_data 16 | ); 17 | 18 | reg[31:0] registers[31:0]; 19 | 20 | wire[31:0] write_data; 21 | 22 | wire[4:0] write_register; 23 | 24 | wire write_enable; 25 | 26 | // reg[5:0] i; 27 | // always @(posedge clk) begin 28 | // for (i = 0; i < 32; i++) begin 29 | // $display("%d: %h",i, registers[i[4:0]]); 30 | // end 31 | // end 32 | 33 | // always @(*) begin 34 | // $display("TID: %d: %h",10,registers[10]); 35 | // $display("WID: %d: %h",11,registers[11]); 36 | // end 37 | 38 | genvar i; 39 | generate 40 | for (i=0; i<32; i=i+1) assign out_regs[(32*i)+31:(32*i)] = registers[i]; 41 | endgenerate 42 | 43 | 44 | 45 | assign write_data = in_data; 46 | assign write_register = in_rd; 47 | 48 | assign write_enable = (in_write_register && (in_rd != 5'h0)) && in_valid; 49 | 50 | always @(posedge clk) begin 51 | if(write_enable && in_wb_warp) begin 52 | // $display("RF: Writing %h to %d",write_data, write_register); 53 | registers[write_register] <= write_data; 54 | end 55 | end 56 | 57 | always @(negedge clk) begin 58 | out_src1_data <= registers[in_src1]; 59 | out_src2_data <= registers[in_src2]; 60 | end 61 | 62 | 63 | endmodule 64 | -------------------------------------------------------------------------------- /kernel/vx_main.c: -------------------------------------------------------------------------------- 1 | 2 | #include "./vx_include/vx_front.h" 3 | 4 | unsigned x[1024] = {0}; 5 | unsigned y[1024] = {0}; 6 | unsigned z[1024] = {0}; 7 | 8 | #define MAT_DIM 16 9 | 10 | #define NUM_COLS 16 11 | #define NUM_ROWS 16 12 | 13 | void initialize_mats() 14 | { 15 | for (int i = 0; i < (MAT_DIM * MAT_DIM); i++) 16 | { 17 | x[i] = 3; 18 | y[i] = 2; 19 | } 20 | } 21 | 22 | void print_matrix(unsigned * z) 23 | { 24 | vx_print_str("-------------------------------\n"); 25 | for (int j = 0; j < (MAT_DIM * MAT_DIM); j++) 26 | { 27 | if (j!=0) if ((j % MAT_DIM) == 0) vx_print_str("\n"); 28 | vx_print_hex(z[j]); 29 | vx_print_str(" "); 30 | } 31 | vx_print_str("\n-------------------------------\n"); 32 | } 33 | 34 | int main() 35 | { 36 | 37 | initialize_mats(); 38 | 39 | // matrix multiplication 40 | vx_sq_mat_mult(x, y, z, MAT_DIM); 41 | vx_print_str("\n\nMatrix multiplication\n"); 42 | print_matrix(z); 43 | 44 | 45 | // // matrix addition 46 | // vx_mat_add(x, y, z, NUM_ROWS, NUM_COLS); 47 | // vx_print_str("\n\nMatrix Addition\n"); 48 | // print_matrix(z); 49 | 50 | 51 | // // matrix sub 52 | // vx_mat_sub(x, y, z, NUM_ROWS, NUM_COLS); 53 | // vx_print_str("\n\nMatrix Subtraction\n"); 54 | // print_matrix(z); 55 | 56 | // unsigned scal = 3; 57 | 58 | // // matrix element add 59 | // vx_e_mat_add(z, &scal, z, NUM_ROWS, NUM_COLS); 60 | // vx_print_str("\n\nMatrix Element Addition\n"); 61 | // print_matrix(z); 62 | 63 | // // matrix element add 64 | // vx_e_mat_mult(z, &scal, z, NUM_ROWS, NUM_COLS); 65 | // vx_print_str("\n\nMatrix Element Addition\n"); 66 | // print_matrix(z); 67 | 68 | 69 | return 0; 70 | } -------------------------------------------------------------------------------- /emulator/riscv_tests/rv32ui-p-jalr.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F00C004732F2034930F8000630AFF0336 3 | :10001000930F90006306FF03930FB0006302FF038A 4 | :10002000170F0080130F0FFE63040F0067000F000F 5 | :10003000732F203463540F006F004000136E9E53E3 6 | :10004000171F00002320CFFD6FF09FFF732540F1A5 7 | :100050006310050073251030635805000F00F00F82 8 | :10006000130E100073000000130E00009702000032 9 | :10007000938282F973905230735020307350303035 10 | :1000800073504030970200809382C2F7638C020065 11 | :10009000739052109302B01A739022307323203061 12 | :1000A000E39E62F873500030970200009382420191 13 | :1000B00073901234732540F173002030130E20002A 14 | :1000C000930200001703000013030301E70203007B 15 | :1000D0006F00000C170300001303C3FF639A620A4A 16 | :1000E000130E400013020000170300001303030166 17 | :1000F000E7090300631EC0091302120093022000E7 18 | :10010000E31452FE130E5000130200001703000008 19 | :100110001303430113000000E7090300631AC0073B 20 | :100120001302120093022000E31252FE130E60002D 21 | :1001300013020000170300001303830113000000E3 22 | :1001400013000000E70903006314C0051302120046 23 | :1001500093022000E31052FE9302100017030000E8 24 | :100160001303C3016700C3FF93821200938212003E 25 | :1001700093821200938212009382120093821200E3 26 | :10018000930E4000130E70006394D201631CC001F3 27 | :100190000F00F00F63000E00131E1E00136E1E00F2 28 | :1001A000730000000F00F00F130E1000730000002A 29 | :1001B000731000C0000000000000000000000000FC 30 | :0401C000000000003B 31 | :1010000000000000000000000000000000000000E0 32 | :1010100000000000000000000000000000000000D0 33 | :1010200000000000000000000000000000000000C0 34 | :1010300000000000000000000000000000000000B0 35 | :081040000000000000000000A8 36 | :040000058000200057 37 | :00000001FF 38 | -------------------------------------------------------------------------------- /emulator/riscv_tests/rv32um-p-div.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F00C004732F2034930F8000630AFF0336 3 | :10001000930F90006306FF03930FB0006302FF038A 4 | :10002000170F0080130F0FFE63040F0067000F000F 5 | :10003000732F203463540F006F004000136E9E53E3 6 | :10004000171F00002320CFFD6FF09FFF732540F1A5 7 | :100050006310050073251030635805000F00F00F82 8 | :10006000130E100073000000130E00009702000032 9 | :10007000938282F973905230735020307350303035 10 | :1000800073504030970200809382C2F7638C020065 11 | :10009000739052109302B01A739022307323203061 12 | :1000A000E39E62F873500030970200009382420191 13 | :1000B00073901234732540F1730020309300400197 14 | :1000C00013016000B3C12002930E3000130E200014 15 | :1000D0006394D10D9300C0FE13016000B3C12002F0 16 | :1000E000930ED0FF130E30006398D10B93004001A4 17 | :1000F0001301A0FFB3C12002930ED0FF130E4000E6 18 | :10010000639CD1099300C0FE1301A0FFB3C120027C 19 | :10011000930E3000130E50006390D109930000003D 20 | :1001200013011000B3C12002930E0000130E6000F3 21 | :100130006394D107930000001301F0FFB3C12002C4 22 | :10014000930E0000130E70006398D1059300000019 23 | :1001500013010000B3C12002930EF0FF130E8000C4 24 | :10016000639CD1039300100013010000B3C120026F 25 | :10017000930EF0FF130E90006390D10393000000E4 26 | :1001800013010000B3C12002930EF0FF130EA00074 27 | :100190006394D101631CC0010F00F00F63000E00D7 28 | :1001A000131E1E00136E1E00730000000F00F00FE0 29 | :1001B000130E100073000000731000C00000000058 30 | :0401C000000000003B 31 | :1010000000000000000000000000000000000000E0 32 | :1010100000000000000000000000000000000000D0 33 | :1010200000000000000000000000000000000000C0 34 | :1010300000000000000000000000000000000000B0 35 | :081040000000000000000000A8 36 | :040000058000200057 37 | :00000001FF 38 | -------------------------------------------------------------------------------- /emulator/riscv_tests/rv32um-p-divu.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F00C004732F2034930F8000630AFF0336 3 | :10001000930F90006306FF03930FB0006302FF038A 4 | :10002000170F0080130F0FFE63040F0067000F000F 5 | :10003000732F203463540F006F004000136E9E53E3 6 | :10004000171F00002320CFFD6FF09FFF732540F1A5 7 | :100050006310050073251030635805000F00F00F82 8 | :10006000130E100073000000130E00009702000032 9 | :10007000938282F973905230735020307350303035 10 | :1000800073504030970200809382C2F7638C020065 11 | :10009000739052109302B01A739022307323203061 12 | :1000A000E39E62F873500030970200009382420191 13 | :1000B00073901234732540F1730020309300400197 14 | :1000C00013016000B3D12002930E3000130E200004 15 | :1000D0006396D10D9300C0FE13016000B3D12002DE 16 | :1000E000B7BEAA2A938E7EAA130E30006398D10B56 17 | :1000F000930040011301A0FFB3D12002930E000032 18 | :10010000130E4000639CD1099300C0FE1301A0FFB1 19 | :10011000B3D12002930E0000130E50006390D1095A 20 | :10012000B700008013011000B3D12002B70E008089 21 | :10013000130E60006394D107B70000801301F0FF35 22 | :10014000B3D12002930E0000130E70006398D10506 23 | :10015000B700008013010000B3D12002930EF0FF1E 24 | :10016000130E8000639CD103930010001301000064 25 | :10017000B3D12002930EF0FF130E90006390D103D1 26 | :100180009300000013010000B3D12002930EF0FF92 27 | :10019000130EA0006394D101631CC0010F00F00F87 28 | :1001A00063000E00131E1E00136E1E00730000007D 29 | :1001B0000F00F00F130E100073000000731000C04A 30 | :0401C000000000003B 31 | :1010000000000000000000000000000000000000E0 32 | :1010100000000000000000000000000000000000D0 33 | :1010200000000000000000000000000000000000C0 34 | :1010300000000000000000000000000000000000B0 35 | :081040000000000000000000A8 36 | :040000058000200057 37 | :00000001FF 38 | -------------------------------------------------------------------------------- /emulator/riscv_tests/rv32um-p-rem.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F00C004732F2034930F8000630AFF0336 3 | :10001000930F90006306FF03930FB0006302FF038A 4 | :10002000170F0080130F0FFE63040F0067000F000F 5 | :10003000732F203463540F006F004000136E9E53E3 6 | :10004000171F00002320CFFD6FF09FFF732540F1A5 7 | :100050006310050073251030635805000F00F00F82 8 | :10006000130E100073000000130E00009702000032 9 | :10007000938282F973905230735020307350303035 10 | :1000800073504030970200809382C2F7638C020065 11 | :10009000739052109302B01A739022307323203061 12 | :1000A000E39E62F873500030970200009382420191 13 | :1000B00073901234732540F1730020309300400197 14 | :1000C00013016000B3E12002930E2000130E200004 15 | :1000D0006394D10D9300C0FE13016000B3E12002D0 16 | :1000E000930EE0FF130E30006398D10B9300400194 17 | :1000F0001301A0FFB3E12002930E2000130E400075 18 | :10010000639CD1099300C0FE1301A0FFB3E120025C 19 | :10011000930EE0FF130E50006390D109930000008E 20 | :1001200013011000B3E12002930E0000130E6000D3 21 | :100130006394D107930000001301F0FFB3E12002A4 22 | :10014000930E0000130E70006398D1059300000019 23 | :1001500013010000B3E12002930E0000130E800093 24 | :10016000639CD1039300100013010000B3E120024F 25 | :10017000930E1000130E90006390D10393000000C3 26 | :1001800013010000B3E12002930E0000130EA00043 27 | :100190006394D101631CC0010F00F00F63000E00D7 28 | :1001A000131E1E00136E1E00730000000F00F00FE0 29 | :1001B000130E100073000000731000C00000000058 30 | :0401C000000000003B 31 | :1010000000000000000000000000000000000000E0 32 | :1010100000000000000000000000000000000000D0 33 | :1010200000000000000000000000000000000000C0 34 | :1010300000000000000000000000000000000000B0 35 | :081040000000000000000000A8 36 | :040000058000200057 37 | :00000001FF 38 | -------------------------------------------------------------------------------- /emulator/riscv_tests/rv32um-p-remu.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F00C004732F2034930F8000630AFF0336 3 | :10001000930F90006306FF03930FB0006302FF038A 4 | :10002000170F0080130F0FFE63040F0067000F000F 5 | :10003000732F203463540F006F004000136E9E53E3 6 | :10004000171F00002320CFFD6FF09FFF732540F1A5 7 | :100050006310050073251030635805000F00F00F82 8 | :10006000130E100073000000130E00009702000032 9 | :10007000938282F973905230735020307350303035 10 | :1000800073504030970200809382C2F7638C020065 11 | :10009000739052109302B01A739022307323203061 12 | :1000A000E39E62F873500030970200009382420191 13 | :1000B00073901234732540F1730020309300400197 14 | :1000C00013016000B3F12002930E2000130E2000F4 15 | :1000D0006394D10D9300C0FE13016000B3F12002C0 16 | :1000E000930E2000130E30006398D10B9300400153 17 | :1000F0001301A0FFB3F12002930E4001130E400044 18 | :10010000639CD1099300C0FE1301A0FFB3F120024C 19 | :10011000930EC0FE130E50006390D10993000000AF 20 | :1001200013011000B3F12002930E0000130E6000C3 21 | :100130006394D107930000001301F0FFB3F1200294 22 | :10014000930E0000130E70006398D1059300000019 23 | :1001500013010000B3F12002930E0000130E800083 24 | :10016000639CD1039300100013010000B3F120023F 25 | :10017000930E1000130E90006390D10393000000C3 26 | :1001800013010000B3F12002930E0000130EA00033 27 | :100190006394D101631CC0010F00F00F63000E00D7 28 | :1001A000131E1E00136E1E00730000000F00F00FE0 29 | :1001B000130E100073000000731000C00000000058 30 | :0401C000000000003B 31 | :1010000000000000000000000000000000000000E0 32 | :1010100000000000000000000000000000000000D0 33 | :1010200000000000000000000000000000000000C0 34 | :1010300000000000000000000000000000000000B0 35 | :081040000000000000000000A8 36 | :040000058000200057 37 | :00000001FF 38 | -------------------------------------------------------------------------------- /emulator/riscv_tests/machineCsrCompressed.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F0000091300000013000000130000003F 3 | :100010001300000013000000130000001300000094 4 | :10002000732E2034631E0E00130FC0FFF32E103406 5 | :10003000B3FEEE01938E4E0073901E346F00C0012C 6 | :10004000B70E0080337FDE0163180F00F32E1034EB 7 | :10005000938E4E0073901E34B70E0080938E3E0038 8 | :100060006396CE01930E800073B04E34B70E0080BD 9 | :10007000938E7E006394CE0173504030B70E0080A3 10 | :10008000938EBE006394CE017350403073002030D5 11 | :10009000130E100073000000130E20009302800066 12 | :1000A00073A002309302800073904230930280006C 13 | :1000B00073A042341300000013000000130000007E 14 | :1000C00013000000130000001300000013000000E4 15 | :1000D00013000000130000001300000013000000D4 16 | :1000E00013000000130E300093020008739042309A 17 | :1000F00013000000130000001300000013000000B4 18 | :10010000130000001300000013000000130E400055 19 | :10011000B7120000938202807390423013000000F7 20 | :100120001300000013000000130000001300000083 21 | :100130001300000013000000130E5000B70110F070 22 | :10014000938101F403A2010083A241001302F23F54 23 | :1001500023A4410023A65100130E600013020008DF 24 | :1001600073104230130E700073005010130E800095 25 | :100170009301100023A04100130E90002390410032 26 | :10018000130EA00003A20100130EB00003920100A1 27 | :10019000130EC000130ED00083200000130EE000E9 28 | :1001A00073002020130EF000B70010F0938000F6CB 29 | :1001B00003A10000130E000123A02000130E100164 30 | :0401C0006780000054 31 | :1001C4006780000013050000678000001000000035 32 | :1001D40000000000017A5200017C01011B0D0200A5 33 | :1001E4001000000018000000DCFFFFFF0800000002 34 | :1001F40000000000100000002C000000C4FFFFFFFE 35 | :080204000400000000000000EE 36 | :0400000580000090E7 37 | :00000001FF 38 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-NOP-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000971000009380000013012000930130003E 3 | :10001000130240009302500013036000930370002A 4 | :1000200013048000930490001305A0009305B00012 5 | :100030001306C0009306D0001307E0009307F000FA 6 | :1000400013080001930810011309200193093001DE 7 | :10005000130A4001930A5001130B6001930B7001C6 8 | :10006000130C8001930C9001130DA001930DB001AE 9 | :10007000130EC001930ED001130FE001930FF00196 10 | :100080001300000013000000130000001300000024 11 | :10009000130000001300000023A0000023A2200092 12 | :1000A00023A4300023A6400023A8500023AA600008 13 | :1000B00023AC700023AE800023A0900223A2A002F4 14 | :1000C00023A4B00223A6C00223A8D00223AAE002E0 15 | :1000D00023ACF00223AE000323A0100523A22005C9 16 | :1000E00023A4300523A6400523A8500523AA6005B4 17 | :1000F00023AC700523AE800523A0900723A2A007A0 18 | :1001000023A4B00723A6C00723A8D00723AAE0078B 19 | :1001100023ACF00797110000938181F617040000CB 20 | :100120001300000013000000130000001300000083 21 | :100130001300000097040000B384844023A09100C2 22 | :1001400017150000130505EC97150000938585F33E 23 | :10015000370610F01306C6F26306B5028326C50003 24 | :100160002320D600832685002320D6008326450041 25 | :100170002320D600832605002320D6001305050181 26 | :100180006FF09FFD370510F0130505F223200500E1 27 | :04019000000000006B 28 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 29 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 30 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 31 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 32 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 33 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 34 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 35 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 36 | :040000058000000077 37 | :00000001FF 38 | -------------------------------------------------------------------------------- /kernel/vx_os/vx_back/vx_back.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | #pragma once 4 | 5 | #include 6 | #include "../vx_util/queue.h" 7 | 8 | #define WSPAWN asm __volatile__(".word 0x3006b"::); 9 | #define CLONE asm __volatile__(".word 0x3506b":::); 10 | #define JALRS asm __volatile__(".word 0x1bfe0eb":::"s10"); 11 | #define ECALL asm __volatile__(".word 0x00000073"); 12 | #define JMPRT asm __volatile__(".word 0x5406b"); 13 | #define SPLIT asm __volatile__(".word 0xf206b"); 14 | #define P_JUMP asm __volatile__(".word 0x1ff707b"); 15 | #define JOIN asm __volatile__(".word 0x306b"); 16 | 17 | 18 | #define __if(val) bool temp = !val; \ 19 | register unsigned p asm("t5") = temp; \ 20 | register void * e asm("t6") = &&ELSE; \ 21 | SPLIT; \ 22 | P_JUMP; \ 23 | 24 | 25 | #define __else register void * w asm("t3") = &&AFTER; \ 26 | asm __volatile__("jr t3"); \ 27 | ELSE: asm __volatile__("nop"); 28 | 29 | #define __end_if AFTER:\ 30 | JOIN; 31 | 32 | static int done[] = {0, 0, 0, 0, 0, 0, 0}; 33 | 34 | static int main_sp[1]; 35 | 36 | unsigned context[32]; 37 | void vx_save_context(void); 38 | void vx_load_context(void); 39 | 40 | 41 | #define FUNC void (func)(unsigned, unsigned) 42 | 43 | unsigned vx_available_warps(void); 44 | unsigned vx_available_threads(void); 45 | 46 | 47 | void vx_createThreads(unsigned, unsigned, unsigned, void *, unsigned); 48 | void vx_wspawn(unsigned, unsigned, unsigned, void *, unsigned); 49 | void vx_spawnWarps(unsigned num_Warps, unsigned num_threads, FUNC, void *); 50 | void vx_schedule_warps(void); 51 | void vx_reschedule_warps(void); 52 | void vx_wait_for_warps(unsigned); 53 | void * vx_get_arg_struct(void); 54 | 55 | 56 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-CSRRS-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000971700009387070093001000130100006A 3 | :10001000B701F17F9381F1FF370200809302F0FF77 4 | :1000200073100034F3A00034F31000347321013452 5 | :1000300073110034F3A10134F3110034732202343C 6 | :1000400073120034F3A20234F312003423A0070029 7 | :1000500023A2170023A4270023A6370023A84700C4 8 | :1000600023AA570097120000938242FB93051000C9 9 | :1000700013060000B706F17F9386F6FF370700806E 10 | :100080009307F0FF73100034F3A50534732606348C 11 | :10009000F3A6063473270734F3A707347328003414 12 | :1000A00023A0B20023A2C20023A4D20023A6E20010 13 | :1000B00023A8F20023AA0201171D0000130D8DF7DB 14 | :1000C000B75A3412938A8A677310003473AB0A34B8 15 | :1000D000F32B0B34F31B003473AC0B34F32C0034D0 16 | :1000E00023205D0123226D0123247D0123268D0120 17 | :1000F00023289D0197100000938000F5377F7242FE 18 | :10010000130FFFE673100F3473200F3423A0000089 19 | :1001100023A2E00117110000130181F3B79FFFF73D 20 | :10012000938F8F8173900F347320003473200034C9 21 | :10013000F32F0034232001002322F10117110000C6 22 | :10014000130181F1B753163293838349B75238961E 23 | :100150009382422773100034F3A20234F3A30334D2 24 | :1001600073240434232051002322710023248100AE 25 | :1001700017150000130505E997150000938585EE16 26 | :10018000370610F01306C6F26306B5028326C500D3 27 | :100190002320D600832685002320D6008326450011 28 | :1001A0002320D600832605002320D6001305050151 29 | :1001B0006FF09FFD370510F0130505F223200500B1 30 | :0401C000000000003B 31 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 32 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 33 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 34 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 35 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 36 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 37 | :040000058000000077 38 | :00000001FF 39 | -------------------------------------------------------------------------------- /emulator/vortex_software/vx_os/vx_back/vx_back.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | #pragma once 4 | 5 | #include 6 | #include "../vx_util/queue.h" 7 | 8 | #define WSPAWN asm __volatile__(".word 0x3006b"::); 9 | #define CLONE asm __volatile__(".word 0x3506b":::); 10 | #define JALRS asm __volatile__(".word 0x1bfe0eb":::"s10"); 11 | #define ECALL asm __volatile__(".word 0x00000073"); 12 | #define JMPRT asm __volatile__(".word 0x5406b"); 13 | #define SPLIT asm __volatile__(".word 0xf206b"); 14 | #define P_JUMP asm __volatile__(".word 0x1ff707b"); 15 | #define JOIN asm __volatile__(".word 0x306b"); 16 | 17 | 18 | #define __if(val) bool temp = !val; \ 19 | register unsigned p asm("t5") = temp; \ 20 | register void * e asm("t6") = &&ELSE; \ 21 | SPLIT; \ 22 | P_JUMP; \ 23 | 24 | 25 | #define __else register void * w asm("t3") = &&AFTER; \ 26 | asm __volatile__("jr t3"); \ 27 | ELSE: asm __volatile__("nop"); 28 | 29 | #define __end_if AFTER:\ 30 | JOIN; 31 | 32 | static int done[] = {0, 0, 0, 0, 0, 0, 0}; 33 | 34 | static int main_sp[1]; 35 | 36 | unsigned context[32]; 37 | void vx_save_context(void); 38 | void vx_load_context(void); 39 | 40 | 41 | #define FUNC void (func)(unsigned, unsigned) 42 | 43 | unsigned vx_available_warps(void); 44 | unsigned vx_available_threads(void); 45 | 46 | 47 | void vx_createThreads(unsigned, unsigned, unsigned, void *, unsigned); 48 | void vx_wspawn(unsigned, unsigned, unsigned, void *, unsigned); 49 | void vx_spawnWarps(unsigned num_Warps, unsigned num_threads, FUNC, void *); 50 | void vx_schedule_warps(void); 51 | void vx_reschedule_warps(void); 52 | void vx_wait_for_warps(unsigned); 53 | void * vx_get_arg_struct(void); 54 | 55 | 56 | -------------------------------------------------------------------------------- /emulator/include/help.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | HARPtools by Chad D. Kersey, Summer 2011 3 | *******************************************************************************/ 4 | #ifndef __HELP_H 5 | #define __HELP_H 6 | 7 | /* Help messages. */ 8 | namespace HarpTools { 9 | namespace Help { 10 | const char *mainHelp = 11 | "--help, -h, no arguments\n" 12 | " Print this message.\n" 13 | "-E, --emu; -A, --asm; -L, --ld; -D, --disasm\n" 14 | " Invoke the emulator, assembler, linker, and disassembler, " 15 | "respectively.\n" 16 | " --help\n" 17 | " Display contextual help.\n", 18 | *emuHelp = "HARP Emulator command line arguments:\n" 19 | " -c, --core RAM image\n" 20 | " -a, --arch Architecture string\n" 21 | " -s, --stats Print stats on exit.\n" 22 | " -b, --basic Disable virtual memory.\n" 23 | " -i, --batch Disable console input.\n", 24 | *asmHelp = "HARP Assembler command line arguments:\n" 25 | " -a, --arch \n" 26 | " -o, --output \n", 27 | *ldHelp = "HARP Linker command line arguments:\n" 28 | " -o, --output \n" 29 | " -a, --arch \n" 30 | " -f, --format \n" 31 | " --offset \n", 32 | *disasmHelp = "HARP Disassembler command line arguments:\n" 33 | " -a, --arch Architecture string.\n" 34 | " -o, --output Output filename.\n"; 35 | }; 36 | }; 37 | #endif 38 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.LW.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F1171700001307E7F118435F 18 | :100100003AC017110000130121F0971700009387E0 19 | :10011000A7F0DC433EC017110000130121EF1714B4 20 | :100120000000130464EF004422C017110000130103 21 | :1001300021EE97140000938424EEE45026C017119A 22 | :100140000000130121ED971600009386E6ECF45EA3 23 | :1001500036C0171500001305E5EA971500009385D2 24 | :1001600065F4370610F01306C6F2630CB50054456B 25 | :1001700014C2144514C2544114C2144114C241059E 26 | :10018000EDB7370510F0130505F223200500000038 27 | :0201900000006D 28 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 29 | :10101000FFFFFFFF000000000100000002000000D1 30 | :1010200003000000040000000500000006000000AE 31 | :101030000700000008000000090000000A0000008E 32 | :101040000B0000000C0000000D0000000E0000006E 33 | :101050000F0000001000000011000000120000004E 34 | :10106000130000001400000015000000160000002E 35 | :101070001700000018000000190000001A0000000E 36 | :101080001B0000001C0000001D0000001E000000EE 37 | :101090001F00000000000000000000000000000031 38 | :040000058000000077 39 | :00000001FF 40 | -------------------------------------------------------------------------------- /emulator/riscv_tests/debugPluginExternal.hex: -------------------------------------------------------------------------------- 1 | :100000006F008013130000001300000013000000B5 2 | :100010001300000013000000130000001300000094 3 | :1000200013000000130101F82320310023221100E6 4 | :10003000232421002326310023284100232A5100B4 5 | :10004000232C6100232E71002320810223229102A0 6 | :100050002324A1022326B1022328C102232AD1028C 7 | :10006000232CE102232EF102232001052322110576 8 | :10007000232421052326310523284105232A510560 9 | :10008000232C6105232E710523208107232291074C 10 | :100090002324A1072326B1072328C107232AD10738 11 | :1000A000232CE107232EF1071300000013000000AA 12 | :1000B0001300000013000000832041008321C100D1 13 | :1000C0000322010183224101032381018323C10112 14 | :1000D0000324010283244102032581028325C102F6 15 | :1000E0000326010383264103032781038327C103DA 16 | :1000F0000328010483284104032981048329C104BE 17 | :10010000032A0105832A4105032B8105832BC105A1 18 | :10011000032C0106832C4106032D8106832DC10685 19 | :10012000032E0107832E4107032F8107832FC10769 20 | :1001300013010108130000001711000013010188CA 21 | :10014000130540011300000013000000130000001D 22 | :100150001305F5FFE31805FE170500401305C5F16B 23 | :1001600097050040938545F16308B50023200500FD 24 | :10017000130545006FF05FFF170500401305C5EF3D 25 | :100180001301C1FF97050040938505EF630EB5008D 26 | :1001900083260500130545002320A100E780060003 27 | :1001A000032501006FF01FFE1301410017030040FB 28 | :0801B000E70043E56F000000C9 29 | :020000044000BA 30 | :10000000130101FE232E8100130401029307100047 31 | :100010002324F4FE930720002322F4FE93073000EC 32 | :100020002320F4FE032784FE832744FE3307F700D2 33 | :10003000832704FEB307F7002326F4FE8327C4FEBC 34 | :10004000938717002326F4FE8327C4FE9387270097 35 | :100050002326F4FE0327C4FE832704FEB307F7001C 36 | :100060002326F4FEB70700900327C4FE23A0E70071 37 | :040070006FF09FFD91 38 | :0400000300000138C0 39 | :00000001FF 40 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-CSRRC-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000971700009387070093001000130100006A 3 | :10001000B701F17F9381F1FF370200809302F0FF77 4 | :1000200073900234F3B00034F3900234733101342E 5 | :1000300073910234F3B10134F39102347332023418 6 | :1000400073920234F3B20234F312003423A0070097 7 | :1000500023A2170023A4270023A6370023A84700C4 8 | :1000600023AA570097120000938242FB93051000C9 9 | :1000700013060000B706F17F9386F6FF370700806E 10 | :100080009307F0FF73900734F3B5053473360634E5 11 | :10009000F3B6063473370734F3B7073473380034D4 12 | :1000A00023A0B20023A2C20023A4D20023A6E20010 13 | :1000B00023A8F20023AA0201171D0000130D8DF7DB 14 | :1000C000B75A3412938A8A67130AF0FF73100A34FE 15 | :1000D00073BB0A34F33A0B34F31B0A3473BC0B348E 16 | :1000E000F33C003423205D0123226D0123247D0194 17 | :1000F00023268D0123289D01971000009380C0F4D2 18 | :10010000377F7242130FFFE673100F3473300F34D2 19 | :1001100023A0000023A2E00117110000130141F306 20 | :10012000B79FFFF7938F8F8173900F347330003434 21 | :1001300073300034F33F0034232001002322F10107 22 | :1001400017110000130141F11302F0FFB752389666 23 | :1001500093824227B7531632938383497310023434 24 | :10016000F3B20234F3B30334733404342320510064 25 | :10017000232271002324810017150000130585E850 26 | :1001800097150000938505EE370610F01306C6F2AA 27 | :100190006306B5028326C5002320D600832685008A 28 | :1001A0002320D600832645002320D6008326050081 29 | :1001B0002320D600130505016FF09FFD370510F0D1 30 | :1001C000130505F2232005000000000000000000D8 31 | :0401D000000000002B 32 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 33 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 34 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 35 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 36 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 37 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 38 | :040000058000000077 39 | :00000001FF 40 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-LH-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000971F0000938F0F00171100001301810349 3 | :1000100083910F0003922F002320310023224100FF 4 | :10002000171C0000130C5CFE971200009382020262 5 | :10003000831CFCFF031D1C0023A0920123A2A2012C 6 | :1000400097130000938373FC1714000013048400BB 7 | :10005000039F1300839F33002320E4012322F40134 8 | :10006000171500001305C57A97150000938505FF45 9 | :10007000031605808316258023A0C50023A2D50082 10 | :10008000970600009386367917170000130787FD3F 11 | :100090008397D67F0398F67F2320F700232207015A 12 | :1000A00017180000130888F797180000938808FCB9 13 | :1000B0000319C8FF8319E8FF031A0800831A2800F0 14 | :1000C000031B4800831B680023A0280123A23801DA 15 | :1000D00023A4480123A6580123A8680123AA780174 16 | :1000E000971A0000938A0AF4171B0000130B8BF970 17 | :1000F00003900A0023200B00971A0000938ACAF28B 18 | :10010000171B0000130B4BF883AB0A00039C0B007A 19 | :10011000930C0C0023209B01971C0000938C4CF146 20 | :10012000171D0000130D8DF6839C0C0023209D01EC 21 | :10013000971D0000938D1DF0171E0000130E4EF545 22 | :10014000839DFDFF2320BE0117150000130585EFD9 23 | :1001500097150000938505F4370610F01306C6F2D4 24 | :100160006306B5028326C5002320D60083268500BA 25 | :100170002320D600832645002320D60083260500B1 26 | :100180002320D600130505016FF09FFD370510F001 27 | :10019000130505F223200500000000000000000008 28 | :0401A000000000005B 29 | :1010000022F2F111F44433F366F6F555F88877F7D8 30 | :10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8 31 | :101020007856341228100080F0DEBC9A10325476C4 32 | :1010300098BADCFE00000000000000000000000084 33 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 34 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 35 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 36 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 37 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 38 | :040000058000000077 39 | :00000001FF 40 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-LHU-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000971F0000938F0F00171100001301810349 3 | :1000100083D10F0003D22F0023203100232241007F 4 | :10002000171C0000130C5CFE971200009382020262 5 | :10003000835CFCFF035D1C0023A0920123A2A201AC 6 | :1000400097130000938373FC1714000013048400BB 7 | :1000500003DF130083DF33002320E4012322F401B4 8 | :10006000171500001305C57A97150000938505FF45 9 | :10007000035605808356258023A0C50023A2D50002 10 | :10008000970600009386367917170000130787FD3F 11 | :1000900083D7D67F03D8F67F2320F70023220701DA 12 | :1000A00017180000130888F797180000938808FCB9 13 | :1000B0000359C8FF8359E8FF035A0800835A2800F0 14 | :1000C000035B4800835B680023A0280123A238015A 15 | :1000D00023A4480123A6580123A8680123AA780174 16 | :1000E000971A0000938A0AF4171B0000130B8BF970 17 | :1000F00003D00A0023200B00971A0000938ACAF24B 18 | :10010000171B0000130B4BF883AB0A0003DC0B003A 19 | :10011000930C0C0023209B01971C0000938C4CF146 20 | :10012000171D0000130D8DF683DC0C0023209D01AC 21 | :10013000971D0000938D1DF0171E0000130E4EF545 22 | :1001400083DDFDFF2320BE0117150000130585EF99 23 | :1001500097150000938505F4370610F01306C6F2D4 24 | :100160006306B5028326C5002320D60083268500BA 25 | :100170002320D600832645002320D60083260500B1 26 | :100180002320D600130505016FF09FFD370510F001 27 | :10019000130505F223200500000000000000000008 28 | :0401A000000000005B 29 | :1010000022F2F111F44433F366F6F555F88877F7D8 30 | :10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8 31 | :101020007856341228100080F0DEBC9A10325476C4 32 | :1010300098BADCFE00000000000000000000000084 33 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 34 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 35 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 36 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 37 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 38 | :040000058000000077 39 | :00000001FF 40 | -------------------------------------------------------------------------------- /rtl/VX_csr_handler.v: -------------------------------------------------------------------------------- 1 | 2 | 3 | module VX_csr_handler ( 4 | input wire clk, 5 | input wire[11:0] in_decode_csr_address, // done 6 | input wire[11:0] in_mem_csr_address, 7 | input wire in_mem_is_csr, 8 | /* verilator lint_off UNUSED */ 9 | input wire[31:0] in_mem_csr_result, 10 | /* verilator lint_on UNUSED */ 11 | input wire in_wb_valid, 12 | output wire[31:0] out_decode_csr_data // done 13 | ); 14 | 15 | 16 | reg[11:0] csr[4095:0]; 17 | reg[63:0] cycle; 18 | reg[63:0] instret; 19 | reg[11:0] decode_csr_address; 20 | 21 | 22 | wire read_cycle; 23 | wire read_cycleh; 24 | wire read_instret; 25 | wire read_instreth; 26 | 27 | initial begin 28 | cycle = 0; 29 | instret = 0; 30 | decode_csr_address = 0; 31 | end 32 | 33 | 34 | always @(posedge clk) begin 35 | cycle <= cycle + 1; 36 | decode_csr_address <= in_decode_csr_address; 37 | if (in_wb_valid) begin 38 | instret <= instret + 1; 39 | end 40 | end 41 | 42 | 43 | always @(posedge clk) begin 44 | if(in_mem_is_csr) begin 45 | csr[in_mem_csr_address] <= in_mem_csr_result[11:0]; 46 | end 47 | end 48 | 49 | 50 | assign read_cycle = decode_csr_address == 12'hC00; 51 | assign read_cycleh = decode_csr_address == 12'hC80; 52 | assign read_instret = decode_csr_address == 12'hC02; 53 | assign read_instreth = decode_csr_address == 12'hC82; 54 | 55 | 56 | assign out_decode_csr_data = read_cycle ? cycle[31:0] : 57 | read_cycleh ? cycle[63:32] : 58 | read_instret ? instret[31:0] : 59 | read_instreth ? instret[63:32] : 60 | {{20{1'b0}}, csr[decode_csr_address]}; 61 | 62 | 63 | 64 | 65 | 66 | endmodule // VX_csr_handler 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.LWSP.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E0000100010001000100010001000100971062 17 | :1000F0000000938020F1171100001301E1F102428A 18 | :1001000023A0400097100000938000F0171100001A 19 | :10011000130181F0124423A0800097100000938007 20 | :10012000E0EE17110000130121EF224823A0000187 21 | :10013000971000009380C0ED171100001301C1ED6E 22 | :10014000F65F23A0F001971000009380A0EC171138 23 | :100150000000130161ECFE5A23A0500117150000A6 24 | :10016000130545EA971500009385C5F3370610F08F 25 | :100170001306C6F2630CB500544514C2144514C2EC 26 | :10018000544114C2144114C24105EDB7370510F0B3 27 | :10019000130505F223200500000000000000000008 28 | :0201A00000005D 29 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 30 | :10101000FFFFFFFF000000000100000002000000D1 31 | :1010200003000000040000000500000006000000AE 32 | :101030000700000008000000090000000A0000008E 33 | :101040000B0000000C0000000D0000000E0000006E 34 | :101050000F0000001000000011000000120000004E 35 | :10106000130000001400000015000000160000002E 36 | :101070001700000018000000190000001A0000000E 37 | :101080001B0000001C0000001D0000001E000000EE 38 | :101090001F00000000000000000000000000000031 39 | :040000058000000077 40 | :00000001FF 41 | -------------------------------------------------------------------------------- /rtl/VX_writeback.v: -------------------------------------------------------------------------------- 1 | 2 | `include "VX_define.v" 3 | 4 | 5 | module VX_writeback ( 6 | /* verilator lint_off UNUSED */ 7 | input wire clk, 8 | /* verilator lint_off UNUSED */ 9 | input wire[(`NT*32)-1:0] in_alu_result, 10 | input wire[(`NT*32)-1:0] in_mem_result, 11 | input wire[4:0] in_rd, 12 | input wire[1:0] in_wb, 13 | input wire[31:0] in_PC_next, 14 | /* verilator lint_off UNUSED */ 15 | input wire[`NT_M1:0] in_valid, 16 | /* verilator lint_on UNUSED */ 17 | input wire [`NW_M1:0] in_warp_num, 18 | 19 | output wire[(`NT*32)-1:0] out_write_data, 20 | output wire[4:0] out_rd, 21 | output wire[1:0] out_wb, 22 | output wire[`NW_M1:0] out_warp_num 23 | ); 24 | 25 | wire is_jal; 26 | wire uses_alu; 27 | 28 | wire[(`NT*32)-1:0] out_pc_data; 29 | 30 | 31 | // genvar index; 32 | // for (index=0; index < `NT; index=index+1) 33 | // assign out_pc_data[index] = in_PC_next; 34 | // generate 35 | // endgenerate 36 | 37 | genvar i; 38 | generate 39 | for (i = 0; i < `NT; i=i+1) 40 | begin 41 | assign out_pc_data[(32*i)+31:(32*i)] = in_PC_next; 42 | end 43 | endgenerate 44 | 45 | // assign out_pc_data[0] = in_PC_next; 46 | 47 | // assign out_pc_data[1] = in_PC_next; 48 | 49 | assign is_jal = in_wb == `WB_JAL; 50 | assign uses_alu = in_wb == `WB_ALU; 51 | 52 | assign out_write_data = is_jal ? out_pc_data : 53 | uses_alu ? in_alu_result : 54 | in_mem_result; 55 | 56 | 57 | // always @(negedge clk) begin 58 | // if (in_wb != 0) begin 59 | // $display("[%h] WB Data: %h {%h}, to register: %d [%d %d]",in_PC_next - 4, out_write_data[0], in_mem_result[0], in_rd, in_valid[0], in_valid[1]); 60 | // end 61 | // end 62 | 63 | assign out_rd = in_rd; 64 | assign out_wb = in_wb; 65 | assign out_warp_num = in_warp_num; 66 | 67 | 68 | endmodule // VX_writeback -------------------------------------------------------------------------------- /rtl/VX_define.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | #define NT 2 4 | #define NT_M1 1 5 | 6 | #define R_INST 51 7 | #define L_INST 3 8 | #define ALU_INST 19 9 | #define S_INST 35 10 | #define B_INST 99 11 | #define LUI_INST 55 12 | #define AUIPC_INST 23 13 | #define JAL_INST 111 14 | #define JALR_INST 103 15 | #define SYS_INST 115 16 | 17 | 18 | #define WB_ALU 1 19 | #define WB_MEM 2 20 | #define WB_JAL 3 21 | #define NO_WB 0 22 | 23 | 24 | #define RS2_IMMED 1 25 | #define RS2_REG 0 26 | 27 | 28 | #define NO_MEM_READ 7 29 | #define LB_MEM_READ 0 30 | #define LH_MEM_READ 1 31 | #define LW_MEM_READ 2 32 | #define LBU_MEM_READ 4 33 | #define LHU_MEM_READ 5 34 | 35 | 36 | #define NO_MEM_WRITE 7 37 | #define SB_MEM_WRITE 0 38 | #define SH_MEM_WRITE 1 39 | #define SW_MEM_WRITE 2 40 | 41 | 42 | #define NO_BRANCH 0 43 | #define BEQ 1 44 | #define BNE 2 45 | #define BLT 3 46 | #define BGT 4 47 | #define BLTU 5 48 | #define BGTU 6 49 | 50 | 51 | #define NO_ALU 15 52 | #define ADD 0 53 | #define SUB 1 54 | #define SLLA 2 55 | #define SLT 3 56 | #define SLTU 4 57 | #define XOR 5 58 | #define SRL 6 59 | #define SRA 7 60 | #define OR 8 61 | #define AND 9 62 | #define SUBU 10 63 | #define LUI_ALU 11 64 | #define AUIPC_ALU 12 65 | #define CSR_ALU_RW 13 66 | #define CSR_ALU_RS 14 67 | #define CSR_ALU_RC 15 68 | 69 | 70 | 71 | // WRITEBACK 72 | #define WB_ALU 1 73 | #define WB_MEM 2 74 | #define WB_JAL 3 75 | #define NO_WB 0 76 | 77 | 78 | // JAL 79 | #define JUMP 1 80 | #define NO_JUMP 0 81 | 82 | // STALLS 83 | #define STALL 1 84 | #define NO_STALL 0 85 | 86 | 87 | #define TAKEN 1 88 | #define NOT_TAKEN 0 89 | 90 | 91 | #define ZERO_REG 0 92 | 93 | 94 | // COLORS 95 | #define GREEN "\033[32m" 96 | #define RED "\033[31m" 97 | #define DEFAULT "\033[39m" 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /emulator/riscv_tests/rv32ui-p-fence_i.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F00C004732F2034930F8000630AFF0336 3 | :10001000930F90006306FF03930FB0006302FF038A 4 | :10002000170F0080130F0FFE63040F0067000F000F 5 | :10003000732F203463540F006F004000136E9E53E3 6 | :10004000171F00002320CFFD6FF09FFF732540F1A5 7 | :100050006310050073251030635805000F00F00F82 8 | :10006000130E100073000000130E00009702000032 9 | :10007000938282F973905230735020307350303035 10 | :1000800073504030970200809382C2F7638C020065 11 | :10009000739052109302B01A739022307323203061 12 | :1000A000E39E62F873500030970200009382420191 13 | :1000B00073901234732540F1730020309306F006DC 14 | :1000C00017250000031505F4972500008395A5F377 15 | :1000D00013000000130000001300000013000000D4 16 | :1000E00013000000130000001300000013000000C4 17 | :1000F00013000000130000001300000013000000B4 18 | :1001000097020000239AA200970200002397B200F2 19 | :100110000F1000009386E60D13000000930EC01B25 20 | :10012000130E2000639AD607130740061307F7FF44 21 | :10013000E31E07FE970200002396A2049702000028 22 | :100140002393B2040F1000001300000013000000FE 23 | :100150001300000013000000130000001300000053 24 | :100160001300000013000000130000001300000043 25 | :100170001300000013000000130000001300000033 26 | :100180009386B62213000000930E9030130E3000B9 27 | :100190006394D601631CC0010F00F00F63000E00D2 28 | :1001A000131E1E00136E1E00730000000F00F00FE0 29 | :1001B000130E100073000000731000C00000000058 30 | :1001C000000000000000000000000000000000002F 31 | :1001D000000000000000000000000000000000001F 32 | :1001E000000000000000000000000000000000000F 33 | :0401F000000000000B 34 | :1010000000000000000000000000000000000000E0 35 | :1010100000000000000000000000000000000000D0 36 | :1010200000000000000000000000000000000000C0 37 | :1010300000000000000000000000000000000000B0 38 | :081040000000000000000000A8 39 | :102000009386D614000000000000000000000000CD 40 | :040000058000200057 41 | :00000001FF 42 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.SW.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F10144171600001306C6F198 18 | :1001000000C2004222C0171100001301E1EF854434 19 | :1001100097170000938747F0C4C3C44326C0171144 20 | :1001200000001301A1EE7D55971400009384C4EEE6 21 | :1001300088C488442AC017110000130161EDB786F6 22 | :1001400000009386F6FF171700001307E7EC14CBA7 23 | :10015000144B36C0171100001301C1EBA16717162D 24 | :100160000000130666EB7CDE7C5E3EC017150000C7 25 | :10017000130545E9971500009385C5F2370610F081 26 | :100180001306C6F2630CB500544514C2144514C2DC 27 | :10019000544114C2144114C24105EDB7370510F0A3 28 | :1001A000130505F2232005000000000000000000F8 29 | :0201B00000004D 30 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 31 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 32 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 33 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 34 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 35 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 36 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 37 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 38 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 39 | :10109000FFFFFFFF00000000000000000000000054 40 | :040000058000000077 41 | :00000001FF 42 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.SWSP.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E0000100010001000100010001000100971062 17 | :1000F0000000938020F1171100001301E1F181410C 18 | :100100000EC0824123A03000971000009380C0EF02 19 | :1001100017110000130141F0054212C2124223A040 20 | :10012000400097100000938060EE1711000013014B 21 | :10013000A1EE7D58C2C0064823A000019710000020 22 | :10014000938000ED17110000130101ED378C0000C2 23 | :10015000130CFCFFE2DC665C23A08001971000001A 24 | :10016000938040EB17110000130101EBA16FFEDF3C 25 | :10017000FE5F23A0F001171500001305A5E89715F1 26 | :100180000000938525F2370610F01306C6F2630CC3 27 | :10019000B500544514C2144514C2544114C214414C 28 | :1001A00014C24105EDB7370510F0130505F2232001 29 | :0201B000050048 30 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 31 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 32 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 33 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 34 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 35 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 36 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 37 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 38 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 39 | :10109000FFFFFFFF00000000000000000000000054 40 | :040000058000000077 41 | :00000001FF 42 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-SH-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000009710000093800001B7CFAAAA938FBFBBBF 3 | :1000100023A0F00137F1F1111301212223902000D8 4 | :1000200097120000938252FFA3AF02FEB74C33F346 5 | :10003000938C4C4FA39F92FF171400001304F4FD00 6 | :10004000A3200400B7FFF555938F6F66A310F4014A 7 | :10005000971500009385C57C23A00580379677F718 8 | :100060001306868F2390C580170700001307977B20 9 | :10007000A32F077EB71709999387A7AAA31FF77E17 10 | :1000800097180000938888FA37D911111309C9C04D 11 | :10009000B71922229389B9BB371A3333130AEAEE10 12 | :1000A000B7EA4444938ADAD0370B7777130B0B0FF8 13 | :1000B000B71B6666938BFBFF239E28FF239F38FFA9 14 | :1000C00023904801239158012392680123937801DA 15 | :1000D000171B0000130B0BF6B74065879380103297 16 | :1000E00023201B00375034121300806723100B00AD 17 | :1000F000971A0000938A0AF183A00A0023A0000047 18 | :10010000B73922119389493483AB0A0023903B010C 19 | :10011000971B0000938B4BEF171C0000130C0CF285 20 | :1001200023200C0083AC0B0023109C01171D000042 21 | :10013000130D0DF123200D00B73C5476938C0C2148 22 | :1001400023109D01930C0000171E0000130E8EEF6C 23 | :1001500023200E00B7DDAB89938DFDDE2310BE0199 24 | :10016000130ECEFF971E0000938E0EEE23A00E00FE 25 | :1001700023A20E00B76D7214938D6D832390BE0180 26 | :1001800003AF0E002392EE0197100000938040EC25 27 | :1001900023A000003751389613011120B751812553 28 | :1001A0009381319623902000239030001715000092 29 | :1001B000130545E6971500009385C5E9370610F04D 30 | :1001C0001306C6F26306B5028326C5002320D600B7 31 | :1001D000832685002320D600832645002320D600D1 32 | :1001E000832605002320D600130505016FF09FFD2F 33 | :1001F000370510F0130505F223200500000000006C 34 | :0402000000000000FA 35 | :1010000034100080F0DEBC9A0000000000000000F8 36 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 37 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 38 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 39 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 40 | :040000058000000077 41 | :00000001FF 42 | -------------------------------------------------------------------------------- /emulator/qsim-harp.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | HARPtools by Chad D. Kersey, Summer 2011 3 | *******************************************************************************/ 4 | #include "include/qsim-harp.h" 5 | 6 | #include 7 | #include 8 | 9 | using namespace Harp; 10 | using namespace Qsim; 11 | using namespace std; 12 | 13 | Harp::OSDomain* Harp::OSDomain::osDomain(NULL); 14 | 15 | Harp::OSDomain::OSDomain(ArchDef &archref, string imgFile) : 16 | /* TODO: Move the mu to the Cpu. They're sharing a TLB now! */ 17 | arch(archref), mu(4096, arch.getWordSize()), 18 | ram(imgFile.c_str(), arch.getWordSize()), 19 | cpus(0) 20 | { 21 | if (osDomain != NULL) { 22 | cout << "Error: OSDomain is a singleton."; 23 | exit(1); 24 | } 25 | osDomain = this; 26 | 27 | std::cout << "Constructing an OSDomain with archref, " << archref.getNPRegs() << '\n'; 28 | 29 | std::cout << "Pushing back a Cpu in OSDomain constructor.\n"; 30 | cpus.push_back(Cpu(*this)); 31 | 32 | console = new ConsoleMemDevice(arch.getWordSize(), cout, *cpus[0].core); 33 | 34 | mu.attach(ram, 0); 35 | mu.attach(*console, 1ll<<(arch.getWordSize()*8 - 1)); 36 | } 37 | 38 | void Harp::OSDomain::connect_console(std::ostream &s) { 39 | /* For now this does nothing. ConsoleMemDevice is not redirectable. */ 40 | std::cout << "in connect_console\n"; 41 | } 42 | 43 | Harp::OSDomain::Cpu::Cpu(Harp::OSDomain &o) : 44 | /* TODO: This should support non-word decoders! */ 45 | osd(&o), dec(new WordDecoder(osd->arch)), 46 | core(new Core(osd->arch, *dec, osd->mu)) 47 | { 48 | std::cout << "Constructing a new Cpu.\n"; 49 | } 50 | 51 | uint64_t Harp::OSDomain::Cpu::run(uint64_t n) { 52 | uint64_t i; 53 | std::cout << "pc=0x" << std::hex << core->pc << ", " << std::dec << sizeof(*core) << '\n'; 54 | //osd->console->poll(); 55 | for (i = 0; i < n; ++i) core->step(); 56 | return i; 57 | } 58 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-AUIPC-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000001717000013070700971700009387870151 3 | :10001000832007003711000013014100B7F1FFFFF3 4 | :100020009381810037F2FF7F1302C200B702008084 5 | :100030009382020133812000B3813000338240007B 6 | :10004000B3825000170300009713000017F8FFFF5A 7 | :1000500097FEFF7F970F008033431300B3C3230045 8 | :1000600033483800B3CE4E00B3CF5F0023A0670003 9 | :1000700023A2770023A4070123A6D70123A8F70111 10 | :1000800097180000938848F8171800001308C8FA5A 11 | :10009000B710111193801011372122221301212250 12 | :1000A000B737333393873733374E4444130E4E44B8 13 | :1000B000375F5555130F5F5583A108003702008045 14 | :1000C000B7F2FF7F9382420013038000B713000052 15 | :1000D0009383C30037F4FFFF13040401338241000C 16 | :1000E000B382510033836100B38371003384810094 17 | :1000F0009700008017F1FF7F97070000171E000090 18 | :1001000017FFFFFFB3C0400033415100B3C7670082 19 | :10011000334E7E00334F8F00232018002322280007 20 | :100120002324F8002326C8012328E801171900001A 21 | :100130001309C9ED97180000938848F1832009003E 22 | :10014000032149008321890017020000130242FFA6 23 | :100150009707000093878701170F0000130F0F0404 24 | :10016000970200009382C2FD1708000013080800E0 25 | :10017000970F0000938F8F0233421200B3C72700FE 26 | :10018000334F3F00B382124033482800B3CF3F00C3 27 | :1001900023A0480023A2F80023A4E80123A65800C6 28 | :1001A00023A8080123AAF80117150000130585E705 29 | :1001B00097150000938505EB370610F01306C6F27D 30 | :1001C0006306B5028326C5002320D600832685005A 31 | :1001D0002320D600832645002320D6008326050051 32 | :1001E0002320D600130505016FF09FFD370510F0A1 33 | :1001F000130505F2232005000000000000000000A8 34 | :0402000000000000FA 35 | :1010000044000080F00000803C0100806801008006 36 | :1010100098010080000000000000000000000000B7 37 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 38 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 39 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 40 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 41 | :040000058000000077 42 | :00000001FF 43 | -------------------------------------------------------------------------------- /rtl/VX_f_d_reg.v: -------------------------------------------------------------------------------- 1 | 2 | `include "VX_define.v" 3 | 4 | module VX_f_d_reg ( 5 | input wire clk, 6 | input wire reset, 7 | input wire[31:0] in_instruction, 8 | input wire[`NT_M1:0] in_valid, 9 | input wire[31:0] in_curr_PC, 10 | input wire in_fwd_stall, 11 | input wire in_freeze, 12 | input wire in_clone_stall, 13 | input wire[`NW_M1:0] in_warp_num, 14 | 15 | output wire[31:0] out_instruction, 16 | output wire[31:0] out_curr_PC, 17 | output wire[`NT_M1:0] out_valid, 18 | output wire[`NW_M1:0] out_warp_num 19 | ); 20 | 21 | // always @(posedge clk) begin 22 | // $display("Fetch Inst: %d\tDecode Inst: %d", in_instruction, out_instruction); 23 | // end 24 | 25 | reg[31:0] instruction; 26 | reg[31:0] curr_PC; 27 | reg[`NT_M1:0] valid; 28 | reg[`NW_M1:0] warp_num; 29 | 30 | integer reset_cur_thread = 0; 31 | 32 | // always @(in_instruction) begin 33 | // $display("in_instruction: %h",in_instruction); 34 | // end 35 | 36 | always @(posedge clk or posedge reset) begin 37 | if(reset) begin 38 | instruction <= 32'h0; 39 | curr_PC <= 32'h0; 40 | warp_num <= 0; 41 | for (reset_cur_thread = 0; reset_cur_thread < `NT; reset_cur_thread = reset_cur_thread + 1) 42 | valid[reset_cur_thread] <= 1'b0; 43 | 44 | end else if (in_fwd_stall == 1'b1 || in_freeze == 1'b1 || in_clone_stall) begin 45 | // if (in_clone_stall) begin 46 | // $display("STALL BECAUSE OF CLONE"); 47 | // end 48 | end else begin 49 | instruction <= in_instruction; 50 | valid <= in_valid; 51 | curr_PC <= in_curr_PC; 52 | warp_num <= in_warp_num; 53 | end 54 | end 55 | 56 | always @(*) begin 57 | // $display("PC in VX_f_d_reg: %h", curr_PC); 58 | end 59 | 60 | assign out_instruction = instruction; 61 | assign out_curr_PC = curr_PC; 62 | assign out_valid = valid; 63 | assign out_warp_num = warp_num; 64 | 65 | 66 | 67 | endmodule -------------------------------------------------------------------------------- /emulator/include/args.h: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | HARPtools by Chad D. Kersey, Summer 2011 3 | *******************************************************************************/ 4 | #ifndef __ARGS_H 5 | #define __ARGS_H 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | namespace HarpTools { 13 | struct BadArg { BadArg(std::string s) : arg(s) {} std::string arg; }; 14 | 15 | class CommandLineArg { 16 | public: 17 | CommandLineArg(std::string s, std::string l, const char *helpText); 18 | CommandLineArg(std::string l, const char *helpText); 19 | virtual int read(int argc, char** argv) = 0; 20 | 21 | static void readArgs(int argc, char **argv); 22 | static void clearArgs(); 23 | static void showHelp(std::ostream &os); 24 | 25 | private: 26 | static std::string helpString; 27 | static std::map longArgs; 28 | static std::map shortArgs; 29 | }; 30 | 31 | template class CommandLineArgSetter : public CommandLineArg { 32 | public: 33 | CommandLineArgSetter(std::string s, std::string l, const char *ht, T &x) : 34 | CommandLineArg(s, l, ht), x(x) {} 35 | CommandLineArgSetter(std::string l, const char *ht, T &x) : 36 | CommandLineArg(l, ht), x(x) {} 37 | 38 | int read(int argc, char **argv) { 39 | std::istringstream iss(argv[1]); 40 | iss >> x; 41 | return 1; 42 | } 43 | private: 44 | T &x; 45 | }; 46 | 47 | class CommandLineArgFlag : public CommandLineArg { 48 | public: 49 | CommandLineArgFlag(std::string s, std::string l, const char *ht, bool &x) : 50 | CommandLineArg(s, l, ht), x(x) { x = false; } 51 | CommandLineArgFlag(std::string l, const char *ht, bool &x) : 52 | CommandLineArg(l, ht), x(x) { x = false; } 53 | 54 | int read(int argc, char **argv) { x = true; return 0; } 55 | private: 56 | bool &x; 57 | }; 58 | 59 | }; 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /rtl/VX_warp.v: -------------------------------------------------------------------------------- 1 | `include "VX_define.v" 2 | 3 | 4 | module VX_warp ( 5 | input wire clk, 6 | input wire reset, 7 | input wire stall, 8 | input wire[`NT_M1:0] in_thread_mask, 9 | input wire in_change_mask, 10 | input wire in_jal, 11 | input wire[31:0] in_jal_dest, 12 | input wire in_branch_dir, 13 | input wire[31:0] in_branch_dest, 14 | input wire in_wspawn, 15 | input wire[31:0] in_wspawn_pc, 16 | 17 | output wire[31:0] out_PC, 18 | output wire[`NT_M1:0] out_valid 19 | ); 20 | 21 | reg[31:0] real_PC; 22 | reg[31:0] temp_PC; 23 | wire[31:0] use_PC; 24 | reg[`NT_M1:0] valid; 25 | 26 | 27 | integer ini_cur_th = 0; 28 | initial begin 29 | real_PC = 0; 30 | for (ini_cur_th = 1; ini_cur_th < `NT; ini_cur_th=ini_cur_th+1) 31 | valid[ini_cur_th] = 0; // Thread 1 active 32 | valid[0] = 1; 33 | end 34 | 35 | 36 | always @(*) begin 37 | if (in_change_mask) begin 38 | valid <= in_thread_mask; 39 | end 40 | end 41 | 42 | 43 | genvar out_cur_th; 44 | generate 45 | for (out_cur_th = 0; out_cur_th < `NT; out_cur_th = out_cur_th+1) 46 | assign out_valid[out_cur_th] = in_change_mask ? in_thread_mask[out_cur_th] : stall ? 1'b0 : valid[out_cur_th]; 47 | endgenerate 48 | 49 | 50 | always @(*) begin 51 | if (in_jal == 1'b1) begin 52 | temp_PC <= in_jal_dest; 53 | end else if (in_branch_dir == 1'b1) begin 54 | temp_PC <= in_branch_dest; 55 | end else begin 56 | temp_PC <= real_PC; 57 | end 58 | end 59 | 60 | assign use_PC = temp_PC; 61 | assign out_PC = temp_PC; 62 | 63 | always @(posedge clk or posedge reset) begin 64 | if (reset) begin 65 | real_PC <= 0; 66 | end else if (in_wspawn == 1'b1) begin 67 | // $display("Inside warp ***** Spawn @ %H",in_wspawn_pc); 68 | real_PC <= in_wspawn_pc; 69 | end else if (stall) begin 70 | real_PC <= use_PC 71 | end else begin 72 | real_PC <= use_PC + 32'h4;; 73 | end 74 | 75 | end 76 | 77 | 78 | endmodule -------------------------------------------------------------------------------- /emulator/riscv_tests/I-MISALIGN_LDST-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000009700000093804014F39F50309711000038 3 | :10001000938141FF171100001301C1FF97100000E9 4 | :1000200093804000930250001303600003A201007C 5 | :100030002320410003A211002322410003A221003A 6 | :100040002324410003A23100232641009711000020 7 | :10005000938181FB17110000130141FE97100000EE 8 | :100060009380C0FF930250001303600003920100CD 9 | :10007000232041000392110023224100039221001A 10 | :1000800023244100039231002326410003D20100C2 11 | :100090002328410003D21100232A410003D221006A 12 | :1000A000232C410003D23100232E41001711000000 13 | :1000B0001301C1FC97100000938040FD1303000062 14 | :1000C000B7A299999382929923205100232251003B 15 | :1000D00023245100232651002320610013014100F5 16 | :1000E000A32061001301410023216100130141009D 17 | :1000F000A3216100171100001301C1FA971000003D 18 | :10010000938040FB13030000B7A2999993829299C0 19 | :100110002320510023225100232451002326510083 20 | :100120002310610013014100A3106100130141007D 21 | :100130002311610013014100A311610073905F302E 22 | :100140006F00C002732F1034130F4F0073101F3451 23 | :10015000732F3034137F3F0023A0E001732F20342E 24 | :1001600023A2E00193808000730020301715000067 25 | :10017000130545EA971500009385C5F4370610F07E 26 | :100180001306C6F26306B5028326C5002320D600F7 27 | :10019000832685002320D600832645002320D60011 28 | :1001A000832605002320D600130505016FF09FFD6F 29 | :1001B000370510F0130505F22320050000000000AC 30 | :0401C000000000003B 31 | :10100000C1B1A19102F2E2D2000000000000000094 32 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 33 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 34 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 35 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 36 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 37 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 38 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 39 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 40 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 41 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 42 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 43 | :040000058000000077 44 | :00000001FF 45 | -------------------------------------------------------------------------------- /rtl/obj_dir/VVortex.mk: -------------------------------------------------------------------------------- 1 | # Verilated -*- Makefile -*- 2 | # DESCRIPTION: Verilator output: Makefile for building Verilated archive or executable 3 | # 4 | # Execute this makefile from the object directory: 5 | # make -f VVortex.mk 6 | 7 | default: VVortex 8 | 9 | ### Constants... 10 | # Perl executable (from $PERL) 11 | PERL = perl 12 | # Path to Verilator kit (from $VERILATOR_ROOT) 13 | VERILATOR_ROOT = /usr/local/Cellar/verilator/4.010/share/verilator 14 | # SystemC include directory with systemc.h (from $SYSTEMC_INCLUDE) 15 | SYSTEMC_INCLUDE ?= 16 | # SystemC library directory with libsystemc.a (from $SYSTEMC_LIBDIR) 17 | SYSTEMC_LIBDIR ?= 18 | 19 | ### Switches... 20 | # SystemC output mode? 0/1 (from --sc) 21 | VM_SC = 0 22 | # Legacy or SystemC output mode? 0/1 (from --sc) 23 | VM_SP_OR_SC = $(VM_SC) 24 | # Deprecated 25 | VM_PCLI = 1 26 | # Deprecated: SystemC architecture to find link library path (from $SYSTEMC_ARCH) 27 | VM_SC_TARGET_ARCH = linux 28 | 29 | ### Vars... 30 | # Design prefix (from --prefix) 31 | VM_PREFIX = VVortex 32 | # Module prefix (from --prefix) 33 | VM_MODPREFIX = VVortex 34 | # User CFLAGS (from -CFLAGS on Verilator command line) 35 | VM_USER_CFLAGS = \ 36 | 37 | # User LDLIBS (from -LDFLAGS on Verilator command line) 38 | VM_USER_LDLIBS = \ 39 | 40 | # User .cpp files (from .cpp's on Verilator command line) 41 | VM_USER_CLASSES = \ 42 | test_bench \ 43 | 44 | # User .cpp directories (from .cpp's on Verilator command line) 45 | VM_USER_DIR = \ 46 | . \ 47 | 48 | 49 | ### Default rules... 50 | # Include list of all generated classes 51 | include VVortex_classes.mk 52 | # Include global rules 53 | include $(VERILATOR_ROOT)/include/verilated.mk 54 | 55 | ### Executable rules... (from --exe) 56 | VPATH += $(VM_USER_DIR) 57 | 58 | test_bench.o: test_bench.cpp 59 | $(OBJCACHE) $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(OPT_FAST) -c -o $@ $< 60 | 61 | ### Link rules... (from --exe) 62 | VVortex: $(VK_USER_OBJS) $(VK_GLOBAL_OBJS) $(VM_PREFIX)__ALL.a 63 | $(LINK) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -o $@ $(LIBS) $(SC_LIBS) 64 | 65 | 66 | # Verilated -*- Makefile -*- 67 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.LI.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F1814181410EC001420542FE 18 | :1001000012C20144414422C48144FD4426C68145B3 19 | :1001100085552EC817110000130101F00546014650 20 | :1001200032C08546854636C2054741473AC48547B1 21 | :10013000FD473EC60548055842C817110000130187 22 | :10014000E1EE9308F0FF814846C01309F0FF05492E 23 | :100150004AC29309F0FFC1494EC4130AF0FF7D4A19 24 | :1001600052C6930AF0FF855A56C8171100001301B2 25 | :1001700021ED370B0800130BFBFF014B5AC0B70BE7 26 | :100180000800938BFBFF854B5EC2370C0800130CF5 27 | :10019000FCFF414C62C4B70C0800938CFCFFFD4C83 28 | :1001A00066C6370D0800130DFDFF055D6AC81711FF 29 | :1001B0000000130121EAB70D0800814D6EC0370E13 30 | :1001C0000800054E72C2B70E0800C14E76C4370F44 31 | :1001D00008007D4F7AC6B70F0800855F7EC81715E7 32 | :1001E0000000130525E2971500009385A5E8370662 33 | :1001F00010F01306C6F2630CB500544514C2144542 34 | :1002000014C2544114C2144114C24105EDB737055C 35 | :1002100010F0130505F22320050000000000000087 36 | :020220000000DC 37 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 38 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 39 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 40 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFF00000000000000000000000084 44 | :040000058000000077 45 | :00000001FF 46 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.LUI.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F1814185610EC001420962B6 18 | :1001000012C201443D6422C48144FD6426C6814577 19 | :10011000FD752EC817110000130101F00546056694 20 | :1001200032C08546896636C205473D673AC4854771 21 | :10013000FD673EC605487D7842C8171100001301CF 22 | :10014000E1EE9308F0FF856846C01309F0FF0969E6 23 | :100150004AC29309F0FFBD694EC4130AF0FF7D6ADD 24 | :1001600052C6930AF0FFFD7A56C81711000013011A 25 | :1001700021ED370B0800130BFBFF056B5AC0B70BC3 26 | :100180000800938BFBFF896B5EC2370C0800130CD1 27 | :10019000FCFF3D6C62C4B70C0800938CFCFFFD6C47 28 | :1001A00066C6370D0800130DFDFF7D7D6AC8171167 29 | :1001B0000000130121EAB70D0800856D6EC0370EEF 30 | :1001C0000800096E72C2B70E0800BD6E76C4370F04 31 | :1001D00008007D6F7AC6B70F0800FD7F7EC817152F 32 | :1001E0000000130525E2971500009385A5E8370662 33 | :1001F00010F01306C6F2630CB500544514C2144542 34 | :1002000014C2544114C2144114C24105EDB737055C 35 | :1002100010F0130505F22320050000000000000087 36 | :020220000000DC 37 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 38 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 39 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 40 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFF00000000000000000000000084 44 | :040000058000000077 45 | :00000001FF 46 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.ADDI.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F1814185010EC00142090276 18 | :1001000012C201443D0422C48144C10426C6814573 19 | :10011000FD052EC817110000130101F00546050664 20 | :1001200032C08546890636C205473D073AC4854731 21 | :10013000C1073EC605487D0842C8171100001301DB 22 | :10014000E1EE9308F0FF850846C01309F0FF0909A6 23 | :100150004AC29309F0FFBD094EC4130AF0FF410AD9 24 | :1001600052C6930AF0FFFD0A56C81711000013018A 25 | :1001700021ED370B0800130BFBFF050B5AC0B70B23 26 | :100180000800938BFBFF890B5EC2370C0800130C31 27 | :10019000FCFF3D0C62C4B70C0800938CFCFFC10C43 28 | :1001A00066C6370D0800130DFDFF7D0D6AC81711D7 29 | :1001B0000000130121EAB70D0800850D6EC0370E4F 30 | :1001C0000800090E72C2B70E0800BD0E76C4370FC4 31 | :1001D0000800410F7AC6B70F0800FD0F7EC817153B 32 | :1001E0000000130525E2971500009385A5E8370662 33 | :1001F00010F01306C6F2630CB500544514C2144542 34 | :1002000014C2544114C2144114C24105EDB737055C 35 | :1002100010F0130505F22320050000000000000087 36 | :020220000000DC 37 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 38 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 39 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 40 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFF00000000000000000000000084 44 | :040000058000000077 45 | :00000001FF 46 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.ANDI.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F1814581892EC00146058A46 18 | :1001000032C28146C18A36C401477D8B3AC68147D7 19 | :10011000859B3EC817110000130101F005440188BA 20 | :1001200022C08544858826C28545C1892EC40546DE 21 | :100130007D8A32C68546859A36C81711000013019C 22 | :10014000E1EE1307F0FF018B3AC09307F0FF858BB8 23 | :100150003EC21304F0FF418822C49304F0FFFD88DF 24 | :1001600026C69305F0FF85992EC8171100001301CC 25 | :1001700021ED370608001306F6FF018A32C0B706E4 26 | :1001800008009386F6FF858A36C2370708001307F2 27 | :10019000F7FF418B3AC4B70708009387F7FFFD8B41 28 | :1001A0003EC6370408001304F4FF059822C817114F 29 | :1001B0000000130121EAB7040800818826C0B705B2 30 | :1001C000080085892EC237060800418A32C4B70666 31 | :1001D0000800FD8A36C637070800059B3AC8171580 32 | :1001E0000000130525E2971500009385A5E8370662 33 | :1001F00010F01306C6F2630CB500544514C2144542 34 | :1002000014C2544114C2144114C24105EDB737055C 35 | :1002100010F0130505F22320050000000000000087 36 | :020220000000DC 37 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 38 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 39 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 40 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFF00000000000000000000000084 44 | :040000058000000077 45 | :00000001FF 46 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.SLLI.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F1814186010EC001420A0274 18 | :1001000012C201443E0422C48144C20426C6814571 19 | :10011000FE052EC817110000130101F00546060662 20 | :1001200032C085468A0636C205473E073AC485472F 21 | :10013000C2073EC605487E0842C8171100001301D9 22 | :10014000E1EE9308F0FF860846C01309F0FF0A09A4 23 | :100150004AC29309F0FFBE094EC4130AF0FF420AD7 24 | :1001600052C6930AF0FFFE0A56C817110000130189 25 | :1001700021ED370B0800130BFBFF060B5AC0B70B22 26 | :100180000800938BFBFF8A0B5EC2370C0800130C30 27 | :10019000FCFF3E0C62C4B70C0800938CFCFFC20C41 28 | :1001A00066C6370D0800130DFDFF7E0D6AC81711D6 29 | :1001B0000000130121EAB70D0800860D6EC0370E4E 30 | :1001C00008000A0E72C2B70E0800BE0E76C4370FC2 31 | :1001D0000800420F7AC6B70F0800FE0F7EC8171539 32 | :1001E0000000130525E2971500009385A5E8370662 33 | :1001F00010F01306C6F2630CB500544514C2144542 34 | :1002000014C2544114C2144114C24105EDB737055C 35 | :1002100010F0130505F22320050000000000000087 36 | :020220000000DC 37 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 38 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 39 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 40 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFF00000000000000000000000084 44 | :040000058000000077 45 | :00000001FF 46 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.SRAI.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F18144858426C08145898552 18 | :100100002EC201463D8632C48146C18636C60147AD 19 | :100110007D873AC817110000130101F085478587D4 20 | :100120003EC00544098422C28544BD8426C4854559 21 | :10013000C1852EC605467D8632C817110000130101 22 | :10014000E1EE9306F0FF858636C01307F0FF0987BE 23 | :100150003AC29307F0FFBD873EC41304F0FF418409 24 | :1001600022C69304F0FFFD8426C817110000130176 25 | :1001700021EDB70508009385F5FF85852EC037066C 26 | :1001800008001306F6FF098632C2B70608009386F8 27 | :10019000F6FFBD8636C4370708001307F7FF41870F 28 | :1001A0003AC6B70708009387F7FFFD873EC81711C7 29 | :1001B0000000130121EA37040800058422C0B704B7 30 | :1001C0000800898426C2B7050800BD852EC43706FD 31 | :1001D0000800418632C6B7060800FD8636C81715E6 32 | :1001E0000000130525E2971500009385A5E8370662 33 | :1001F00010F01306C6F2630CB500544514C2144542 34 | :1002000014C2544114C2144114C24105EDB737055C 35 | :1002100010F0130505F22320050000000000000087 36 | :020220000000DC 37 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 38 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 39 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 40 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFF00000000000000000000000084 44 | :040000058000000077 45 | :00000001FF 46 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.SRLI.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F1014705833AC0814789833C 18 | :100100003EC201443D8022C48144C18026C681454F 19 | :10011000FD812EC817110000130101F0054605826C 20 | :1001200032C08546898236C205473D833AC4854739 21 | :10013000C1833EC605447D8022C81711000013010B 22 | :10014000E1EE9304F0FF858026C09305F0FF8981DE 23 | :100150002EC21306F0FF3D8232C49306F0FFC18227 24 | :1001600036C61307F0FF7D833AC81711000013014C 25 | :1001700021EDB70708009387F7FF85833EC037045A 26 | :1001800008001304F4FF098022C2B7040800938416 27 | :10019000F4FFBD8026C4B70508009385F5FFC18133 28 | :1001A0002EC6370608001306F6FF7D8232C81711E7 29 | :1001B0000000130121EAB7060800858236C0370720 30 | :1001C000080009833AC2B7070800BD833EC437045C 31 | :1001D0000800418022C6B7040800FD8026C8171514 32 | :1001E0000000130525E2971500009385A5E8370662 33 | :1001F00010F01306C6F2630CB500544514C2144542 34 | :1002000014C2544114C2144114C24105EDB737055C 35 | :1002100010F0130505F22320050000000000000087 36 | :020220000000DC 37 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 38 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 39 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 40 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFF00000000000000000000000084 44 | :040000058000000077 45 | :00000001FF 46 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-SB-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000009710000093800001B7CFAAAA938FBFBBBF 3 | :1000100023A0F00137F1F1111301212223802000E8 4 | :1000200097120000938252FFA3AF02FEB74C33F346 5 | :10003000938C4C4FA38F92FF171400001304F4FD10 6 | :10004000A3200400B7FFF555938F6F66A300F4015A 7 | :10005000971500009385C57C23A00580379677F718 8 | :100060001306868F2380C580170700001307977B30 9 | :10007000A32F077EB71709999387A7AAA30FF77E27 10 | :1000800097180000938888FA371911111309C910BD 11 | :10009000B72922229389C92C373A3333130ABA3B42 12 | :1000A000B74A4444938ABA40375B5555130BEB5E0D 13 | :1000B000B76B6666938BEB60377C7777130CDC70DD 14 | :1000C000B79C8888938CDC8D37AD9999130D0D9F63 15 | :1000D000B7BDAAAA938D0DA037CEBBBB130EFEBF32 16 | :1000E000B7DECCCC938EFEC0238E28FFA38E38FFC4 17 | :1000F000238F48FFA38F58FF23806801A3807801D6 18 | :1001000023818801A38198012382A801A382B801D9 19 | :100110002383C801A383D801171B0000130B8BF1A5 20 | :10012000B74065879380103223201B00375034126C 21 | :100130001300806723000B00971A0000938A8AEC53 22 | :1001400083A00A0023A00000B73922119389493403 23 | :1001500083AB0A0023803B01971B0000938BCBEA03 24 | :10016000171C0000130C8CED23200C0083AC0B003B 25 | :1001700023009C01171D0000130D8DEC23200D00A2 26 | :10018000B73C5476938C0C2123009D01930C000006 27 | :10019000171E0000130E0EEB23200E00B7DDAB89F7 28 | :1001A000938DFDDE2300BE01130ECEFF971E0000CF 29 | :1001B000938E8EE923A00E0023A20E00B76D721459 30 | :1001C000938D6D832380BE0103AF0E002382EE0169 31 | :1001D000971000009380C0E723A0000037513896A5 32 | :1001E00013011120B751812593813196238020007E 33 | :1001F00023803000171500001305C5E19715000096 34 | :10020000938545E5370610F01306C6F26306B5027E 35 | :100210008326C5002320D600832685002320D60010 36 | :10022000832645002320D600832605002320D60000 37 | :10023000130505016FF09FFD370510F0130505F25A 38 | :040240002320050072 39 | :1010000034100080F0DEBC9A0000000000000000F8 40 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 41 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 42 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 43 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 44 | :040000058000000077 45 | :00000001FF 46 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-RF_size-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000001718000013080800377072421300F0E65A 3 | :10001000B7303356938090243721562D1301210594 4 | :10002000B77169529381313637826B731302029232 5 | :10003000B7627473938222573753206E1303F3E62B 6 | :10004000B773694D938313C63764646F1304341711 7 | :10005000B744796B93843406377565741305352777 8 | :10006000B7756E28938535F737266B6513068604BA 9 | :10007000B76652209386461637376D6F1307C792BF 10 | :10008000B7377069938737E62320080023221800CA 11 | :10009000232428002326380023284800232A580038 12 | :1000A000232C6800232E7800232088022322980224 13 | :1000B0002324A8022326B8022328C802232AD80210 14 | :1000C000232CE802232EF80217120000130282F7F5 15 | :1000D00037686F6313081846B778656A938808B461 16 | :1000E0003779282013091986B7696A619389B95647 17 | :1000F000376A7661130A0A52B75A202E938A5AC673 18 | :10010000377B6F63130B9BD2B77B6973938BEB02C7 19 | :10011000378C2066130CFC96B72C6567938C9C0675 20 | :10012000377D7365130D1D36B72D7375938DDD0601 21 | :10013000371E293A130EAED0B77E6968938E0E3201 22 | :10014000372F6461130F4F07B77F2075938F5F269A 23 | :10015000232002012322120123242201232632011B 24 | :1001600023284201232A5201232C6201232E7201EB 25 | :1001700023208203232292032324A2032326B203F3 26 | :100180002328C203232AD203232CE203232EF203C3 27 | :1001900017120000130202EF232002002322120094 28 | :1001A000232422002326320017150000130585E5BD 29 | :1001B00097150000938505EE370610F01306C6F27A 30 | :1001C0006306B5028326C5002320D600832685005A 31 | :1001D0002320D600832645002320D6008326050051 32 | :1001E0002320D600130505016FF09FFD370510F0A1 33 | :1001F000130505F2232005000000000000000000A8 34 | :0402000000000000FA 35 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 36 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 37 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 38 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 39 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 40 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 41 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 42 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 43 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 44 | :040000058000000077 45 | :00000001FF 46 | -------------------------------------------------------------------------------- /rtl/VX_register_file_slave.v: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | module VX_register_file_slave ( 7 | input wire clk, 8 | input wire in_warp, 9 | input wire in_wb_warp, 10 | input wire in_valid, 11 | input wire in_write_register, 12 | input wire[4:0] in_rd, 13 | input wire[31:0] in_data, 14 | input wire[4:0] in_src1, 15 | input wire[4:0] in_src2, 16 | input wire in_clone, 17 | input wire in_to_clone, 18 | input wire[(32*32)-1:0] in_regs, 19 | 20 | output reg[31:0] out_src1_data, 21 | output reg[31:0] out_src2_data 22 | ); 23 | 24 | reg[31:0] registers[31:0]; 25 | wire[31:0] temp_regs[31:0]; 26 | 27 | wire[31:0] write_data; 28 | 29 | wire[4:0] write_register; 30 | 31 | wire write_enable; 32 | 33 | // reg[5:0] i; 34 | // always @(posedge clk) begin 35 | // for (i = 0; i < 32; i++) begin 36 | // $display("%d: %h",i, registers[i[4:0]]); 37 | // end 38 | // end 39 | 40 | // integer i; 41 | 42 | // always @(*) begin 43 | // if (in_warp) begin 44 | // $display("TID: %d: %h",10,registers[10]); 45 | // $display("WID: %d: %h",11,registers[11]); 46 | // end 47 | // end 48 | 49 | assign write_data = in_data; 50 | assign write_register = in_rd; 51 | 52 | genvar z; 53 | generate 54 | for (z = 0; z<32;z=z+1) assign temp_regs[z] = in_regs[(32*z)+31:(32*z)]; 55 | endgenerate 56 | 57 | assign write_enable = (in_write_register && (in_rd != 5'h0)) && in_valid && in_wb_warp; 58 | 59 | integer f; 60 | always @(posedge clk) begin 61 | if(write_enable && !in_clone) begin 62 | // $display("RF: Writing %h to %d",write_data, write_register); 63 | registers[write_register] <= write_data; 64 | end else if (in_clone && in_to_clone && in_warp) begin 65 | for (f = 0; f < 32; f=f+1) registers[f] <= temp_regs[f]; 66 | end 67 | end 68 | 69 | // always @(posedge clk) begin 70 | // for (i = 0; i < 32; i = i + 1) 71 | // $display("(%d): %x", i, registers[i]); 72 | 73 | // end 74 | 75 | always @(negedge clk) begin 76 | out_src1_data <= registers[in_src1]; 77 | out_src2_data <= registers[in_src2]; 78 | end 79 | 80 | 81 | endmodule 82 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-JAL-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000971000009380000137513412130181676B 3 | :100010006F0080001301000023A0000023A2200035 4 | :1000200097100000938080FF1301F0FF9301F0FF11 5 | :1000300037D2ED0F130292BA6F0080021301000055 6 | :100040009301000013020000B741658793811132CC 7 | :100050006F008002130100009301000013020000F2 8 | :1000600037E1BC9A130101EF6FF01FFE130100008E 9 | :10007000930100001302000023A0000023A220002F 10 | :1000800023A4300023A6400097140000938484F733 11 | :1000900017150000130585F91301F0FF9301F0FF18 12 | :1000A0001302F0FF9302F0FF3753555513035355D6 13 | :1000B00083AC040003AC4400EF00C001B72122224E 14 | :1000C00093812122EF0F0003B742444493824244BC 15 | :1000D0006F004004371111111301111167800000E6 16 | :1000E00013010000930100001302000093020000BE 17 | :1000F00013030000373233331302323367800F00AB 18 | :10010000130100009301000013020000930200009D 19 | :1001100013030000B3C3900133C48F0123202500D3 20 | :10012000232235002324450023265500232865007B 21 | :10013000232A7500232C850097140000938404ED76 22 | :1001400017150000130545F01301F0FF9301F0FFB0 23 | :100150001302F0FF9302F0FF1303F0FF03AC04005F 24 | :1001600083AC44006F004002B77177779381717759 25 | :1001700067800F00130100009301000013020000CC 26 | :100180009302000013030000376166661301616685 27 | :10019000EFFF9FFD3792888813028288EF000001ED 28 | :1001A00037B3AAAA1303A3AA6F004002B7A2999972 29 | :1001B0009382929967800000130100009301000070 30 | :1001C000130200009302000013030000B3C38F0169 31 | :1001D00033C4900123202500232235002324450029 32 | :1001E0002326550023286500232A7500232C85002B 33 | :1001F00017150000130505E297150000938585E6A5 34 | :10020000370610F01306C6F26306B5028326C50052 35 | :100210002320D600832685002320D6008326450090 36 | :100220002320D600832605002320D60013050501D0 37 | :100230006FF09FFD370510F0130505F22320050030 38 | :0402400000000000BA 39 | :10100000BC000080C800008094010080A001008026 40 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 41 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 42 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 43 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 44 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 45 | :040000058000000077 46 | :00000001FF 47 | -------------------------------------------------------------------------------- /rtl/VX_define.v: -------------------------------------------------------------------------------- 1 | 2 | `define NT 1 3 | `define NT_M1 0 4 | 5 | `define NW_M1 1 6 | 7 | 8 | `define R_INST 7'd51 9 | `define L_INST 7'd3 10 | `define ALU_INST 7'd19 11 | `define S_INST 7'd35 12 | `define B_INST 7'd99 13 | `define LUI_INST 7'd55 14 | `define AUIPC_INST 7'd23 15 | `define JAL_INST 7'd111 16 | `define JALR_INST 7'd103 17 | `define SYS_INST 7'd115 18 | `define GPGPU_INST 7'h6b 19 | 20 | 21 | `define WB_ALU 2'h1 22 | `define WB_MEM 2'h2 23 | `define WB_JAL 2'h3 24 | `define NO_WB 2'h0 25 | 26 | 27 | `define RS2_IMMED 1 28 | `define RS2_REG 0 29 | 30 | 31 | `define NO_MEM_READ 3'h7 32 | `define LB_MEM_READ 3'h0 33 | `define LH_MEM_READ 3'h1 34 | `define LW_MEM_READ 3'h2 35 | `define LBU_MEM_READ 3'h4 36 | `define LHU_MEM_READ 3'h5 37 | 38 | 39 | `define NO_MEM_WRITE 3'h7 40 | `define SB_MEM_WRITE 3'h0 41 | `define SH_MEM_WRITE 3'h1 42 | `define SW_MEM_WRITE 3'h2 43 | 44 | 45 | `define NO_BRANCH 3'h0 46 | `define BEQ 3'h1 47 | `define BNE 3'h2 48 | `define BLT 3'h3 49 | `define BGT 3'h4 50 | `define BLTU 3'h5 51 | `define BGTU 3'h6 52 | 53 | 54 | `define NO_ALU 5'd15 55 | `define ADD 5'd0 56 | `define SUB 5'd1 57 | `define SLLA 5'd2 58 | `define SLT 5'd3 59 | `define SLTU 5'd4 60 | `define XOR 5'd5 61 | `define SRL 5'd6 62 | `define SRA 5'd7 63 | `define OR 5'd8 64 | `define AND 5'd9 65 | `define SUBU 5'd10 66 | `define LUI_ALU 5'd11 67 | `define AUIPC_ALU 5'd12 68 | `define CSR_ALU_RW 5'd13 69 | `define CSR_ALU_RS 5'd14 70 | `define CSR_ALU_RC 5'd15 71 | `define MUL 5'd16 72 | `define MULH 5'd17 73 | `define MULHSU 5'd18 74 | `define MULHU 5'd19 75 | `define DIV 5'd20 76 | `define DIVU 5'd21 77 | `define REM 5'd22 78 | `define REMU 5'd23 79 | 80 | 81 | 82 | // WRITEBACK 83 | `define WB_ALU 2'h1 84 | `define WB_MEM 2'h2 85 | `define WB_JAL 2'h3 86 | `define NO_WB 2'h0 87 | 88 | 89 | // JAL 90 | `define JUMP 1'h1 91 | `define NO_JUMP 1'h0 92 | 93 | // STALLS 94 | `define STALL 1'h1 95 | `define NO_STALL 1'h0 96 | 97 | 98 | `define TAKEN 1'b1 99 | `define NOT_TAKEN 1'b0 100 | 101 | 102 | `define ZERO_REG 5'h0 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /rtl/VX_m_w_reg.v: -------------------------------------------------------------------------------- 1 | 2 | 3 | `include "VX_define.v" 4 | 5 | module VX_m_w_reg ( 6 | input wire clk, 7 | input wire[(`NT*32)-1:0] in_alu_result, 8 | input wire[(`NT*32)-1:0] in_mem_result, // NEW 9 | input wire[4:0] in_rd, 10 | input wire[1:0] in_wb, 11 | input wire[4:0] in_rs1, 12 | input wire[4:0] in_rs2, 13 | input wire[31:0] in_PC_next, 14 | input wire in_freeze, 15 | input wire[`NT_M1:0] in_valid, 16 | input wire[`NW_M1:0] in_warp_num, 17 | 18 | output wire[(`NT*32)-1:0] out_alu_result, 19 | output wire[(`NT*32)-1:0] out_mem_result, // NEW 20 | output wire[4:0] out_rd, 21 | output wire[1:0] out_wb, 22 | output wire[4:0] out_rs1, 23 | output wire[4:0] out_rs2, 24 | output wire[31:0] out_PC_next, 25 | output wire[`NT_M1:0] out_valid, 26 | output wire[`NW_M1:0] out_warp_num 27 | ); 28 | 29 | 30 | 31 | reg[(`NT*32)-1:0] alu_result; 32 | reg[(`NT*32)-1:0] mem_result; 33 | reg[4:0] rd; 34 | reg[4:0] rs1; 35 | reg[4:0] rs2; 36 | reg[1:0] wb; 37 | reg[31:0] PC_next; 38 | reg[`NT_M1:0] valid; 39 | reg[`NW_M1:0] warp_num; 40 | 41 | initial begin 42 | rd = 0; 43 | rs1 = 0; 44 | rs2 = 0; 45 | wb = 0; 46 | PC_next = 0; 47 | warp_num = 0; 48 | end 49 | 50 | assign out_alu_result = alu_result; 51 | assign out_mem_result = mem_result; 52 | assign out_rd = rd; 53 | assign out_rs1 = rs1; 54 | assign out_rs2 = rs2; 55 | assign out_wb = wb; 56 | assign out_PC_next = PC_next; 57 | assign out_valid = valid; 58 | assign out_warp_num = warp_num; 59 | 60 | always @(posedge clk) begin 61 | if(in_freeze == 1'b0) begin 62 | alu_result <= in_alu_result; 63 | mem_result <= in_mem_result; 64 | rd <= in_rd; 65 | rs1 <= in_rs1; 66 | rs2 <= in_rs2; 67 | wb <= in_wb; 68 | PC_next <= in_PC_next; 69 | valid <= in_valid; 70 | warp_num <= in_warp_num; 71 | end 72 | end 73 | 74 | 75 | 76 | endmodule // VX_m_w_reg 77 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /emulator/util.cpp: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | HARPtools by Chad D. Kersey, Summer 2011 3 | *******************************************************************************/ 4 | #include 5 | 6 | #include "include/types.h" 7 | #include "include/util.h" 8 | #include 9 | 10 | using namespace Harp; 11 | using namespace std; 12 | 13 | // Make it easy for autotools-based build systems to detect this library. 14 | extern "C" { 15 | int harplib_present = 1; 16 | }; 17 | 18 | void Harp::wordToBytes(Byte *b, Word_u w, Size wordSize) { 19 | while (wordSize--) { 20 | *(b++) = w & 0xff; 21 | w >>= 8; 22 | } 23 | } 24 | 25 | Word_u Harp::bytesToWord(const Byte *b, Size wordSize) { 26 | Word_u w = 0; 27 | b += wordSize-1; 28 | while (wordSize--) { 29 | w <<= 8; 30 | w |= *(b--); 31 | } 32 | return w; 33 | } 34 | 35 | Word_u Harp::flagsToWord(bool r, bool w, bool x) { 36 | Word_u word = 0; 37 | if (r) word |= RD_USR; 38 | if (w) word |= WR_USR; 39 | if (x) word |= EX_USR; 40 | return word; 41 | } 42 | 43 | void Harp::wordToFlags(bool &r, bool &w, bool &x, Word_u f) { 44 | r = f & RD_USR; 45 | w = f & WR_USR; 46 | x = f & EX_USR; 47 | } 48 | 49 | Byte Harp::readByte(const vector &b, Size &n) { 50 | if (b.size() <= n) throw OutOfBytes(); 51 | return b[n++]; 52 | } 53 | 54 | Word_u Harp::readWord(const vector &b, Size &n, Size wordSize) { 55 | if (b.size() - n < wordSize) throw OutOfBytes(); 56 | Word_u w(0); 57 | n += wordSize; 58 | // std::cout << "wordSize: " << wordSize << "\n"; 59 | for (Size i = 0; i < wordSize; i++) { 60 | w <<= 8; 61 | // cout << "index: " << n - i - 1 << "\n"; 62 | w |= b[n - i - 1]; 63 | } 64 | // cout << "b[0]" << std::hex << w << "\n"; 65 | // throw OutOfBytes(); 66 | return w; 67 | } 68 | 69 | void Harp::writeByte(vector &p, Size &n, Byte b) { 70 | if (p.size() <= n) p.resize(n+1); 71 | p[n++] = b; 72 | } 73 | 74 | void Harp::writeWord(vector &p, Size &n, Size wordSize, Word w) { 75 | if (p.size() < (n+wordSize)) p.resize(n+wordSize); 76 | while (wordSize--) { 77 | p[n++] = w & 0xff; 78 | w >>= 8; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /rtl/VX_register_file_master_slave.v: -------------------------------------------------------------------------------- 1 | 2 | module VX_register_file_master_slave ( 3 | input wire clk, 4 | input wire in_wb_warp, 5 | input wire in_valid, 6 | input wire in_write_register, 7 | input wire[4:0] in_rd, 8 | input wire[31:0] in_data, 9 | input wire[4:0] in_src1, 10 | input wire[4:0] in_src2, 11 | input wire in_wspawn, 12 | input wire in_to_wspawn, 13 | input wire[(32*32)-1:0] in_wspawn_regs, 14 | 15 | output reg[31:0] out_src1_data, 16 | output reg[31:0] out_src2_data, 17 | output wire[(32*32)-1:0] out_regs 18 | ); 19 | 20 | reg[31:0] registers[31:0]; 21 | wire[31:0] temp_regs[31:0]; 22 | 23 | wire[31:0] write_data; 24 | 25 | wire[4:0] write_register; 26 | 27 | wire write_enable; 28 | 29 | 30 | genvar i; 31 | generate 32 | for (i=0; i<32; i=i+1) assign out_regs[(32*i)+31:32*i] = registers[i]; 33 | endgenerate 34 | 35 | 36 | // reg[5:0] i; 37 | // always @(posedge clk) begin 38 | // for (i = 0; i < 32; i++) begin 39 | // $display("%d: %h",i, registers[i[4:0]]); 40 | // end 41 | // end 42 | 43 | // integer i; 44 | 45 | assign write_data = in_data; 46 | assign write_register = in_rd; 47 | 48 | // always @(*) begin 49 | // $display("TID: %d: %h",10,registers[10]); 50 | // $display("WID: %d: %h",11,registers[11]); 51 | // end 52 | 53 | genvar z; 54 | generate 55 | for (z = 0; z<32;z=z+1) assign temp_regs[z] = in_wspawn_regs[(32*z)+31:(32*z)]; 56 | endgenerate 57 | 58 | assign write_enable = (in_write_register && (in_rd != 5'h0)) && in_valid && in_wb_warp; 59 | 60 | integer f; 61 | always @(posedge clk) begin 62 | if(write_enable && !in_wspawn) begin 63 | // $display("RF: Writing %h to %d",write_data, write_register); 64 | registers[write_register] <= write_data; 65 | end else if (in_wspawn && in_to_wspawn) begin 66 | // $display("WSPAWN IN MASTER SLAVE"); 67 | for (f = 0; f < 32; f=f+1) registers[f] <= temp_regs[f]; 68 | 69 | end 70 | end 71 | 72 | // always @(posedge clk) begin 73 | // for (i = 0; i < 32; i = i + 1) 74 | // $display("(%d): %x", i, registers[i]); 75 | 76 | // end 77 | 78 | always @(negedge clk) begin 79 | out_src1_data <= registers[in_src1]; 80 | out_src2_data <= registers[in_src2]; 81 | end 82 | 83 | 84 | endmodule -------------------------------------------------------------------------------- /emulator/riscv_tests/C.ADD.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F10142814192910EC081441F 18 | :100100000544269422C201469305F0FFB2952EC401 19 | :100110000147B78600009386F6FFBA9636C60148B7 20 | :10012000A167C2973EC8171100001301E1EE05490F 21 | :100130008148CA9846C0054A8549D2994EC2054BA6 22 | :10014000930AF0FFDA9A56C4054CB78B0000938BE4 23 | :10015000FBFFE29B5EC6054DA16CEA9C66C81711C9 24 | :1001600000001301A1EC130EF0FF814DF29D6EC053 25 | :10017000130FF0FF854EFA9E76C29301F0FF930FA6 26 | :10018000F0FF8E9F7EC41304F0FF3782000013023D 27 | :10019000F2FF229212C69305F0FFA164AE9426C826 28 | :1001A000171100001301C1E9B78600009386F6FF1E 29 | :1001B0000146369632C0B78700009387F7FF0547A0 30 | :1001C0003E973AC2B78800009388F8FF1308F0FF03 31 | :1001D000469842C4B78900009389F9FF3789000027 32 | :1001E0001309F9FF4E994AC6B78A0000938AFAFFAD 33 | :1001F000216A569A52C8171100001301A1E5A16B9C 34 | :10020000014B5E9B5AC0A16C054C669C62C2A16DFD 35 | :10021000130DF0FF6E9D6AC4A16E378E0000130EA1 36 | :10022000FEFF769E72C6A16F216F7E9F7AC817155A 37 | :100230000000130525DD971500009385A5E337061B 38 | :1002400010F01306C6F2630CB500544514C21445F1 39 | :1002500014C2544114C2144114C24105EDB737050C 40 | :1002600010F0130505F22320050000000000000037 41 | :0202700000008C 42 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 43 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 44 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 45 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 46 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 47 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 48 | :10106000FFFFFFFF00000000000000000000000084 49 | :040000058000000077 50 | :00000001FF 51 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.AND.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F181458144ED8C26C0814629 18 | :100100000546758E32C281471307F0FF7D8F3AC4D2 19 | :100110008144378400001304F4FF658C22C6014635 20 | :10012000A165F18D2EC8171100001301E1EE0547FE 21 | :100130008146F98E36C005448547E18F3EC285452C 22 | :100140009304F0FFED8C26C4854637860000130625 23 | :10015000F6FF758E32C6854721677D8F3AC8171125 24 | :1001600000001301A1EC9304F0FF0144658C22C050 25 | :100170001306F0FF8545F18D2EC21307F0FF93069D 26 | :10018000F0FFF98E36C41304F0FFB78700009387A1 27 | :10019000F7FFE18F3EC69305F0FFA164ED8C26C802 28 | :1001A000171100001301C1E9B78600009386F6FF1E 29 | :1001B0000146758E32C0B78700009387F7FF054769 30 | :1001C0007D8F3AC2B78400009384F4FF1304F0FFDC 31 | :1001D000658C22C4378600001306F6FFB785000041 32 | :1001E0009385F5FFF18D2EC6378700001307F7FFC3 33 | :1001F000A166F98E36C8171100001301A1E521642C 34 | :100200008147E18F3EC0A1658544ED8C26C2A16681 35 | :100210001306F0FF758E32C4A167378700001307FD 36 | :10022000F7FF7D8F3AC6A1642164658C22C817153B 37 | :100230000000130525DD971500009385A5E337061B 38 | :1002400010F01306C6F2630CB500544514C21445F1 39 | :1002500014C2544114C2144114C24105EDB737050C 40 | :1002600010F0130505F22320050000000000000037 41 | :0202700000008C 42 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 43 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 44 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 45 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 46 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 47 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 48 | :10106000FFFFFFFF00000000000000000000000084 49 | :040000058000000077 50 | :00000001FF 51 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.MV.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F101468145B2852EC0014760 18 | :100100008546BA8636C201449307F0FFA2873EC4F3 19 | :100110008145B78400009384F4FFAE8426C68146EF 20 | :100120002166368632C8171100001301E1EE8547BB 21 | :1001300001473E873AC085440544268422C20546CD 22 | :100140009305F0FFB2852EC40547B786000093865D 23 | :10015000F6FFBA8636C60544A167A2873EC81711C6 24 | :1001600000001301A1EC9305F0FF8144AE8426C08A 25 | :100170009306F0FF0546368632C29307F0FF130759 26 | :10018000F0FF3E873AC49304F0FF37840000130465 27 | :10019000F4FF268422C61306F0FFA165B2852EC89F 28 | :1001A000171100001301C1E9378700001307F7FF9B 29 | :1001B0008146BA8636C0378400001304F4FF8547B1 30 | :1001C000A2873EC2B78500009385F5FF9304F0FF38 31 | :1001D000AE8426C4B78600009386F6FF37860000FB 32 | :1001E0001306F6FF368632C6B78700009387F7FFFF 33 | :1001F00021673E873AC8171100001301A1E5A164E9 34 | :100200000144268422C021668545B2852EC221671D 35 | :100210009306F0FFBA8636C42164B787000093873F 36 | :10022000F7FFA2873EC6A165A164AE8426C8171554 37 | :100230000000130525DD971500009385A5E337061B 38 | :1002400010F01306C6F2630CB500544514C21445F1 39 | :1002500014C2544114C2144114C24105EDB737050C 40 | :1002600010F0130505F22320050000000000000037 41 | :0202700000008C 42 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 43 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 44 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 45 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 46 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 47 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 48 | :10106000FFFFFFFF00000000000000000000000084 49 | :040000058000000077 50 | :00000001FF 51 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.OR.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F101448147C18F3EC08145B9 18 | :100100008544CD8C26C281461306F0FF558E32C43D 19 | :100110008147378700001307F7FF5D8F3AC6814498 20 | :100120002164458C22C8171100001301E1EE054639 21 | :100130008145D18D2EC005478546D98E36C20544EE 22 | :100140009307F0FFC18F3EC48545B78400009384B8 23 | :10015000F4FFCD8C26C685462166558E32C8171110 24 | :1001600000001301A1EC9307F0FF01475D8F3AC037 25 | :100170009304F0FF0544458C22C21306F0FF93055B 26 | :10018000F0FFD18D2EC41307F0FFB78600009386D1 27 | :10019000F6FFD98E36C61304F0FFA167C18F3EC8A3 28 | :1001A000171100001301C1E9B78500009385F5FF21 29 | :1001B0008144CD8C26C0B78600009386F6FF0546A5 30 | :1001C000558E32C2B78700009387F7FF1307F0FF01 31 | :1001D0005D8F3AC4B78400009384F4FF3784000035 32 | :1001E0001304F4FF458C22C6378600001306F6FF81 33 | :1001F000A165D18D2EC8171100001301A1E521675B 34 | :100200008146D98E36C021648547C18F3EC2A16523 35 | :100210009304F0FFCD8C26C4A16637860000130638 36 | :10022000F6FF558E32C6A16721675D8F3AC8171554 37 | :100230000000130525DD971500009385A5E337061B 38 | :1002400010F01306C6F2630CB500544514C21445F1 39 | :1002500014C2544114C2144114C24105EDB737050C 40 | :1002600010F0130505F22320050000000000000037 41 | :0202700000008C 42 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 43 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 44 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 45 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 46 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 47 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 48 | :10106000FFFFFFFF00000000000000000000000084 49 | :040000058000000077 50 | :00000001FF 51 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.SUB.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F1814581448D8C26C0814689 18 | :100100000546158E32C281471307F0FF1D8F3AC492 19 | :100110008144378400001304F4FF058C22C6014695 20 | :10012000A165918D2EC8171100001301E1EE05475E 21 | :100130008146998E36C005448547818F3EC28545EC 22 | :100140009304F0FF8D8C26C4854637860000130685 23 | :10015000F6FF158E32C6854721671D8F3AC81711E5 24 | :1001600000001301A1EC9304F0FF0144058C22C0B0 25 | :100170001306F0FF8545918D2EC21307F0FF9306FD 26 | :10018000F0FF998E36C41304F0FFB7870000938701 27 | :10019000F7FF818F3EC69305F0FFA1648D8C26C8C2 28 | :1001A000171100001301C1E9B78600009386F6FF1E 29 | :1001B0000146158E32C0B78700009387F7FF0547C9 30 | :1001C0001D8F3AC2B78400009384F4FF1304F0FF3C 31 | :1001D000058C22C4378600001306F6FFB7850000A1 32 | :1001E0009385F5FF918D2EC6378700001307F7FF23 33 | :1001F000A166998E36C8171100001301A1E521648C 34 | :100200008147818F3EC0A16585448D8C26C2A16641 35 | :100210001306F0FF158E32C4A1673787000013075D 36 | :10022000F7FF1D8F3AC6A1642164058C22C81715FB 37 | :100230000000130525DD971500009385A5E337061B 38 | :1002400010F01306C6F2630CB500544514C21445F1 39 | :1002500014C2544114C2144114C24105EDB737050C 40 | :1002600010F0130505F22320050000000000000037 41 | :0202700000008C 42 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 43 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 44 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 45 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 46 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 47 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 48 | :10106000FFFFFFFF00000000000000000000000084 49 | :040000058000000077 50 | :00000001FF 51 | -------------------------------------------------------------------------------- /emulator/riscv_tests/C.XOR.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000001000100010001000100010001000100E8 3 | :1000100001000100010001000100010001000100D8 4 | :1000200001000100010001000100010001000100C8 5 | :1000300001000100010001000100010001000100B8 6 | :1000400001000100010001000100010001000100A8 7 | :100050000100010001000100010001000100010098 8 | :100060000100010001000100010001000100010088 9 | :100070000100010001000100010001000100010078 10 | :100080000100010001000100010001000100010068 11 | :100090000100010001000100010001000100010058 12 | :1000A0000100010001000100010001000100010048 13 | :1000B0000100010001000100010001000100010038 14 | :1000C0000100010001000100010001000100010028 15 | :1000D0000100010001000100010001000100010018 16 | :1000E00001000100010001000100010001001711E1 17 | :1000F0000000130121F181440144258C22C00146F6 18 | :100100008545B18D2EC201479306F0FFB98E36C4E6 19 | :100110000144B78700009387F7FFA18F3EC6814552 20 | :10012000A164AD8C26C8171100001301E1EE8546CD 21 | :100130000146358E32C0854705473D8F3AC285441A 22 | :100140001304F0FF258C22C40546B7850000938573 23 | :10015000F5FFB18D2EC60547A166B98E36C81711B9 24 | :1001600000001301A1EC1304F0FF8147A18F3EC0F2 25 | :100170009305F0FF8544AD8C26C29306F0FF13066D 26 | :10018000F0FF358E32C49307F0FF37870000130766 27 | :10019000F7FF3D8F3AC69304F0FF2164258C22C8F7 28 | :1001A000171100001301C1E9378600001306F6FF9E 29 | :1001B0008145B18D2EC0378700001307F7FF8546B4 30 | :1001C000B98E36C2378400001304F4FF9307F0FFA2 31 | :1001D000A18F3EC4B78500009385F5FFB78400006A 32 | :1001E0009384F4FFAD8C26C6B78600009386F6FF95 33 | :1001F0002166358E32C8171100001301A1E5A167F1 34 | :1002000001473D8F3AC0A1640544258C22C2216676 35 | :100210009305F0FFB18D2EC42167B7860000938649 36 | :10022000F6FFB98E36C62164A167A18F3EC81715A7 37 | :100230000000130525DD971500009385A5E337061B 38 | :1002400010F01306C6F2630CB500544514C21445F1 39 | :1002500014C2544114C2144114C24105EDB737050C 40 | :1002600010F0130505F22320050000000000000037 41 | :0202700000008C 42 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 43 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 44 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 45 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 46 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 47 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 48 | :10106000FFFFFFFF00000000000000000000000084 49 | :040000058000000077 50 | :00000001FF 51 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-SLLI-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000009710000093800000171100001301810178 3 | :1000100083A10000139211009392F1001393F10158 4 | :100020009393010013940101232031002322410006 5 | :10003000232451002326610023287100232A8100F4 6 | :1000400097100000938040FC17110000130101FF7E 7 | :1000500003A40000931414001315F4009315F40185 8 | :10006000131604009316040123208100232291001B 9 | :100070002324A1002326B1002328C100232AD10074 10 | :1000800097100000938080F817110000130181FC85 11 | :1000900083A60000139716009397F6001398F601B5 12 | :1000A00093980600139906012320D1002322E10032 13 | :1000B0002324F1002326010123281101232A2101F1 14 | :1000C000171600001306C6F497160000938606FA6A 15 | :1000D0000329060093191900131AF900931AF9015C 16 | :1000E000131B0900931B090123A0260123A236013B 17 | :1000F00023A4460123A6560123A8660123AA76015C 18 | :1001000017160000130606F197160000938686F76F 19 | :10011000832B0600139C1B00939CFB00139DFB018B 20 | :10012000939D0B00139E0B0123A0760123A2860151 21 | :1001300023A4960123A6A60123A8B60123AAC601DB 22 | :10014000171D0000130D4DED971D0000938D0DF54B 23 | :10015000032E0D00931E1E00139F1E00931F1F00F1 24 | :1001600093901F00139110009311110023A0CD0153 25 | :1001700023A2DD0123A4ED0123A6FD0123A81D0078 26 | :1001800023AA2D0023AC3D0097100000938000E9C6 27 | :1001900017110000130141F283A200001390120016 28 | :1001A0002320010097100000938080E717110000C2 29 | :1001B0001301C1F083A200001390120093121000EB 30 | :1001C000232001002322510017150000130585E5A7 31 | :1001D00097150000938505EF370610F01306C6F259 32 | :1001E0006306B5028326C5002320D600832685003A 33 | :1001F0002320D600832645002320D6008326050031 34 | :100200002320D600130505016FF09FFD370510F080 35 | :10021000130505F223200500000000000000000087 36 | :0402200000000000DA 37 | :101000000000000001000000FFFFFFFFFFFFFF7F67 38 | :101010000000008010EFCDAB7856341298BADCFE99 39 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 40 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 44 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 45 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 46 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 47 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 48 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 49 | :040000058000000077 50 | :00000001FF 51 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-SRAI-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000009710000093800000171100001301810178 3 | :1000100083A1000013D2114093D2F14013D3F141D8 4 | :1000200093D3014013D40141232031002322410006 5 | :10003000232451002326610023287100232A8100F4 6 | :1000400097100000938040FC17110000130101FF7E 7 | :1000500003A40000935414401355F4409355F44105 8 | :10006000135604409356044123208100232291001B 9 | :100070002324A1002326B1002328C100232AD10074 10 | :1000800097100000938080F817110000130181FC85 11 | :1000900083A6000013D7164093D7F64013D8F64135 12 | :1000A00093D8064013D906412320D1002322E10032 13 | :1000B0002324F1002326010123281101232A2101F1 14 | :1000C000171600001306C6F497160000938606FA6A 15 | :1000D0000329060093591940135AF940935AF941DC 16 | :1000E000135B0940935B094123A0260123A236013B 17 | :1000F00023A4460123A6560123A8660123AA76015C 18 | :1001000017160000130606F197160000938686F76F 19 | :10011000832B060013DC1B4093DCFB4013DDFB410B 20 | :1001200093DD0B4013DE0B4123A0760123A2860151 21 | :1001300023A4960123A6A60123A8B60123AAC601DB 22 | :10014000171D0000130D4DED971D0000938D0DF54B 23 | :10015000032E0D00935E1E4013DF1E40935F1F4071 24 | :1001600093D01F4013D110409351114023A0CD01D3 25 | :1001700023A2DD0123A4ED0123A6FD0123A81D0078 26 | :1001800023AA2D0023AC3D0097100000938000E9C6 27 | :1001900017110000130141F283A2000013D0124096 28 | :1001A0002320010097100000938080E717110000C2 29 | :1001B0001301C1F083A2000013D0124093521040EB 30 | :1001C000232001002322510017150000130585E5A7 31 | :1001D00097150000938505EF370610F01306C6F259 32 | :1001E0006306B5028326C5002320D600832685003A 33 | :1001F0002320D600832645002320D6008326050031 34 | :100200002320D600130505016FF09FFD370510F080 35 | :10021000130505F223200500000000000000000087 36 | :0402200000000000DA 37 | :101000000000000001000000FFFFFFFFFFFFFF7F67 38 | :101010000000008010EFCDAB7856341298BADCFE99 39 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 40 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 44 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 45 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 46 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 47 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 48 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 49 | :040000058000000077 50 | :00000001FF 51 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-SRLI-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000009710000093800000171100001301810178 3 | :1000100083A1000013D2110093D2F10013D3F10198 4 | :1000200093D3010013D40101232031002322410086 5 | :10003000232451002326610023287100232A8100F4 6 | :1000400097100000938040FC17110000130101FF7E 7 | :1000500003A40000935414001355F4009355F401C5 8 | :10006000135604009356040123208100232291009B 9 | :100070002324A1002326B1002328C100232AD10074 10 | :1000800097100000938080F817110000130181FC85 11 | :1000900083A6000013D7160093D7F60013D8F601F5 12 | :1000A00093D8060013D906012320D1002322E100B2 13 | :1000B0002324F1002326010123281101232A2101F1 14 | :1000C000171600001306C6F497160000938606FA6A 15 | :1000D0000329060093591900135AF900935AF9019C 16 | :1000E000135B0900935B090123A0260123A23601BB 17 | :1000F00023A4460123A6560123A8660123AA76015C 18 | :1001000017160000130606F197160000938686F76F 19 | :10011000832B060013DC1B0093DCFB0013DDFB01CB 20 | :1001200093DD0B0013DE0B0123A0760123A28601D1 21 | :1001300023A4960123A6A60123A8B60123AAC601DB 22 | :10014000171D0000130D4DED971D0000938D0DF54B 23 | :10015000032E0D00935E1E0013DF1E00935F1F0031 24 | :1001600093D01F0013D110009351110023A0CD0193 25 | :1001700023A2DD0123A4ED0123A6FD0123A81D0078 26 | :1001800023AA2D0023AC3D0097100000938000E9C6 27 | :1001900017110000130141F283A2000013D01200D6 28 | :1001A0002320010097100000938080E717110000C2 29 | :1001B0001301C1F083A2000013D01200935210006B 30 | :1001C000232001002322510017150000130585E5A7 31 | :1001D00097150000938505EF370610F01306C6F259 32 | :1001E0006306B5028326C5002320D600832685003A 33 | :1001F0002320D600832645002320D6008326050031 34 | :100200002320D600130505016FF09FFD370510F080 35 | :10021000130505F223200500000000000000000087 36 | :0402200000000000DA 37 | :101000000000000001000000FFFFFFFFFFFFFF7F67 38 | :101010000000008010EFCDAB7856341298BADCFE99 39 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 40 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 44 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 45 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 46 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 47 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 48 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 49 | :040000058000000077 50 | :00000001FF 51 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-LB-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000971F0000938F0F00171100001301810349 3 | :1000100083810F0003821F0083822F0003833F0030 4 | :100020002320310023224100232451002326610094 5 | :10003000171C0000130C5CFD9712000093828201D4 6 | :10004000830CFCFF030D0C00830D1C00030E2C0021 7 | :1000500023A0920123A2A20123A4B20123A6C201DC 8 | :1000600097130000938373FA17140000130484FF9E 9 | :10007000038F1300838F23008380330003814300A9 10 | :100080002320E4012322F401232414002326240046 11 | :10009000171500001305C57797150000938585FD9A 12 | :1000A00003060580830615800307258083073580B6 13 | :1000B00023A0C50023A2D50023A4E50023A6F500B4 14 | :1000C000970600009386467517170000130787FBF5 15 | :1000D0008387C67F0388D67F8388E67F0389F67F80 16 | :1000E0002320F700232207012324170123262701B9 17 | :1000F00017180000130888F297180000938888F9F1 18 | :100100000309C8FF8309D8FF030AE8FF830AF8FF41 19 | :10011000030B0800830B1800030C2800830C380025 20 | :10012000030D4800830D5800030E6800830E78000D 21 | :1001300023A0280123A2380123A4480123A65801A3 22 | :1001400023A8680123AA780123AC880123AE980173 23 | :1001500023A0A80323A2B80323A4C80323A6D8037B 24 | :10016000971A0000938A0AEC171B0000130B8BF5FB 25 | :1001700003800A0023200B00971A0000938ACAEA22 26 | :10018000171B0000130B4BF483AB0A00038C0B000E 27 | :10019000930C0C0023209B01971C0000938C4CE9CE 28 | :1001A000171D0000130D8DF2838C0C0023209D0180 29 | :1001B000971D0000938D1DE8171E0000130E4EF1D1 30 | :1001C000838DFDFF2320BE0117150000130585E771 31 | :1001D00097150000938505F0370610F01306C6F258 32 | :1001E0006306B5028326C5002320D600832685003A 33 | :1001F0002320D600832645002320D6008326050031 34 | :100200002320D600130505016FF09FFD370510F080 35 | :10021000130505F223200500000000000000000087 36 | :0402200000000000DA 37 | :1010000022F2F111F44433F366F6F555F88877F7D8 38 | :10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8 39 | :101020007856341228100080F0DEBC9A10325476C4 40 | :1010300098BADCFE00000000000000000000000084 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 44 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 45 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 46 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 47 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 48 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 49 | :1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 50 | :040000058000000077 51 | :00000001FF 52 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-LBU-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :10000000971F0000938F0F00171100001301810349 3 | :1000100083C10F0003C21F0083C22F0003C33F0030 4 | :100020002320310023224100232451002326610094 5 | :10003000171C0000130C5CFD9712000093828201D4 6 | :10004000834CFCFF034D0C00834D1C00034E2C0021 7 | :1000500023A0920123A2A20123A4B20123A6C201DC 8 | :1000600097130000938373FA17140000130484FF9E 9 | :1000700003CF130083CF230083C0330003C14300A9 10 | :100080002320E4012322F401232414002326240046 11 | :10009000171500001305C57797150000938585FD9A 12 | :1000A00003460580834615800347258083473580B6 13 | :1000B00023A0C50023A2D50023A4E50023A6F500B4 14 | :1000C000970600009386467517170000130787FBF5 15 | :1000D00083C7C67F03C8D67F83C8E67F03C9F67F80 16 | :1000E0002320F700232207012324170123262701B9 17 | :1000F00017180000130888F297180000938888F9F1 18 | :100100000349C8FF8349D8FF034AE8FF834AF8FF41 19 | :10011000034B0800834B1800034C2800834C380025 20 | :10012000034D4800834D5800034E6800834E78000D 21 | :1001300023A0280123A2380123A4480123A65801A3 22 | :1001400023A8680123AA780123AC880123AE980173 23 | :1001500023A0A80323A2B80323A4C80323A6D8037B 24 | :10016000971A0000938A0AEC171B0000130B8BF5FB 25 | :1001700003C00A0023200B00971A0000938ACAEAE2 26 | :10018000171B0000130B4BF483AB0A0003CC0B00CE 27 | :10019000930C0C0023209B01971C0000938C4CE9CE 28 | :1001A000171D0000130D8DF283CC0C0023209D0140 29 | :1001B000971D0000938D1DE8171E0000130E4EF1D1 30 | :1001C00083CDFDFF2320BE0117150000130585E731 31 | :1001D00097150000938505F0370610F01306C6F258 32 | :1001E0006306B5028326C5002320D600832685003A 33 | :1001F0002320D600832645002320D6008326050031 34 | :100200002320D600130505016FF09FFD370510F080 35 | :10021000130505F223200500000000000000000087 36 | :0402200000000000DA 37 | :1010000022F2F111F44433F366F6F555F88877F7D8 38 | :10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8 39 | :101020007856341228100080F0DEBC9A10325476C4 40 | :1010300098BADCFE00000000000000000000000084 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 44 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 45 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 46 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 47 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 48 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 49 | :1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 50 | :040000058000000077 51 | :00000001FF 52 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-SLTI-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000009710000093800000171100001301810178 3 | :1000100083A1000013A2110093A2F17F13A3F1FFAB 4 | :1000200093A3010013A40180232031002322410067 5 | :10003000232451002326610023287100232A8100F4 6 | :1000400097100000938040FC17110000130101FF7E 7 | :1000500003A40000932414001325F47F9325F4FFD8 8 | :10006000132604009326048023208100232291007C 9 | :100070002324A1002326B1002328C100232AD10074 10 | :1000800097100000938080F817110000130181FC85 11 | :1000900083A6000013A7160093A7F67F13A8F6FF08 12 | :1000A00093A8060013A906802320D1002322E10093 13 | :1000B0002324F1002326010123281101232A2101F1 14 | :1000C000971000009380C0F417110000130101FA8B 15 | :1000D00003A9000093291900132AF97F932AF9FF35 16 | :1000E000132B0900932B09802320210123223101A6 17 | :1000F000232441012326510123286101232A710170 18 | :1001000097100000938000F117110000130181F790 19 | :1001100083AB000013AC1B0093ACFB7F13ADFBFF64 20 | :1001200093AD0B0013AE0B802320710123228101BC 21 | :10013000232491012326A1012328B101232AC101EF 22 | :10014000171D0000130D4DED971D0000938D0DF54B 23 | :1001500083200D0013A0100023A01D0023A20D007A 24 | :10016000971F0000938F0FF4932010001321F07F4E 25 | :100170009321F0FF132200009322008023A00F00A0 26 | :1001800023A21F0023A42F0023A63F0023A84F0073 27 | :1001900023AA5F00971F0000938F4FF29320100057 28 | :1001A00013A11000132E1100932E1E0013AF1E007A 29 | :1001B00023A00F0023A21F0023A42F0023A6CF01FA 30 | :1001C00023A8DF0123AAEF0117150000130585E519 31 | :1001D00097150000938505F0370610F01306C6F258 32 | :1001E0006306B5028326C5002320D600832685003A 33 | :1001F0002320D600832645002320D6008326050031 34 | :100200002320D600130505016FF09FFD370510F080 35 | :10021000130505F223200500000000000000000087 36 | :0402200000000000DA 37 | :101000000000000001000000FFFFFFFFFFFFFF7F67 38 | :1010100000000080FFFFFFFF000000000000000054 39 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 40 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 44 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 45 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 46 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 47 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 48 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 49 | :1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 50 | :040000058000000077 51 | :00000001FF 52 | -------------------------------------------------------------------------------- /emulator/riscv_tests/I-SLTIU-01.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000009710000093800000171100001301810178 3 | :1000100083A1000013B2110093B2F17F13B3F1FF7B 4 | :1000200093B3010013B40180232031002322410047 5 | :10003000232451002326610023287100232A8100F4 6 | :1000400097100000938040FC17110000130101FF7E 7 | :1000500003A40000933414001335F47F9335F4FFA8 8 | :10006000133604009336048023208100232291005C 9 | :100070002324A1002326B1002328C100232AD10074 10 | :1000800097100000938080F817110000130181FC85 11 | :1000900083A6000013B7160093B7F67F13B8F6FFD8 12 | :1000A00093B8060013B906802320D1002322E10073 13 | :1000B0002324F1002326010123281101232A2101F1 14 | :1000C000971000009380C0F417110000130101FA8B 15 | :1000D00003A9000093391900133AF97F933AF9FF05 16 | :1000E000133B0900933B0980232021012322310186 17 | :1000F000232441012326510123286101232A710170 18 | :1001000097100000938000F117110000130181F790 19 | :1001100083AB000013BC1B0093BCFB7F13BDFBFF34 20 | :1001200093BD0B0013BE0B8023207101232281019C 21 | :10013000232491012326A1012328B101232AC101EF 22 | :10014000171D0000130D4DED971D0000938D0DF54B 23 | :1001500083200D0013B0F0FF23A01D0023A20D008B 24 | :10016000971F0000938F0FF4933010001331F07F2E 25 | :100170009331F0FF133200009332008023A00F0070 26 | :1001800023A21F0023A42F0023A63F0023A84F0073 27 | :1001900023AA5F00971F0000938F4FF29330100047 28 | :1001A00013B11000133E1100933E1E0013BF1E003A 29 | :1001B00023A00F0023A21F0023A42F0023A6CF01FA 30 | :1001C00023A8DF0123AAEF0117150000130585E519 31 | :1001D00097150000938505F0370610F01306C6F258 32 | :1001E0006306B5028326C5002320D600832685003A 33 | :1001F0002320D600832645002320D6008326050031 34 | :100200002320D600130505016FF09FFD370510F080 35 | :10021000130505F223200500000000000000000087 36 | :0402200000000000DA 37 | :101000000000000001000000FFFFFFFFFFFFFF7F67 38 | :10101000000000800100000000000000000000004F 39 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 40 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 41 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 42 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 43 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 44 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 45 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 46 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 47 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 48 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 49 | :1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 50 | :040000058000000077 51 | :00000001FF 52 | -------------------------------------------------------------------------------- /emulator/Makefile: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # HARPtools by Chad D. Kersey, Summer 2011 # 3 | ################################################################################ 4 | CXXFLAGS ?= -std=c++11 -fPIC -O3 # -g -DUSE_DEBUG=3 -DPRINT_ACTIVE_THREADS 5 | LDLIBS ?= -pthread 6 | PREFIX ?= /usr/local 7 | 8 | LIB_OBJS=args.o mem.o core.o instruction.o enc.o util.o 9 | 10 | all: harptool libharplib.so libharplib.a #libqsim-harp.so 11 | 12 | # Use -static so we don't have to install the library in order to just run 13 | # Harptool. 14 | harptool: harptool.o libharplib.a 15 | $(CXX) $(LDFLAGS) -o $@ harptool.o libharplib.a $(LDLIBS) 16 | 17 | libharplib.so: $(LIB_OBJS) 18 | $(CXX) -shared -o $@ $(LIB_OBJS) $(LDLIBS) 19 | 20 | libharplib.a: $(LIB_OBJS) 21 | ar rcs $@ $(LIB_OBJS) 22 | 23 | args.o : args.cpp include/args.h 24 | enc.o : enc.cpp include/types.h include/util.h include/enc.h include/archdef.h\ 25 | include/instruction.h 26 | harptool.o : harptool.cpp include/types.h include/core.h include/enc.h \ 27 | include/instruction.h include/mem.h include/obj.h \ 28 | include/archdef.h include/args.h include/help.h include/debug.h 29 | instruction.o : instruction.cpp include/instruction.h include/obj.h \ 30 | include/core.h include/debug.h include/asm-tokens.h 31 | util.o : util.cpp include/types.h include/util.h 32 | mem.o : mem.cpp include/types.h include/util.h include/mem.h include/debug.h \ 33 | include/core.h 34 | core.o : core.cpp include/types.h include/util.h include/mem.h \ 35 | include/debug.h include/archdef.h include/core.h 36 | 37 | #QSIM_CXXFLAGS=-DEMU_INSTRUMENTATION 38 | # 39 | #libqsim-harp.so: args.cpp enc.cpp instruction.cpp obj.cpp util.cpp mem.cpp \ 40 | # core.cpp qsim-harp.cpp lex.yy.o include/qsim-harp.h \ 41 | # include/types.h include/core.h include/util.h include/enc.h \ 42 | # include/archdef.h include/instruction.h include/asm-tokens.h \ 43 | # include/mem.h 44 | # $(CXX) $(CXXFLAGS) $(QSIM_CXXFLAGS) -shared -o $@ $^ 45 | 46 | 47 | install: 48 | cp libharplib.so $(PREFIX)/lib 49 | cp harptool $(PREFIX)/bin 50 | mkdir -p $(PREFIX)/include/harp 51 | cp include/* $(PREFIX)/include/harp 52 | 53 | clean: 54 | rm -f *~ \#* *.o *.a *.so include/*~ include/\#* harptool 55 | -------------------------------------------------------------------------------- /emulator/riscv_tests/DIV.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000017110000130101001309000093080000FC 3 | :10001000B348190323201101130A000093091000AB 4 | :10002000B3493A0323223101130B0000930AF0FF76 5 | :10003000B34A5B0323245101130C0000B70B00806B 6 | :10004000938BFBFFB34B7C0323267101130D000040 7 | :10005000B70C0080B34C9D032328910117110000B9 8 | :10006000130181FB130E1000930D0000B34DBE036E 9 | :100070002320B101130F1000930E1000B34EDF03C5 10 | :100080002322D10193011000930FF0FFB3CFF103AE 11 | :100090002324F10113041000370200801302F2FF41 12 | :1000A000334244022326410093051000B704008028 13 | :1000B000B3C495022328910017110000130101F722 14 | :1000C0009306F0FF1306000033C6C6022320C100CA 15 | :1000D0009307F0FF1307100033C7E7022322E10064 16 | :1000E0009308F0FF1308F0FF33C80803232401012D 17 | :1000F0009309F0FF370900801309F9FF33C9290379 18 | :1001000023262101930AF0FF370A008033CA4A03ED 19 | :100110002328410117110000130181F2B70B008061 20 | :10012000938BFBFF130B000033CB6B032320610188 21 | :10013000B70C0080938CFCFF130C100033CC8C03A5 22 | :1001400023228101B70D0080938DFDFF130DF0FF79 23 | :1001500033CDAD032324A101B70E0080938EFEFFA3 24 | :10016000370E0080130EFEFF33CECE032326C101CF 25 | :10017000B70F0080938FFFFF370F008033CFEF035F 26 | :100180002328E101171100001301C1EC37020080A0 27 | :1001900093010000B341320223203100B7040080F4 28 | :1001A0001304100033C48402232281003706008028 29 | :1001B0009305F0FFB345B6022324B1003707008052 30 | :1001C000B70600809386F6FFB346D7022326D100F8 31 | :1001D00037080080B7070080B347F8022328F100F2 32 | :1001E00017150000130505E297150000938585EEAD 33 | :1001F000370610F01306C6F26306B5028326C50063 34 | :100200002320D600832685002320D60083264500A0 35 | :100210002320D600832605002320D60013050501E0 36 | :100220006FF09FFD370510F0130505F22320050040 37 | :0402300000000000CA 38 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 39 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 40 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 41 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 42 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 43 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 44 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 45 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 46 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 47 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 48 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 49 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 50 | :1010C000FFFFFFFFFFFFFFFF000000000000000028 51 | :040000058000000077 52 | :00000001FF 53 | -------------------------------------------------------------------------------- /emulator/riscv_tests/DIVU.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000017110000130101001309000093080000FC 3 | :10001000B358190323201101130A0000930910009B 4 | :10002000B3593A0323223101130B0000930AF0FF66 5 | :10003000B35A5B0323245101130C0000B70B00805B 6 | :10004000938BFBFFB35B7C0323267101130D000030 7 | :10005000B70C0080B35C9D032328910117110000A9 8 | :10006000130181FB130E1000930D0000B35DBE035E 9 | :100070002320B101130F1000930E1000B35EDF03B5 10 | :100080002322D10193011000930FF0FFB3DFF1039E 11 | :100090002324F10113041000370200801302F2FF41 12 | :1000A000335244022326410093051000B704008018 13 | :1000B000B3D495022328910017110000130101F712 14 | :1000C0009306F0FF1306000033D6C6022320C100BA 15 | :1000D0009307F0FF1307100033D7E7022322E10054 16 | :1000E0009308F0FF1308F0FF33D80803232401011D 17 | :1000F0009309F0FF370900801309F9FF33D9290369 18 | :1001000023262101930AF0FF370A008033DA4A03DD 19 | :100110002328410117110000130181F2B70B008061 20 | :10012000938BFBFF130B000033DB6B032320610178 21 | :10013000B70C0080938CFCFF130C100033DC8C0395 22 | :1001400023228101B70D0080938DFDFF130DF0FF79 23 | :1001500033DDAD032324A101B70E0080938EFEFF93 24 | :10016000370E0080130EFEFF33DECE032326C101BF 25 | :10017000B70F0080938FFFFF370F008033DFEF034F 26 | :100180002328E101171100001301C1EC37020080A0 27 | :1001900093010000B351320223203100B7040080E4 28 | :1001A0001304100033D48402232281003706008018 29 | :1001B0009305F0FFB355B6022324B1003707008042 30 | :1001C000B70600809386F6FFB356D7022326D100E8 31 | :1001D00037080080B7070080B357F8022328F100E2 32 | :1001E00017150000130505E297150000938585EEAD 33 | :1001F000370610F01306C6F26306B5028326C50063 34 | :100200002320D600832685002320D60083264500A0 35 | :100210002320D600832605002320D60013050501E0 36 | :100220006FF09FFD370510F0130505F22320050040 37 | :0402300000000000CA 38 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 39 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 40 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 41 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 42 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 43 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 44 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 45 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 46 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 47 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 48 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 49 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 50 | :1010C000FFFFFFFFFFFFFFFF000000000000000028 51 | :040000058000000077 52 | :00000001FF 53 | -------------------------------------------------------------------------------- /emulator/riscv_tests/MUL.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000017110000130101001309000093080000FC 3 | :10001000B308190323201101130A000093091000EB 4 | :10002000B3093A0323223101130B0000930AF0FFB6 5 | :10003000B30A5B0323245101130C0000B70B0080AB 6 | :10004000938BFBFFB30B7C0323267101130D000080 7 | :10005000B70C0080B30C9D032328910117110000F9 8 | :10006000130181FB130E1000930D0000B30DBE03AE 9 | :100070002320B101130F1000930E1000B30EDF0305 10 | :100080002322D10193011000930FF0FFB38FF103EE 11 | :100090002324F10113041000370200801302F2FF41 12 | :1000A000330244022326410093051000B704008068 13 | :1000B000B38495022328910017110000130101F762 14 | :1000C0009306F0FF130600003386C6022320C1000A 15 | :1000D0009307F0FF130710003387E7022322E100A4 16 | :1000E0009308F0FF1308F0FF33880803232401016D 17 | :1000F0009309F0FF370900801309F9FF33892903B9 18 | :1001000023262101930AF0FF370A0080338A4A032D 19 | :100110002328410117110000130181F2B70B008061 20 | :10012000938BFBFF130B0000338B6B0323206101C8 21 | :10013000B70C0080938CFCFF130C1000338C8C03E5 22 | :1001400023228101B70D0080938DFDFF130DF0FF79 23 | :10015000338DAD032324A101B70E0080938EFEFFE3 24 | :10016000370E0080130EFEFF338ECE032326C1010F 25 | :10017000B70F0080938FFFFF370F0080338FEF039F 26 | :100180002328E101171100001301C1EC37020080A0 27 | :1001900093010000B301320223203100B704008034 28 | :1001A0001304100033848402232281003706008068 29 | :1001B0009305F0FFB305B6022324B1003707008092 30 | :1001C000B70600809386F6FFB306D7022326D10038 31 | :1001D00037080080B7070080B307F8022328F10032 32 | :1001E00017150000130505E297150000938585EEAD 33 | :1001F000370610F01306C6F26306B5028326C50063 34 | :100200002320D600832685002320D60083264500A0 35 | :100210002320D600832605002320D60013050501E0 36 | :100220006FF09FFD370510F0130505F22320050040 37 | :0402300000000000CA 38 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 39 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 40 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 41 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 42 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 43 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 44 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 45 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 46 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 47 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 48 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 49 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 50 | :1010C000FFFFFFFFFFFFFFFF000000000000000028 51 | :040000058000000077 52 | :00000001FF 53 | -------------------------------------------------------------------------------- /emulator/riscv_tests/MULH.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000017110000130101001309000093080000FC 3 | :10001000B318190323201101130A000093091000DB 4 | :10002000B3193A0323223101130B0000930AF0FFA6 5 | :10003000B31A5B0323245101130C0000B70B00809B 6 | :10004000938BFBFFB31B7C0323267101130D000070 7 | :10005000B70C0080B31C9D032328910117110000E9 8 | :10006000130181FB130E1000930D0000B31DBE039E 9 | :100070002320B101130F1000930E1000B31EDF03F5 10 | :100080002322D10193011000930FF0FFB39FF103DE 11 | :100090002324F10113041000370200801302F2FF41 12 | :1000A000331244022326410093051000B704008058 13 | :1000B000B39495022328910017110000130101F752 14 | :1000C0009306F0FF130600003396C6022320C100FA 15 | :1000D0009307F0FF130710003397E7022322E10094 16 | :1000E0009308F0FF1308F0FF33980803232401015D 17 | :1000F0009309F0FF370900801309F9FF33992903A9 18 | :1001000023262101930AF0FF370A0080339A4A031D 19 | :100110002328410117110000130181F2B70B008061 20 | :10012000938BFBFF130B0000339B6B0323206101B8 21 | :10013000B70C0080938CFCFF130C1000339C8C03D5 22 | :1001400023228101B70D0080938DFDFF130DF0FF79 23 | :10015000339DAD032324A101B70E0080938EFEFFD3 24 | :10016000370E0080130EFEFF339ECE032326C101FF 25 | :10017000B70F0080938FFFFF370F0080339FEF038F 26 | :100180002328E101171100001301C1EC37020080A0 27 | :1001900093010000B311320223203100B704008024 28 | :1001A0001304100033948402232281003706008058 29 | :1001B0009305F0FFB315B6022324B1003707008082 30 | :1001C000B70600809386F6FFB316D7022326D10028 31 | :1001D00037080080B7070080B317F8022328F10022 32 | :1001E00017150000130505E297150000938585EEAD 33 | :1001F000370610F01306C6F26306B5028326C50063 34 | :100200002320D600832685002320D60083264500A0 35 | :100210002320D600832605002320D60013050501E0 36 | :100220006FF09FFD370510F0130505F22320050040 37 | :0402300000000000CA 38 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 39 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 40 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 41 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 42 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 43 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 44 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 45 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 46 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 47 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 48 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 49 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 50 | :1010C000FFFFFFFFFFFFFFFF000000000000000028 51 | :040000058000000077 52 | :00000001FF 53 | -------------------------------------------------------------------------------- /emulator/riscv_tests/MULHSU.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000017110000130101001309000093080000FC 3 | :10001000B328190323201101130A000093091000CB 4 | :10002000B3293A0323223101130B0000930AF0FF96 5 | :10003000B32A5B0323245101130C0000B70B00808B 6 | :10004000938BFBFFB32B7C0323267101130D000060 7 | :10005000B70C0080B32C9D032328910117110000D9 8 | :10006000130181FB130E1000930D0000B32DBE038E 9 | :100070002320B101130F1000930E1000B32EDF03E5 10 | :100080002322D10193011000930FF0FFB3AFF103CE 11 | :100090002324F10113041000370200801302F2FF41 12 | :1000A000332244022326410093051000B704008048 13 | :1000B000B3A495022328910017110000130101F742 14 | :1000C0009306F0FF1306000033A6C6022320C100EA 15 | :1000D0009307F0FF1307100033A7E7022322E10084 16 | :1000E0009308F0FF1308F0FF33A80803232401014D 17 | :1000F0009309F0FF370900801309F9FF33A9290399 18 | :1001000023262101930AF0FF370A008033AA4A030D 19 | :100110002328410117110000130181F2B70B008061 20 | :10012000938BFBFF130B000033AB6B0323206101A8 21 | :10013000B70C0080938CFCFF130C100033AC8C03C5 22 | :1001400023228101B70D0080938DFDFF130DF0FF79 23 | :1001500033ADAD032324A101B70E0080938EFEFFC3 24 | :10016000370E0080130EFEFF33AECE032326C101EF 25 | :10017000B70F0080938FFFFF370F008033AFEF037F 26 | :100180002328E101171100001301C1EC37020080A0 27 | :1001900093010000B321320223203100B704008014 28 | :1001A0001304100033A48402232281003706008048 29 | :1001B0009305F0FFB325B6022324B1003707008072 30 | :1001C000B70600809386F6FFB326D7022326D10018 31 | :1001D00037080080B7070080B327F8022328F10012 32 | :1001E00017150000130505E297150000938585EEAD 33 | :1001F000370610F01306C6F26306B5028326C50063 34 | :100200002320D600832685002320D60083264500A0 35 | :100210002320D600832605002320D60013050501E0 36 | :100220006FF09FFD370510F0130505F22320050040 37 | :0402300000000000CA 38 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 39 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 40 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 41 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 42 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 43 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 44 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 45 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 46 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 47 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 48 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 49 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 50 | :1010C000FFFFFFFFFFFFFFFF000000000000000028 51 | :040000058000000077 52 | :00000001FF 53 | -------------------------------------------------------------------------------- /emulator/riscv_tests/MULHU.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000017110000130101001309000093080000FC 3 | :10001000B338190323201101130A000093091000BB 4 | :10002000B3393A0323223101130B0000930AF0FF86 5 | :10003000B33A5B0323245101130C0000B70B00807B 6 | :10004000938BFBFFB33B7C0323267101130D000050 7 | :10005000B70C0080B33C9D032328910117110000C9 8 | :10006000130181FB130E1000930D0000B33DBE037E 9 | :100070002320B101130F1000930E1000B33EDF03D5 10 | :100080002322D10193011000930FF0FFB3BFF103BE 11 | :100090002324F10113041000370200801302F2FF41 12 | :1000A000333244022326410093051000B704008038 13 | :1000B000B3B495022328910017110000130101F732 14 | :1000C0009306F0FF1306000033B6C6022320C100DA 15 | :1000D0009307F0FF1307100033B7E7022322E10074 16 | :1000E0009308F0FF1308F0FF33B80803232401013D 17 | :1000F0009309F0FF370900801309F9FF33B9290389 18 | :1001000023262101930AF0FF370A008033BA4A03FD 19 | :100110002328410117110000130181F2B70B008061 20 | :10012000938BFBFF130B000033BB6B032320610198 21 | :10013000B70C0080938CFCFF130C100033BC8C03B5 22 | :1001400023228101B70D0080938DFDFF130DF0FF79 23 | :1001500033BDAD032324A101B70E0080938EFEFFB3 24 | :10016000370E0080130EFEFF33BECE032326C101DF 25 | :10017000B70F0080938FFFFF370F008033BFEF036F 26 | :100180002328E101171100001301C1EC37020080A0 27 | :1001900093010000B331320223203100B704008004 28 | :1001A0001304100033B48402232281003706008038 29 | :1001B0009305F0FFB335B6022324B1003707008062 30 | :1001C000B70600809386F6FFB336D7022326D10008 31 | :1001D00037080080B7070080B337F8022328F10002 32 | :1001E00017150000130505E297150000938585EEAD 33 | :1001F000370610F01306C6F26306B5028326C50063 34 | :100200002320D600832685002320D60083264500A0 35 | :100210002320D600832605002320D60013050501E0 36 | :100220006FF09FFD370510F0130505F22320050040 37 | :0402300000000000CA 38 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 39 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 40 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 41 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 42 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 43 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 44 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 45 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 46 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 47 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 48 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 49 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 50 | :1010C000FFFFFFFFFFFFFFFF000000000000000028 51 | :040000058000000077 52 | :00000001FF 53 | -------------------------------------------------------------------------------- /emulator/riscv_tests/REM.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000017110000130101001309000093080000FC 3 | :10001000B368190323201101130A0000930910008B 4 | :10002000B3693A0323223101130B0000930AF0FF56 5 | :10003000B36A5B0323245101130C0000B70B00804B 6 | :10004000938BFBFFB36B7C0323267101130D000020 7 | :10005000B70C0080B36C9D03232891011711000099 8 | :10006000130181FB130E1000930D0000B36DBE034E 9 | :100070002320B101130F1000930E1000B36EDF03A5 10 | :100080002322D10193011000930FF0FFB3EFF1038E 11 | :100090002324F10113041000370200801302F2FF41 12 | :1000A000336244022326410093051000B704008008 13 | :1000B000B3E495022328910017110000130101F702 14 | :1000C0009306F0FF1306000033E6C6022320C100AA 15 | :1000D0009307F0FF1307100033E7E7022322E10044 16 | :1000E0009308F0FF1308F0FF33E80803232401010D 17 | :1000F0009309F0FF370900801309F9FF33E9290359 18 | :1001000023262101930AF0FF370A008033EA4A03CD 19 | :100110002328410117110000130181F2B70B008061 20 | :10012000938BFBFF130B000033EB6B032320610168 21 | :10013000B70C0080938CFCFF130C100033EC8C0385 22 | :1001400023228101B70D0080938DFDFF130DF0FF79 23 | :1001500033EDAD032324A101B70E0080938EFEFF83 24 | :10016000370E0080130EFEFF33EECE032326C101AF 25 | :10017000B70F0080938FFFFF370F008033EFEF033F 26 | :100180002328E101171100001301C1EC37020080A0 27 | :1001900093010000B361320223203100B7040080D4 28 | :1001A0001304100033E48402232281003706008008 29 | :1001B0009305F0FFB365B6022324B1003707008032 30 | :1001C000B70600809386F6FFB366D7022326D100D8 31 | :1001D00037080080B7070080B367F8022328F100D2 32 | :1001E00017150000130505E297150000938585EEAD 33 | :1001F000370610F01306C6F26306B5028326C50063 34 | :100200002320D600832685002320D60083264500A0 35 | :100210002320D600832605002320D60013050501E0 36 | :100220006FF09FFD370510F0130505F22320050040 37 | :0402300000000000CA 38 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 39 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 40 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 41 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 42 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 43 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 44 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 45 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 46 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 47 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 48 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 49 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 50 | :1010C000FFFFFFFFFFFFFFFF000000000000000028 51 | :040000058000000077 52 | :00000001FF 53 | -------------------------------------------------------------------------------- /emulator/riscv_tests/REMU.elf.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :1000000017110000130101001309000093080000FC 3 | :10001000B378190323201101130A0000930910007B 4 | :10002000B3793A0323223101130B0000930AF0FF46 5 | :10003000B37A5B0323245101130C0000B70B00803B 6 | :10004000938BFBFFB37B7C0323267101130D000010 7 | :10005000B70C0080B37C9D03232891011711000089 8 | :10006000130181FB130E1000930D0000B37DBE033E 9 | :100070002320B101130F1000930E1000B37EDF0395 10 | :100080002322D10193011000930FF0FFB3FFF1037E 11 | :100090002324F10113041000370200801302F2FF41 12 | :1000A000337244022326410093051000B7040080F8 13 | :1000B000B3F495022328910017110000130101F7F2 14 | :1000C0009306F0FF1306000033F6C6022320C1009A 15 | :1000D0009307F0FF1307100033F7E7022322E10034 16 | :1000E0009308F0FF1308F0FF33F8080323240101FD 17 | :1000F0009309F0FF370900801309F9FF33F9290349 18 | :1001000023262101930AF0FF370A008033FA4A03BD 19 | :100110002328410117110000130181F2B70B008061 20 | :10012000938BFBFF130B000033FB6B032320610158 21 | :10013000B70C0080938CFCFF130C100033FC8C0375 22 | :1001400023228101B70D0080938DFDFF130DF0FF79 23 | :1001500033FDAD032324A101B70E0080938EFEFF73 24 | :10016000370E0080130EFEFF33FECE032326C1019F 25 | :10017000B70F0080938FFFFF370F008033FFEF032F 26 | :100180002328E101171100001301C1EC37020080A0 27 | :1001900093010000B371320223203100B7040080C4 28 | :1001A0001304100033F484022322810037060080F8 29 | :1001B0009305F0FFB375B6022324B1003707008022 30 | :1001C000B70600809386F6FFB376D7022326D100C8 31 | :1001D00037080080B7070080B377F8022328F100C2 32 | :1001E00017150000130505E297150000938585EEAD 33 | :1001F000370610F01306C6F26306B5028326C50063 34 | :100200002320D600832685002320D60083264500A0 35 | :100210002320D600832605002320D60013050501E0 36 | :100220006FF09FFD370510F0130505F22320050040 37 | :0402300000000000CA 38 | :10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 39 | :10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 40 | :10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 41 | :10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 42 | :10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 43 | :10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 44 | :10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 45 | :10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 46 | :10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 47 | :10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 48 | :1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 49 | :1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 50 | :1010C000FFFFFFFFFFFFFFFF000000000000000028 51 | :040000058000000077 52 | :00000001FF 53 | -------------------------------------------------------------------------------- /emulator/riscv_tests/rv32ui-p-andi.hex: -------------------------------------------------------------------------------- 1 | :0200000480007A 2 | :100000006F00C004732F2034930F8000630AFF0336 3 | :10001000930F90006306FF03930FB0006302FF038A 4 | :10002000170F0080130F0FFE63040F0067000F000F 5 | :10003000732F203463540F006F004000136E9E53E3 6 | :10004000171F00002320CFFD6FF09FFF732540F1A5 7 | :100050006310050073251030635805000F00F00F82 8 | :10006000130E100073000000130E00009702000032 9 | :10007000938282F973905230735020307350303035 10 | :1000800073504030970200809382C2F7638C020065 11 | :10009000739052109302B01A739022307323203061 12 | :1000A000E39E62F873500030970200009382420191 13 | :1000B00073901234732540F173002030B70001FFB4 14 | :1000C000938000F093F1F0F0B70E01FF938E0EF0E5 15 | :1000D000130E20006394D11BB710F00F938000FF24 16 | :1000E00093F1000F930E000F130E30006398D11997 17 | :1000F000B700FF009380F00F93F1F070930EF000C3 18 | :10010000130E4000639CD117B7F00FF09380F000FE 19 | :1001100093F1000F930E0000130E50006390D1175F 20 | :10012000B70001FF938000F093F0000F930E0000E2 21 | :10013000130E60006394D01513020000B710F00F87 22 | :10014000938000FF93F1F0701383010013021200FB 23 | :1001500093022000E31452FE930E0070130E700001 24 | :10016000631ED31113020000B700FF009380F00F4D 25 | :1001700093F1000F1300000013830100130212001B 26 | :1001800093022000E31252FE930E000F130E800024 27 | :100190006316D30F13020000B7F00FF09380F00046 28 | :1001A00093F1F0F01300000013000000138301002E 29 | :1001B0001302120093022000E31052FEB7FE0FF06C 30 | :1001C000938EFE00130E9000631AD30B13020000EF 31 | :1001D000B710F00F938000FF93F1F070130212003C 32 | :1001E00093022000E31652FE930E0070130EA0003F 33 | :1001F0006396D10913020000B700FF009380F00F4F 34 | :100200001300000093F1000F13021200930220006C 35 | :10021000E31452FE930E000F130EB0006390D1074B 36 | :1002200013020000B7F00FF09380F00013000000FD 37 | :100230001300000093F1F0701302120093022000EB 38 | :10024000E31252FE930EF000130EC0006398D10328 39 | :100250009370000F930E0000130ED0006390D00334 40 | :10026000B700FF009380F00F13F0F070930E0000C2 41 | :10027000130EE0006314D001631CC0010F00F00FE7 42 | :1002800063000E00131E1E00136E1E00730000009C 43 | :100290000F00F00F130E100073000000731000C069 44 | :1002A000000000000000000000000000000000004E 45 | :1002B000000000000000000000000000000000003E 46 | :0402C000000000003A 47 | :1010000000000000000000000000000000000000E0 48 | :1010100000000000000000000000000000000000D0 49 | :1010200000000000000000000000000000000000C0 50 | :1010300000000000000000000000000000000000B0 51 | :081040000000000000000000A8 52 | :040000058000200057 53 | :00000001FF 54 | --------------------------------------------------------------------------------