1 poin oleh GN⁺ 2025-10-05 | 1 komentar | Bagikan ke WhatsApp
  • Memperkenalkan eksperimen membeli board Kintex UltraScale+ FPGA seharga 200 dolar dan memanfaatkannya sebagai platform pengembangan
  • Board ini dijual tanpa dokumentasi resmi maupun garansi sehingga ada tantangan pada debugging JTAG dan konfigurasi awal
  • Menjelajahi kemungkinan membangun lingkungan konfigurasi dan debugging FPGA secara mandiri dengan memanfaatkan OpenOCD dan Segger JLink
  • Tujuan eksperimen meliputi verifikasi antarmuka PCIe/Ethernet pada FPGA bekas, pemeriksaan pinout, dan pemantauan sistem
  • Merangkum prosedur bertahap beserta pengalaman pemecahan masalah, mulai dari inisialisasi dan koneksi JTAG, identifikasi scan chain, hingga pemantauan suhu/tegangan

Pengantar

  • Penulis menginginkan FPGA yang kuat untuk prototyping proyek berskala besar, khususnya UltraScale+ dari lini Xilinx Virtex, tetapi karena masalah biaya dan beban lisensi Vivado Enterprise, pilihannya dipersempit ke chip Kintex UltraScale+ yang didukung WebPack (XCKU3P, XCKU5P)
  • Chip-chip tersebut juga menawarkan spesifikasi tinggi yang melampaui level hobi, seperti LUT dalam jumlah besar dan transceiver GTY
  • Diperlukan board pengembangan yang memenuhi syarat minimal 2 SFP+ atau 1 QSFP, JTAG, dan PCIe x8 atau lebih; di tengah pertimbangan antara merancang sendiri, membeli produk Alinx, atau mencari di pasar barang bekas, penulis membeli board FPGA akselerator Alibaba Cloud di Ebay seharga 200 dolar
  • Board yang dibeli sama sekali tidak memiliki dukungan dokumentasi dan belum diketahui apakah berfungsi normal, tetapi ada daya tarik tersendiri untuk mengutak-atik board Kintex UltraScale+ dengan harga murah

Tantangan debugger

  • Menurut dokumen UG908 dari Xilinx, cara umum adalah mengonfigurasi/debug FPGA dengan probe JTAG yang direkomendasikan, tetapi penulis mencoba alternatif open-source (seperti OpenOCD) alih-alih probe resmi yang mahal
  • Dengan mengorbankan toolchain resmi Xilinx (seperti ILA), dimungkinkan untuk mengembangkan logika debugging sendiri berbasis register JTAG USER
  • OpenOCD terutama digunakan untuk ARM/RISC-V, tetapi juga bisa dimanfaatkan untuk FPGA berkat dukungan probe yang luas, kontrol detail atas operasi JTAG, dan dukungan format SVF
  • Dokumentasi terkait dukungan seri UltraScale+ memang minim, tetapi standar JTAG dan SVF serta struktur pemindaiannya tetap berlaku

Rencana keseluruhan

  • Ini adalah rencana eksperimen bertahap untuk mengonfigurasi board FPGA bekas murah dari Ebay dengan probe open-source/tidak resmi tanpa dukungan resmi (OpenOCD, JLink, dsb.) dan memanfaatkannya sebagai platform pengembangan
  • Tiap tahap berjalan dari verifikasi bahwa perangkat board berfungsi → menghubungkan debugger JTAG → mencari pinout → mentransfer bitstream

Tahap 1 - Memastikan board berfungsi normal

  • Jika memori Flash belum terhapus, keberfungsian awal dapat dicek melalui bitstream pengguna sebelumnya, misalnya dengan mengidentifikasi endpoint PCIe atau memeriksa ada tidaknya sinyal Ethernet dari PHY SFP

Tahap 2 - Menghubungkan debugger JTAG

  • Perlu mengetahui lokasi pin antarmuka JTAG, jumlah perangkat yang terhubung, serta kondisi daisy chain
  • Pemantauan suhu/tegangan secara real time melalui register sistem JTAG FPGA (terutama SYSMON) juga dapat dimanfaatkan, dan dukungan openOCD di area ini diharapkan bisa diperluas

Tahap 3 - Menentukan susunan pin (pinout)

  • Diperlukan analisis rangkaian fisik untuk mengetahui jenis/frekuensi/sambungan pin sumber clock eksternal, serta informasi transceiver yang terhubung ke SFP dan PCIe

Tahap 4 - Menulis bitstream

  • Rencananya menggunakan konfigurasi sementara melalui JTAG (bypass Flash), driver openOCD virtex2 + pld, atau pemutaran ulang SVF yang dihasilkan dari Vivado
  • Alur penuh otomatisasi konversi Vivado → SVF juga direncanakan

Penerimaan board dan pengujian awal

  • Penulis menerima board FPGA Kintex UltraScale+ (XCKU3P-FFVB676) bekas akselerator Alibaba Cloud beserta transceiver Huawei SFP28 25G, kabel patch OS2, dan aksesori lain
  • Board tampak cukup bekas dipakai, tetapi kelengkapan serta kondisi PCIe/SFP masih baik

Pemeriksaan daya mandiri

  • Dengan adaptor PCIe-USB, daya disuntikkan secara sederhana lalu keberadaan daya diperiksa secara awal melalui LED dan panas pada hardware

Eksperimen antarmuka PCIe

  • FPGA (Gen3.0, mendukung x8) diuji menggunakan antarmuka eksternal PCIe Gen2.0 x1 milik Raspberry Pi 5, dan diharapkan tetap dikenali berkat kompatibilitas mundur
  • Dari log dmesg Linux, board dikenali sebagai PCIe Bridge dan endpoint (tipe Ethernet); vendor/device id yang ditentukan secara khusus membantu menghindari konflik dengan OS
  • Dengan perintah lspci -vvv, status seluruh perangkat PCIe diperiksa: board ini tercatat mendukung Gen3.0 x8, tetapi saat benar-benar dihubungkan ke Pi, bandwidth/kecepatan turun ke Gen2.0 x1 (karena batasan Bridge dan keterbatasan koneksi fisik sebenarnya)
  • Dari sini dipastikan bahwa antarmuka PCIe board FPGA berfungsi normal

Antarmuka JTAG

  • FPGA Xilinx dapat memperbarui/memuat Internal CMOS Configuration Latch (CCL) berbasis SRAM melalui JTAG
  • Antarmuka JTAG pada board fisik terdiri dari 4 jalur standar (TCK/TMS/TDI/TDO) beserta sinyal daya/ground; reset dapat diimplementasikan melalui FSM Xilinx
  • Susunan pin nyata berbeda dari standar sehingga diperlukan pengkabelan terpisah

Memanfaatkan Segger JLink

  • Dalam kondisi tidak memiliki programmer JTAG resmi AMD, penulis menggunakan Segger JLink bersama OpenOCD
  • Karena JTAG dapat dikonfigurasi hanya dengan 4 GPIO, pendekatan ini cocok untuk eksperimen improvisasi
  • Disediakan diagram pengkabelan antara JLink → board FPGA, dan dengan mempertimbangkan jumper breadboard serta potensi delay sinyal yang panjang, kecepatan TCK (clock) dibatasi ke 1–10MHz

Lingkungan OpenOCD

  • OpenOCD adalah debugger on-chip open-source yang mendukung beragam probe/board
  • Dukungan terhadap format SVF standar (terintegrasi dengan Vivado), serta keterbukaan rangkaiannya, memudahkan analisis/patch mandiri saat muncul masalah
  • Penulis membangun dan menggunakan OpenOCD terbaru (0.12.0+dev) beserta pustaka JLink secara mandiri

Verifikasi JTAG Scan Chain dan pengecekan IDCODE

  • Dalam kondisi skematik board tidak diketahui, fitur pemindaian otomatis OpenOCD digunakan untuk menelusuri perangkat/IDCODE dalam JTAG chain
  • Dipastikan bahwa board ini cocok dengan IDCODE milik Xilinx KU3P (0x04a63093)
  • Dengan menentukan panjang IR (instruction register length 6 bit) secara manual, deteksi normal juga berhasil dilakukan
  • Pada akhirnya, susunan JTAG scan chain board berhasil dipetakan

Monitor sistem SYSMON

  • Pada generasi lama Xilinx digunakan XADC, sedangkan lini UltraScale+ memiliki fungsi pengukuran suhu/tegangan bawaan SYSMON4
  • Secara default, openOCD belum mendukung integrasi JTAG untuk SYSMON sehingga perlu ditambahkan sendiri
  • Dengan mengirim perintah SYSMON (DRP) dan memanfaatkan register status, kemampuan untuk memeriksa suhu/tegangan secara real time juga dapat diretas melalui skrip

Melalui rangkaian proses di atas, penulis mencatat pengalaman membangun dasar debugging dan pemanfaatan board akselerator FPGA Alibaba Cloud lama tanpa dukungan resmi—meliputi antarmuka PCIe/JTAG dan pemantauan sistem—dengan biaya murah dan hanya menggunakan alat open-source.

1 komentar

 
GN⁺ 2025-10-05
Komentar Hacker News
  • Saya pernah menguji antarmuka PCIe pada board Lattice Certus-Pro NX "Versa" dengan Raspberry-PI V, dan rasanya sangat praktis Raspberry-PI V cukup cepat untuk menjalankan perangkat lunak desktop modern (bahkan Microsoft Teams!) Saya bisa mendemokan desain FPGA secara live dan membagikan layar desktop saat conference call Satu-satunya kekurangan adalah dokumentasi SoC Broadcom yang minim Intel, di sisi lain, memberi semua dokumentasi chip jika lewat NDA, sehingga saya bisa membuat lingkungan FPGA PCIe yang keren di Xeon Ivy Bridge Dengan menyimpan register konfigurasi PCI, lalu mengonfigurasi ulang FPGA dan memprogram kembali register tersebut, chip bisa muncul di bus tanpa perlu reboot server atau re-enumerate, yang sangat nyaman Kuncinya adalah sementara mengatur bit root complex saat reconfiguration untuk menonaktifkan deteksi error PCIe (Waktu itu saya memakai Altera Stratix-IIgx) Sepertinya ada cara lain juga, jadi saya tinggalkan referensinya: tautan Stack Overflow Secara keseluruhan, kalau dokumentasinya bagus, pelaporan error dalam proses startup PCIe sangat berguna

    • Ini benar-benar trik yang keren Dalam kasus saya, saya beberapa kali mengalami masalah saat mengutak-atik konfigurasi PCIe di Linux Pada akhirnya kami menyelesaikannya dengan memakai Partial Reconfiguration, jadi bagian PCIe dibiarkan tetap dan hanya bagian lain yang dimuat ulang Jelas ada trade-off dari sisi layout dan reservasi ruang
  • Jika Anda punya adaptor FT2232H (atau jika belum, saya sarankan beli satu), adaptor ini bisa di-flash agar mudah kompatibel dengan Vivado Referensi: panduan Vivado FTDI Device Programming

    • Di perusahaan kami, FT2232H selalu tersedia 20-30 unit sebagai stok Sangat berguna karena mendukung berbagai protokol seperti GPIO, I2C, SPI, parallel FIFO, dan lainnya Dan library Python pyFTDI sangat bagus

    • Saya punya adaptor ini sisa dari proyek lain, tapi belum pernah mengerjakan FPGA Saya penasaran apa arti sebenarnya dari kompatibel dengan Vivado Apakah itu berarti bisa melakukan konfigurasi FPGA AMD, atau ada arti lain?

  • Ini mengingatkan saya pada kasus inovatif Alibaba di bidang database, yang menangani LSM compaction dengan cluster FPGA melalui custom MySQL storage engine Referensi: PDF paper terkait Dibanding RocksDB, throughput dan latensinya meningkat drastis, bahkan naik satu tingkat pada beberapa beban kerja Teknologi ini sempat ditawarkan sebagai layanan, tetapi akhirnya ditarik Saya tidak tahu apakah mereka masih memakainya secara internal, tetapi saya tetap terkejut bahwa hampir tidak ada tempat yang memanfaatkan akselerasi hardware untuk pekerjaan database yang repetitif

    • AWS juga beberapa tahun lalu memakai akselerator kueri hardware sendiri di Redshift Referensi: pengantar Redshift AQUA Belakangan ini AWS tampaknya lebih fokus pada P&L, jadi saya tidak tahu seberapa besar perhatian atau dampak peningkatan performanya sekarang
  • Jika tertarik pada FPGA PCIe atau kartu PCI, ada cukup banyak board Gidel bekas juga Ada berbagai seri seperti ProcSpark/ProcStar Perangkat lunak resminya proprietary, dan karena ada beberapa FPGA, untuk langsung memakainya di Quartus Anda perlu mencari pinout-nya dulu Saya sempat mendapatkan satu board dengan Stratix IV raksasa terpasang Board Kintel UltraScale+ benar-benar menggoda, jadi tulisan ini sangat mengesankan bagi saya

    • Saya mendapatkan modul Verilog level atas dan file .xdc Vivado (pin map, timing constraints, dll.) untuk Gidel HawkEye 20G-48 Saya tidak punya SDK dari Gidel Proyek jangka panjang saya adalah menghubungkan dua unit lewat 10 GbE untuk membuat sniffer/middleman/emulator perangkat PCIe TLP Port 10 GbE yang tersisa akan dipakai untuk mengirim TLP hasil sniffing dan injection ke host PC PCIe hard IP pada FPGA Aria 10 bisa bekerja baik dalam mode root maupun endpoint, jadi semuanya harus benar-benar transparan tanpa modul IP Quartus Saya tidak tahu seperti apa rasanya meneruskan PCIe TLP dari perangkat cepat melalui link 10 gigabit, tetapi fail0verflow berhasil membuat proxy TLP bahkan lewat UART 115200 baud tautan referensi Gidel HawkEye 20G-48 slide presentasi fail0verflow
  • Jika Anda berada di Tiongkok, produk yang sama dijual di idlefish seharga 480 yuan (sekitar 68 dolar) Murahnya nyaris sulit dipercaya, jadi saya berniat mencobanya sendiri

  • Saya belum tahu apakah informasi pinout untuk konektor SFP di bagian belakang sudah ditemukan Jika bagian ini terdokumentasi dan jalur PCI-e juga bisa dipastikan, rasanya akan menyenangkan mencoba membuat peralatan jaringan optik kustom dengannya Transceiver SFP hanya meneruskan sinyal dari input ke output, jadi ini juga memungkinkan pembuatan perangkat sinyal optik kustom yang menarik, baik untuk backplane PCIe maupun secara mandiri

    • Informasi pinout konektor SFP sudah ada di bagian pinout
  • Apakah ada yang tahu contoh implementasi jaringan saraf atau arsitektur connectionist lain dengan FPGA? Salah satu hal paling menarik dari FPGA adalah chip "kustom" masih bisa dijangkau oleh universitas maupun individu Di saat AI sangat terpusat pada LLM, saya rasa ada peluang bagi kelompok kecil/individu untuk bereksperimen dengan pendekatan kecerdasan buatan bottom-up yang lebih berorientasi pada hewan menggunakan FPGA

    • Di FNAL, jaringan saraf berbasis FPGA dipakai untuk inferensi pada hasil eksperimen fisika energi tinggi LHC/CMS Ada juga kasus untuk mengendalikan sistem dinamis pada skala mikrodetik Beberapa referensi: HLS4ML PDF presentasi CERN IRIS-HEP Whitepaper Deploying tinyML on FPGAs PDF contoh NeurIPS ML4PhysicalSciences

    • Saya penasaran apakah yang dimaksud dengan "implementasi jaringan saraf dengan FPGA" adalah inferensi sebagai akselerator hardware, atau benar-benar mensintesis keseluruhan jaringan (termasuk bobotnya) langsung ke arsitektur FPGA Dalam kedua kasus itu, FPGA tidak benar-benar bisa mengimplementasikan logika yang sepenuhnya arbitrer; strukturnya tetap memanfaatkan blok terbatas hasil sintesis perangkat lunak Untuk kasus seperti LLM yang membutuhkan memori besar dan bandwidth tinggi, FPGA tidak cocok Memang bisa menghubungkan memori berkecepatan tinggi ke FPGA, tetapi untuk use case itu GPU masa kini jauh lebih unggul

    • Coba lihat differentiable logic gate networks, cukup menarik

    • Paper referensi: arXiv:2404.10076

    • Saya penasaran kenapa downvote-nya banyak Sepemahaman saya, AI membutuhkan banyak RAM dan RAM yang cepat untuk modelnya, jadi FPGA kurang cocok FPGA memang punya pin untuk menghubungkan RAM cepat, tetapi desain board dan jalur lapisannya menjadi sangat rumit Karena itu kartu grafis jauh lebih cocok

  • Melihat demam AI ini, secara pribadi saya berpikir begini

    • Dalam jangka panjang, hardware inferensi tampaknya tidak akan punya hambatan masuk yang besar (untuk sisi training saya kurang tahu)
    • Model itu sendiri adalah komoditas yang mudah diganti
    • Kecepatan rilis produk lebih lambat dari yang saya kira; sudah 3 tahun sejak ChatGPT dirilis, tetapi saya masih belum menemukan layanan yang saya inginkan (unggah dokumen lalu tanya jawab)
    • Saya penasaran apa maksudnya bisa bertanya setelah mengunggah dokumen Bukankah sudah ada layanan yang mendukung fungsi itu seperti NotebookLM atau Gem dari Gemini? (Saya kurang tahu alternatif dari vendor lain)
  • Masih ada banyak stok di eBay tautan eBay Sepertinya GPIO tidak dikeluarkan lewat header atau semacamnya; kalau ada ide proyek yang cocok dipakai, mohon rekomendasinya

    • Ini kabar yang sangat bagus Selama masa Covid, hardware murah seperti ini benar-benar menghilang, dan sekarang kita bisa mendapatkan Kintex lagi seharga 200 dolar Waktu kecil saya sangat tertarik pada kartu seperti ini, dan 2x SFP plus PCIe mengingatkan saya pada proyek NetFPGA Kartu ini sempurna untuk tujuan itu
  • Saya terkesan dengan kalimat "board-nya datang dengan travel case" Saya penasaran kenapa begitu, apakah board ini sering dicabut dari data center lalu dipindahkan? Atau apakah penjual eBay yang memasukkannya sebagai pelindung?

    • Itu dimasukkan supaya bisa dibawa ke lapangan Karena ini Field Programmable Gate Array, artinya bisa diprogram di lapangan (candaan)