Programlanabilir Devreler Testbench & Simülasyon
İç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.
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.
Akış
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
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.
TestBench
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.
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.
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;
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);
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: $monitor($time, " clk_50=%b, rst=%b, enable=%b, counter=%h ", clk_50, rst, enable, counter,); $stop Simülayonu komutun işlendiği noktada dondurur. $finish Simulasyonu sonlandırır. $fopen ve $fdisplay ile dosyaya çıktı verilebilir.
ModelSim
ModelSim Testbench seçimi
ModelSim
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