Till KTH:s startsida Till KTH:s startsida

Testbänk i ModelSim (sw)

sw Testbänk i ModelSim 

Automatisera testningen av kodlåset

pdf  testbench.pdf

Välj rätt programversion - i skolan finns flera olika installerade under startmenyn!

Altera 13.0.1.232 Web edition\
    ModelSim-Altera Starter Edition 13.0.1.232\
          ModelSim-Altera 10.1d(Quartus II 13.0sp1)  

Starta ModelSim.

welcomewindow.bmp

Klicka på Jumpstart. Denna gång väljer vi länken "Open Project" för att fortsätta med det gamla MAXsim-projektet.

jumpstartcreate.png


Testbänken 
Förutom VHDL-koden för låset, behöver vi nu ytterligare en VHDL-fil för testbänkskoden.

newvhdl.gif

Skapa en ny tom VHDL-fil. Kopiera och klistra in innehållet från den givna filen  tb_lockmall.vhd  och spara sedan filen under samma namn,  tb_lockmall.vhd, bland de övriga filerna i projektet.

Alternativt kan man kopiera över hela filen  tb_lockmall.vhd  till mappen med de övriga filerna i projektet.

  testbench.gif  tb_lockmall.vhd   ( text.gif tb_lockmall.txt )


Lägg till VHDL-filen till projektet

addmenu.gif

addfiletoproject.gif

Projektet har nu två filer. Filen  tb_lockmall.vhd  är inte kompilerad ännu, vilket syns på det blåa frågetecknet.

twofiles.gif

Välj menyvalet Compile och alternativet Compile All. Nu kompileras filen  tb_lockmall.vhd. Av innehållet i den filen framgår att den styr  codelock.vhd, så det är därför den har det högsta ordningsnumret.

twocompiled.gif



Ladda Designen till simulatorn.

Vi vill att testbänkens meddelanden ska visas (som pilar) överst i Wave-fönstret. 
Därför skriver vi i Transcript-fönstret:

VIKTIGT för att få pilarna!

vsim -msgmode both -displaymsgmode both tb_codelock

Därefter lägger man till signalerna i Wave-fönstret.

add wave *

Starta simuleringen

I filen  tb_codelock.vhd  står raden  clk <= not clk after 10 ns;. Den skapar de klockpulser med periodtiden 20 ns som vi använt tidigare.

clkfreq.gif

Vi kan direkt starta simuleringen med kommandot run 3us i Transcript-fönstret. Tiden 3 μs räcker för att prova igenom alla tänkbara tangent-tryckningskombinationer.

run 3us

Transcript-fönstret kan vi läsa det uppmuntrande budskapet  Note: Lock tries to open for the right sequence!. 
Wave-fönstret väljer man ViewZoom, och Zoom Full och kan då se hela förloppet. (Zoom Last kan också vara användbart).

noerror.gif

De gröna pilarna visar när den önskade händelsen händer! 
Avsluta nu simuleringen.

endsimulation.gif endsimulationyes.gif


Avslöja den felaktiga koden!

changecode.bmp

Nu gäller det att i Project-fönstret dubbelklicka på filen  codelock.vhd  så att den visas i texteditorn och där går att förändra. Kopiera och klistra in innehållet från filen  lockmall_with_error.vhd. Spara sedan filen under samma namn som tidigare och kompilera om allt.

vhdlfile  lockmall_with_error.vhd   ( text.gif lockmall_with_error.txt )

Simulera sedan på samma sätt som tidigare. I Transcript-fönstret kan Du läsa meddelanden från testbänken när önskade eller oönskade händelser sker.

Den röda pilen i Wave-fönstret visar när den oönskade händelsen händer!

error.gif


VHDL-testbänksfilen

Du behöver naturligtvis inte kunna skriva en VHDL-testbänksfil efter en kort första kurs om Digital Design. Tag ändå tillfället i akt att gå igenom filen och se om Du kan förstå hur den är tänkt!