Desain dan Verifikasi Tingkat Sistem Elektronik

**Desain dan verifikasi tingkat sistem elektronik** (*Electronic system-level design and verification*) atau *ESL* *Desain* adalah pendekatan desain produk elektronik yang berfokus pada sistem secara keseluruhan, bukan hanya detail komponen individual. Istilah Electronic System Level atau ESL Design pertama kali didefinisikan oleh Gartner Dataquest. Pendekatan ini digunakan untuk membuat model dan merencanakan interaksi antara perangkat keras dan perangkat lunak. 

## Tahapan Desain ESL
Proses desain umumnya dimulai dengan deskripsi tentang fungsi sistem, yang disebut "spesifikasi." Spesifikasi ini dapat berupa beragam bentuk: uraian tekstual, skema, algoritma, diagram UML, model SDL, representasi matematis menggunakan alat seperti MATLAB atau Simulink, atau diagram status. Alat yang menyediakan kemampuan untuk membuat spesifikasi ini lebih tepat disebut sebagai alat analisis tingkat sistem, bukan alat desain ESL. Biasanya, paradigma yang didukung oleh alat-alat tersebut sangat spesifik dan disesuaikan dengan domain aplikasi tertentu. Dalam batasan yang telah dijelaskan, kita dapat mengidentifikasi dua tahapan utama dalam desain ESL:

* Desain Fungsional bertujuan untuk menggambarkan perilaku sistem dari sudut pandang internal, termasuk struktur, komunikasi, dan perilaku fundamental. 
* Desain Arsitektur bertujuan untuk menjabarkan arsitektur sistem dalam hal platform perangkat keras yang dibutuhkan dan organisasi aplikasi yang berjalan di atas platform tersebut (pemisahan perangkat keras dan perangkat lunak).

## Tujuan ESL Desain
Terdapat perbedaan pendekatan desain, yaitu *top-down* (dari atas ke bawah) dan *bottom-up* (dari bawah ke atas), yang diterapkan pada dua fase desain yang berbeda ini. Desain fungsional dan desain arsitektur yang berfokus pada aplikasi umumnya menggunakan pendekatan *top-down* karena dimulai dari kebutuhan aplikasi. Sebaliknya, desain arsitektur yang berorientasi platform (juga dikenal sebagai "desain berbasis platform") cenderung menggunakan pendekatan *bottom-up*, dengan menggabungkan komponen yang sudah ada (seperti blok IP) menjadi satu kesatuan. Proses *top-down* dan *bottom-up* ini akan bertemu pada suatu titik yang disebut "meet in the middle" (bertemu di tengah), yang pernah saya jelaskan di artikel sebelumnya.

Tujuan dari desain sistem adalah untuk menjabarkan *bagaimana* sistem menjalankan fungsinya dan menyediakan solusi untuk implementasi lebih lanjut. Desain ESL berakhir ketika implementasi dimulai, dengan menghasilkan model implementasi untuk semua elemen perangkat lunak dan perangkat keras dalam sistem. Ini meliputi:

* Aplikasi perangkat lunak tertanam: Kode dalam bahasa pemrograman (umumnya C atau C++).
* Sirkuit terintegrasi khusus (ASIC): Kode dalam bahasa deskripsi perangkat keras (biasanya VHDL atau Verilog).
* Platform perangkat keras (komponen PCB atau blok IP SoC, termasuk interkoneksinya): Model atau kode dalam format seperti SystemC.

## Input dalam Desain ESL
Model sistem terus dikembangkan di setiap tahapan desain. Cara model-model ini direpresentasikan juga memengaruhi efisiensi kerja, terutama dalam hal produktivitas. Secara garis besar, ada dua jenis input utama, yaitu grafis dan tekstual.

Input grafis umumnya mempermudah representasi organisasi sistem, seperti struktur dan komunikasi antar komponen. Sementara itu, input tekstual lebih efektif dalam menggambarkan detail perilaku, seperti algoritma dan mesin state (*state machine*). Penting bagi alat desain ESL untuk dapat menerima model input dari tahapan desain sebelumnya dan menghasilkan model output yang sesuai untuk tahapan desain berikutnya. Jika alur desain terputus di antara dua tahapan karena ketidaksesuaian, kemungkinan besar peningkatan produktivitas yang diharapkan tidak akan tercapai. Selain itu, format input harus alami dan intuitif bagi para perancang agar dapat digunakan secara efektif.

## Tingkat Abstraksi dalam Desain ESL
Faktor lain yang membedakan alat desain ESL adalah tingkat abstraksi yang digunakannya. Tingkat abstraksi ini sangat terkait dengan tahapan desain dan model yang didukung oleh alat tersebut. Semakin awal tahapan dalam proses desain, semakin tinggi tingkat abstraksinya. Selain itu, saat mengintegrasikan blok IP yang dapat digunakan kembali ke dalam model, penting untuk memastikan tingkat abstraksi yang kompatibel antara IP tersebut dan model lainnya, atau setidaknya memiliki cara untuk menjembatani perbedaan tingkat abstraksi tersebut. Saat ini, sebagian besar blok IP tersedia pada tingkat transfer register (RTL) atau transaksi untuk perangkat keras, dan dalam bentuk kode sumber atau objek untuk perangkat lunak.

Tingkat abstraksi tempat alat desain ESL beroperasi sangat penting karena menentukan:

* Tingkat detail (*granularitas*) model, terutama bagaimana komponen perangkat keras (seperti prosesor dan bus) dijelaskan.
* Jenis teknologi yang diperlukan untuk menyimulasikan model.

Granularitas model dan teknologi simulasi secara signifikan memengaruhi kemampuan alat desain ESL untuk melakukan eksplorasi arsitektur dan analisis kinerja.

## Alat Generasi Baru
Pada dasarnya, alat desain ESL yang ada dapat dikelompokkan menjadi dua jenis:

* Fokus pada Desain Fungsional. Alat ini berawal dari domain spesifikasi dan bergerak menuju pengembangan aplikasi perangkat lunak tertanam (pendekatan *top-down*).
* Fokus pada Desain Platform. Alat ini berawal dari bidang EDA (*Electronic Design Automation*) dan bergerak naik dalam lapisan abstraksi, dari RTL ke tingkat transaksi (pendekatan *bottom-up*).

## Referensi