Izgradnja Hazard3-Dooma

Važno

Bash/WSL build okruženje

Ove build naredbe su Linux/Bash naredbe. Na Windowsu ih pokrenite iz WSL s Ubuntuom. PowerShell i cmd.exe nisu podržane build ljuske za .sh skripte repozitorija.

Potpune izgradnje za pločice

Potpune omotne skripte za pločice najsigurniji su način za izgradnju međusobno usklađenih FPGA slike, monitora i Doom slike za jedan cilj.

ULX3S 85F, 64 MiB, 50 MHz:

./scripts/build-ulx3s-85f-doom.sh

Kompaktni cilj ULX3S 12F, zadano 32 MiB, 40 MHz:

./scripts/build-ulx3s-12f-doom.sh

ULX4M-LD 85F, softverska mapa 64 MiB, Hazard3 na 40 MHz i LiteDRAM na 60 MHz. Uobičajeni build mora zadovoljiti sva ograničenja takta:

./scripts/build-ulx4m-ld-doom.sh

Potpune omotne skripte spremaju artifacts specifične za cilj u direktorije vezane uz pločicu. Konkretno, Doom slike za prijenos nalaze se ovdje:

build/ulx3s-85f/doom-image/hazard3-doom.h3img
build/ulx3s-12f/doom-image/hazard3-doom.h3img
build/ulx4m-ld/doom-image/hazard3-doom.h3img

Samostalna naredba doom/build-doom-image.sh dokumentirana niže na ovoj stranici i dalje koristi generički direktorij build/doom-image/ osim ako je postavljen HAZARD3_DOOM_BUILD_DIR.

Build koristi zajedničke ULX4M-LD postavke definirane u scripts/build-ecp5-bitstream-common.sh i sažete u Profili pločica. Povijesna, verzijski spremljena zamrznuta kontrolna točka seed 2 također je prošla potpunu DDR kvalifikaciju na ULX4M-LD pločici s Micron memorijom. Novi potpuni build ipak stvara novi netlist, pa za release artifact ponovno pokrenite timing sweep i hardverske testove. ALLOW_TIMING_FAILURE=1 rezerviran je za izričite ULX4M-LD sweep eksperimente, a ne za release buildove. Pogledajte Profili pločica i ECP5 timing i seed sweepovi.

Omotna skripta za 12F podržava SDRAM mapu od 32 MiB ili 64 MiB, ali je zadana vrijednost 32 MiB. Ako odaberete mapu od 64 MiB, monitor i Doom slika moraju biti međusobno usklađeni:

HAZARD3_MEMORY_PROFILE=64m ./scripts/build-ulx3s-12f-doom.sh

Kompaktni cilj 12F namjerno podržava samo Doom/video put 320x200. Njegov EBR od 1 KiB ne može sadržavati puni monitor, pa potpuni build stvara mali rezidentni UART bootstrap i ugrađuje ga u fpga_ulx3s_12f.bit. Pri hladnom pokretanju bootstrap inicijalizira konzolu na 115200 baud i objašnjava da se puni monitor nalazi u SDRAM-u. Nakon programiranja 12F bitstreama pokrenite:

./scripts/load-firmware-12f.sh

Pomoćna skripta ponovno koristi OpenOCD server koji već sluša na localhost:3333 ili automatski pokreće scripts/start-openocd.sh, čeka GDB server, učitava i provjerava build/ulx3s-12f/monitor/hazard3-boot-monitor.elf te zaustavlja samo OpenOCD proces koji je sama pokrenula.

Samo rezidentni monitor

Generički alat za izgradnju monitora zadano koristi mapu od 64 MiB na 50 MHz:

./scripts/build.sh

Tipični izlazi:

build/hazard3-boot-monitor.elf
build/hazard3-boot-monitor.map
build/hazard3-boot-monitor.bin

Potpune omotne skripte za pločice umjesto vas postavljaju profil memorije, sistemski takt i linker skriptu za ciljni uređaj. Za ručne izgradnje glavne su kontrole HAZARD3_MEMORY_PROFILE, HAZARD3_SYS_CLK_HZ i HAZARD3_MONITOR_LINKER_SCRIPT.

Za softversko ažuriranje samo ULX4M-LD monitora na već konfiguriranom FPGA-u na 40 MHz, spremite izlaz odvojeno od rezidentnog preloada:

HAZARD3_BUILD_DIR="$PWD/build/ulx4m-ld-monitor-test/monitor" \
HAZARD3_MEMORY_PROFILE=64m \
HAZARD3_SYS_CLK_HZ=40000000 \
    ./scripts/build.sh

Učitajte ga kroz već pokrenutu OpenOCD sesiju pomoću:

./scripts/load-firmware.sh \
    ./build/ulx4m-ld-monitor-test/monitor/hazard3-boot-monitor.elf

Time se ažurira samo procesorski softver u aktivnom FPGA-u i ne rerouta se poznato dobar bitstream.

Samo povezana Doom slika

Za profil od 64 MiB koji koriste ULX3S 85F i ULX4M-LD 85F:

HAZARD3_MEMORY_PROFILE=64m ./doom/build-doom-image.sh

Za 12F sliku od 32 MiB:

HAZARD3_MEMORY_PROFILE=32m \
HAZARD3_DOOM_HDMI_RESOLUTION=320x200 \
    ./doom/build-doom-image.sh

Tipični izlazi:

build/doom-image/hazard3-doom.elf
build/doom-image/hazard3-doom.map
build/doom-image/hazard3-doom.bin
build/doom-image/hazard3-doom.h3img

Ispitivanje druge Hazard3 kopije

Možete ispitati drugu kopiju hardvera bez promjene pokazivača na podmodul Hazard3-Dooma:

HAZARD3_ROOT=/mnt/c/workspace/Hazard3 \
    ./scripts/build-ulx3s-85f-doom.sh

Priprema i provjera podmodula

Inicijalizirajte podmodule potrebne za izgradnju:

./scripts/setup-submodules.sh

Time se inicijaliziraju DoomGeneric i Hazard3 te ugniježđeni Hazard3 podmoduli scripts i example_soc/libfpga. Za inicijalizaciju cijelog rekurzivnog stabla:

HAZARD3_INIT_ALL_SUBMODULES=1 ./scripts/setup-submodules.sh

Za dijagnostiku povijesti izvora i podmodula pogledajte Referenca skripti. Posebno, Windows naredba check_submodules.bat provjerava lokalno zabilježene gitlinkove, dok hazard3-doom-source-status.sh uspoređuje grane između povezanih GitHub forkova.

Odabir seeda

Nemojte naslijepo ponovno koristiti prethodno dobar nextpnr seed nakon značajne promjene netliste. Upotrijebite skripte samo za placement za brzo rangiranje kandidata, a potpune routed sweepove za mjerodavno mjerenje vremena i generiranje bitstreama.

Na primjer, tok za 12F može koristiti:

SWEEP_JOBS=30 ./scripts/sweep-peek-ulx3s-12f.sh --all
SWEEP_JOBS=30 ./scripts/sweep-ulx3s-12f.sh --all

Pogledajte Referenca skripti za katalog sweep pomoćnika i ECP5 timing i seed sweepovi za GitHub Actions matricu, odabir parametara, live timing monitor, timeoute, artifacts i pravila reproducibilnosti.

Vlasništvo nad izgradnjom

Projekt namjerno zadržava višekratno upotrebljiv FPGA/CPU hardver u Hazard3, a dijelove monitora/aplikacije specifične za Doom u Hazard3-Doomu. Pogledajte Raspored repozitorija i vlasništvo.