Altifigence Academy

17 / 20 · Konsep

Scoreboard dan invarian

Periksa suku, tag, tepi, dan transfer keluaran selain matriks akhir.

Pisahkan dua acuan

Gunakan acuan matematis langsung untuk menghitung jumlah lebar dengan perulangan i/j/k independen. Gunakan model pewaktuan terpisah untuk menggerakkan A ke kanan dan B ke bawah. Menyalin fungsi bantu pengindeksan RTL ke model acuan berisiko mereproduksi bug yang sama. Mulai dengan contoh tetap yang dihitung manual, lalu perluas ke masukan acak yang dapat direproduksi.

Gunakan job dan koordinat keluaran global sebagai kunci scoreboard hasil. Bandingkan setiap nilai yang diterima dan tandai kuncinya sebagai telah diterima. Kunci berulang adalah duplikat, kunci tak terduga adalah kesalahan alamat, dan kunci yang diharapkan tetapi belum diterima berarti hilang. Hasil nol tetap memerlukan pengiriman. Koordinat padding di luar rentang tidak boleh pernah disimpan.

Periksa invarian di dalam larik

Setiap PE harus mengonsumsi tepat [0,1,...,K−1]. Operand valid yang cocok harus memiliki tag job dan k sama. Count tetap antara nol dan K. Tepi berjeda menahan operand, valid, tag, akumulator, dan count. Clear meninggalkan count dan akumulator nol tanpa token valid. Hasil yang terblokir menahan data dan job sementara valid tetap aktif.

LapisanContoh kegagalanKemungkinan penyebab
Aritmetika23 alih-alih 19Indeks, tanda, atau lebar
Suku[0,1,1]Token duplikat
PewaktuanPE terakhir selesai pada E2Penyelesaian dini
JedaCount berubah saat berjedaHanya sebagian keadaan ditahan
KeluaranSatu kunci diterima dua kaliKendali jabat tangan

Untuk contoh 2×2, PE terakhir berisi delapan belas setelah E2 dan lima puluh setelah E3. Bug global-done pada E2 seharusnya gagal dalam pemeriksaan numerik maupun pewaktuan. Sebaliknya, hasil perkalian bernilai sama yang diduplikasi dan dihilangkan dapat mempertahankan jumlah akhir; pelacakan suku mendeteksi kebetulan itu.

Simpan seed acak, matriks, dimensi, lebar, dan posisi jeda. Catat PE, suku, dan tepi fisik pertama yang tidak cocok. Kesalahan tag yang disengaja harus gagal secara terlihat, bukan diam-diam menghilang.

Amati keadaan setelah E_t secara konsisten. Eksekusi acuan Node, kompilasi RTL, simulasi RTL, sintesis, penutupan pewaktuan, eksekusi proyek DDS, dan pengujian papan membuktikan fakta berbeda. Program Node yang disediakan memvalidasi model aritmetika dan jadwal. Pengujian RTL berikutnya dapat menggunakan kembali fixture, tetapi harus menyimpan versi alat, perintah, dan log tersendiri.

Coba sendiri

Buat masukan yang menyebabkan pemeriksaan jumlah akhir saja melewatkan satu suku duplikat dan satu suku yang hilang.

Baca penjelasan

Baris A [1,1] dan kolom B [5,5] seharusnya berjumlah sepuluh. Mengonsumsi [0,0] juga berjumlah sepuluh tetapi menduplikasi k0 dan menghilangkan k1. Mewajibkan nilai serta daftar suku tepat [0,1] mendeteksi bug tersebut.

Pilihan berlaku di peramban ini. Ubah kapan saja di bagian bawah halaman.