This project implements RISC-V Mini by RickGao (https://github.com/RickGao/RISC-V-Mini), a compact 8-bit RISC-V processor core optimized for Tiny Tapeout, a fabrication platform for small-scale educational IC projects. The processor employs a customized, compressed RISC-V instruction set (RVC) to reduce instruction width to 16 bits, leading to a more compact design suited to Tiny Tapeout's area and resource constraints. Developed in Verilog, this processor will handle computational, load/store and control-flow operations efficiently and undergo verification through simulation and testing.
### Processor Components
The processor comprises the following core components, optimized to meet Tiny Tapeout’s area requirements:
Simply set the input to the instruction and clock once to receive the output.
R-Type, I-Type, and L-Type instructions will output 0.
The S-Type instruction will output the value of the register.
The B-Type instruction will output 1 if the branch is taken and 0 if it is not taken.
Name | funct3 [15:13] | funct2 [12:11] | rs2 [10:8] | rs1 [7:5] | rd [4:2] | Opcode(00) |
---|---|---|---|---|---|---|
AND | 000 | 00 | XXX | XXX | XXX | Opcode(00) |
OR | 001 | 00 | XXX | XXX | XXX | Opcode(00) |
ADD | 010 | 00 | XXX | XXX | XXX | Opcode(00) |
SUB | 011 | 00 | XXX | XXX | XXX | Opcode(00) |
XOR | 001 | 01 | XXX | XXX | XXX | Opcode(00) |
SLT | 111 | 00 | XXX | XXX | XXX | Opcode(00) |
#### I-Type
Name | funct3 [15:13] | Imm [12:8] (5-bit unsigned) | rs1 [7:5] | rd [4:2] | Opcode(01) |
---|---|---|---|---|---|
SLL | 100 | XXXXX | XXX | XXX | Opcode(01) |
SRL | 101 | XXXXX | XXX | XXX | Opcode(01) |
SRA | 110 | XXXXX | XXX | XXX | Opcode(01) |
ADDI | 010 | XXXXX | XXX | XXX | Opcode(01) |
SUBI | 011 | XXXXX | XXX | XXX | Opcode(01) |
Load | Imm [15:8] (8-bit signed) | 000 | rd [4:2] | Opcode(10) |
---|
Store | 00000 | 000 | rs1 [7:5] | 000 | Opcode(11) |
---|
Name | funct3 [15:13] | funct2 [12:11] | rs2 [10:8] | rs1 [7:5] | 000 | Opcode(11) |
---|---|---|---|---|---|---|
BEQ | 011 | 00 | XXX | XXX | 000 | Opcode(11) |
BNE | 011 | 10 | XXX | XXX | 000 | Opcode(11) |
BLT | 111 | 00 | XXX | XXX | 000 | Opcode(11) |
No external hardware.
# | Input | Output | Bidirectional |
---|---|---|---|
0 | instruction[0] | result[0] | instruction[8] |
1 | instruction[1] | result[1] | instruction[9] |
2 | instruction[2] | result[2] | instruction[10] |
3 | instruction[3] | result[3] | instruction[11] |
4 | instruction[4] | result[4] | instruction[12] |
5 | instruction[5] | result[5] | instruction[13] |
6 | instruction[6] | result[6] | instruction[14] |
7 | instruction[7] | result[7] | instruction[15] |