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;
  • SB zmienia jedną linię bajtową, SH dwie, SW cztery;
  • 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.

S
Description
No description provided
Readme 457 KiB
Languages
JavaScript 87.3%
SystemVerilog 6.1%
Shell 5%
Python 1%
HTML 0.4%
Other 0.2%