Ana içeriğe geç

Verilog Simülasyon Temelleri

· loading · loading · · ·
HDL Verilog HDL
Axolot Logic
Yazar
Axolot Logic
Sayısal Tasarım Mühendisi
Table of Contents
Verilog HDL Serisi - This article is part of a series.
Part 14: This Article

🧪 Verilog Simülasyonu Temelleri
#

Verilog simülasyonu, tasarımınızın zaman içinde çalıştırılması, davranışının gözlemlenmesi ve doğrulanması sürecidir.

💡 Temel Kavramlar:
#

  • Simülasyon zamanı adım adım ilerler (örn. #10)
  • Testbench girişleri uygular ve çıkışları gözlemler
  • Sentez yapılmaz — tamamen sanal bir çalışmadır

🧰 Testbench Nedir?
#

Testbench, Verilog modülü olup DUT’u (test edilen tasarım) örnekler, giriş sinyalleri üretir, ve opsiyonel olarak çıkışları izler.

✅ Örnek:
#

module tb;
  reg clk, rst;
  wire out;

  my_design dut (.clk(clk), .rst(rst), .out(out));

  initial begin
    rst = 1; #5; rst = 0;
    #100 $finish;
  end
endmodule

Testbench’ler sentezlenemez ve genellikle $display, $monitor, $dumpvars kullanır.


⏱️ timescale Direktifi
#

timescale direktifi, simülasyon zaman birimi ve zaman hassasiyetini tanımlar.

✅ Söz Dizimi:
#

`timescale 1ns / 1ps
Değer Anlamı
1ns 1 zaman birimi = 1 nanosecond
/1ps Zaman çözünürlüğü = 1 pikosaniye

timescale direktifini her .v dosyasının başına eklemeyi unutmayın, özellikle testbench’lerde.


🧭 Verilog Simülasyon Zamanlama Bölgeleri
#

Verilog simülasyonu, her zaman adımında 4 aşamalı bir döngü içinde ilerler:

Bölge Amaç Örnek
Active RTL değerlendirme (always, assign) RTL güncellemeleri
Inactive Gecikmeli tetikleyiciler (#0 gibi) #0 a = 1;
Non-blocking Update Planlanmış <= güncellemeleri Register güncellemeleri
Monitor $display, $monitor işlemleri Değişiklikleri izleme

Bu sıralama, <=, $display ve sinyal geçişlerinin doğru çalışmasını sağlar.


⏰ Testbench’te Clock Üretimi
#

Bir clock sinyali, initial + forever ya da always ile üretilebilir.

✅ Örnek 1: always ile
#

reg clk = 0;
always #5 clk = ~clk;  // 10ns clock periyodu

✅ Örnek 2: initial ile
#

initial begin
  clk = 0;
  forever #5 clk = ~clk;
end

forever yapısı yalnızca testbench içindir — sentezlenebilir kodlarda kullanmayın.


🔄 Tipik Simülasyon Akışı
#

  1. initial blokları zaman 0’da başlar
  2. assign / always mantığı sinyal değişimlerine tepki verir
  3. Zaman # gecikmeleri veya olaylarla ilerler
  4. $monitor, $dumpvars gibi komutlar çıkışları kaydeder

İşte bu kapsamlı bölümün Türkçe çevirisi:


🧪 Verilog’da Davranışsal ve Kapı Seviyesi Simülasyon
#

🔹 Davranışsal (Behavioral) Simülasyon
#

  • RTL (Register Transfer Level) seviyesinde çalışır
  • always, assign, initial gibi yapılarla amaçlanan fonksiyonelliği tanımlar
  • Hızlıdır ve erken işlevsel testler için idealdir
  • Gerçek kapı yapısı veya gecikmeler içermez

🔹 Kapı Seviyesi (Gate-Level) Simülasyon
#

  • Sentezlenmiş netlist üzerinden simülasyon yapar — lojik kapılar, flip-floplar, mux’lar vb.
  • Gerçek donanım davranışını yansıtır; zaman gecikmeleri ve fan-out etkileri dahil
  • Yavaştır, ancak son doğrulama için gereklidir
  • ASIC akışlarında SDF (Standard Delay Format) dosyaları kullanılır

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

Related

Blocking ve Non-Blocking Atamalar
· loading · loading
HDL Verilog HDL
Görev (Task) ve Fonksiyon (Function)
· loading · loading
HDL Verilog HDL
Hiyerarşik Referans
· loading · loading
HDL Verilog HDL
Komut Satırı Girdisi
· loading · loading
HDL Verilog HDL
Verilog Veri Tipleri
·635 kelime·3 dk· loading · loading
HDL Verilog Verilog HDL Veri Tipleri Mantık Seviyeleri Verilog Dizi
İsim Alanları
· loading · loading
HDL Verilog HDL