Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

POLITECHNIKA KOSZALIŃSKA Wydział Elektroniki ELEKTRONIKI WYDZIAŁ POLITECHNIKA KOSZALIŃSKA Przemysław Sołtan ie.tu.koszalin.pl Koncepcja.

Podobne prezentacje


Prezentacja na temat: "POLITECHNIKA KOSZALIŃSKA Wydział Elektroniki ELEKTRONIKI WYDZIAŁ POLITECHNIKA KOSZALIŃSKA Przemysław Sołtan ie.tu.koszalin.pl Koncepcja."— Zapis prezentacji:

1 POLITECHNIKA KOSZALIŃSKA Wydział Elektroniki ELEKTRONIKI WYDZIAŁ POLITECHNIKA KOSZALIŃSKA Przemysław Sołtan ie.tu.koszalin.pl Koncepcja realizacji testów jednostkowych w języku VHDL VII Krajowa Konferencja Naukowa RUC'2004 REPROGRAMOWALNE UKŁADY CYFROWE

2 2 Wprowadzenie Koncepcja realizacji testów jednostkowych Projektowanie jednostek testowych VHDL Osadzanie testów we własnych projektach Raportowanie wyników testu Rozszerzenia biblioteki (np. logika nstd_logic) Rozwój biblioteki vhdlUnit Podsumowanie

3 3 Koncepcja realizacji testów Projekt VHDL standardowe mechanizmy asercji VHDL; własne procedury testowe (niestandardowe procedury – trudności z ponownym wykorzystaniem kodu testowego); porównywanie przebiegów testowych – waveform (uzależnienie od mechanizmów dostarczonych przez środowisko projektowe); testy jednostkowe – biblioteka vhdlUnit TESTOWANIE (test benches)

4 4 Testy jednostkowe - moduły testujące (jednostki testowe), które można uruchamiać w izolacji od pozostałych Raporty – kontrola jakości wykonywanej pracy Złożoność projektów wymusza automatyzację testów i odciążenie projektanta od wykonywania powtarzalnych czynności Testy jednostkowe Testowany system Testy jednostkowe Raporty

5 5 Koncepcja realizacji testów Testowany model ( VHDL ) TestBench Raporty (HTML/XML) TestCase Stymulus VhdlUnit (vhdl) testy jednostkowe (rozbudowanie mechanizmów asercji, raportowania i automatyzacji testów); Asercja – wymuszenie zachowania określonego warunku podczas pracy symulowanego systemu (np. przyjmowanie przez dany sygnał określonego stanu - wartości)

6 6 Standardowe metody asercji assert a = b report 'Błąd...: a jest różne od b' severity ERROR; ograniczone sposoby raportowania błędów; działanie w zakresie pojedynczych symulacji Asercja sprawdzająca warunek Czy a=b ? wyświetlany komunikat przy niespełnionym warunku, a=b komunikat błędu wyświetlany na konsoli

7 7 Metody asercji biblioteki vhdlUnit assertEquals(a,b); NameStatusTypeTime(s) N/ASuccessassertEquals (0,0) 50 ns NameStatusTypeTime(s) N/AErrorassertEquals (0,1) 50 ns a=b a<>b Raport rozbudowana lista metod asercji assertXXX dla różnych typów danych (możliwość rozszerzania o metody asercji dla własnych typów danych np. nstd_logic) raportowanie wyników w postaci tabel

8 8 Pakiety biblioteki vdhlUnit library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_TEXTIO.all; use STD.TEXTIO.all; use work.vhdlUnit_cfg.all; package vhdlUnit is... procedure setUp(name: in string; test:boolean); procedure tearDown; function assertWait(t:in time)return time; function assertTime(t:in time)return time; procedure assertEquals(name: in String; arg1,arg2: in std_logic); procedure assertZero(arg: in std_logic); procedure assertTrue(arg: in std_logic); procedure assertFalse(arg: in std_logic); procedure assertSame(name: in String; arg1,arg2: in std_logic); procedure assertNotSame(name: in String; arg1,arg2: in std_logic); procedure assertInfo(message : in String); procedure fail(name: in String);... end vhdlUnit; package body vhdlUnit is... end vhdlUnit; metody asercji package vhdlUnit_cfg is constant TEST_PROJECT_NAME : String := "Nazwa testu"; constant TEST_PROJECT_HOME : String := "lokalizacja"; end vhdlUnit_cfg; vhdlUnit.vhd vhdlUnit_cfg.vhd plik konfiguracyjny

9 9 TestBench + vhdlUnit library ieee; use ieee.std_logic_unsigned.all; use ieee.std_logic_1164.all; use work.vhdlUnit.all; use work.vhdlUnit_cfg.all; entity fa_tb is end fa_tb; architecture TB_ARCHITECTURE of fa_tb is component fa port(...) end component; begin STIMULUS: process begin... end process; UUT : fa port map (...); TestCaseA : process begin... end process end architecture; Stymulatory Testowany komponent UUT TestBench.vhdl Jednostka testowa TestCase proces testowy mapowanie biblioteki vhdlUnit

10 10 Proces testowy jest najmniejszą jednostką testową składającą się z metody setUp inicjującej test, grupy metod asercji assertXXX testujących stan testowanych sygnałów, oraz metody teardown zakończenia testu. Struktura jednostki testowej vhdlUnit.vhdl setUp(…) … assertTime(…) assertWait(…) assertEquals(…) assertTrue(…) assertInfo(…) fail; tearDown; TestBench.vhdl Jednostka testowa Stymulatory Testowany komponent UUT setUp(...) assertXXX() tearDown; vhdlUnit_cfg.vhdl TestCase : process begin setUp(Test,true); wait for assertTime(50ns); assertEquals(out1,0); … tearDown; wait end process; 2 3

11 11 TestCase - przykłady TestCase : process begin setUp("bramka_and4",true); -- inicjalizacja testu wait for assertTime(50ns); assertEquals("out_1",out_1,'0'); wait for assertTime(100ns); assertEquals("out_1",out_1,'0');... wait for assertTime(800ns); assertEquals("out_1",out_1,'1'); tearDown; -- koniec testu wait; end process; TestCase : process constant test_vector: nstd_logic_vector(1 to 16) := " "; constant test_time: time := 50ns; begin setUp("bramka_and4",true);-- inicjalizacja testu for i in 1 to test_vector'LENGTH loop wait for assertTime(i*test_time); assertEquals("out_1",out_1,test_vector(i)); end loop; tearDown; -- koniec testu wait; end process ; bezpośrednie porównania porównanie z wektorem danych

12 12 Przykład – test pełnego sumatora FA TestBench Wzorzec Raport ?

13 13 Osadzanie testów Raport (Html/XML) open new close update Testowane komponenty vhdlUnit.do VhdlUnit_tb (unit_finalize) VhdlUnit_tb (unit_initialize) test 1 test 2 test N initialize finalize vhdlunit.properties – plik buforujący dane przekazywane pomiędzy kolejnymi symulacjami

14 14 Osadzanie testów clear SetActiveLib -work set PROJECT_HOME "$DSN\src\vhdlunit\examples" comp -include "$PROJECT_HOME\vhdlunit\vhdlUnit_cfg.vhd" comp -include "$DSN\src\vhdlUnit\vhdlUnit.vhd" asim INITIALIZE_VHDL_UNIT run 1ns Endsim comp -include "$PROJECT_HOME\fa.vhd" comp -include "$PROJECT_HOME\testbench\fa_TB.vhd" asim TESTBENCH_FOR_fa run 400 ns Endsim... asim FINALIZE_VHDL_UNIT run 1ns endsim Testowane komponenty VhdlUnit_tb (unit_finalize) VhdlUnit_tb (unit_initialize) Przykładowe makro środowiska ActiveHDL (ALDEC) Sekwencyjne wywołanie symulacji testowych wraz z dodatkową symulacją początkową ( INITIALIZE_VHDL_UNIT ) i końcową ( FINALIZE_VHDL_UNIT )

15 15 Dwie jednostki testowe (procesy) znajdujące się w jednym wspólnym lub dwóch niezależnych testbenchach wykonywanych w niezależnych symulacjach TestCaseB : process begin setUp(Test,TestCase_2); wait for assertTime(50ns); assertEquals(out1,0); … tearDown; wait end process; Konfiguracja vhdlUnit package vhdlUnit_cfg is constant TEST_PROJECT_NAME : String := "Nazwa testu"; constant TEST_PROJECT_HOME : String := "lokalizacja"; constant TestCase_1 : boolena := true; constant TestCase_2 : boolena := false; end vhdlUnit_cfg; TestCaseA : process begin setUp(Test,TestCase_1); wait for assertTime(50ns); assertEquals(out1,0); … tearDown; wait end process; Plik konfiguracyjny umożliwia selektywne włączanie określonych procesów testowych vhdlUnit_cfg.vhd

16 16 Raportowanie wyników testu Info Success Error Failure statystyka testu

17 17 library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_TEXTIO.all; use STD.TEXTIO.all; library nstd_logic_2000; use nstd_logic_2000.nstd_logic_2000.all; use work.vhdlUnit.all; package vhdlUnit_ext_nstd_logic is... procedure assertEquals(arg1,arg2 : in nstd_logic);... function nstd2std(arg : in nstd_logic) return std_logic; function std2nstd(arg : in std_logic) return nstd_logic; end vhdlUnit; package body vhdlUnit is... procedure assertEquals(arg1,arg2 : in nstd_logic) is begin assertEquals("N/A", nstd2std(arg1),nstd2std(arg2)); end; end vhdlUnit_ext_nstd_logic; Moduł rozszerzający - przykład library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_TEXTIO.all; use STD.TEXTIO.all; use work.vhdlUnit_cfg.all; package vhdlUnit is... procedure assertEquals(arg1,arg2 : in std_logic);... end vhdlUnit; vhdlUnit.vhd vhdlUnit_ext_nstd_logic.vhd use work.vhdlUnit_cfg.all; use work.vhdlUnit.all; use work.vhdlUnit_ext_nstd_logic.all vhdlUnit_ext_nstd_logic.vhd vhdlUnit.vhd TestBench (nstd_logic) Biblioteka vhdlUnit nie wymaga modyfikacji (przeciążanie metod asercji)

18 18 Rozwój biblioteki vhdlUnit Dodatkowe moduły raportujące (np. XML, SVG) Implementacja metod asercji pobierających wzorcowe dane z zewnętrznych plików assert(FILE), assert(LIST), assert(WAVE) Porównywanie przeprowadzonych testów z ich wcześniejszymi wersjami (rejestrowanie postępu prac projektowych – liczby poprawnie działających testów,...) Rozbudowa mechanizmów przekazywania danych pomiędzy dwoma symulacjami (vhdlUnit.properties)

19 19 vhdlUnit Open Source Project

20 20 Podsumowanie Niezależność od środowiska projektowego (całość kodu opracowana w języku VHDL) Możliwość rozszerzania o własne moduły (vhdlUnit_ext_nstd_logic.vhd) Zgodność nazewnicza z innymi bibliotekami testów jednostkowych (JUnit) Możliwość wspólnego raportowania wyników testu dla wielu niezależnych symulacji


Pobierz ppt "POLITECHNIKA KOSZALIŃSKA Wydział Elektroniki ELEKTRONIKI WYDZIAŁ POLITECHNIKA KOSZALIŃSKA Przemysław Sołtan ie.tu.koszalin.pl Koncepcja."

Podobne prezentacje


Reklamy Google