Kendi kodun.
Kendi Basys3'ün.
Apple Silicon Mac'ine bir kez kur. VS Code veya istediğin editörde kendi SystemVerilog devreni yaz, kaydet ve Basys3'ünde çalıştır.
Sanal makine yok, Rosetta yok.
Kısa kurulum ve çalıştırma rehberi: istediğin yere bir .sv dosyası kaydet. VS Code’da açıp ▶ Run on Basys3 düğmesine bas; başka editörde dewfpga run dosyam.sv kullan. Standart kart pinleri otomatik: klasör veya pin dosyası hazırlaman gerekmez. Devrenin davranışını yazdığın kod belirler. Araçlar ve elle kurulum için ayrıntılı dokümantasyon var. Rehberler İngilizce.
Kart yanında değil mi, hiçbir şey kurmak istemiyor musun? Basys3 simülatörü tasarımını doğrudan tarayıcıda çalıştırıyor, switch'leri elle çeviriyorsun, LED'ler yanıyor. Testbench çalıştırıcı da testbench'ini koşup dalga formunu çiziyor. Şunlar için değil: Intel Mac, Vivado IP Catalog'undan herhangi bir şey, Vivado'nun kabul ettiği bazı SystemVerilog yapıları. Aşağıda hepsi yazıyor.
$ make sim
PASS: 3 checks (see the waveform for the toggle)
$ make bit
xdc ok: 33 ports, all mapped.
pnr ok: 73 LUT, 27 FF, 278.71 MHz (PASS at 100.00 MHz) (full log: blink.log)
blink.bit 2.2 MB
$ make flash
Load SRAM: [==================================================] 100.00%
Done
Shift IR 35
ir: 1 isc_done 1 isc_ena 0 init 1 done 1
Yukarıdaki, 8 GB'lık M2'mde blink örneğinin gerçek çıktısı. Son satırdaki done 1, çipin tasarımı kabul ettiği anlamına geliyor; o an LED 0 yanıp sönmeye başlıyor. .sv'den .bit'e 4.6 saniye. Zincir diskte yaklaşık 0.3 GB yer kaplıyor (7 Ekim'de ölçülen 237 MB; isteğe bağlı ajan SDK'sı 51 MB ekler; elle kurarsan kılavuzdaki listeyi silene kadar 1.76 GB), Vivado 50 ila 100 GB istiyor.
Nasıl çalışıyor?
Kendi tasarımını kaynak kodundan karta taşımak farklı araçların sırayla çalışmasını gerektiriyor. Burada her işi ayrı bir açık kaynak araç yapıyor, bir de bir kez üretilen chip database var; küçük bir Makefile hepsini sırayla çalıştırıyor.
| aşama | araç |
|---|---|
| simülasyon | Icarus Verilog |
| sentez | Yosys |
| yerleştirme ve yönlendirme | nextpnr-xilinx, kaynaktan derleniyor |
| bitstream | prjxray fasm2frames + xc7frames2bit |
| chip database | XC7A35T için bir kez üretiliyor |
| karta yükleme | openFPGALoader, USB üzerinden |
Yazdığın .sv ve .xdc, Vivado'ya vereceğin dosyaların aynısı. Dersin verdiği pin dosyaları da olduğu gibi çalışıyor; sadece kullandığın pinlerin başındaki #'i kaldırıyorsun.
Neden böyle bir şey yaptım?
Vivado'nun macOS sürümü yok, sanal makine de istemedim. Zinciri elle kurmak altı saatimi aldı; sebebi, hiçbiri tek yerde yazmayan altı duvardı. Bu hizmetin ortaya çıkmasına neden olan kurulum sorunları burada (İngilizce). Bir adım patlarsa en hızlı yol hata metnini aramak: kurulumda karşıma çıkan her hata, çözümüyle (İngilizce).
Neyi yapamıyor?
- Vivado'nun IP Catalog'undan hiçbir şey çalışmıyor: Block Design, MicroBlaze, AXI, Clocking Wizard, hazır BRAM, VGA ve UART blokları yok. İhtiyacın olan işlevi kendi sentezlenebilir kodunla yazabilirsin; hazır üretici IP bloğunu içe aktarmak ayrı bir yetenek.
- Mac'teki zincirde dalga formu görüntüleyici, şematik ya da çip içi debugger yok:
dewfpga simbir.vcddosyası bırakıp duruyor. Dalga formuna bakmak istersen tarayıcıdaki testbench çalıştırıcıyı kullan. - Vivado'nun derlediği bazı SystemVerilog yapıları burada derlenmiyor, bazıları da hata vermeden yanlış bitstream üretiyor. Şimdiye kadar ölçtüğüm yapılar, Vivado'nun ne yaptığıyla yan yana: liste.
- Sadece Basys3 (XC7A35T) ve sadece Apple Silicon denendi. Intel Mac, Linux ve başka kartlar için bir şey diyemem.
- Bu araçlar resmi değil, AMD'nin yaptığı ya da desteklediği şeyler değil. Lab demosundan önce tasarımını bir kez okuldaki bilgisayarda Vivado'da açmanı öneririm.
Sırada ne var?
Tarayıcıda derleyici: hiçbir şey kurmadan SystemVerilog'dan Basys3 bitstream'ine. O henüz açık değil. Simülatör, testbench çalıştırıcı ve komut satırı aracı kullanıma açık.
Kim yaptı?
Damla Su Bilge, Bilkent CS. Buradaki her şeyi 19 Eylül 2026'da 8 GB RAM'li bir M2'de, macOS 15 ve elimdeki Basys3 ile çalıştırdım. Bir adım sende patlarsa terminalin son on satırını ve kaçıncı adımda olduğunu yaz: GitHub'da issue açabilirsin ya da LinkedIn'den ulaşabilirsin.