Ana içeriğe geç

Verilog generate Bloğu: Parametrik Donanım Tasarımı

· loading · loading · ·
Kerim Turak
Donanım Tasarımı Verilog Generate Parametrik Tasarım RTL Tasarımı Donanım Sentezi Dijital Tasarım
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 8: This Article

🏗️ Verilog’ta generate Bloğu Nedir?
#

generate yapısı, parametrik ve tekrar eden donanım yapıları oluşturmak için kullanılır. initial bloklarının aksine sentezlenebilir ve derleme zamanında işlenir.


🎯 Temel Özellikler
#

ÖzellikAçıklama
Sentezlenebilir✅ Evet – FPGA/ASIC’te donanıma dönüştürülür
Kullanım AmacıDöngüsel ya da koşullu modül oluşturma
Türlerifor-generate, if-generate, case-generate
Değişken Tipigenvar – sadece derleme zamanında kullanılır

🔁 for-generate – Tekrarlayan Yapı Örneği
#

genvar i;
generate
  for (i = 0; i < 8; i = i + 1) begin : tersle
    assign out[i] = in[7 - i];
  end
endgenerate

➡️ Bit sıralama, pipeline ya da çoklu mantık kapısı örnekleri için ideal.


🧱 İç İçe Döngü ve Parametreli Genişlik
#

parameter WIDTH = 16;
genvar k;
generate
  for (k = 0; k < WIDTH; k = k + 4) begin : nibble_adder
    adder u_add (
      .a(a[k+3:k]),
      .b(b[k+3:k]),
      .s(sum[k+3:k])
    );
  end
endgenerate

🔀 if-generate – Koşullu Yapılar
#

generate
  if (USE_DSP48) begin
    dsp_mult u_dsp (.a(a), .b(b), .p(p));
  end else begin
    basic_mult u_basic (.a(a), .b(b), .p(p));
  end
endgenerate

parameter değeri derleme zamanında belirlenerek devre yapısı buna göre oluşturulur.


⚠️ Sık Yapılan Hatalar
#

  1. genvar yanlış kullanımı
genvar i;
always @(*) begin
  for (i = 0; i < 4; i = i + 1) // ❌ HATA: genvar sadece generate'de kullanılır
    ...
end
  1. Koşullar sabit olmalı
if (runtime_signal == 1) // ❌ Derleme zamanı değil → desteklenmez

✅ Yalnızca parameter veya sabit değerlerle kullanılır.


✅ En İyi Uygulamalar
#

  • Her zaman etiket kullanın (: blok_adi) – waveform erişimi için şart
  • genvar sadece generate bloğu içinde kullanılmalı
  • Özellik kontrolü için if-generate, çoğaltma için for-generate tercih edilmeli
  • Sentez raporlarını kontrol edin – beklediğiniz kadar modül oluşturulmuş mu?
  • Taşınabilirlik için sadece desteklenen yapılarla kod yazın

💡 generate blokları sayesinde modülerlik, kod tekrarı önleme, parametrik donanım üretimi kolaylaşır – modern FPGA ve ASIC tasarımlarında olmazsa olmazdır.

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

Related

Donanım Tasarımında Soyutlama Seviyeleri
·208 kelime·1 dk· loading · loading
Kerim Turak
Donanım Tasarımı Donanım Soyutlama RTL Tasarımı Kapı Seviyesi Transistör Seviyesi Dijital Tasarım
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ı
Verilog Ad Alanları: Kapsam ve Modülerliği Anlamak
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Ad Alanı Verilog Kapsam Modülerlik RTL Tasarımı Donanım Tanımlama Dili
Donanım Tasarımı
Verilog Atamaları: Prosedürel ve Sürekli Atama Farkları
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Atamaları Sürekli Atama Prosedürel Atama RTL Tasarımı Donanım Tanımlama Dili
Donanım Tasarımı
Verilog Blocking vs. Non-Blocking Atamalar
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Atamaları Blocking Atama NonBlocking Atama RTL Tasarımı Sıralı Mantık
Donanım Tasarımı
Verilog Kontrol Akışı: if, case, Döngüler ve RTL Kuralları
· loading · loading
Kerim Turak
Donanım Tasarımı Verilog Kontrol Akışı Verilog If-Else Verilog Case Verilog Döngüler RTL Tasarımı
Donanım Tasarımı