Krótkie wprowadzenie do ModelSim i Quartus2 wersja 04.2011 1
Plan Oprogramowanie Pliki źródłowe Scenariusze użycia 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) 3
System ModelSim ModelSim jest zintegrowanym, graficznym środowiskiem do modelowania i symulacji modeli w językach V 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 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 np. ModelSim Wada: wolne dla dużych systemów cyfrowych 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; 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; begin process -- okres zegara 10ns begin T_clock <= '0'; wait for 5 ns; T_clock <= '1'; wait for 5 ns; end process; 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; UT : 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 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 9
Tworzenie projektu ModelSim Ustawiamy nazwę projektu Ustawiamy ścieżkę projektu odajemy pliki do projektu 10
Kompilacja projektu Kompilacja Status pliku:? nieskompilowany V skompilowany X błędy kompilacji 11
Kompilacja projektu i korekta kodu Poprawiamy błąd: usunąć na końcu linii 12 znak ; Klik Klik 12
Kompilacja projektu i korekta kodu Kompilacja wskazanego pliku Informacje w oknie konsoli 13
Kompilacja projektu Skompilowany plik w bibliotece work Zmieniamy zakładkę ibrary 14
Symulacja projektu Wybieramy Start Wybieramy bramka Alternatywa: klikamy na bramka ub: w oknie konsoli wpisujemy vsim work.bramka 15
Symulacja projektu Zaznaczamy bramka odajemy wszystkie sygnały do okna graficznego wave odane sygnały ub w linii komend: VSIM> add wave * 16
Symulacja wymuszenie wartości sygnałów Graficznie sygnał zegarowy clk o okresie 10 ns 17
Symulacja wymuszenie wartości sygnałów Graficznie sygnały wejściowe a i b ustalamy na 0 18
Symulacja wymuszenie wartości sygnałów Graficznie ustalamy krok symulacji na 10 ns Ustalamy krok Uruchamiamy symulację o zadany krok 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 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 # 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 22
Symulacja program testujący Po kompilacji, uruchamiamy symulator dla bramka_tb 23
Symulacja dodanie sygnałów o 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 24
Symulacja bramka_tb VSIM>run 100 ns Moment charakterystyczny sygnału zegarowego Wyjście z bramki kombinacyjne Wyjście z bramki sekwencyjne 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 26
Projekt w Quartus2 27
Projekt w Quartus2 nazwa projektu Ustawiamy ścieżkę projektu Ustawiamy nazwę projektu omyślnie (ale nie musi) nazwa głównej jednostki projektowej jak nazwa projektu 28
Projekt w Quartus2 dodanie pliku bramka.vhd 29
Projekt w Quartus2 wybór układu fpga Wybieramy fpga: 1. z rodziny Cyclone2 2. układ EP2C35F672C6 (układ na płycie E2) 30
Projekt w Quartus2 ustawienia symulatora dla ModelSim 31
Projekt w Quartus2 ustawienia symulatora dla ModelSim 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 33
Projekt w Quartus2 kompilacja Kompilacja projektu 34
Projekt w Quartus2 kompilacja Postęp wykonania kolejnych etapów kompilacji 35
Projekt w Quartus2 symulacja funkcjonalna Wywołanie symulatora Uruchomienie symulacji z biblioteki rtl_work 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 37
Projekt w Quartus2 ustawienie testu Po kompilacji, konfigurujemy test 38
Projekt w Quartus2 ustawienie testu Wybór symulatora: ModelSim-Altera Wybór języka: V Ustawienia symulatora Ustawienia dla testu Wybór dla programu testowego 39
Projekt w Quartus2 utworzenie testu 40
Projekt w Quartus2 utworzenie testu Nazwa testu Nazwa głównej jednostki projektowej z bramka_tb Ustalenie czasu trwania testu odanie programu testującego z pliku bramka_tb.vhd 41
Projekt w Quartus2 symulacja funkcjonalna Wywołanie symulatora 42
Projekt w Quartus2 symulacja funkcjonalna W ModelSim-Altera automatycznie wykona się skrypt 43
Projekt w Quartus2 symulacja funkcjonalna Automatycznie dodany widok graficzny z dodanymi sygnałami z jednostki projektowej 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 45
Projekt w Quartus2 ustawienie testu Po kompilacji, konfigurujemy test 46
Projekt w Quartus2 ustawienie testu Wybór symulatora: ModelSim-Altera Wybór języka: V Ustawienia symulatora Ustawienia dla testu Wybór dla programu testowego 47
Projekt w Quartus2 utworzenie testu Nazwa testu Nazwa głównej jednostki projektowej z bramka_tb Zaznaczamy opcję dla symulacji czasowej Nazwa instancji testowanej UT w bramka_tb Ustalenie czasu trwania testu odanie programu testującego z pliku bramka_tb.vhd 48
Projekt w Quartus2 symulacja czasowa Wywołanie symulatora Wybór modelu symulacji Slow lub Fast 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 50