Referenca skripti
Direktorij scripts/ sadrži pomoćne alate na strani hosta za build,
postavljanje, programiranje, debugiranje, provjeru, benchmarking, pregled
izvornog koda i čišćenje koje koristi Hazard3-Doom. Ova stranica opisuje
skripte uključene u repozitorij prema namjeni i objašnjava koji su alati
autoritativni za uobičajene zadatke održavanja.
Većina Bash skripti određuje korijen repozitorija iz vlastite lokacije. Osim ako skripta ne kaže drukčije, primjeri u nastavku pretpostavljaju da je trenutačni direktorij korijen repozitorija Hazard3-Doom.
Za kraći sažetak organiziran prema direktoriju pogledajte scripts/README.md
u repozitoriju.
Potpuni buildovi pločica
Potpuni omotači za pločice održavaju monitor, FPGA dizajn, Doom sliku i SDRAM memorijsku mapu međusobno usklađenima.
scripts/build-ulx3s-85f-doom.shPotpuni build za ULX3S 85F. Gradi monitor za 50 MHz/64 MiB, priprema rezidentnu FPGA boot sliku, gradi ili ponovno koristi 85F bitstream, gradi Doom sliku i priprema datoteke za SD-card tijek rada. 85F omotač zadano omogućuje proširene HDMI načine; postavite
HAZARD3_HDMI_EXTENDED_MODES=0za lakši framebuffer profil samo s 320x200.scripts/build-ulx3s-12f-doom.shPotpuni kompaktni build za ULX3S 12F. Zadano koristi memorijski profil od 32 MiB pri Hazard3 sistemskom taktu od 40 MHz. Mapa od 64 MiB opcionalna je kroz
HAZARD3_MEMORY_PROFILE=64m. Kompaktni cilj namjerno prihvaća samoHAZARD3_DOOM_HDMI_RESOLUTION=320x200. Gradi mali UART bootstrap za rezidentni EBR prozor od 1 KiB i puni monitor za vanjski SDRAM.scripts/build-ulx4m-ld-doom.shPotpuni build za ULX4M-LD 85F. Koristi softversku mapu od 64 MiB pri 40 MHz i prije builda monitora, ugrađene boot slike, FPGA bitstreama i Doom slike provjerava potrebne generirane LiteDRAM izvore. Release build koristi ULX4M-LD postavke iz
build-ecp5-bitstream-common.shi mora zadovoljiti sva ograničenja takta. Novi netlist mora se ponovno routati i hardverski kvalificirati. KoristiteALLOW_TIMING_FAILURE=1samo za izričite ULX4M-LD sweep eksperimente.
Primjeri:
./scripts/build-ulx3s-85f-doom.sh
./scripts/build-ulx3s-12f-doom.sh
./scripts/build-ulx4m-ld-doom.sh
Za testiranje drugog Hazard3 checkouta bez promjene Hazard3-Doom gitlinka:
HAZARD3_ROOT=/mnt/c/workspace/Hazard3 \
./scripts/build-ulx3s-85f-doom.sh
Pomoćni alati za build monitora i bitstreama
scripts/build.shGradi firmware rezidentnog monitora. Zadano koristi memorijsku mapu od 64 MiB pri 50 MHz. Važne zamjene uključuju
HAZARD3_MEMORY_PROFILE,HAZARD3_SYS_CLK_HZ,HAZARD3_BUILD_DIR,TOOLCHAIN_PREFIXiHAZARD3_MONITOR_LINKER_SCRIPT. Izlazi uključujuhazard3-boot-monitor.elf,.mapi.binu odabranom build direktoriju.scripts/build-ulx3s-85f-bitstream.shUlazna točka specifična za ULX3S 85F za zajednički ECP5 tijek.
scripts/build-ulx3s-12f-bitstream.shUlazna točka specifična za ULX3S 12F za zajednički ECP5 tijek. Zadano koristi
HAZARD3_MEMORY_PROFILE=32m.scripts/build-ulx4m-ld-bitstream.shUlazna točka specifična za ULX4M-LD 85F za zajednički ECP5 tijek.
scripts/build-ecp5-bitstream-common.shInterna zajednička implementacija sinteze/place-and-routea koju koriste tri omotača za bitstream specifična za pločice. Uobičajeno se ne poziva izravno.
ALLOW_TIMING_FAILURE=1zadržava timing promašaje vidljivima tijekom istraživačkog ULX4M-LD sweepa; nemojte ga koristiti za release build.Sintetizirani JSON, logovi sinteze, oznake profila, routed izlazi i sweep rezultati ostaju pod
build/u glavnom repozitoriju. Hazard3 podmodul pruža samo izvore i ograničenja.scripts/make-boot-hex.pyPretvara firmware binarnu datoteku u heksadecimalnu inicijalizacijsku datoteku koju koristi FPGA boot memorija. Koristi se i za puni preload rezidentnog monitora i za kompaktni ULX3S 12F bootstrap.
scripts/build-xpack.cmdNative Windows build monitora koji koristi
bin/riscv-gcc. Argumenti su[build|clean|rebuild] [64m|32m] [50000000|40000000|25000000]. Bez argumenata gradi monitor za 64 MiB/50 MHz.
Pomoćni alati za Doom i Supercon build
doom/build-doom-image.shGradi i pakira povezanu Doom aplikaciju. Monitor i Doom slika moraju koristiti isti memorijski profil.
scripts/build-doom-noncombat.shGradi posebnu Supercon noncombat sliku pod
build/doom-image-noncombat/. Skripta primjenjuje transformaciju samo na pripremljenu kopiju DoomGenerica i provjerava marker simbole u rezultirajućim objektnim datotekama.scripts/apply-doom-noncombat.pyInterna transformacija izvornog koda koju koristi posebni noncombat build. Ne mijenja checkoutani DoomGeneric submodul.
scripts/build-supercon10-wad.pyProvjerava i spaja projektni Supercon PWAD s lokalnim
DOOM1.WAD. Zadano je rezultirajuća kombinirana slikawads/SUPERCON10.WAD.scripts/cleanup-supercon-dev.py.bakZadržana sigurnosna kopija starijeg pomoćnog alata za čišćenje Supercon razvojnog okruženja. Nije dio normalnog podržanog tijeka rada.
Placement i routed sweepovi seedova
Sweepovi samo za placement brzo rangiraju kandidate. Oni nisu konačan dokaz timinga. Prije odabira produkcijskog seeda koristite routed sweep.
Za detaljnu arhitekturu sweepa, GitHub Actions parametre, zamrznuti netlist, live timing monitor, watchdog limite, artifacts i A/B strategiju pogledajte ECP5 timing i seed sweepovi.
scripts/sweep-peek.shULX3S 85F nextpnr sweep samo za placement. Zaustavlja se prije routinga. Bez argumenta seeda pretražuje konfigurirani raspon; izričiti seed ograničava pokretanje.
SWEEP_JOBSupravlja brojem paralelnih placementa, aHAZARD3_HDMI_EXTENDED_MODESodabire 85F video profil.scripts/sweep.shPotpuni ULX3S 85F place-and-route sweep. Prihvaća izričite seedove, popis seedova odvojenih zarezom ili
--all.SWEEP_JOBSupravlja paralelnim routing poslovima. Routed logovi i bitstreamovi zadržavaju se podbuild/ulx3s-seed-sweep/.scripts/sweep-peek-ulx3s-12f.shULX3S 12F sweep samo za placement. Prihvaća izričite seedove ili
--all. Zadano koristi četiri paralelna posla i profil od 32 MiB. Rezultati se zapisuju podbuild/ulx3s-12f-placement-sweep/<profile>/.scripts/sweep-ulx3s-12f.shPotpuni routed sweep za ULX3S 12F. Prihvaća izričite seedove ili
--all. Zadano koristi četiri paralelna routinga i profil od 32 MiB. Routed logovi, konfiguracija, SVF, bitstreamovi, metapodaci i CSV rezultati zadržavaju se podbuild/ulx3s-12f-seed-sweep/<profile>/.scripts/sweep-peek-ulx3s-12f-best-peek.shPomoćna skripta za nastavak koja pokreće routed sweep za najbolje 12F placement kandidate.
scripts/sweep-ulx4m-ld.shULX4M-LD routed seed sweep. Prihvaća jedan seed ili raspon seedova i zadano koristi dva paralelna posla. Rezultati se čuvaju pod
build/ulx4m-ld-seed-sweep/<clock>-<cpu><tuning>/.scripts/sweep-ecp5.shZajednički razdjelnik ciljeva za lokalne i GitHub Actions runove. Ispisuje podržane ciljeve, priprema/rješava putanje i poziva routed sweep cilja.
scripts/sweep-ecp5-common.shZajednička nextpnr implementacija. Provjerava placer/router postavke, gradi nextpnr argumente, primjenjuje watchdog limite, parsira maksimalne frekvencije i zapisuje CSV/metapodatke po seedu.
scripts/watch-ecp5-sweep-results.shGitHub live collector. Prati artifacts završenih grupa, ispisuje metrike novih seedova, PASS/FAIL/TIMEOUT/OTHER brojeve, trajanja i najbolje maksimalne frekvencije po domeni.
scripts/summarize-ecp5-sweep.pyZavršni CI agregator. Spaja sve seed grupe sa zamrznutim metapodacima i konfiguracijom, generira CSV/Markdown sažetke i provjerava potpunost sweepa.
scripts/generate-ecp5-seed-matrix.pyGenerira grupiranu matricu seedova koju koristi GitHub Actions. Samostalni script omogućuje istu provjeru lokalno i izbjegava ugrađivanje Pythona u workflow YAML.
Primjeri:
SWEEP_JOBS=8 ./scripts/sweep-peek.sh
SWEEP_JOBS=8 ./scripts/sweep.sh --all
SWEEP_JOBS=30 ./scripts/sweep-peek-ulx3s-12f.sh --all
SWEEP_JOBS=30 ./scripts/sweep-ulx3s-12f.sh --all
./scripts/sweep-ulx4m-ld.sh 1-32
Seed koji je prije bio dobar nije zajamčeno i dalje dobar nakon značajne promjene RTL-a, takta, cachea, EBR-a ili framebuffer-a.
Inicijalizacija submodula i provjere lokalnog stanja
scripts/setup-submodules.shInicijalizira skup submodula potreban za build. Normalni način inicijalizira top-level DoomGeneric i Hazard3, zatim ugniježđene Hazard3 submodule
scriptsiexample_soc/libfpga. PostaviteHAZARD3_INIT_ALL_SUBMODULES=1za inicijalizaciju svih rekurzivnih submodula.scripts/doomgeneric-version.shDefinira DoomGeneric repozitorij/commit koji očekuju pomoćne skripte za Doom build.
scripts/setup-doomgeneric.shProvjerava DoomGeneric checkout i potrebne izvorne datoteke. Namjerno dirty razvojni buildovi zahtijevaju
HAZARD3_DOOM_ALLOW_DIRTY_DOOMGENERIC=1.scripts/hazard3-submodule.shPregledava ili vraća Hazard3 submodul.
statusprijavljuje Hazard3 i DoomGeneric.diffirestorerade nad Hazard3; restore ga vraća na gitlink zabilježen u Hazard3-Doom HEAD-u i ažurira njegove ugniježđene submodule.scripts/update-hazard3-submodule.shIzričito ažurira, prijavljuje ili vraća Hazard3 gitlink. Namjerno ne mijenja
.gitmodules. Naredbe suupdate,statusirestore.scripts/check_submodules.batWindows sigurnosna provjera lokalnog stanja. Za svaki provjereni submodul uspoređuje checkout, parent index, gitlink u parent HEAD-u, dirty stanje i konfiguriranu udaljenu granu. Remote se odabire usporedbom URL-a iz odgovarajućeg
.gitmodulesumjesto pretpostavke da se ispravni remote zoveorigin. Uz top-level Hazard3-Doom submodule, provjerava i ugniježđenithird_party/Hazard3/example_soc/libfpgagitlink prema Hazard3 indexu i HEAD-u.
Lokalni checker submodula namjerno je konzervativan. Staged pokazivač, nezabilježeno ažuriranje, grana koja zaostaje, divergentna grana ili nepodudaran checkout problem su koji treba razumjeti prije commita.
Pregled forkova i grana
scripts/hazard3-doom-source-status.shSveobuhvatno izvješće o povijesti izvornog koda kroz mrežu repozitorija. Skripta ne ovisi o remoteovima konfiguriranim u radnom stablu. Stvara privremene bare Git repozitorije, dohvaća svaku granu iz svakog konfiguriranog forka, otkriva stvarnu zadanu granu svakog repozitorija iz remote HEAD-a i uspoređuje povijesti.
Trenutačne porodice izvora su:
Hazard3-Doom: fork trenutačnog korisnika i
ulx3s/Hazard3-Doom.DoomGeneric: fork trenutačnog korisnika,
ulx3s/doomgenericiozkl/doomgeneric.Hazard3: fork trenutačnog korisnika,
ulx3s/Hazard3iWren6991/Hazard3.Hazard3-libfpga/libfpga: fork trenutačnog korisnika
Hazard3-libfpga,ulx3s/Hazard3-libfpgai kanonskiWren6991/libfpga.
Za svaku granu izvješće prikazuje broj commitova ahead/behind u odnosu na vlastitu zadanu granu repozitorija i kanonski upstream default, zajedno s datumom commita, SHA-om i naslovom. Izvodi i usporedbe default-prema-default te usporedbe istoimenih grana kroz forkove.
UNRELATEDznači da Git nije pronašao zajednički merge base.Izlaz se prikazuje uživo i istodobno zapisuje u
build/source_status.log. Opcionalni prvi argument odabire GitHub korisničko ime; zadano jegojimmypi.
./scripts/hazard3-doom-source-status.sh
./scripts/hazard3-doom-source-status.sh gojimmypi
Razlika je važna: check_submodules.bat provjerava sigurnost lokalno
zabilježenog stanja submodula, dok hazard3-doom-source-status.sh uspoređuje
širu porodicu grana i forkova na GitHubu.
Programiranje i OpenOCD
scripts/start-openocd.shPokreće OpenOCD iz izvornog Linuxa ili WSL-a s ULX3S konfiguracijom repozitorija. Izvorni Linux koristi
openocdizPATH. WSL može koristiti priloženi Windowsopenocd.exeza checkout na Windows datotečnom sustavu kada je interop dostupan; inače koristi izvorni Linux OpenOCD. Kada je odabran Windows izvršni program, skripta pretvara putanju konfiguracije u Windows sintaksu. Trenutačna ULX3S konfiguracija podržava Ubuntu OpenOCD 0.12.0 i novije buildove koje projekt trenutačno koristi.scripts/start-openocd.batNative Windows pokretač OpenOCD-a. Izričita OpenOCD izvršna datoteka može se zadati kao prvi argument; inače se koristi binarna datoteka iz repozitorija.
scripts/load-firmware.shUčitava monitor ELF kroz aktivni OpenOCD GDB server, zaustavlja cilj, učitava i uspoređuje sekcije, postavlja
$pcna_start, nastavlja i prekida vezu. Bez argumenta koristi samostalni izlazbuild/hazard3-boot-monitor.elf. Potpuni board buildovi trebaju izričito proslijediti board-specific ELF ili koristiti odgovarajućiscripts/gdb/load-*-monitor.gdbhelper. Script provjeravalocalhost:3333prije pokretanja GDB-a kako nedostajući OpenOCD poslužitelj ne bi prešao na lokalni GDBexectarget i dao zavaravajuće usporedbe sekcija.scripts/load-firmware-12f.shUčitava ULX3S 12F monitor smješten u SDRAM-u nakon što je kompaktni FPGA bitstream programiran i OpenOCD radi.
scripts/load-firmware.batNative Windows loader monitora koji koristi GDB i OpenOCD.
scripts/load-fpga-bitstream.batNative Windows pomoćni alat za učitavanje generiranog ili unaprijed izgrađenog FPGA bitstreama.
scripts/flash-ulx3s-persistent.shProgramira
build/fpga_ulx3s_85f.bitu ULX3S SPI flash za trajno hladno pokretanje. To se razlikuje od volatilnog SRAM programiranja.
UART upravljanje
scripts/return-to-monitor.pyŠalje Ctrl-X preko UART-a kako bi aktivni Doom izašao u rezidentni monitor, zatim oslobađa serijski port. Zadane vrijednosti su
/dev/ttyS7i 115200 baud.scripts/restart-from-monitor.pyŠalje naredbu monitora
jza pokretanje već provjerene Doom slike/IWAD-a, zatim oslobađa serijski port. Zadane vrijednosti su/dev/ttyS7i 115200 baud.
GDB pomoćni alati
scripts/hazard3-debug.gdbZajedničke definicije Hazard3 GDB naredbi koje koristi projektna debug postava.
scripts/gdb/load-ulx3s-85f-monitor.gdbUčitava, provjerava i pokreće monitor koji stvara potpuni ULX3S 85F build u
build/ulx3s-85f/monitor/hazard3-boot-monitor.elf.scripts/gdb/load-ulx3s-12f-monitor.gdbUčitava, provjerava i pokreće SDRAM-rezidentni monitor koji stvara potpuni ULX3S 12F build u
build/ulx3s-12f/monitor/hazard3-boot-monitor.elf.scripts/gdb/load-ulx4m-ld-85f-monitor.gdbUčitava, provjerava i pokreće monitor koji stvara potpuni ULX4M-LD 85F build u
build/ulx4m-ld/monitor/hazard3-boot-monitor.elf. Koristite monitor iz istog board builda kao FPGA sliku kako bi sat, memorijska mapa, linker i protokol loadera ostali usklađeni.scripts/gdb/sao-probe.gdbIspituje stanje SAO bridgea iz GDB-a.
scripts/gdb/sao-scan.gdbProvjerava SAO I2C scan put iz GDB-a.
scripts/gdb/sao-touchwheel-test.gdbSAO touchwheel test/debug slijed.
scripts/gdb/sao-touchwheel-led-off.gdbIsključuje touchwheel LED kroz GDB debug put.
CoreMark i analiza ELF-a
scripts/build-coremark.shGradi Hazard3 CoreMark port.
COREMARK_BUILD_PROFILEodabirebaselineilituned; mogu se zamijeniti i broj iteracija, sistemski takt, build direktorij, Hazard3 checkout i prefiks toolchaina.scripts/run-coremark.shPokreće CoreMark slike
performanceilivalidationili koristiqualifyza obje i sažima rezultat. Serijski port može se zadati za automatizirani UART capture.scripts/peek-elf.shPregledava RISC-V mapu/ELF, odabrani GCC multilib, povezane libgcc članove i konačne ISA atribute. Bez argumenata pregledava baseline CoreMark build pod
build/coremark/baseline/.
Higijena repozitorija i generirani inventar
scripts/check-executable.shProvjerava imaju li praćene shell skripte promijenjene u nedavnim commitovima Git executable bit. Zadani prozor je pet najnovijih commitova.
scripts/git-exe.shOznačava jednu praćenu datoteku kao izvršnu u Git indexu i ispisuje rezultirajući zapis indexa.
scripts/check-nettype.shProvjerava
default_nettypeu projektnom RTL-u koji Git prati podsrc/itests/. Izvori vanjskog bootloadera i podmodula nisu uključeni.scripts/inventory.shInventarizira Git-praćene datoteke za zadani put i zapisuje deterministička Markdown, TSV i SHA-256 izvješća. Skripta pita Git za praćene datoteke umjesto obilaska ignoriranih/nepraćenih toolchainova.
scripts/INVENTORY.mdGenerirani ljudski čitljiv inventar direktorija skripti.
scripts/INVENTORY.tsvGenerirani strojno čitljiv inventar direktorija skripti.
scripts/INVENTORY.sha256Generirani SHA-256 izlaz inventara.
scripts/full-clean.shČisti podržane FPGA synthesis ciljeve i uklanja Hazard3-Doom
build/stablo.--dry-runprikazuje čišćenje bez izvođenja. Submoduli, WAD datoteke i uključeni LiteDRAM izvori namjerno se čuvaju.scripts/test-scripts.shPokreće Bash sintaksu i ShellCheck, Python kompilaciju, neobavezno PowerShell parsiranje, provjere generiranih seed matrica, sweep-dispatch provjere i pravila repozitorija. Bez opcija izbjegava izgradnje i hardver.
--integrationdodatno pokreće potpune izgradnje i rutane uzorke sweepova za sve tri ECP5 mete.
./scripts/test-scripts.sh
./scripts/test-scripts.sh --integration --dry-run
./scripts/test-scripts.sh --integration
VisualGDB i provjera Windows toolchaina
scripts/check-windows-visualgdb.ps1Provjerava native-Windows VisualGDB/NMake projektne postavke i očekivane xPack naredbe za build/clean monitora.
scripts/check-wsl-visualgdb.ps1Provjerava WSL VisualGDB bridge, očekivane WSL build/debug putove i završetke redaka praćenih shell skripti potrebne Bashu.
scripts/setup-xpack-riscv-gcc.cmdInstalira/konfigurira xPack GNU RISC-V Embedded GCC pod
bin/riscv-gccza native Windows build tijek.
Napomena
Ponašanje skripti razvija se brže od arhitekturne dokumentacije. Kada neka opcija ovdje nije dokumentirana, kao autoritativni izvor koristite usage/help tekst checkoutane skripte i provjeru varijabli okruženja.