Files
lab-rv32i-asm-fpga-bringup/json/card_source.json
T

23 lines
8.7 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "../../../../tools/card-layouts/schemas/card-source.schema.json", "schema": "esc-card-source.v1",
"card": {"id": "mpabi-inf-rv32i-asm-02-fpga-bringup", "series": "rv32i-asm", "series_title": "ASM · RV32I From Blinker to RISC-V", "number": "02", "count": "09", "slug": "fpga-bringup", "title": "L02 · FPGA Bring-up and Programming", "topic": "Kontrakt płytki, symulacja, programowanie i fizyczny dowód", "project": "From Blinker to RISC-V", "subject": "Informatyka", "level": "Rok 1 · RV32I", "revision_date": "2026-07-21T00:00:00+02:00", "status": "Gotowa do wykonania", "version": "v00.01", "uuid": "31e9c2ad-f597-51ab-af6a-e550c3533f32", "author": "M. Pabiszczak", "year": "2026"},
"generated": {"tex": "doc/generated/main.tex", "html": "web/index.html", "html_css": "web/style.css", "react_app": true, "html_tree_inspector": false}, "template": "templates/karta-klasyczna.json",
"title_block": {"category": "KARTA PRACY · INFORMATYKA · FPGA", "standard": "ISO 7200", "prepared_by": "M. Pabiszczak", "prepared_on": "21.07.2026", "checked_by": "testy automatyczne + bramka sprzętowa", "approved_by": "—", "url": "http://localhost:8080", "repository_url": "https://gitea.local/edu-inf/lab-rv32i-asm-fpga-bringup", "revision": "1", "issued_on": "21.07.2026", "series": "RV32I-ASM-02", "document_type": "karta pracy", "tool": "card-layouts", "sheet": "1 / 1", "show_qr": false, "show_repository_qr": false, "height_cm": 3, "repeat_on_every_page": true, "replace_front_matter": true},
"front_page_scope": {"title": "Cel karty", "content_tex": "Uczeń przygotowuje jawny kontrakt płytki, weryfikuje top-level w symulacji i przechodzi uporządkowany preflight programowania. Automatyczny PASS nie jest dowodem działania fizycznego FPGA.", "scope_title": "Zakres tasków", "scope_table": {"headers": ["Krok", "Numer tasku", "Najważniejsza idea", "Priorytet", "Status", "Version"], "rows": [{"chapter": "2", "task": "Task01", "idea_tex": "piny i active-low", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}, {"chapter": "2", "task": "Task02", "idea_tex": "reset i blinker RTL", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}, {"chapter": "2", "task": "Task03", "idea_tex": "ordered programming gate", "priority": "obowiązkowe", "status": "ready", "version": "v00.01"}]}},
"learning_effects": {"RV02.EN01": {"text": "Uczeń analizuje granicę między symulacją, bitstreamem, programatorem i obserwacją sprzętu.", "label": "Bring-up evidence", "bloom_level": "Analiza", "assessment_criteria": ["RV02.KW01"]}, "RV02.EK01": {"text": "Uczeń przygotowuje top-level i uporządkowany workflow konfiguracji FPGA.", "label": "FPGA preflight", "bloom_level": "Zastosowanie", "assessment_criteria": ["RV02.KW01"]}},
"assessment_criteria": {"RV02.KW01": {"text": "Polaryzacja, reset, krawędzie LED i kolejność cableidconfigureobserve są potwierdzone, a wynik modelu raportuje hardware_observed=0 i claim=preflight-only.", "learning_effects": ["RV02.EN01", "RV02.EK01"]}},
"educational_requirements": {"RV02.WE01": {"text": "Bezpieczny i audytowalny FPGA bring-up.", "label": "Board to observation", "learning_effects": ["RV02.EN01", "RV02.EK01"], "learning_tree": {"schema": "we-learning-tree.v1", "policy": "Nie zgadujemy płytki ani pinów. Model i symulacja mogą zaliczyć preflight, lecz tylko log programatora i obserwacja na wskazanej płytce stanowią dowód fizyczny.", "ogolne": [{"tree_id": "RV02.WE01.OG.IP.01", "effect_ref": "RV02.EN01", "display": "EN IP RV02.01", "text": "Uczeń ocenia siłę dowodów bring-up.", "kw": [{"criterion_ref": "RV02.KW01", "display": "KW IP RV02.01", "text": "Rozróżnia VCD od obserwacji fizycznej."}]}], "zawodowe": [{"tree_id": "RV02.WE01.TECH.I4.01", "effect_ref": "RV02.EK01", "display": "EK INF04 RV02.01", "text": "Uczeń przygotowuje kontrakt i kolejność programowania.", "kw": [{"criterion_ref": "RV02.KW01", "display": "KW INF04 RV02.01", "text": "Nie omija identyfikacji urządzenia."}]}]}}},
"sections": [
{"title": "Task01 · Kontrakt płytki i polaryzacja", "content_kind": "prose", "content_tex": "Wypełnij board/board-contract.yaml dla konkretnego stanowiska. Potwierdź active-low reset, button i LED; wartości \\texttt{SET\\_*} są blokadą przeciw przypadkowemu użyciu obcych pinów.", "educational_requirement_refs": ["RV02.WE01"], "learning_effect_refs": ["RV02.EN01", "RV02.EK01"], "assessment_criterion_refs": ["RV02.KW01"], "area_tree_refs": ["RV02.WE01.OG.IP.01", "RV02.WE01.TECH.I4.01"], "steps": [{"id": "T01-PINS", "title": "Potwierdź pin_contract=generic i jawne polaryzacje.", "tree_refs": ["RV02.WE01.TECH.I4.01"]}], "assets": [{"path": "assets/bringup-gate.png", "html_path": "assets/bringup-gate.svg", "caption": "Symulacja kończy automatyczny preflight; fizyczny dowód wymaga rzeczywistej płytki.", "label": "fig:bringup-gate", "alt": "Diagram kolejnych bramek FPGA bring-up.", "kind": "diagram", "width": 0.72}]},
{"title": "Task02 · Top-level blinker", "content_kind": "prose", "content_tex": "Zasymuluj znany reset i dzielnik. LED musi zmienić stan w taktach 4, 8, 12 i 16. VCD dowodzi zachowania RTL, ale nie poprawności constraintów ani połączeń płytki.", "educational_requirement_refs": ["RV02.WE01"], "learning_effect_refs": ["RV02.EN01", "RV02.EK01"], "assessment_criterion_refs": ["RV02.KW01"], "area_tree_refs": ["RV02.WE01.OG.IP.01", "RV02.WE01.TECH.I4.01"], "steps": [{"id": "T02-BLINK", "title": "Zmierz reset_known=1, cztery krawędzie i zapisz VCD.", "tree_refs": ["RV02.WE01.TECH.I4.01"]}]},
{"title": "Task03 · Bramka programowania", "content_kind": "prose", "content_tex": "Przejdź kolejno przez cable, device ID, configure i observe. Model blokuje pominięcie etapu, lecz jego PASS zawsze kończy się \\texttt{hardware\\_observed=0} oraz \\texttt{claim=preflight-only}. Fizyczny wynik wpisz osobno.", "educational_requirement_refs": ["RV02.WE01"], "learning_effect_refs": ["RV02.EN01", "RV02.EK01"], "assessment_criterion_refs": ["RV02.KW01"], "area_tree_refs": ["RV02.WE01.OG.IP.01", "RV02.WE01.TECH.I4.01"], "steps": [{"id": "T03-GATE", "title": "Potwierdź kolejność i brak fałszywego hardware claim.", "tree_refs": ["RV02.WE01.OG.IP.01"]}]}
],
"tasks": {"task01": {"prompt_tex": "Zweryfikuj polaryzację interfejsu płytki.", "criterion": "reset_active=1 button_active=1 led_n=0 pin_contract=generic", "assessment_criterion_ref": "RV02.KW01"}, "task02": {"prompt_tex": "Zweryfikuj reset i blinker.", "criterion": "reset_known=1 led_edges=4,8,12,16 divider=4", "assessment_criterion_ref": "RV02.KW01"}, "task03": {"prompt_tex": "Przejdź uporządkowany model programowania.", "criterion": "order=cable,id,configure,observe hardware_observed=0 claim=preflight-only", "assessment_criterion_ref": "RV02.KW01"}},
"tasks_order": ["task01", "task02", "task03"], "mission": "Przygotować bezpieczny, nieudawany workflow od board contract do obserwacji LED.", "objectives": ["Zdefiniujesz płytkę i polaryzacje.", "Zweryfikujesz blinker przed syntezą.", "Oddzielisz preflight od fizycznego dowodu."],
"agenda": [{"time": "0--20 min", "work": "Kontrakt i piny."}, {"time": "20--40 min", "work": "Symulacja top-level."}, {"time": "40--70 min", "work": "Programowanie i formularz dowodowy."}],
"tech_stack": {"software": [{"name": "SystemVerilog + Verilator", "use": "preflight RTL i VCD"}, {"name": "Board-specific FPGA toolchain", "use": "realny bitstream po uzupełnieniu kontraktu"}, {"name": "stemctl", "use": "profile native-amd64 i hazard3-sim"}], "hardware": [{"name": "Płytka określona przez board-contract.yaml", "use": "fizyczna bramka poza automatycznym modelem"}]},
"container_test": {"title": "Automatyczny preflight", "commands": ["stemctl test native-amd64 rv32i-asm L02 1", "stemctl debug hazard3-sim rv32i-asm L02 2", "stemctl test hazard3-sim rv32i-asm L02 3"], "pass_condition": "Trzy PASS, VCD oraz jawne hardware_observed=0; ten wynik nie jest dowodem fizycznego FPGA."},
"safety_rules": [{"title": "Nie zgaduj pinów", "body": "Nie uruchamiaj syntezy ani programowania z wartościami SET_* w board-contract.yaml."}, {"title": "Identyfikuj przed konfiguracją", "body": "Odczytany device ID musi odpowiadać fpga_part kontraktu."}, {"title": "Nie zawyżaj dowodu", "body": "Symulacja, model workflow i plik VCD nie zastępują logu programatora oraz obserwacji LED."}],
"hardware_procedure": [{"step": "1", "action": "Uzupełnij board contract.", "condition": "Znane board ID, part, clock, piny i toolchain."}, {"step": "2", "action": "Zbuduj i zahashuj bitstream.", "condition": "Build zakończony, SHA-256 zapisany."}, {"step": "3", "action": "Wykryj i skonfiguruj FPGA.", "condition": "Device ID zgodny, programator exit 0."}, {"step": "4", "action": "Zmierz LED.", "condition": "Obserwator, czas i okres zapisane w evidence."}], "references": []
}