Apa perbedaan antara pengujian dan verifikasi?

15

Setiap buku teks yang saya lihat membuat banyak fakta bahwa pengujian dan verifikasi adalah dua konsep yang berbeda. Namun tidak satupun dari mereka yang memberikan perbedaan yang jelas (atau cukup jelas bagi saya).

Untuk memberikan beberapa konteks, saya tertarik pada verifikasi desain perangkat keras digital menggunakan bahasa desain perangkat keras (HDL).

Saya telah melihat beberapa penjelasan yang menggunakan perbedaan "fisik" atau "nyata": jika ini tentang perangkat yang diproduksi, maka itu pengujian. Apakah ini keseluruhan cerita? Jika demikian, mengapa kata "tes" sering muncul dalam verifikasi (terutama dalam verifikasi fungsional, kita berbicara tentang testcench, testbenches, DUT (perangkat yang diuji), tes yang diarahkan, tes acak, dll ...)

Kecanduan VHDL
sumber

Jawaban:

21

Pernah menjadi Teknisi Verifikasi Desain ASIC di Qualcomm. Dengan cara paling sederhana saya bisa menjelaskannya:

Pengujian: Memastikan suatu produk berfungsi, setelah Anda membuat produk (pikirkan QA).

Verifikasi: Memastikan suatu produk berfungsi SEBELUM Anda telah membuatnya.

Keduanya sama-sama pengujian, hanya saja verifikasi lebih rumit karena Anda harus mencari cara untuk menguji produk sebelum ada dan Anda harus dapat memastikan itu berfungsi seperti yang dirancang dan untuk menentukan kapan itu benar-benar keluar.

Sebagai contoh, Intel sedang merancang prosesor mereka berikutnya, mereka memiliki spesifikasi, mereka memiliki skema dan simulasi. Mereka menghabiskan $ 1 Miliar USD untuk melalui fabrikasi dan manufaktur. Kemudian chip kembali dan mereka mengujinya dan mengetahui bahwa itu tidak berhasil. Mereka hanya membuang banyak uang ke luar jendela.

Lemparkan verifikasi. Insinyur verifikasi membuat model yang mensimulasikan perilaku chip, mereka membuat testbench yang akan menguji model-model tertentu. Mereka mendapatkan hasil dari model-model ini dan kemudian mereka membandingkannya dengan hasil RTL (model rangkaian writting dalam bahasa desain perangkat keras). Jika mereka cocok, semuanya (biasanya) OK.

Ada sejumlah metodologi berbeda untuk proses verifikasi, yang populer adalah Universal Verification Metodologi (UVM) .

Ada banyak kedalaman di lapangan dan orang-orang dapat menghabiskan seluruh karir mereka di dalamnya.

Berita gembira acak lainnya: Biasanya Anda membutuhkan 3 insinyur verifikasi untuk 1 insinyur desain. Itulah yang dikatakan semua orang di lapangan.

EDIT: Banyak orang menganggap verifikasi sebagai peran pengujian, tetapi tidak; itu adalah peran desain itu sendiri karena Anda harus memahami semua seluk-beluk IC Anda seperti halnya perancang, dan kemudian Anda harus tahu cara merancang model, testbench, dan semua kasus uji yang akan mencakup semua fungsi fitur IC Anda. , serta mencoba menekan setiap baris kode RTL untuk semua kombinasi bit yang mungkin. Ingatlah bahwa prosesor saat ini memiliki milyaran transistor karena proses pembuatannya memungkinkan yang lebih kecil dan lebih kecil (sekarang 14 nm).

Juga, di perusahaan besar seperti Intel, AMD, Qualcomm, dll, desainer sebenarnya tidak merancang chip. Biasanya arsitek akan menentukan semua spesifikasi, tata letak jenis potongan yang perlu disatukan untuk mendapatkan fungsi tertentu dengan persyaratan tertentu (yaitu kecepatan, resolusi, dll.), Dan kemudian perancang akan mengkodekannya ke dalam RTL. Ini sama sekali bukan pekerjaan mudah, hanya saja tidak mendesain sebanyak yang diperkirakan oleh banyak insinyur dari sekolah. Apa yang semua orang inginkan adalah seorang arsitek, tetapi butuh banyak pendidikan dan pengalaman untuk sampai ke titik itu. Banyak arsitek memiliki PhD, dan seperti 15-20 tahun pengalaman di bidangnya sebagai desainer. Mereka adalah orang-orang yang brilian (dan kadang-kadang gila) yang layak melakukan apa yang mereka lakukan, dan mereka baik dalam hal itu. Arsitek pada chip pertama yang saya kerjakan agak canggung dan tidak benar-benar mengikuti beberapa norma sosial, tetapi dia bisa menyelesaikan apa pun yang Anda lakukan terkait dengan chip tersebut, dan kadang-kadang ia akan menyelesaikannya di kepalanya dan memberi tahu Anda untuk melihat satu sinyal dan Anda akan seperti, "bagaimana dia melakukan itu?". Kemudian Anda memintanya untuk menjelaskan dan dia melakukannya dan itu jauh di atas kepala Anda. Sebenarnya mengilhami saya untuk membaca buku teks meskipun saya sudah lulus.

PGT
sumber
+1 Terima kasih atas komentar terakhir, membantu kami melihat bahwa bidang ini memang penting (meskipun RTL dan desain rekayasa terdengar lebih menarik bagi sebagian besar insinyur, saya pikir)
VHDL Addict
Untuk kelengkapan, maukah Anda menambahkan apa itu testcase?
VHDL Addict
Saya menambahkan berita gembira tentang apa verifikasi sebenarnya karena komentar pertama Anda tentang peran desain menjadi lebih menarik; mereka berdua peran yang baik, hanya tergantung pada apa yang kamu suka. Adapun kasus uji, SoC seperti Snapdragon bisa memiliki puluhan hingga ratusan ribu kasus uji, dan dengan pengujian acak, dalam jutaan. Sederhananya: Anda menerapkan satu set bit input dan yang diubah melalui banyak modul, maka Anda mendapatkan beberapa bit output sebagai hasil yang Anda bandingkan dengan hasil model Anda. Sesuatu yang sederhana seperti menguji gambar yang muncul di ponsel Anda akan ...
PGT
sejumlah besar testcases. Katakanlah Anda ingin menunjukkan satu piksel pada layar ponsel Anda. Yang dipikirkan seseorang di luar bidang adalah menerapkan 1 bit untuk putih, dan 0 untuk hitam. Dalam dunia seluler yang sebenarnya, piksel tersebut dapat berbeda berdasarkan ukuran, intensitas, rotasi, format warna (YUV ###, RGB ###, dll.). Dan Anda mungkin menguji 1 bit dalam satu set bit yang diterapkan pada input bersama. Bit lain mungkin 0 karena hitam, atau mungkin 1 karena itu menangani informasi lain seperti bagaimana menangani mode transmisi, CLK, mengaktifkan / menonaktifkan, memicu, hal-hal mewah seperti itu.
PGT
6

Dalam buku saya, Verifikasi memastikan bahwa apa yang Anda rancang "lakukan pekerjaannya" - yaitu, Anda memiliki serangkaian hal yang perlu dilakukan "perangkat", dan verifikasi menandai yang tidak ada dalam daftar.

Namun, pengujian memastikan bahwa hal-hal yang dilakukan "perangkat" dilakukan dengan benar. Anda memiliki serangkaian fungsi, dan Anda menguji setiap fungsi untuk memastikan fungsi tersebut berfungsi dengan baik.

Singkatnya, Verifikasi memeriksa desain, dan Pengujian memeriksa produk.

Majenko
sumber
Saya pikir saya mulai mengerti ... Bisakah Anda memberikan beberapa contoh masing-masing?
VHDL Addict
Bagaimana hal itu sesuai dengan rencana verifikasi , yang menentukan apa yang harus dilaksanakan dan juga bagaimana mengetahui bahwa fungsinya benar? Akan sedikit berguna untuk mengimplementasikan atau menandai fungsi jika tidak berfungsi.
VHDL Addict
@ Majenko - Jadi Anda telah menulis buku tentang Verifikasi? Apakah Anda akan membagikan beberapa detail lebih lanjut tentang hal itu?
Michael Karas
4

Berasal dari latar belakang desain ASIC (perangkat keras), ada tiga istilah penting: validasi , verifikasi , dan pengujian . Jawaban sebelumnya biasanya berbicara tentang satu atau dua istilah ini, tetapi jangan jelas-jelas kontras ketiga cara saya. Inilah cara saya memahaminya:

  • Validasi: apakah spesifikasi (sering model C) memenuhi persyaratan pasar atau pelanggan
  • Verifikasi: apakah implementasinya (RTL, netlist, atau GDS2) sesuai dengan spesifikasi
  • Tes: apakah perangkat yang diproduksi cocok dengan implementasi
Winston Smith
sumber
Dapatkah simulasi netlist dan GDS2 memberikan hasil yang berbeda?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功, saya kira Anda bertanya tentang perilaku gerbang vs transistor. Untuk tegangan dan bentuk gelombang digital normal, saya akan mengatakan mereka akan memberikan hasil yang sama. Tetapi mungkin ada efek "analog" yang tidak dipertimbangkan oleh gerbang yang diidealisasikan, seperti variasi daya / tanah atau pembagian sinyal. Jika efek tersebut ada, maka perilaku digital yang ideal mungkin tidak berlaku.
Winston Smith
1
@CiroSantilli 新疆 改造 中心 法轮功 六四 事件 Ya, mereka dapat memberikan hasil yang sangat berbeda. Pernah ke sana, membuat kesalahan itu.
Elliot Alderson
1

Tes dirancang untuk melihat apakah spesifikasi terpenuhi. Verifikasi adalah untuk melihat apakah perangkat memenuhi input desain - yaitu, semua spesifikasi. Saya kira ada lebih banyak interpretasi, tetapi ini adalah apa yang saya lihat dalam dokumen panduan FIA.

Scott Seidman
sumber
Saya mengerti, saya telah mengubah kata-kata sedikit (dari pengujian ke pengujian ) untuk membuatnya lebih jelas bahwa keduanya adalah proses. Saya setuju dengan Anda bahwa untuk tes individu kata tes sesuai (kadang-kadang saya merasa seperti saya nyatakan yang jelas dengan pertanyaan terminologi ini ...) :)
VHDL Addict
1

Kami membuat perbedaan antara pengujian verifikasi dan pengujian validasi. Katakanlah Anda sedang merancang kipas yang mendinginkan beberapa peralatan. Pengujian verifikasi dilakukan untuk memastikan kipas memenuhi semua persyaratan desain. Jadi, Anda dapat menguji aliran udara, siklus termal, getaran, dll.

Pengujian validasi memastikan persyaratan desain adalah yang benar. Apakah input desain yang kami miliki untuk kipas benar-benar memberi kami kipas yang kami inginkan? Misalnya Anda akan memastikan kipas benar-benar mendinginkan peralatan seperti yang diinginkan.

Eric
sumber
Ini adalah bagaimana istilah-istilah tersebut dipahami oleh buku-buku tentang Rekayasa Perangkat Lunak yang telah saya baca. Validasi = pastikan persyaratannya benar (periksa dengan pelanggan, peraturan, dll.); Verifikasi = pastikan produknya benar (uji dengan spesifikasi)
Wouter van Ooijen
1

ISO9000 berbicara tentang verifikasi dan validasi. Dalam konteks verifikasi ISO9000 berarti menguji desain prototipe untuk membuktikannya memenuhi harapan fungsional dan kinerja. Validasi berarti menguji proses produksi pertama juga memenuhi harapan desain. Verifikasi dulu, validasi nanti adalah cara kecil saya untuk mengingat urutan hal.

Beberapa standar perangkat lunak membalik urutan verifikasi dan memvalidasi dan ini benar-benar dapat menyebabkan kebingungan jadi waspadai hal ini.

Intinya adalah ... Mengapa Anda menguji sesuatu - apakah itu desain prototipe - jika demikian maka standar kualitas cenderung menyebut verifikasi ini. Jika Anda menguji menjalankan produksi untuk pertama kalinya maka orang-orang perangkat keras memanggil validasi ini.

Hanya pengalaman pribadi saya.

Andy alias
sumber
0

Dari membaca balasan ini, saya sekarang menyadari tidak ada definisi yang pasti tentang bagaimana "pengujian" berbeda dari "verifikasi" di industri.

Ketika bekerja dengan desain HW (desain HW "nyata", seperti barang-barang di PCB, bukan pemrograman VHDL) kami melewati fase verifikasi & validasi, dan fase pengujian produksi (sebenarnya hanya merancang tes produksi sendiri dan mengirimkannya ke lokasi produksi). - Verifikasi - (1) memverifikasi bahwa prototipe / item yang diproduksi secara massal memenuhi persyaratan HW (2) memvalidasi persyaratan HW terhadap persyaratan SYS. - Pengujian Produksi - uji asap dan kasus uji verifikasi disederhanakan & cepat diadaptasi untuk menyaring cacat produksi massal tanpa harus melalui seluruh proses verifikasi untuk masing-masing 500.000 unit yang diproduksi setahun.

Jadi dalam "pengujian" perusahaan multinasional tertentu mengacu pada tes produksi dan tidak lebih.

pengguna3038015
sumber