21 / 24 · Konsep
Gabungkan scoreboard dengan invarian lokal
Periksa nilai, urutan, okupansi, dan kestabilan penundaan dari transaksi yang diterima.
Pelajaran dapat dibaca gratis. Daftar untuk menyimpan progres.
Kaitkan verifikasi dengan penerimaan masukan
Scoreboard menghitung hasil yang diharapkan dari setiap masukan yang diterima dan mengantrekannya. Saat keluaran dikirim, bandingkan dengan item harapan tertua. Menghitung langsung dari kontrak alih-alih meniru setiap register pipeline mengurangi kesalahan yang sama pada keduanya. Tambahkan entri hanya pada jabat tangan masukan; masukan yang disajikan tetapi ditolak bukan pekerjaan yang belum selesai.
Untuk masukan ADD yang diterima tag10:(250,10) dan tag11:(3,5), harapkan [(10,4,carry1),(11,8,carry0)]. Keluaran valid tetapi tertunda tidak menghapus entri. Pengiriman tag10 hanya menghapus entri itu. Tag10 berulang atau nilai 8 dengan tag 12 salah meskipun sebagian angka cocok. Sertakan semua flag dan bidang pendamping yang relevan.
| Pemeriksaan | Contoh kegagalan |
|---|---|
| Keluaran terhadap antrean acuan | Aritmetika, urutan, tag salah |
| Accepted-delivered=occupancy | Kehilangan, penggandaan, pengiriman palsu |
| Muatan tertunda stabil | Penimpaan sebelum penerimaan |
| Okupansi dalam batas | Overflow atau underflow FIFO |
| Antrean acuan kosong setelah pengurasan | Hasil akhir hilang |
Invarian lokal mengidentifikasi tepi kegagalan pertama alih-alih hanya ketidakcocokan akhir. Okupansi internal adalah count FIFO ditambah bit valid tahap. Tambahkan pencatatan pembatalan ketika reset atau pengosongan diizinkan, dan gunakan kebijakan tepi yang sama di kedua monitor.
Gabungkan batas numerik dengan kasus pewaktuan: nol, nilai maksimum, carry dan borrow, lalu lintas berturut-turut, gelembung, penundaan panjang, penggantian saat penuh, dan pengurasan akhir. Catat seed acak agar kegagalan dapat diulang. Uji seluruh ruang kendali kecil bila praktis.
Pemeriksaan penyelesaian membutuhkan asumsi kemajuan dan batas waktu. Setelah penerima terus siap, pekerjaan yang belum selesai seharusnya terkuras. Dalam penundaan tanpa batas, wajibkan pemeliharaan dan okupansi terbatas. Merusak carry atau tundaan tag secara sengaja seharusnya membuat pemeriksaan gagal; uji mutasi ini mengukur sensitivitas. Kelulusan model Node tidak memvalidasi pengawatan HDL, perilaku X/Z, perpindahan domain clock, atau pewaktuan implementasi. Laporkan hanya cakupan eksekusi yang benar-benar diamati.
Coba sendiri
Accepted=9 dan delivered=5. Count FIFO dua dan kedua tahap valid. Apakah pencatatannya konsisten? Jika masukan lain diterima tanpa pengiriman dan okupansi tetap empat, apa yang mungkin terjadi?
Baca penjelasan
Pencatatannya cocok: 9-5=2+1+1=4. Setelah penerimaan lain tanpa pengiriman, selisih menjadi lima. Okupansi empat mengisyaratkan penerimaan tanpa kapasitas atau item yang tertimpa. Periksa kesiapan pada tepi kegagalan pertama.