Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
FPGA Eğitim Programı / Programlanabilir Devreler
Programlanabilir Devreler
Testbench & Simülasyon
FPGA Eğitim Programı / Programlanabilir Devreler
İçerik
Tasarlamış olduğumuz sayısal sistemlerin fonksiyonel olarak istenildiği gibi gerçekleştirdiğini doğrulamak gerekir.
Verilog ve VHDL gibi donanım tanımlama dilleri (HDL) donanım tasarımında kullanıldığı gibi, test aşamasında da kullanılabilmektedir.
Bu sunum tasarlamış olduğumuz sayısal sistemlerin ile verilog testbech ile ModelSim ile simulasyonunu ve doğrulanmasını gösterecektir.
FPGA Eğitim Programı / Programlanabilir Devreler
Testbench & Simulasyon
Sayısal devre simulasyonu ile tasarlamış olduğumuz sayısal sistemin ve bunun alt modüllerinin gerçeklendiğinde çalışması hakkında bilgi edinilir.
Bu simülasyon ile tasarlanmak istenen sistem bilinen girişler ile test edilerek beklenen sonuçlar elde edildiği doğrulanır.
Test edilen modül DUT(Device Under Test) olarak adlandırılır.
Testbench, test girişleri ve DUT içeren ve simulasyon sonuçlarını programsal olarak değerlendirmemize yardımcı bir modüldür.
Tüm tasarlanan sistem için testbench oluşturulabileceği gibi kullanılan her bir modülün testi için testbench’ler de oluşturulabilir.
FPGA Eğitim Programı / Programlanabilir Devreler
Akış
FPGA Eğitim Programı / Programlanabilir Devreler
Quartus II & ModelSim-Altera Ayarları
ModelSim-Altera Starter Ed. Kurulur.
Quartus’a ModelSim bağlantı ayarları yapılır.
Tools > Options > EDA Tool Options
Eda Tool: «ModelSim-Altera» için kurulum klasörü seçilir.
Ör: C:\altera\11.0\modelsim_ase\win32aloem
FPGA Eğitim Programı / Programlanabilir Devreler
Quartus II ile Verilog Testbench oluşturma
Proje açılır.
Assignments > Settings > EDA Tool Settings > Simulation
Tool Name: «ModelSim-Altera» olarak seçilir.
EDA NetList writer Settings > Format for output netlist : «Verilog» seçilir
Processing > Start > Start Test Bench Template Writer
Mesajlarda «proje_adi».vt adında bir verilog testbench dosyası hazırlandığı belirtilir.
File > Open , Dosya Türü olarak «Test Bench Output Files» seçip. Testbench dosyasını proje klasörü içindeki «simulation\modelsim» klasöründen açabiliriz.
FPGA Eğitim Programı / Programlanabilir Devreler
TestBench
FPGA Eğitim Programı / Programlanabilir Devreler
Verilog Testbench
Verilog testbench’in ilk satırı olarak simulasyonda gecikmelerin zaman birimi ve yuvarlama miktarı belirtilir.
Ör:
`timescale 1 ns/ 100 ps
# 10 , 10 ns gecikmeye neden olur.
Simulasyonda zaman hesaplamaları 100ps(0.1ns) detaylı olarak yapılır.
FPGA Eğitim Programı / Programlanabilir Devreler
Verilog Testbench
Verilog testbench ana modülü input veya output portları yoktur.
Testbench ile DUT/test edilecek modülü içerir ve bu modüle bağlantılı giriş ve çıkış reg ve net tipinde sinyalleri tanımlanır, bu sinyallere atamalar yapılır ve sonuçları incelenir.
Reg ve wire ile stimilu (test giriş) sinyalleri tanımlanır
initial
İnitial bloğu ile reg tipinde sinyallere ilk değer atamaları yapılır.
İlk değer ataması yapılmayan reg tipindeki sinyallerin ilk değeri «x» olarak , wire tipindeki sinyaller ise «z» değerlendirilir.
intial ve always blokları ile stimilu uygulanarak sonuçlar incelenebilir.
FPGA Eğitim Programı / Programlanabilir Devreler
Simulasyon
Simulasyon’da initial ve always blokları t=0 anında paralel çalışmaya başladığı unutulmamalıdır. (Önce initial çalışıp sonra always blokları çalışmaz.)
Sequential devreler için Clock ve Reset sinyallerine ihtiyaç duyulur.
`timescale 1 ns/ 100 ps
reg clk_50, rst;
initial
begin
clk_50 = 1’b0; // at time 0
rst = 1’b1; // reset is active
#20 rst = 1’b0; // at time 20 release reset
End
always
#10 clk_50 = ~clk_50;
FPGA Eğitim Programı / Programlanabilir Devreler
Verilog System Tasks
Simulasyon sırasında verilog sistem task’larını kullanabiliriz.
$display
Simülasyon sırasında ilgili işlem satırında konsola çıktı verir.
Ör:$display("Running test bench");
$display, çeşitli format karakterleri içerir. %h Hex, %b binary , %d decimal
Ör: $display("counter value : %d ", counter);
$time ile simulasyonun o anki zamanıda çıktı alınabilir.
Ör: $display($time,"pos value : %h ", pos);
FPGA Eğitim Programı / Programlanabilir Devreler
Verilog System Tasks
$monitor
$monitor sistem task’ı ile belirtilen sinyallerden herhangi biri değiştiğinde konsola çıktı verir.
Kullanım şekli $display ile aynıdır.
Ör:
$stop
Simülayonu komutun işlendiği noktada dondurur.
$finish
Simulasyonu sonlandırır.
$fopen ve $fdisplay ile dosyaya çıktı verilebilir.
$monitor($time, " clk_50=%b, rst=%b, enable=%b, counter=%h ", clk_50, rst,
enable, counter,);
FPGA Eğitim Programı / Programlanabilir Devreler
ModelSim
FPGA Eğitim Programı / Programlanabilir Devreler
ModelSim
Testbench seçimi
FPGA Eğitim Programı / Programlanabilir Devreler
ModelSim
FPGA Eğitim Programı / Programlanabilir Devreler
ModelSim
Quartus II & ModelSim ile RTL ve Gate Level Simulasyon yapılabilir.
RTL simulasyonu Sentezleme sonucunda elde edilecek sayısal sistemin fonksiyonel testleri yapılır.
Gate Level simulasyonda ise fitter sonrasında FPGA üzerindeki yerleşimden kaynaklanan yol ve lojik gecikmelerinde dikkate alınır.
Tools> Run EDA Simulation Tool > EDA RTL Simulation
Tools> Run EDA Simulation Tool > EDA Gate Level Simulation