ModelSim Tutorial
Transkrypt
ModelSim Tutorial
Krótkie wprowadzenie do ModelSim i Quartus2 wersja 04.2011 H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 1 Plan Oprogramowanie Pliki źródłowe Scenariusze użycia H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 2 Programy Programy w wersji darmowej do pobrania ze strony www.altera.com ModelSim-Altera Starter Edition (tutaj wersja 6.6c) Quartus2 Web Edition (tutaj wersja 10.1) dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 3 System ModelSim ModelSim jest zintegrowanym, graficznym środowiskiem do modelowania i symulacji modeli w językach VHDL i Verilog Kompilacja – sprawdzanie semantycznej poprawności plików, sprawdzanie hierarchii i związków pomiędzy portami i parametrami, poprawność odwołań do jednostek projektowych, funkcji i zadań Symulacja – z linii komend lub za pomocą interfejsu graficznego H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 4 Weryfikacja Weryfikacja projektu zajmuje do 70% czasu tworzenia całego systemu cyfrowego Zazwyczaj projekt weryfikacji powstaje w innym zespole Problem: w systemie projektowania fpga po syntezie logicznej nie ma wszystkich węzłów logicznych Rozwiązanie: system do modelowania języka HDL np. ModelSim Wada: wolne dla dużych systemów cyfrowych H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 5 Plik: bramka.vhd -- Model bramki i rejestru library ieee; use ieee.std_logic_1164.all; entity bramka is port ( a : in std_logic; b : in std_logic; clk : in std_logic; reset : in std_logic; y : out std_logic; ); end entity; architecture arch_bramka of bramka is signal rejestr : std_logic; signal bramka : std_logic; Begin b0: process (clk,reset) begin if(reset = '1') then rejestr <= '0'; elsif (rising_edge(clk)) then rejestr <= bramka; end if; end process; H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska bramka <= a xor b; y <= rejestr; end arch_bramka; 6 Plik: bramka_tb.vhd library ieee; use ieee.std_logic_1164.all; entity bramka_tb is end entity; architecture arch_bramka_tb of bramka_tb is signal T_clock : std_logic ; signal T_reset : std_logic ; signal T_a : std_logic ; signal T_b : std_logic ; signal T_y : std_logic ; component bramka port ( y : out std_logic ; a : in std_logic ; clk : in std_logic ; b : in std_logic ; reset : in std_logic ); end component; H D L begin process -- okres zegara 10ns begin T_clock <= '0'; wait for 5 ns; T_clock <= '1'; wait for 5 ns; end process; dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska process -- sygnal reset begin wait for 10 ns; T_reset <= '1'; wait for 5 ns; T_reset <= '0'; wait; end process; process -- sygnaly testowe begin T_a <= '0'; T_b <= '0'; wait for 30 ns; T_a <= '0'; T_b <= '1'; wait for 20 ns; T_a <= '1'; T_b <= '0'; wait for 20 ns; T_a <= '1'; T_b <= '1'; wait; end process; DUT : bramka -- testowany blok port map ( y => T_y, a => T_a, clk => T_clock, b => T_b, reset => T_reset ) ; end arch_bramka_tb; 7 Scenariusze użycia Projekt w ModelSim - symulacja z linii komend i za pomocą edytora graficznego Projekt w ModelSim – symulacja programu testującego TestBench Projekt w Quartus + symulacja funkcjonalna w ModelSim Projekt w Quartus + symulacja funkcjonalna programu testującego w ModelSim Projekt w Quartus + symulacja czasowa programu testującego w ModelSim H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 8 Scenariusze użycia Projekt w ModelSim - symulacja z linii komend i za pomocą edytora graficznego Projekt w ModelSim – symulacja programu testującego TestBench Projekt w Quartus + symulacja funkcjonalna w ModelSim Projekt w Quartus + symulacja funkcjonalna programu testującego w ModelSim Projekt w Quartus + symulacja czasowa programu testującego w ModelSim H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 9 Tworzenie projektu ModelSim Ustawiamy nazwę projektu Ustawiamy ścieżkę projektu Dodajemy pliki do projektu H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 10 Kompilacja projektu Kompilacja Status pliku: ? nieskompilowany V skompilowany X błędy kompilacji H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 11 Kompilacja projektu i korekta kodu Poprawiamy błąd: usunąć na końcu linii 12 znak ; Klik Klik H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 12 Kompilacja projektu i korekta kodu Kompilacja wskazanego pliku Informacje w oknie konsoli H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 13 Kompilacja projektu Skompilowany plik w bibliotece work Zmieniamy zakładkę Library H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 14 Symulacja projektu Wybieramy Start… Wybieramy bramka Alternatywa: klikamy na bramka H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska Lub: w oknie konsoli wpisujemy vsim work.bramka 15 Symulacja projektu Dodajemy wszystkie sygnały do okna graficznego wave Zaznaczamy bramka Dodane sygnały Lub w linii komend: VSIM> add wave * H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 16 Symulacja – wymuszenie wartości sygnałów Graficznie – sygnał zegarowy clk o okresie 10 ns H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 17 Symulacja – wymuszenie wartości sygnałów Graficznie – sygnały wejściowe a i b ustalamy na 0 H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 18 Symulacja – wymuszenie wartości sygnałów Graficznie – ustalamy krok symulacji na 10 ns Ustalamy krok Uruchamiamy symulację o zadany krok H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 19 Symulacja – wymuszenie wartości sygnałów Ustalamy krok symulacji na 5 ns Ustalamy wartość 1 dla sygnału reset Wykonujemy krok symulacji (5 ns) Ustalamy wartość 0 dla sygnału reset … … H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 20 Symulacja – wymuszenie wartości sygnałów z linii komend Z linii komend (1): Komendy można zapisać do pliku skryptu: test.do Z linii komend (2): VSIM>do test.do H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska # Wyczyszczenie wartosci i okna wave restart -force –nowave # Wymuszenie wartosci i symulacja add wave -r * force -freeze clk 0 0, 1 {5 ns} -r {10 ns} force -freeze a 0 0 force -freeze b 0 0 run 10 ns force -freeze reset 1 0 run 5 ns force -freeze reset 0 0 run 15 ns force -freeze b 1 0 run 20 ns force -freeze a 1 0 force -freeze b 0 0 run 20 ns force -freeze b 1 0 run 30 ns 21 Scenariusze użycia Projekt w ModelSim - symulacja z linii komend i za pomocą edytora graficznego Projekt w ModelSim – symulacja programu testującego TestBench Projekt w Quartus + symulacja funkcjonalna w ModelSim Projekt w Quartus + symulacja funkcjonalna programu testującego w ModelSim Projekt w Quartus + symulacja czasowa programu testującego w ModelSim H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 22 Symulacja – program testujący Po kompilacji, uruchamiamy symulator dla bramka_tb H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 23 Symulacja – dodanie sygnałów Do okna graficznego wave dodajemy sygnały: Wszystkie z jednostki projektowej: add wave sim:/bramka_tb/* Wszystkie z jednostki projektowej i zależnych: add wave -r sim:/bramka_tb/* Wszystkie z projektu: add wave -r /* Sygnały z jednostki bramka i bramka_tb H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 24 Symulacja bramka_tb VSIM>run 100 ns Moment charakterystyczny sygnału zegarowego Wyjście z bramki kombinacyjne Wyjście z bramki sekwencyjne H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 25 Scenariusze użycia Projekt w ModelSim - symulacja z linii komend i za pomocą edytora graficznego Projekt w ModelSim – symulacja programu testującego TestBench Projekt w Quartus + symulacja funkcjonalna w ModelSim Projekt w Quartus + symulacja funkcjonalna programu testującego w ModelSim Projekt w Quartus + symulacja czasowa programu testującego w ModelSim H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 26 Projekt w Quartus2 H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 27 Projekt w Quartus2 – nazwa projektu Ustawiamy ścieżkę projektu Ustawiamy nazwę projektu Domyślnie (ale nie musi) nazwa głównej jednostki projektowej jak nazwa projektu H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 28 Projekt w Quartus2 – dodanie pliku bramka.vhd H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 29 Projekt w Quartus2 – wybór układu fpga Wybieramy fpga: 1. z rodziny Cyclone2 2. układ EP2C35F672C6 (układ na płycie DE2) H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 30 Projekt w Quartus2 – ustawienia symulatora dla ModelSim H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 31 Projekt w Quartus2 – ustawienia symulatora dla ModelSim H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 32 Projekt w Quartus2 – ustawienia ścieżki do ModelSim Opcjonalnie, przy pierwszym uruchomieniu: sprawdzić czy poprawna ścieżka do aktualnej instalacji ModelSim-Altera Tools>Options: <install_path>/modelsim_ase/win32aloem H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 33 Projekt w Quartus2 – kompilacja Kompilacja projektu H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 34 Projekt w Quartus2 – kompilacja Postęp wykonania kolejnych etapów kompilacji H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 35 Projekt w Quartus2 – symulacja funkcjonalna Wywołanie symulatora Uruchomienie symulacji z biblioteki rtl_work H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 36 Scenariusze użycia Projekt w ModelSim - symulacja z linii komend i za pomocą edytora graficznego Projekt w ModelSim – symulacja programu testującego TestBench Projekt w Quartus + symulacja funkcjonalna w ModelSim Projekt w Quartus + symulacja funkcjonalna programu testującego w ModelSim Projekt w Quartus + symulacja czasowa programu testującego w ModelSim H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 37 Projekt w Quartus2 – ustawienie testu Po kompilacji, konfigurujemy test H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 38 Projekt w Quartus2 – ustawienie testu Wybór symulatora: ModelSim-Altera Wybór języka: VHDL Ustawienia symulatora Ustawienia dla testu H D L Wybór dla programu testowego dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 39 Projekt w Quartus2 – utworzenie testu H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 40 Projekt w Quartus2 – utworzenie testu Nazwa testu Nazwa głównej jednostki projektowej z bramka_tb Ustalenie czasu trwania testu Dodanie programu testującego z pliku bramka_tb.vhd H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 41 Projekt w Quartus2 – symulacja funkcjonalna Wywołanie symulatora H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 42 Projekt w Quartus2 – symulacja funkcjonalna W ModelSim-Altera automatycznie wykona się skrypt H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 43 Projekt w Quartus2 – symulacja funkcjonalna Automatycznie dodany widok graficzny z dodanymi sygnałami z jednostki projektowej H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 44 Scenariusze użycia Projekt w ModelSim - symulacja z linii komend i za pomocą edytora graficznego Projekt w ModelSim – symulacja programu testującego TestBench Projekt w Quartus + symulacja funkcjonalna w ModelSim Projekt w Quartus + symulacja funkcjonalna programu testującego w ModelSim Projekt w Quartus + symulacja czasowa programu testującego w ModelSim H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 45 Projekt w Quartus2 – ustawienie testu Po kompilacji, konfigurujemy test H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 46 Projekt w Quartus2 – ustawienie testu Wybór symulatora: ModelSim-Altera Wybór języka: VHDL Ustawienia symulatora Ustawienia dla testu H D L Wybór dla programu testowego dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 47 Projekt w Quartus2 – utworzenie testu Nazwa testu Nazwa głównej jednostki projektowej z bramka_tb Nazwa instancji testowanej DUT w bramka_tb Zaznaczamy opcję dla symulacji czasowej Ustalenie czasu trwania testu Dodanie programu testującego z pliku bramka_tb.vhd H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 48 Projekt w Quartus2 – symulacja czasowa Wywołanie symulatora Wybór modelu symulacji Slow lub Fast H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 49 Projekt w Quartus2 – symulacja czasowa Na symulacji czasowej widoczne opóźnienie między zmianą sygnału t_clock a wyjściem synchronicznym t_y wynosi ok. 5 ns H D L dr inż. Paweł Tomaszewicz Instytut Telekomunikacji Politechnika Warszawska 50