Menyelaraskan dua dunia dalam satu produk: memahami hardware-software co-design, interface contract, dan trade-off yang membuat keputusan hardware memengaruhi software (dan sebaliknya) sejak tahap awal.

Setelah di episode 24 produk kalian diproduksi dengan yield baik, pada episode ini kita menutup lingkaran dengan keterampilan yang paling menentukan keberhasilan produk modern: hardware-software co-design. Semua produk masa kini adalah perpaduan — dan keputusan di satu sisi hampir selalu berdampak ke sisi lain.
Mengapa co-design penting? Karena "hardware selesai dulu, baru software" adalah resep keterlambatan dan pembengkakan biaya. Perubahan yang murah di tahap desain (mengganti pin, menambah peripheral) menjadi sangat mahal setelah board difabrikasi. Co-design membuat kedua tim mendesain bersama sejak desain plan — tepat seperti konteks 2026 yang kita bahas di episode 1.
Hardware-software co-design adalah pendekatan di mana keputusan hardware dan software dibuat bersama, dengan mempertimbangkan dampak keduanya secara serentak — bukan berurutan.
Pertanyaan inti partisi: fungsi mana yang dikerjakan hardware, mana yang software?
| Fungsi | Bisa di Hardware (lebih cepat, kaku) | Bisa di Software (fleksibel, lambat) |
|---|---|---|
| Decode protokol | Peripheral hardware (UART/SPI) | Bit-banging di CPU |
| Filter sinyal | Rangkaian analog / DSP hardware | Filter digital |
| Debounce tombol | RC filter | Firmware (episode 11) |
| Enkripsi | Secure element / HW crypto | Library software |
| AI inference | NPU (episode 21) | CPU saja |
Tidak ada jawaban mutlak — selalu ada trade-off, dan itulah yang membuat co-design menarik.
Di episode 11 kita menulis interface spec untuk pin. Interface contract adalah versi yang lebih utuh — mencakup behavior, timing, dan protokol, bukan hanya tabel pin:
"# Interface Contract: [Sistem]
## Bagian 1: Listrik (dari hardware)
- Level: 3.3V CMOS
- Pin map lengkap (dari interface spec episode 11)
## Bagian 2: Timing (dari hardware, dipakai software)
- Sinyal ready: minimum 10us setelah VDD stabil
- I2C: 100kHz standar, clock stretching diizinkan
- Interrupt: rising edge, aktif selama 50ms min
## Bagian 3: Protokol (dari software, dipakai hardware)
- Format frame: 1 byte header, 2 byte length, payload, CRC8
- Command set: 0x01 read, 0x02 write, 0x03 status
- Error: 0xFF = busy, 0xFE = invalid
## Bagian 4: Konvensi & Change Management
- Perubahan wajib disetujui dua arah
- Revisi dokumen + changelogContract yang baik menjawab pertanyaan yang akan muncul saat debugging: "berapa lama hardware menunggu sebelum sinyal ready?" — jawabannya ada di dokumen, bukan di tebakan.
Tip
Saat dua tim sama-sama "fleksibel", konflik tak terhindarkan. Interface contract memberi titik acuan yang netral: jika terjadi perbedaan pendapat, kembali ke contract — dan jika contract salah, revisi bersama, bukan saling menyalahkan. Dokumen ini adalah bentuk komunikasi paling hemat energi tim.
Beberapa trade-off klasik yang harus diputuskan bersama:
Hardware peripheral (UART internal MCU): hemat CPU, tapi pin dan fitur terikat. Bit-banging (mengatur pin via software): fleksibel, tapi menghabiskan CPU dan jitter.
Keputusan: jika CPU sibuk dan timing kritis → peripheral hardware. Jika kebutuhan fleksibel dan protokol berubah → bit-banging (dengan pin yang tepat).
Software bisa "menambal" hardware yang kurang: kompresi data, algoritma yang lebih efisien, atau pemrosesan di MCU untuk mengganti NPU. Pertanyaan kunci: apakah lebih murah menambah hardware atau menambah effort software?
"Sensor menghasilkan data 1MB/detik.
Opsi A: MCU + flash besar + buffer di firmware (hardware murah, software rumit)
Opsi B: FPGA/NPU melakukan pre-filter (hardware mahal, software sederhana)
Pada volume 10.000 unit, selisih $1/unit = $10.000
-> Jika software bisa menutup dengan $5.000 effort, pilih A.
-> Hitung biaya total, bukan biaya favorit.Besar SRAM, jumlah DMA channel, dan peripheral menentukan batas kemampuan software. Keputusan hardware yang terlihat kecil (memilih MCU dengan 32KB vs 64KB SRAM) mengubah seluruh arsitektur software.
Produk yang bisa di-update firmware (OTA) menggeser partisi ke software — fitur baru bisa datang tanpa ubah hardware. Produk yang tidak bisa di-update harus "benar" sejak awal. Ini keputusan arsitektur yang harus disepakati di desain plan.
"# Co-Design Plan: [Produk]
## Prinsip
- Keputusan HW/SW diputuskan bersama di desain plan
- Interface contract mengikat sejak minggu 1
- Perubahan interface = revisi bersama
## Partisi Awal
| Fungsi | Owner | Alasan |
|---|---|---|
| Decode frame UART | HW (UART peripheral) | Timing kritis, hemat CPU |
| Debounce tombol | SW (firmware) | Fleksibel, tak butuh HW |
| Filter ADC | SW (moving average) | Cukup cepat di MCU |
| Enkripsi | HW (secure element) | Kunci aman (episode 18) |
| AI keyword | HW (NPU) | CPU tak mampu (episode 21) |
## Risiko & Milestone Bersama
- Minggu 2: interface contract v1 disetujui
- Minggu 3: skematik + firmware stub jalan bersama
- Minggu 5: prototype + firmware dasar terintegrasi
- Minggu 8: validation bersama (episode 15)Warning
Integrasi adalah momen paling berisiko di proyek hardware-software. Jika kedua tim baru bertemu di hari integrasi, siapkan diri untuk kejutan. Sebaliknya, jika contract disepakati di awal dan kedua tim mengembangkan terhadapnya, integrasi menjadi proses verifikasi — bukan medan perang.
Pada episode 25 ini, kalian telah memahami bahwa hardware-software co-design adalah cara kerja produk modern: dua dunia yang didesain bersama, bukan berurutan.
Inti yang harus dibawa pulang:
Di episode 26 selanjutnya kalian melihat peta besar tahun 2026: ekosistem & tren modern — edge AI, IoT, open hardware, sustainability, dan arah industri tempat kalian akan bekerja. Sampai jumpa di episode 26!