1 lipca 2014

Quartus II i Modelsim – tutorial

Jak zasymulować prosty kod z Quartusa w Modelsimie? Tutorial.
Kod testowy:


module test1
(
    clock,
    clk_divide
);

    input                clock;
    output    reg    clk_divide;

    always @(posedge clock)
    begin
        clk_divide <= ~clk_divide;
    end
    
    
endmodule

Symulację przeprowadzamy tworząc plik testbench. Aby to zrobić wpierw trzeba kod zsyntezować – klikamy “Analysis & Syntesis” (Ctrl-K):

synteza

Synteza przebiega pomyślnie. Przechodzimy teraz do opcji. Wchodzimy w menu “Assignments->Settings”. W “EDA Tool Settings” wybieramy “Simulation”:

settings1

Ustawienia:
Tool name: Modelsim-Altera
Format for output netlist: Verilog (lub VHDL – w tym języku będzie generowany szablon testbencha)

Po zaakceptowaniu przechodzimy do generowania testbencha

(Processing->Start->Start Test Bench Template Writer):

tb_writer

Jeśli wszystko przebiegło pomyślnie (lub nie) to zostaniemy o tym poinformowani w konsoli.

Mamy wygenerowany testbench, trzeba jeszcze dodać go do projektu. Jeden ze sposobów:
“File->Open” i wybieramy pliki typu “Test Bench Output Files”. Wchodzimy do katalogu “simulation/modelsim”:

open_tb

Plik otworzy się na pierwszy plan. Teraz wybieramy “Project->Add Current File to Project”.

Modyfikujemy go dodając sygnały wymuszające na clock:

`timescale 1 ps/ 1 ps
module test1_vlg_tst();

reg clock;
wire clk_divide;

test1 i1 (
    .clock(clock),
    .clk_divide(clk_divide)
);

initial
begin
    i1.clk_divide = 0; //inicjalizacja sygnału z modułu test1 pod instancją i1
    clock = 0;
    #50;
    $display(&quot;Running testbench&quot;);
end
 
always
begin
    #10;
    clock = ~clock;
end

endmodule

Jak włączyć symulację? Po pierwsze, trzeba ustawić, aby przy włączaniu Modelsima testbench kompilował się automatycznie. W tym celu trzeba znów wejść w opcje projektu (Assignments->Settings->Simulation) i ustawić wybrany testbench.
Wybieramy “Compile test bench” i “Test benches”:

compile_tb

“New”:

tvb_new

Przy “Filename” klikamy w przycisk wielokropka i w oknie wybieramy dany plik, dodajemy przyciskiem “Add”, wpisujemy nazwę testbencha (Uwaga! tutaj na obrazku jako “Test bench name” wpisano “test1_testbench1” – w tym miejscu należy wpisać właściwą nazwę modułu testbench, w tym przypadku “test1_vlg_tst”), akceptujemy:

new_tb_settings

Akceptujemy wszystkie okna aż do końca.

Symulację uruchamiamy “Tools->Run Simulation Tool->RTL Simulation”:

run_rtl_sim

 

Po uruchomieniu Modelsima rozwijamy zakładkę “work” (znajduje się zwykle na górze), zaznaczamy element “test1_vlg_tst” i wybieramy “Simulate”:

modelsim_simulate

W “Objects” pojawiają się nasze zmienne z testbencha. Aby zacząć symulację trzeba dodać wybrane sygnały i ustalić czas symulacji. Wybieramy wszystkie sygnały i czas symulacji 10ns.

Alterantywnie w konsolę na dole można wpisać:

add wave *
run 10ns

Otrzymany wynik:

wave

 

Poradnik napisany z użyciem Altera Quartus 13.1

TrackBack

TrackBack URL dla tej wiadomości:
https://blog.kkthx.pl/2014/07/quartus-ii-i-modelsim-tutorial/trackback/

Komentarze

[…] Poradnik wiąże się i jest niejako rozwinięciem tutoriala „Quartus II i ModelSim Tutorial”. […]

Napisz komentarz