feat(L05): add ALU assembler and execute card
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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](answers/alu-evidence.md).
|
||||
|
||||
## Inwarianty
|
||||
|
||||
- przesunięcie używa wyłącznie pięciu młodszych bitów drugiego argumentu;
|
||||
- `SRA` zachowuje znak, `SRL` zawsze wstawia zera;
|
||||
- `SLT` interpretuje argumenty jako signed, `SLTU` jako unsigned;
|
||||
- nieobsługiwane `funct3/funct7` ustawia `illegal` i 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.
|
||||
Reference in New Issue
Block a user