Ana içeriğe geç

SystemVerilog'da cover directive kullanımı ve functional coverage

· loading · loading · ·
Kerim Turak
Eğitim SystemVerilog Doğrulama SystemVerilog SVA Cover Assertion Verification Functional Coverage Testbench
Eğitim SystemVerilog Doğrulama
Yazar
Kerim Turak
Digital IC Design & Verification Engineer
Table of Contents
SystemVerilog Tasarım Serisi - This article is part of a series.
Part 38: This Article

📌 Cover Directive Nedir?
#

SystemVerilog’da cover directive, tasarım veya testbench ortamında belirli bir davranışın gerçekleşip gerçekleşmediğini kontrol etmek için kullanılır. Bu, functional coverage takibi yapmak için kritik bir mekanizmadır.

Örnek:

cover property (@(posedge clk) req |-> ack);

Bu örnekte:

  • req sinyali aktif olduğunda, bir sonraki cycle’da ack sinyalinin aktif olup olmadığını kontrol eder.
  • Assertion hata üretmez; yalnızca koşul sağlandığında coverage event’i tetikler.

🛠️ Neden Cover Kullanırız?
#

Testbench Etkinliği: Tasarımın her yolunun (örneğin state geçişleri veya handshake senaryoları) test edilip edilmediğini görmek için kullanılır.

Coverage Analizi: Testlerin kapsamını ölçerek hangi davranışların test edildiğini veya eksik kaldığını raporlar.

Assertion ile Kombinasyon: Aynı property hem assert hem de cover directive ile kullanılabilir:

assert property (p_handshake);
cover property (p_handshake);

🔍 Cover’ın Kullanım Alanları
#

  • FSM (Finite State Machine) coverage: Tüm state geçişlerinin test edildiğinden emin olmak için kullanılır.

  • Handshake Protokolleri: Request-acknowledge, valid-ready gibi handshake’lerin her kombinasyonunun gerçekleşip gerçekleşmediğini takip eder.

  • Protokol Coverage: PCIe, AMBA gibi protokollerde transaction’ların farklı kombinasyonlarını kontrol eder.


📝 Cover Kullanırken Dikkat Edilmesi Gerekenler
#

  • Simülasyona Bağımlıdır: Cover directive yalnızca simülasyon çalışırken testlerin gerçekleşip gerçekleşmediğini kontrol eder. Formal verification’da assertion coverage kullanımı assertion coverage tool’una bağlıdır.

  • Hata Mesajı Üretmez: Cover koşulu sağlanmazsa test fail olmaz, sadece coverage eksik raporlanır.


🔧 Basit Örnek
#

property p_valid_ready;
  @(posedge clk) valid |-> ready;
endproperty

cover property(p_valid_ready);

Bu örnekte:

  • valid geldiğinde bir sonraki cycle’da ready kontrol edilir.
  • Bu senaryo gerçekleşirse coverage tick edilir.

SystemVerilog Tasarım Serisi - This article is part of a series.
Part 38: This Article

Related

SystemVerilog'da Property Reuse: Parametreler, Argümanlar ve Assertion Binding
· loading · loading
Kerim Turak
Eğitim SystemVerilog Doğrulama SystemVerilog SVA Property Assertion Binding Parametreli Property Verification Reusable Property Testbench
Eğitim SystemVerilog Doğrulama
SystemVerilog Assertion (SVA) Nedir ve Neden Kullanılır?
· loading · loading
Kerim Turak
Eğitim SystemVerilog Doğrulama SystemVerilog Assertion Doğrulama Formal Verification Concurrent Assertion Immediate Assertion SVA
Eğitim SystemVerilog Doğrulama
SystemVerilog let Kullanımı – RTL ve Assertions için Tekrar Kullanılabilir İfadeler
· loading · loading
Kerim Turak
Doğrulama RTL Tasarımı SystemVerilog Let Assertion Ifadeleri Yeniden Kullanma Testbench RTL
Doğrulama RTL Tasarımı
Immediate Assertion
· loading · loading
Kerim Turak
Eğitim SystemVerilog Doğrulama SystemVerilog Assertion Verification Immediate Assertion Deferred Immediate Assertion Doğrulama
Eğitim SystemVerilog Doğrulama
SystemVerilog Assertionlar: Delay, Repetition ve Status
· loading · loading
Kerim Turak
Eğitim SystemVerilog Doğrulama SystemVerilog Assertion Verification Repetition Delay Overlap Go-to Repetition Assertion Status
Eğitim SystemVerilog Doğrulama
SystemVerilog Assertions: Same Cycle ve Next Cycle İmplication
· loading · loading
Kerim Turak
Eğitim SystemVerilog Doğrulama SystemVerilog Assertion Verification Same Cycle Implication Next Cycle Implication Assertion Overlapping Fonksiyonlar
Eğitim SystemVerilog Doğrulama