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:
- Algoritma doğruluk testi (fast sim).
- Donanım davranış validasyonu (accurate sim).
- 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, powerFarklı seviyeler farklı soruların cevabı.
Formalizm: Simülatör Implementasyonu
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 xHı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).
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.
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
Laboratuvar Görevi
Simulator ile model-hardware co-design.
Senaryo: BERT-base Y1’e deploy edilecek.
Adımlar:
- FP32 eğit: %88 GLUE.
- Fast sim (no noise): %87 (quantization only).
- Accurate sim: %85 (with 5% noise).
- QAT + noise injection: model retrain.
- Accurate sim sonrası: %87 (target hit).
- FPGA test: %87 teyit.
- 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
- Bir sonraki bölüm: 6.9 — Test, Kalibrasyon, Doğrulama
- Önceki: 6.7 — Derleyici
- Donanım simülasyon: Verilator, Synopsys VCS.
- AI simulator: NVIDIA PhysX (oyun AI), Intel neural sim.
- Digital twin kavramı: GE, Siemens endüstri white papers.