Ana içeriğe geç

Verilog Hiyerarşik Referans: Dahili Sinyallere Erişim

· loading · loading · ·
Kerim Turak
Donanım Tasarımı Verilog Hiyerarşik Referans Force Release Testbench Simülasyon Hata Ayıklama Donanım Doğrulama
Donanım Tasarımı
Yazar
Kerim Turak
Digital IC Design & Verification Engineer
Table of Contents
Verilog HDL Serisi - This article is part of a series.
Part 17: This Article

🧭 Hiyerarşik Referans (Hierarchical Reference)
#

Hiyerarşik referanslar, alt modüllerde tanımlı sinyal veya instance’lara erişmeyi sağlar. Özellikle testbench, force/release işlemleri ve debug amaçlı kullanılır.

✅ Örnek:
#

top.dut.internal_reg = 8'hA5;  // Testbench'ten iç sinyale erişim
  • top: en üstteki (top-level) modül
  • dut: test edilen tasarımın instance adı
  • internal_reg: dut içinde tanımlı bir sinyal

force ve release — Simülasyonda Değer Zorlamak
#

Simülasyon sırasında bir sinyalin değerini geçici olarak zorlamak (override) için force, bu kontrolü geri bırakmak için release kullanılır.

force top.dut.internal_reg = 8'hFF;  // Sinyal değerini zorla
#100 release top.dut.internal_reg;   // Sinyali tekrar simülasyona bırak

Bu kullanım şu durumlar için faydalıdır:

  • Testbench’te iç durumları doğrudan ayarlamak
  • Hata senaryoları veya arıza enjeksiyonu simülasyonu
  • İç mantığı debug etmek

🔧 Kullanım Alanları
#

  • Simülasyonda sinyal değerlerini zorlamak
  • Portlarla dışarıya çıkmayan sinyalleri gözlemlemek
  • Alt modüllerle derinlemesine etkileşim kuran testbench yazmak

⚠️ force, release veya hiyerarşik referanslar sentezlenebilir kodlarda kullanılmamalıdır — bu kullanım modül soyutlamasını bozar ve sentezlenemez.


module top;
    dut u_dut();  // Instantiate DUT
endmodule

module dut;
    reg [7:0] internal_reg = 8'h00;
endmodule

module tb_hierarchical_ref;

    initial begin
        // Set internal signal using hierarchical reference
        force top.u_dut.internal_reg = 8'hFF;
        #10;
        $display("Forced value = %h", top.u_dut.internal_reg);

        // Release the override
        release top.u_dut.internal_reg;
        #10;
        $display("Released value = %h", top.u_dut.internal_reg);

        $finish;
    end

endmodule

Verilog HDL Serisi - This article is part of a series.
Part 17: This Article

Related

Verilog Komut Satırı Girişi: Testbench Kontrolü İçin $plusargs
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Komut Satırı Plusargs Testbench Simülasyon Kontrolü Donanım Doğrulama
Donanım Tasarımı
Verilog Simülasyon Temelleri ve Testbench Tasarımı
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Simülasyon Testbench Timescale Simülasyon Bölgeleri Donanım Doğrulama
Donanım Tasarımı
Verilog Gecikme Kontrolleri: #Gecikme, @Olay, Bekleme
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Gecikme Olay Kontrolü Bekleme İfadesi Simülasyon Testbench
Donanım Tasarımı
Verilog Sistem Fonksiyonları ve Görevleri: Simülasyon İçin
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Sistem Fonksiyonları Verilog Görevler Simülasyon Testbench Rastgeleleştirme
Donanım Tasarımı
Verilog VCD: Simülasyon Analizi İçin Dalga Formu Kaydı
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog VCD Dalga Formu Görüntüleme Simülasyon Analizi Testbench GTKWave
Donanım Tasarımı
Verilog initial Bloğu: Testbench ve Simülasyon Temelleri
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Initial Verilog Testbench Simülasyon Donanım Doğrulama Dijital Tasarım
Donanım Tasarımı