main
L09 · Load and Store Semantics
Karta domyka tor pamięci RV32I. Uczeń tworzy maski linii bajtowych dla
SB/SH/SW, wykonuje sign/zero extension dla LB/LH/LW/LBU/LHU, a na końcu
łączy obie ścieżki w jednostce load/store z małym RAM.
Taski
| Task | PASS |
|---|---|
task01_store_lanes |
maski 1000, 1100, 1111 i fault dla niewyrównanego SH |
task02_load_extend |
poprawne LB/LBU oraz LH/LHU z jednego słowa |
task03_load_store_unit |
po SW i SB +1: słowo 1122aa44, LB/LBU i fault LW +2 |
stemctl card use rv32i-asm L09
stemctl test native-amd64 rv32i-asm L09 1
stemctl test hazard3-sim rv32i-asm L09 2
stemctl debug hazard3-sim rv32i-asm L09 3
Model AMD64 i RTL są niezależne. debug generuje VCD. Wyniki należy zapisać
w answers/load-store-evidence.md.
Inwarianty:
- RV32I jest little-endian: offset 0 wskazuje bity 7:0 słowa;
SBzmienia jedną linię bajtową,SHdwie,SWcztery;- load signed replikuje bit znaku, load unsigned wstawia zera;
- halfword wymaga adresu parzystego, word adresu podzielnego przez cztery;
- fault zeruje maskę zapisu i nie modyfikuje RAM.
Po L09 uczeń ma wszystkie bloki potrzebne do spięcia minimalnego toru RV32I.
Description
Languages
JavaScript
87.3%
SystemVerilog
6.1%
Shell
5%
Python
1%
HTML
0.4%
Other
0.2%