Pengembangan Perangkat Lunak Pra-Silikon: Mempercepat Waktu ke Pasar dengan Emulasi SoC
Dalam era teknologi yang bergerak cepat saat ini, pendekatan paling umum untuk memenuhi permintaan pasar adalah system-on-chip (SoC). Sebuah SoC adalah satu inti prosesor terpadu yang dikelilingi oleh akselerator spesialis dan I/O ekstensif yang mendukung periferal yang dioperasikannya.
Sejak boom data seluler pada 2002, SoC telah menjadi tak tergantikan untuk mengaktifkan fitur inti yang mendefinisikan smartphone. Tren yang sama kini mendorong keberadaan mereka yang luas dalam perangkat konsumen “pintar”—TV pintar, mobil terhubung, dan ekosistem Internet-of-Things (IoT) yang berkembang pesat.
Permintaan yang meningkat untuk SoC telah mengubah pasar menjadi arena yang sangat kompetitif. Responsnya, desainer membangun perangkat yang lebih kompleks, terus mengembangkan keluarga periferal, dan menyusutkan jendela antara desain dan peluncuran. Untuk mengikuti jejak, perangkat lunak harus tersedia secepat mungkin dan harus cukup kuat untuk menghindari perbaikan post-tape-out yang mahal.
Secara tradisional, tim perangkat lunak SoC menunggu contoh silikon pertama sebelum memulai pengembangan. Kedatangan prototipe silikon akan memicu sprint bring-up yang singkat dan intens di mana pengembang dari seluruh dunia berkumpul untuk memvalidasi driver dan antarmuka. Bahkan dengan jadwal agresif ini, perangkat lunak biasanya membutuhkan bulan—kadang-kadang tahun—untuk mencapai kesiapan produksi, sehingga sedikit kepercayaan sebelum produksi massal dapat dimulai.
Dengan desain SoC yang semakin besar dan kompleks, kesenjangan antara ketersediaan silikon dan perangkat lunak yang siap produksi dapat merangkak menjadi beberapa tahun. Evolusi yang cepat dari keluarga periferal—audio, video, USB, Ethernet, dll.—juga menciptakan kesenjangan keahlian yang harus diatasi dengan merekrut spesialis, yang lebih meningkatkan biaya dan jadwal.
Untuk menyampaikan perangkat lunak yang andal lebih awal, industri mengadopsi filosofi “shift-left”: memulai pengembangan secara bersamaan dengan desain hardware. Pengembangan pra-silikon tidak hanya mempercepat pipeline perangkat lunak tetapi juga mengungkapkan bug tingkat desain, memungkinkan penyelubungan mask mahal dihindari.
Strategi Pengembangan Pra-silikon
Perangkat lunak dapat dimulai sebelum tape-out menggunakan beberapa teknik: prototipe perangkat lunak, testbench RTL, prototipe FPGA, dan, paling efektif, emulasi sistem penuh. Setiap metode fokus pada tingkat abstraksi tertentu dan datang dengan trade-off masing-masing.
Model Behavior System-C
Membuat model System-C untuk setiap blok IP memungkinkan pengembang menulis dan menguji driver dalam isolasi. Namun, upaya untuk memodelkan setiap periferal dengan akurat adalah besar, membutuhkan tim yang khusus yang dapat dengan cepat melebihi anggaran proyek. Selain itu, model behavior sangat bergantung pada interpretasi modeler; ketidakcocokan antara niat desain dan model dapat mengarah pada bug halus yang mahal untuk didiagnosis nanti.
Testbench RTL
Testbench RTL, yang dibangun dari Verilog atau VHDL yang sama yang digunakan untuk verifikasi, menyediakan simulasi siklus-akurat dari seluruh SoC. Mereka tetap sinkron dengan desain hardware, memastikan representasi yang paling terkini. Kekurangannya adalah kecepatan: simulasi siklus-akurat jauh lebih lambat dari hardware nyata, membuat pengembangan driver menjadi proses yang lambat berlangsung berbulan-bulan yang dapat meniadakan manfaat dari memulai lebih awal.
Prototipe FPGA
FPGA modern sekarang mampu mensintesis seluruh blok IP dari RTL, memberikan perilaku siklus-akurat pada sebagian kecil waktu simulasi. Dengan memetakan setiap periferal pada FPGA terpisah, pengembang dapat menulis dan mendebug driver dengan cepat. Trade-offnya adalah integrasi SoC penuh—bagaimana blok berkomunikasi dan berbagi sumber daya—hilang, membatasi kedalami validasi dan meninggalkan masalah tingkat integrasi untuk muncul hanya setelah silikon tersedia.
Sinopsis solusi pengembangan perangkat lunak pra-silikon. (Sumber: Nitin Garg)
Emulator SoC
Emulator SoC mewakili pendekatan paling seimbang. Dibangun pada RTL yang sama dengan silikon, mereka menawarkan kinerja siklus-akurat sambil berjalan 100× lebih cepat dari testbench Verilog. Kecepatan ini memungkinkan porting OS lengkap, pengembangan driver, dan pengujian tingkat sistem dalam minggu bukan bulan.
Emulator juga mendukung berbagai periferal—UART, I²C, pengontrol layar, PCIe, Ethernet, Wi-Fi, kamera, sensor—memungkinkan pengembang untuk mengemulasi papan pengembangan lengkap. Perangkat lunak dapat di-debug dengan alat JTAG standar, dan perangkat nyata atau virtual seperti flash NAND dapat dilampirkan, menyediakan lingkungan yang realistis untuk validasi ROM, OS, dan firmware.
Di luar pengembangan awal, emulator bersinar selama debug pasca-silikon. Karena mereka menjalankan OS dan driver yang sama dengan produk akhir, insinyur dapat mereplikasi masalah tingkat silikon pada emulator, menganalisis jejak sinyal, dan memverifikasi perbaikan sebelum silikon mencapai lapangan.
Dalam studi perbandingan, emulator secara konsisten unggul dibandingkan model System-C, testbench RTL, dan prototipe FPGA dalam hal kecepatan, cakupan, dan efektivitas biaya. Sementara investasi awal dalam platform emulator mungkin tampak tinggi, penghematan dari waktu ke pasar yang lebih terpendek dan mitigasi risiko sering kali melampaui biaya.
Gambar 2. Kecepatan eksekusi perbandingan setiap solusi. (Sumber: Nitin Garg)
Menurut Hukum Moore, jumlah transistor melipat dua setiap dua tahun, mendorong SoC berbasis ARM 64-bit saat ini menuju 100–300 juta logika gerbang. Dalam lingkungan ini, hanya emulator sistem penuh yang dapat menskala untuk memenuhi tuntutan tim perangkat lunak SoC modern.