Archive for June, 2009

Leda Checking

June 26, 2009

Pada kesempatan Kerja Praktek (KP) di Versatile Silicon, salah satu tugas saya adalah melakukan leda checking terhadap desain Verilog. Apa itu leda? Itulah pertanyaan pertama yang muncul dalam otak saya ketika mendapat tugas itu. Untunglah, ada pembimbing yang selalu membantu jika saya membutuhkan dan tentunya ada Prof. Google yang selalu standby 24 jam. Langsung saja, saya bergegas ke laptop dan berselancar di dunia maya mencari bantuan. Setelah membaca beberapa bahan dan melakukan praktek langsung, akhirnya sekarang sudah sedikit tahu apa itu leda.

Leda adalah sebuah alat pengecek sistem-ke-netlist yang mempunyai prepackaged rule untuk mengecek desain Verilog atau VHDL dengan berbagai aturan desain dan coding standar. Leda mengandung optional specifier tool yang dapat kita gunakan untuk mendefinisikan aturan coding kita sendiri menggunakan VeRSL (Verilog Rule Specification Language) dan VRSL (VHDL Rule Specification Language) macro-based rule programming language untuk Verilog dan VHDL. Leda juga mempunyai fitur komplit API yang dapat kita gunakan untuk mengembangkan netlist rule pada Tcl atau C untuk dijalankan dengan database desain yang terperinci.

Dengan bantuan leda, kita dapat mengetahui bagian pada coding Verilog yang menimbulkan adanya warning/error. Setelah kita tahu adanya bug tersebut, tugas kita selanjutnya adalah melakukan debugging. Tentunya, ketika kita melakukan debugging, kita juga harus mengerti terlebih dahulu masalahnya (dalam hal ini masalah pada coding Verilog). Debugging sangat penting dilakukan, agar dihasilkan code RTL yang handal sebelum diimplementasikan ke dalam ASIC. Berikut ini salah satu contoh error message dan solusinya:

Error message: VER_2_1_4_2 Use bit-wise operators (&, |, ~) instead of logic operators (&&, ||, !), even in single bit operation expressions.

Solution: Replace logical operator (&&, ||, !) with bit-wise operator (&, |, ~).

Cinta Tanpa Definisi

June 26, 2009

Seperti angin memabadai. Kau tak melihatnya. Kau merasakannya. Merasakan kerjanya saat ia memindahkan gunung pasir di tengah gurun. Atau merangsang amuk gelombang di laut lepas. Atau meluluhlantakkan bangunan-bangunan angkuh di pusat kota metropolitan. Begitulah cinta. Ia ditakdirkan jadi kata tanpa benda. Tak terlihat. Hanya terasa. Tapi dahsyat.

Seperti banjir menderas. Kau tak kuasa mencegahnya. Kau hanya bisa ternganga ketika ia meluapi sungai-sungai, menjamah seluruh permukaan bumi, menyeret semua benda angkuh yang bertahan di hadapannya. Dalam sekejap, ia menguasai bumi dan merengkuhnya dalam kelembutannya. Setelah itu, ia kembali tenang: seperti seekor harimau kenyang yang terlelap tenang. Demikianlah cinta. Ia ditakdirkan jadi makna paling santun yang menyimpan kekuasaan besar.

Seperti api menyala-nyala. Kau tak kuat melawannya. Kau hanya bisa menari di sekitarnya saat ia mengunggun. Atau berteduh saat matahari membakar kulit bumi. Atau meraung saat lidahnya melahap rumah-rumah, kota-kota, hutan-hutan. Dan seketika semua menjadi abu. Semua jadi tiada. Seperti itulah cinta. Ia ditakdirkan jadi kekuatan angkara murka yang mengawal dan melindungi kebaikan.

Cinta adalah kata tanpa benda, nama untuk beragam perasaan, muara bagi ribuan makna, wakil dari sebuah kekuatan tak terkira. Ia jelas, sejelas matahari. Mungkin sebab itu Eric Fromm dalam -The Art of Loving- tidak tertarik -atau juga tidak sanggup- mendefinisikannya. Atau memang cinta sendiri yang tidak perlu definisi bagi dirinya. (Serial Cinta, Anis Matta).

Creating Verification Environment Using Shell Scripting

June 18, 2009

Hari ini aku mendapat tugas untuk membuat verification environment menggunakan shell scripting linux. Apaan tuh shell scripting??? Kata itu merupakan kata baru bagiku (meskipun pernah dengar sebelumnya). Karena ini merupakan kewajiban, aku harus mengerjakan dengan sebaik-baiknya. Langkah pertama, adalah mencari referensi. Kalau sudah ada kata “mencari”, tiada kata lagi selain “google”. Sekarang ini internet (yang biasanya diawali lewat searching di google) merupakan guru yang sangat luar biasa. Segala hal yang kita cari ada di sana terlepas dari benar atau salah.

Dan akhirnya aku dapatkan beberapa referensi diantaranya buku Linux Shell Scripting Tutorial-A Beginner’s Handbook. Dari buku ini aku mulai sedikit memahami apa itu kernel, shell, bagaimana menulis shell script, struktur bahasa shell, fungsi, dll. Walaupun begitu aku masih belum bisa membuat dynamic verification environment including coverage metric. Untuk yang static, sudah berhasil dibuat dengan memanfaatkan contoh yang sudah ada sebelumnya. Karena dalam verifikasi ini digunakan tool modelsim, aku juga harus mengerti bagaimana mengaksesnya via console dan mengerti DO file.

Yang jelas, shell scripting layaknya bahasa pemrograman yang lain. Hanya sintaksnya yang berbeda dan karena console based, jadi harus terbiasa dengan command-command yang ada di linux. Berhubung aku termasuk pemula di dunia linux, jadi untuk command-command tersebut belum terbiasa. Mudah-mudahan hari ini tugas tersebut bisa terselesaikan.

RTL Verification

June 16, 2009

Perancangan Sistem digital tidak bisa terlepas dari beberapa alur proses yang harus dilaluinya. Berikut ini adalah flowchart perancangan sistem digital.

Dari flowchart tersebut bisa dilihat, bahwa memang proses verifikasi merupakan bagian yang menghabiskan waktu yang paling banyak (the most consuming time) dalam proses perancangan. Verifikasi itu sendiri terdiri dari beberapa jenis metode, diantaranya functional, assertion, coverage, formal dll.  Ada beberapa tool yang bisa digunakan, tapi yang kita pakai adalah ModelSim.

Coverage metric digunakan untuk mengukur tingkat kepercayaan pada total usaha verifikasi kita dan untuk membantu tim desain dalam memprediksi waktu optimal peluncuran desain. Ada beberapa jenis coverage metric, yaitu:

  1. Statement/Line Coverage, digunakan untuk mengukur berapa banyak line/statement yang telah dieksekusi selama simulasi.
  2. Branch/Decision Coverage, digunakan untuk mengukur coverage of if and case statement (percabanngan) yang mempengaruhi alur kontrol dari eksekusi HDL.
  3. Path Coverage, digunakan untuk mengukur berapa banyak tiap jalur (kombinasi unik antara statement dan branch) dieksekusi ketika ada stimulus.
  4. Condition and Expression Coverage, digunakan untuk memperluas branch coverage dengan cara mem-break down kondisi ke dalam elemen yang membuat hasilnya benar atau salah
  5. Toggle Coverage, digunakan untuk menghitung dan mengumpulkan perubahan di dalam state pada titik/tempat tertentu.

Sumber:

Principles of Verifiable RTL Design (Book) by Lionel Bening and Harry Foster, Hewlett Packard Company.

RTL Verification (Lecture) by Subhasish Mitra and Ofer Shacham, Stanford University.

ModelSim SE Tutorial and ModelSim Code Coverage (Manual) by Mentor Graphics Corp.

Verilog HDL : A Guide to Digital Design and Synthesis (book) by Samir Palnitkar, SunSoft Press.

Prof. Google and etc.

Kepalaku terasa berat

June 1, 2009

Hari ini kepalaku terasa berat sekali. Detik demi detik, menit demi menit, dan jam demi jam berlalu dengan perasaan males, kepala pusing, inginnya hanya istirahat. UTS Sistem Instrumentasi, Laporan Devais Semikonduktor (2 modul) terpaksa di-delay terlebih dahulu. Tapi, ada beberapa kegiatan yang tidak bisa ku-delay (atau penginnya di-cancel), yaitu ngajar. Hal ini karena aku sudah janji dan janji harus ditepati. Selain itu, ini juga melibatkan kepentingan orang lain. Kalau UTS dan Laporan, jika di-delay atau di-cancel paling yang rugi adalah diri sendiri. Tapi kalau ngajar, selain diri sendiri, juga orang lain yang kena imbasnya. Jadi, kutekadkan diri tetap melangkah dengan kepala yang berat.

Alhamdulillah, seiring dengan pijakan langkah, sakit di kepala ini mulai berkurang. Meskipun sampai saat aku menulis tulisan ini sakit itu masih terasa, tapi lebih mendingan dibanding sebelumnya. Aku sendiri tidak tau apa penyebab sakit kepalaku. Aku sih menduga ini disebabkan karena posisi tidur yang salah, klo ga ya karena hujan-hujanan sebelumnya. Btw, aku mencoba melaluinya dengan sebaik mungkin dan mencoba membereskan tugas-tugas yang mulai menumpuk. Ada yang punya solusi atas masalahku ini???