💻 Modül 6 · Yazılım Yığını · Bölüm 6.8 · 9 dk okuma

Digital Twin / Simulator

SIDRA olmadan SIDRA geliştirmek — donanım simülasyon.

Bu bölümde öğreneceklerin

  • Digital twin kavramını ve neden gerekli olduğunu açıkla
  • SIDRA simulator'ın 3 seviyesini (fast, accurate, cycle) ayır
  • Donanım modellerini (gürültü, IR drop, termal) simülatörde nasıl çalıştır
  • QAT + simulator feedback loop'u özetle
  • Simulator'ın üretim öncesi verification rolünü tanı

Açılış: Çip Henüz Yokken Yazılım Hazır

Y1 çipinin fiziksel prototipi 2026. Ama yazılım geliştirme 2023’ten bu yana. Nasıl?

Digital twin: SIDRA donanımının yazılım modeli. Gerçek çip olmadan kod + model test edilir.

Aşamalar:

  1. Algoritma doğruluk testi (fast sim).
  2. Donanım davranış validasyonu (accurate sim).
  3. Cycle-accurate timing (cycle sim).

Bu bölüm her seviyeyi ve pratik kullanımını anlatır.

Sezgi: 3 Simülatör Seviyesi

Fast Simulator (Python/C)
    ~100× gerçek zamandan yavaş
    "Fonksiyonel doğruluk" — modelin ne yaptığı
    
Accurate Simulator (C++)
    ~10000× yavaş
    "Donanım davranış" — gürültü, IR drop, quantization
    
Cycle-accurate (Verilog/SystemC RTL)
    ~10^6× yavaş
    "Tam silikon davranış" — timing, power

Farklı seviyeler farklı soruların cevabı.

Formalizm: Simülatör Implementasyonu

L1 · Başlangıç

Fast simulator:

class FastSimulator:
    def __init__(self, compiled_model):
        self.weights = compiled_model.weights  # INT8
        self.layers = compiled_model.layers
    
    def infer(self, x):
        for layer in self.layers:
            if layer.type == "MVM":
                w = self.weights[layer.idx]
                x = np.dot(w, x)  # basit numpy MVM
            elif layer.type == "ReLU":
                x = np.maximum(0, x)
            # ...
        return x

Hızlı prototipleme. Gürültü yok, IR drop yok. Ama fonksiyonel doğruluk garanti.

Accurate simulator:

class AccurateSimulator(FastSimulator):
    def infer(self, x):
        for layer in self.layers:
            if layer.type == "MVM":
                w = self.weights[layer.idx]
                # Gürültü ekle
                noise = np.random.normal(0, 0.05 * w.std(), w.shape)
                # IR drop simülasyon
                ir_drop = self.estimate_ir_drop(layer)
                x = np.dot(w + noise + ir_drop, x)
                # Kuantizasyon hatası
                x = self.quantize(x, bits=8)
            # ...

Gerçekçi doğruluk. Model validation için. Yüzlerce kez koşturulur (Monte Carlo).

L2 · Tam

Cycle-accurate simulator:

RTL (Register Transfer Level) Verilog/SystemC. Her saat çevrimi simüle edilir:

always @(posedge clk) begin
    if (mvm_start) begin
        // Tüm crossbar hücreler paralel
        for (int c = 0; c < 256; c++)
            current[c] = sum(weights[row][c] * voltage[row]);
        // ...
    end
end

Çok yavaş (1 sn simülasyon = gerçek 10 µs) ama %100 donanım doğrulama.

Verilator open-source alternatif (ticari: Synopsys VCS, Cadence Xcelium).

Monte Carlo analiz:

Gürültü rastgele → 100 inference koştur, doğruluk dağılımı bak:

accuracies = []
for _ in range(100):
    sim = AccurateSimulator(model, seed=random())
    acc = sim.benchmark(test_data)
    accuracies.append(acc)

print(f"Mean: {mean(accuracies):.2%}, Std: {std(accuracies):.2%}")
# Output: Mean: 97.5%, Std: 0.3%

Worst-case analiz:

Modelin hassas olduğu senaryolar (yüksek sıcaklık, max IR drop, eski cihaz) simüle et. SIDRA kabulü: worst-case %95 doğruluk.

FPGA prototyping:

Cycle-accurate simülatör yetersizse FPGA kullan. Xilinx/Intel FPGA’lara SIDRA RTL yüklenir, gerçek zamandan 10× yavaş ama gerçek davranış.

SIDRA Y1 FPGA prototipi 2025’te tamamlandı. Yazılım yığını bunun üstünde test edildi.

L3 · Derin

Digital twin ekosistemi:

PyTorch Model

Compiler (6.7)
    ↓ compile
Compiled Binary
    ↓ deploy
[Fast Simulator]  OR  [Accurate Simulator]  OR  [FPGA]  OR  [Y1 Gerçek]

Geliştirici her durumda aynı binary’yi kullanır. Doğruluk arttıkça:

  • Fast: prototipe uygun.
  • Accurate: release öncesi.
  • FPGA: production validation.
  • Y1 gerçek: deployment.

QAT + simulator loop:

while not acceptable:
    model = train(model)
    model = quantize(model, method="qat")
    compiled = compile(model)
    acc = accurate_simulator.benchmark(compiled)
    if acc < target:
        # Noise injection training
        train_with_noise(model, noise_std=0.05)

Çoklu-Y1 simülasyon:

Multi-chip modeller için simulator bağımsız çipler simüle eder + PCIe gecikmesi modelleri.

Performance modeli:

Simulator performance da tahmin:

sim.estimate_latency(model)  # "5 ms / inference"
sim.estimate_energy(model)   # "20 mJ / inference"
sim.estimate_throughput()    # "3000 inference / saniye"

Müşteri için pre-sale spec.

Açık-kaynak:

SIDRA simulator (fast) MIT lisansı — herkesle paylaşılır. Araştırmacılar SIDRA donanımı olmadan geliştirebilir.

GitHub: sidra/sidra-sim. PyPI: pip install sidra-sim.

Türkiye akademik kullanım:

Simulator açık olduğu için TÜ öğrencileri SIDRA-temalı tezler yapabilir, donanım olmadan yayın üretebilir. Türkiye akademik ekosistemi katalizi.

Deney: Simulator ile MNIST

import sidra.simulator as sim
import torch

# Model yükle
model = torch.load("mnist_mlp.pth")
compiled = sidra.compile(model, target="y1")

# Fast simulator
fast_sim = sim.FastSimulator(compiled)
acc_fast = fast_sim.benchmark(mnist_test)
print(f"Fast sim: {acc_fast:.2%}")  # 97.8%

# Accurate simulator
acc_sim = sim.AccurateSimulator(compiled, 
    noise_model="y1_typical",
    ir_drop=True, temperature=300)
acc_acc = acc_sim.benchmark(mnist_test)
print(f"Accurate sim: {acc_acc:.2%}")  # 97.2%

# 100 Monte Carlo
accs = [sim.AccurateSimulator(compiled, seed=i).benchmark(mnist_test)
         for i in range(100)]
print(f"MC: {mean(accs):.2%} ± {std(accs):.2%}")  # 97.1% ± 0.3%

Gerçek Y1 deploy öncesi güven.

Kısa Sınav

1/6Digital twin ne işe yarar?

Laboratuvar Görevi

Simulator ile model-hardware co-design.

Senaryo: BERT-base Y1’e deploy edilecek.

Adımlar:

  1. FP32 eğit: %88 GLUE.
  2. Fast sim (no noise): %87 (quantization only).
  3. Accurate sim: %85 (with 5% noise).
  4. QAT + noise injection: model retrain.
  5. Accurate sim sonrası: %87 (target hit).
  6. FPGA test: %87 teyit.
  7. Y1 deploy: %87 (gerçek).

Süreç: 2 hafta. Donanım hazır olmadan model hazır.

Özet Kart

  • Digital twin: donanım öncesi yazılım + model test.
  • 3 seviye: fast, accurate, cycle-accurate.
  • Accurate sim: gürültü + IR drop + quantization + termal.
  • Monte Carlo: rastgele gürültü dağılımı.
  • FPGA prototyping: cycle-accurate ama gerçek hız.
  • QAT + sim loop: doğruluk garanti.
  • Açık kaynak: SIDRA fast sim MIT.

Vizyon: Simulator Geleceği

  • Y1: Python fast sim + C++ accurate.
  • Y3: GPU-accelerated sim (100× hızlı).
  • Y10: ML-tahminli sim (zaman/enerji neural net tahmin).
  • Y100: SIDRA üstünde SIDRA simülatör (çip kendisi simülatör).
  • Y1000: Kuantum hibrit simulator.

Türkiye için: açık kaynak simulator → Türkiye akademik yayın patlaması. 2027+ SIDRA tezleri ulusal dışı yayımlanır.

Daha İleri