A close-up photograph capturing an engineer's hand wearing a white glove, gently probing a central processor unit (CPU) on an open automotive engine control unit (ECU). The ECU is connected by a cable to a multi-channel signal generator with a display showing waveform, and then to a laptop. The laptop screen displays 'Fault Injection Management' software, showcasing charts like 'Fault Detection Rate' (green bars) and 'Fault Injector Status', indicating an ongoing fault injection reliability test. The background is a well-lit, professional electronics development lab with an oscilloscope and other equipment blurred.

Pengujian Keandalan IC dan Perangkat Lunak: Panduan Praktis untuk Injeksi Kesalahan

Pengarang: Johnny Liu, CEO di Dowway Vehicle

Diterbitkan: 21 Juli 2026

Kategori: Sistem Tertanam, Keselamatan Otomotif, Rekayasa Perangkat Keras, Kepatuhan

Sebagai CEO Dowway Vehicle, tempat kami membangun sistem penting untuk keselamatan mobil, saya tahu bahwa keandalan bukan hanya sekadar formalitas. Dalam pekerjaan kami, kegagalan chip yang tidak terdeteksi atau kesalahan perangkat lunak singkat dapat menyebabkan masalah keselamatan yang besar.

Injeksi kesalahan adalah cara paling andal untuk menguji seberapa baik suatu sistem menangani kesalahan. Panduan ini membahas metode inti injeksi kesalahan, membantu Anda merancang sistem yang mampu menangani kegagalan dengan baik dan memenuhi standar seperti IEC 61508.

1. Mengapa Kita Harus Menyisipkan Kesalahan

Pada pertengahan tahun 1970-an, misi luar angkasa pertama kali melaporkan perilaku sistem yang aneh yang disebabkan oleh kesalahan chip. Sejak saat itu, perancang dan produsen chip harus sangat fokus pada keandalan. Saat ini, kita harus menganalisis bagaimana sirkuit digital di pesawat terbang, mobil, dan sistem kritis lainnya berperilaku ketika terjadi kesalahan. Pengujian injeksi kesalahan adalah salah satu cara terbaik untuk mengevaluasi keandalan ini. Bahkan, standar keselamatan fungsional seperti IEC 61508 sangat merekomendasikan injeksi kesalahan pada setiap fase siklus pengembangan.

Ketika sistem gagal, seringkali terjadi kerusakan parah yang menghancurkan data status yang berharga. Kesalahan juga dapat tetap tersembunyi untuk waktu yang lama sebelum menyebabkan masalah yang terlihat. Hal ini membuat sangat sulit untuk menemukan akar penyebab kegagalan dalam sistem yang sedang berjalan. Untuk pengaturan yang besar dan kompleks, mereproduksi kondisi kegagalan langka ini hampir tidak mungkin.

Injeksi kesalahan mengatasi masalah ini. Ini memungkinkan Anda untuk menguji seberapa baik suatu sistem:

  • Mendeteksi kerusakan.
  • Mengisolasi kerusakan untuk mencegahnya menyebar.
  • Melakukan konfigurasi ulang agar tetap berjalan dengan aman.
  • Kembali pulih ke kondisi normal.

2. Di Dalam Lingkungan Injeksi Kesalahan

Sistem injeksi kesalahan profesional adalah ekosistem yang terstruktur. Sistem ini menggunakan sembilan komponen inti untuk menjalankan pengujian tanpa mengganggu sistem target:

  1. Sistem Target: Perangkat keras atau perangkat lunak yang sedang Anda uji.
  2. Injektor Rusak: Alat (perangkat keras atau perangkat lunak) yang menyebabkan kesalahan tersebut.
  3. Pustaka Kesalahan: Basis data terpisah yang menyimpan parameter untuk pengujian—seperti jenis kesalahan, lokasi, waktu, dan aturan perangkat keras atau perangkat lunak. Dengan menjaga agar pustaka ini tetap independen, seluruh sistem menjadi sangat fleksibel dan mudah dipindahkan ke proyek lain.
  4. Generator Beban Kerja: Sebuah alat yang mengirimkan perintah operasional ke sistem target. Perintah-perintah ini dapat berupa aplikasi nyata, tolok ukur standar, atau tugas-tugas yang disintesis.
  5. Pustaka Beban Kerja: Kumpulan beban kerja dan kasus uji yang telah ditentukan sebelumnya.
  6. Pengontrol: Program yang menjalankan seluruh eksperimen. Program ini dapat dijalankan pada sistem target itu sendiri atau pada komputer host independen.
  7. Monitor: Sebuah alat yang melacak eksekusi sistem secara real-time untuk mendeteksi kapan perintah dijalankan dan kapan anomali terjadi.
  8. Pengumpul Data: Sebuah alat yang merekam data sistem secara real-time saat dipicu oleh monitor.
  9. Penganalisis Data: Sebuah alat offline yang memproses dan meninjau data yang terkumpul untuk mengukur keandalannya.

3. Injeksi Kesalahan Perangkat Keras vs. Perangkat Lunak

Pilihan Anda antara metode perangkat keras dan perangkat lunak bergantung pada jenis kesalahan yang ingin Anda uji dan upaya yang diperlukan untuk menyiapkannya.

Jenis/Model KerusakanInjeksi Kerusakan Perangkat KerasInjeksi Kesalahan Perangkat Lunak
Sirkuit TerbukaYaTIDAK
MenjembataniYaTIDAK
Balik BitYaYa
Arus SemuYaTIDAK
Lonjakan DayaYaTIDAK
Terjebak diYa (Terbaik untuk kontrol lokasi)Sulit / Biaya Operasional Tinggi
Kerusakan Data Tersimpan (Memori, Register, Disk)JarangYa
Kerusakan Data Komunikasi (Bus, Jaringan)JarangYa
Manifestasi Cacat Perangkat Lunak (Tingkat Mesin & Lebih Tinggi)TIDAKYa

Jika Anda ingin menguji kesalahan stuck-at (di mana jalur fisik dipaksa untuk tetap berada pada nilai 1 atau 0 secara permanen), injektor perangkat keras adalah pilihan terbaik Anda karena Anda dapat mengontrol titik fisik yang tepat. Mensimulasikan kesalahan stuck-at permanen dengan perangkat lunak sangat lambat atau sama sekali tidak mungkin.

Jika Anda berfokus pada kerusakan data, alat perangkat lunak biasanya sudah cukup. Beberapa kesalahan, seperti perubahan bit pada sel memori, dapat ditangani dengan perangkat keras atau perangkat lunak. Dalam kasus tersebut, Anda harus memilih berdasarkan biaya, akurasi, seberapa besar alat tersebut mengganggu sistem, dan seberapa mudah pengujian diulang.

4. Injeksi Kesalahan yang Diimplementasikan pada Perangkat Keras

Metode perangkat keras menggunakan peralatan fisik tambahan untuk memasukkan kesalahan langsung ke perangkat keras target. Kami membagi metode ini menjadi dua kelompok utama: kontak dan non-kontak.

Injeksi Perangkat Keras Kontak (Tingkat Pin)

Ini adalah pendekatan injeksi perangkat keras yang paling umum. Pendekatan ini memerlukan kontak fisik langsung dengan pin-pin chip target.

  • Probe Aktif: Sensor terhubung langsung ke pin untuk menyuntikkan arus. Ini mengubah status pin. Ini sebagian besar digunakan untuk kesalahan stuck-at, meskipun Anda juga dapat menghubungkan dua pin bersama-sama. Berhati-hatilah: menyuntikkan terlalu banyak arus dengan sensor aktif dapat membakar chip target Anda.
  • Pemasangan Soket: Anda menempatkan soket khusus di antara chip target dan papan sirkuitnya. Soket ini memaksakan level tegangan analog tertentu pada pin untuk mensimulasikan kondisi stuck-at, open-circuit, atau kesalahan logika kompleks. Soket ini dapat membalikkan sinyal pin, menjalankan operasi AND atau OR dengan pin tetangga, atau bahkan menjalankan operasi yang menggabungkan sinyal saat ini dengan sinyal sebelumnya pada pin yang sama.

Metode kontak ini memberi Anda kendali yang sangat baik atas waktu dan lokasi kesalahan. Metode ini juga hampir tidak menyebabkan gangguan pada perangkat lunak yang berjalan pada target. Namun, karena kesalahan ini terjadi pada tingkat pin, kesalahan ini tidak sepenuhnya sama dengan kesalahan stuck-at atau bridging internal yang sebenarnya terjadi jauh di dalam silikon. Meskipun demikian, metode ini sangat baik untuk menguji sirkuit deteksi kesalahan. Anda juga dapat menghubungkan probe aktif ke saluran daya untuk menyuntikkan fluktuasi catu daya, meskipun ini membawa risiko tinggi merusak perangkat.

Injeksi Perangkat Keras Tanpa Kontak

Injektor tersebut tidak menyentuh sistem. Sebaliknya, ia menggunakan gaya fisik eksternal untuk menyebabkan masalah di dalam chip.

  • Radiasi Ion Berat: Ion-ion melesat melalui daerah penipisan chip, menciptakan arus listrik sementara.
  • Medan Elektromagnetik: Menempatkan perangkat keras di dalam atau di dekat medan elektromagnetik yang kuat meniru interferensi fisik alami.

Metode non-kontak ini sangat bagus untuk menguji prototipe desain awal, terutama ketika Anda membutuhkan pelacakan perangkat keras berkecepatan tinggi (seperti mengukur berapa lama waktu yang dibutuhkan CPU untuk bereaksi terhadap kesalahan) atau ketika Anda perlu menjangkau titik-titik internal yang tidak dapat dijangkau oleh probe fisik. Sistem perangkat keras dapat melacak dan memicu kesalahan ini dengan kecepatan tinggi dan interferensi sistem yang sangat rendah, seringkali menggunakan timer perangkat keras atau menunggu peristiwa tertentu (seperti alamat yang muncul di bus).

Kelemahan utamanya adalah metode non-kontak sulit dipicu dengan waktu atau lokasi yang tepat karena Anda tidak dapat mengontrol secara sempurna kapan ion berat keluar atau kapan gelombang elektromagnetik mengenai transistor tertentu.

5. Injeksi Kesalahan yang Diimplementasikan Perangkat Lunak (SFI)

Perangkat lunak injeksi kesalahan (fault injection/SFI) sangat populer. Alasan utamanya adalah biaya: Anda tidak perlu membeli peralatan laboratorium yang mahal. SFI juga memungkinkan Anda untuk menguji aplikasi dan sistem operasi secara langsung, yang sangat sulit dilakukan dengan perangkat keras.

Jika Anda ingin menguji sebuah aplikasi, Anda menempatkan injector di dalam aplikasi itu sendiri, atau di antara aplikasi dan sistem operasi. Jika Anda ingin menguji sistem operasi, Anda harus menempatkan injector di dalam kode OS, karena menambahkan lapisan tambahan antara perangkat keras dan OS sangatlah sulit.

Terlepas dari fleksibilitasnya, SFI memiliki tiga kelemahan utama:

  1. Batasan Akses: Ia tidak dapat menyentuh area yang tidak dapat diakses oleh perangkat lunak (seperti gerbang logika fisik).
  2. Gangguan Sistem: Kode injektor dapat memperlambat sistem target atau bahkan mengubah struktur asli perangkat lunak.
  3. Resolusi Waktu Rendah: Hal ini dapat mengganggu keakuratan pengujian. SFI bekerja dengan baik untuk kesalahan yang berkembang lambat (seperti masalah memori). Tetapi untuk kesalahan yang sangat cepat (seperti gangguan waktu CPU atau bus), perangkat lunak mungkin gagal mendeteksi bagaimana kesalahan menyebar melalui sistem.

Pendekatan Hibrida

Untuk mengatasi masalah pengaturan waktu ini, para insinyur terkadang menggunakan metode hibrida. Metode ini menggabungkan fleksibilitas injeksi perangkat lunak dengan kecepatan dan akurasi pelacakan perangkat keras. Metode ini sangat bagus untuk mengukur penundaan waktu yang sangat kecil. Namun, menambahkan alat pelacakan perangkat keras akan meningkatkan biaya dan membatasi fleksibilitas pengujian Anda karena keterbatasan penyimpanan data fisik.

6. Injeksi Perangkat Lunak pada Waktu Kompilasi vs. Waktu Eksekusi

Injeksi kesalahan perangkat lunak dibagi berdasarkan kapan kesalahan tersebut dimasukkan: pada saat kompilasi atau saat eksekusi.

SFI Waktu Kompilasi

Anda memodifikasi instruksi program sebelum memuat atau menjalankan program. Alih-alih mengubah perangkat keras fisik, Anda mengubah kode sumber atau kode assembly untuk meniru kesalahan perangkat keras, perangkat lunak, atau kesalahan sementara. Ini menciptakan citra program yang dimodifikasi dan cacat. Ketika sistem menjalankan citra ini, kesalahan tersebut akan terpicu.

Ini tidak memerlukan perangkat lunak tambahan saat runtime dan tidak menyebabkan perlambatan kinerja sama sekali. Karena kesalahan tersebut ditulis secara permanen ke dalam kode, ini sangat cocok untuk meniru kegagalan perangkat keras permanen. Kekurangannya adalah Anda tidak dapat menyuntikkan kesalahan secara dinamis saat program sedang berjalan aktif.

Runtime SFI

Anda memerlukan cara untuk memicu kesalahan saat program sedang berjalan. Ada tiga cara umum untuk melakukan ini:

  • Waktu habis: Timer (baik perangkat keras maupun perangkat lunak) memicu interupsi setelah waktu yang ditentukan, memanggil injektor kesalahan. Ini tidak memerlukan perubahan pada kode aplikasi Anda. Namun, karena pemicuannya berdasarkan waktu dan bukan berdasarkan apa yang sedang dilakukan program, hasilnya bisa tidak terduga. Ini paling cocok untuk meniru kesalahan perangkat keras sementara atau acak.
  • Pengecualian dan Jebakan: Pengecualian perangkat keras atau instruksi jebakan perangkat lunak (seperti breakpoint) menyerahkan kendali ke injektor. Tidak seperti batas waktu, ini memungkinkan Anda untuk menyuntikkan kesalahan tepat ketika peristiwa atau kondisi tertentu terjadi (misalnya, ketika program mencoba mengakses titik memori tertentu). Keduanya harus terhubung langsung ke penangan interupsi sistem.
  • Penyisipan Kode: Anda menambahkan instruksi baru ke program yang dijalankan tepat sebelum kode target. Ini mirip dengan memodifikasi kode, tetapi terjadi saat runtime dan menambahkan instruksi baru alih-alih mengubah instruksi lama. Tidak seperti trap, injector dapat berjalan sepenuhnya dalam mode pengguna dan bukan mode sistem, sehingga tidak memerlukan hak akses sistem operasi yang mendalam.

7. Merangkum Perbedaan

Mari kita lihat perbandingan antara dua pendekatan utama tersebut:

  • Titik Sasaran: Perangkat keras menargetkan pin paket dan komponen internal fisik. Perangkat lunak menargetkan memori aktif, register CPU, dan status perangkat lunak secara keseluruhan.
  • Gangguan: Perangkat keras hampir tidak menyebabkan penundaan waktu. Perangkat lunak menimbulkan beban kinerja karena kode tambahan harus dijalankan.
  • Biaya: Perangkat keras mahal dan membutuhkan laboratorium khusus. Perangkat lunak bergantung pada kode dan murah untuk diimplementasikan.
  • Resolusi Waktu: Perangkat keras memiliki presisi yang sangat tinggi (nanodetik). Perangkat lunak memiliki resolusi yang lebih kasar (mikrodetik atau milidetik).
  • Fokus Pengujian: Perangkat keras mengevaluasi deteksi dan perlindungan kesalahan tingkat rendah. Perangkat lunak menguji program pemulihan tingkat tinggi, sistem operasi, dan aplikasi.

8. Pertanyaan Umum

Apa perbedaan utama antara injeksi kesalahan perangkat keras dan perangkat lunak?

Injeksi perangkat keras menargetkan pin dan sirkuit fisik, sedangkan injeksi perangkat lunak menargetkan memori, register, dan kode. Metode perangkat keras menggunakan alat fisik seperti probe atau radiasi untuk menguji reaksi sirkuit tingkat rendah. Metode perangkat lunak memodifikasi kode atau memori sistem untuk menguji bagaimana aplikasi dan sistem operasi menangani kesalahan.

Bisakah injeksi kesalahan perangkat lunak mensimulasikan kegagalan perangkat keras permanen?

Ya, dengan menggunakan injeksi saat kompilasi untuk memodifikasi kode program secara permanen. Dengan mengubah kode sumber atau instruksi assembly sebelum dieksekusi, Anda menciptakan citra program yang cacat secara permanen. Ini meniru kegagalan fisik permanen tanpa menyebabkan keterlambatan kinerja saat runtime.

Mengapa pemasangan soket lebih aman daripada menggunakan probe aktif untuk pengujian tingkat pin?

Penyisipan soket menggunakan manipulasi sinyal terkontrol, sedangkan probe aktif menyuntikkan arus eksternal yang dapat membakar chip. Sensor aktif mengalirkan arus langsung ke pin fisik, yang dapat dengan mudah menyebabkan silikon menjadi terlalu panas. Soket pemutus (breakout socket) dengan aman mencegat pin dan menggunakan gerbang logika (AND, OR, Inversi) untuk meniru kesalahan tanpa bahaya listrik.

Kesimpulan Akhir untuk Arsitek Sistem

Di Dowway Vehicle, kami mengikuti aturan sederhana: Jika Anda belum menguji respons sistem Anda terhadap suatu kesalahan, Anda harus berasumsi bahwa sistem Anda akan gagal ketika kesalahan tersebut terjadi. Jangan hanya mengandalkan satu metode pengujian. Gunakan injeksi perangkat lunak di awal pengembangan untuk menguji mesin status tingkat aplikasi dan rutinitas pemulihan OS. Kemudian, gunakan injeksi perangkat keras pada prototipe fisik untuk memastikan pengawas perangkat keras, sistem perlindungan memori, dan kegagalan pin fisik tidak menyebabkan bencana di seluruh sistem.

Referensi

  • [1] Teknik dan Alat Injeksi Kesalahan (Survei Akademik Komprehensif)
  • [2] Lingkungan Injeksi Kesalahan Berbasis Verifikasi Fungsional (Simposium Keandalan dan Pemeliharaan IEEE)
  • [3] ISO 26262-11:2018 – Pedoman tentang penerapan semikonduktor untuk keselamatan fungsional otomotif.
  • [4] IEC 61508 – Keselamatan fungsional sistem terkait keselamatan listrik/elektronik/elektronik yang dapat diprogram.

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Need a Quote or Have Questions?

Please fill out the form below, our engineers will contact you within 24 hours.