c0db39c7d863fa2d1fd5cac2a7245e3f92f96c07
L05 · ALU and the Verilog Assembler
Karta łączy operacje arytmetyczno-logiczne z rzeczywistym kodowaniem RV32I. Uczeń najpierw weryfikuje ALU, następnie składa słowa instrukcji R/I, a na końcu wykonuje czteroinstrukcyjny program przez prosty etap execute.
Taski
| Task | Wynik |
|---|---|
task01_alu_core |
10 operacji: ADD, SUB, AND, OR, XOR, SLL, SRL, SRA, SLT, SLTU |
task02_verilog_assembler |
ADD x3,x1,x2 = 002081b3, ADDI x5,x6,-4 = ffc30293 |
task03_execute_stage |
program kończy się x1=7 x2=5 x3=12 x4=7 |
Uruchomienie
stemctl card use rv32i-asm L05
stemctl tasks list
stemctl test native-amd64 rv32i-asm L05 1
stemctl test hazard3-sim rv32i-asm L05 2
stemctl debug hazard3-sim rv32i-asm L05 3
AMD64 jest niezależnym modelem bitowym. Verilator wykonuje self-checking RTL,
a debug zapisuje VCD. Przewidywania i ścieżki artefaktów wpisuje się do
answers/alu-evidence.md.
Inwarianty
- przesunięcie używa wyłącznie pięciu młodszych bitów drugiego argumentu;
SRAzachowuje znak,SRLzawsze wstawia zera;SLTinterpretuje argumenty jako signed,SLTUjako unsigned;- nieobsługiwane
funct3/funct7ustawiaillegali blokuje writeback; - enkoder nie zgaduje pól: format R oraz I są wybierane jawnie.
L06 doda do tego toru następny PC, warunki gałęzi i skoki.
Description
Languages
JavaScript
88.6%
Shell
5.1%
SystemVerilog
4.6%
Python
1.1%
HTML
0.4%
Other
0.2%