“If I have seen further [than certain other men], it is by standing upon the shoulders of giants.” Isaac Newton
Verification bukan kata yang familiar ketika saya masih mahasiswa. Tak lain tak bukan karena verification tak penting dan tak perlu diperhatikan oleh desainer pemula—dan mahasiswa adalah desainer pemula; hanya membuat desain untuk tugas kulliah. Semenjak bergabung dengan perusahaan dan naik pangkat jadi desainer produk komersil, verification menjadi hal yang lebih diperhatikan, tapi masih kurang diperhatikan. Itu disebabkan karena perusahaan kami termasuk start up company dimana sistem kerja masih berkembang. Tapi sejalan dengan makin berkembangnya perusahaan, dan makin kompleknya desain yang dibuat, verification akhirnya mendapat tempat spesial. Tim khusus pun dibuat, dan anggotanya adalah pecahan dari tim RTL desainer.
Sekarang, dimana kompleksitas chip jauh bertambah dibanding satu dekade lalu, verification menjadi salah satu bagian krusial yang tak bisa dikesampingkan. Penelitian menyebutkan, 70% resource dihabiskan untuk verification, sedangkan 30% lainnya untuk desain. Dan fakta membuktikan, penyebab utama respin adalah kesalahan functional pada chip. Dan yang paling bertanggung jawab terhadap functional error adalah: verification.
Ada beberapa cara mendefinisikan verification. Salah satunya definisi yang paling mendekati adalah (1) proses membandingkan design intent dengan observed behavior, (2) memutuskan apakah keduanya ekuivalen atau tidak, (3) menganalisa dan menilai apakah masih ada functional error atau tidak, (4) dan menggaransi ketidakpastian adanya functional error. Desain disebut verified jika observed behavior sesuai dengan yang design intent, pada level keyakinan tertentu. Kalimat terkahir perlu digaris bawahi karena seringkali tidak semua case bisa ditest, terutama untuk chip yang kompleks dan melibatkan banyak test case.
Diagram berikut menunjukkan hubungan antara spesifikasi, design intent, dan implemention, yang digambarkan dengan lingkaran yang saling overlapped. Setiap lingkaran merepresentasikan perilaku (behavior) pada label, dan setiap bidang yang saling berpotongan merepresentasikan perilaku yang salling berpotongan antar label yang berpotongan.
Lingkaran pertama (AυEυGυH), design intent, adalah maksud dari desainer atau apa yang tergambarkan dalam otak desainer. Lingkaran kedua (BυEυFυH), specification, adalah maksud dari spesifikasi desain (biasanya datang dari system architect, product manager, production team, atau bahkan marketing team). Lingkaran ketiga (CυFυGυH), implementation, adalah perilaku yang terejawantahkan oleh desain RTL.
Terkadang spesifikasi tidak sama dengan design intent, misalnya karena kesalahan pemahaman desainer terhadap spesifikasi yang diinginkan oleh manajer, dan terkadang design intent tidak sama dengan implementasi karena kurang pengalamannya RTL designer dalam mengimplementasikan maksud (coding) desainnya kedalam RTL. Kedua kemungkinan sama besarnya walaupun relatif lebih banyak kemungkinan kedua.
Bisa disimpulkan bahwa inti verifikasi adalah bagaimana agar ketiga lingkaran tersebut, yang tadinya tidak bersinggungan seluruhnya menjadi bersinggungan. Artinya imlementasi sesuai dengan maksud desainer, dan maksud desainer sesuai dengan spesifikasi chip yang diberikan, dengan kata lain: NO FUNCTIONAL ERROR. So, verifikasi itu simple bukan? (yayan)
No comments:
Post a Comment