Skip to content

Doğrulama (Verification) Stratejisi ve Süreçler

Çip tasarım yarışmasında hata payını en aza indirmek için modüler ve kapsamlı bir doğrulama stratejisi izliyoruz. Doğrulama mimarimiz temel olarak UVM (Universal Verification Methodology) üzerine kuruludur.


1. Çekirdek ve Sistem Doğrulaması

İşlemcinin (CV32E40P) komutları doğru işleyip işlemediğini teyit etmek için Spike ISS (Instruction Set Simulator) kullanıyoruz. Simülasyondaki donanım adımları (RTL çıktıları) ile Spike ISS sonuçları birebir karşılaştırılarak işlemci hataları yakalanır.

2. Veriyolu ve Arayüz Doğrulaması (UVM)

AXI ve AXI-Lite veriyolları üzerindeki trafiği denetlemek için UVM agent'larından yararlanıyoruz.

  • Veriyoluna hiçbir müdahalede bulunmadan sadece sinyalleri izleyen passive monitor'ler kullanıyoruz.
  • Bu monitörler, master ve slave birimler arasındaki iletişimde protokol ihlali (örneğin hatalı handshake, adres taşması) olup olmadığını anında tespit eder.

Ayrıca çevre birimlerinin (UART, QSPI vb.) ve NPU arayüzlerinin testbench'leri tamamen UVM ve SystemVerilog kullanılarak yazılmıştır.

3. Kod Kapsama (Coverage) Hedefleri

Yarışma standartlarını karşılamak için kod kapsama metriklerimizi şu şekilde sabitledik:

  • Line Coverage (Satır Kapsamı): En az %90
  • Toggle Coverage (Sinyal Geçiş Kapsamı): En az %80

Functional Coverage (İşlevsel Kapsama)

Sadece satırların çalışması yeterli değildir. Aşağıdaki durumların da simülasyon sırasında en az bir kere gerçekleştiği functional coverage üzerinden takip edilir:

  1. NPU durum makinesinin (FSM) tüm olası geçişleri.
  2. AXI transfer tiplerinin (örneğin farklı burst boyutları) tamamı.
  3. Çevre birimi register'larına yapılan tüm köşe okuma/yazma senaryoları.

4. CI/CD Otomasyonu

Yukarıdaki tüm süreçler tar32.py pipeline ile otomatikleştirilmiştir. Geliştirici kodunu depoya gönderdiğinde:

  1. Lint aracı donanım kodunu statik analize sokar.
  2. UVM testleri çalıştırılarak belirlenen coverage değerlerine ulaşılıp ulaşılmadığı kontrol edilir.
  3. Vivado üzerinden kodun FPGA sığıp sığmadığı test edilir. Bu işlem host ortamında gerçekleştirilecek olunup host bilgisayarda Vivadonun kurulu olması gereklidir.