Files
lab-rv32i-asm-alu/README.md
T

1.4 KiB

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;
  • 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.