Koncepcja realizacji test - PowerPoint PPT Presentation

1 / 20
About This Presentation
Title:

Koncepcja realizacji test

Description:

VII Krajowa Konferencja Naukowa RUC'2004 REPROGRAMOWALNE UK ADY CYFROWE Koncepcja realizacji test w jednostkowych w j zyku VHDL Przemys aw So tan – PowerPoint PPT presentation

Number of Views:77
Avg rating:3.0/5.0
Slides: 21
Provided by: kos148
Category:

less

Transcript and Presenter's Notes

Title: Koncepcja realizacji test


1
VII Krajowa Konferencja Naukowa
RUC'2004REPROGRAMOWALNE UKLADY CYFROWE
  • Koncepcja realizacji testów jednostkowych w
    jezyku VHDL

Przemyslaw Soltan e-mail kerk_at_ie.tu.koszalin.pl
2
Wprowadzenie
  • Koncepcja realizacji testów jednostkowych
  • Projektowanie jednostek testowych VHDL
  • Osadzanie testów we wlasnych projektach
  • Raportowanie wyników testu
  • Rozszerzenia biblioteki (np. logika nstd_logic)
  • Rozwój biblioteki vhdlUnit
  • Podsumowanie

3
Koncepcja realizacji testów
Projekt VHDL
TESTOWANIE (test benches)
  • standardowe mechanizmy asercji VHDL
  • wlasne procedury testowe (niestandardowe
    procedury trudnosci z ponownym wykorzystaniem
    kodu testowego)
  • porównywanie przebiegów testowych waveform
    (uzaleznienie od mechanizmów dostarczonych przez
    srodowisko projektowe)
  • testy jednostkowe biblioteka vhdlUnit

4
Testy jednostkowe
  • Testy jednostkowe - moduly testujace (jednostki
    testowe), które mozna uruchamiac w izolacji od
    pozostalych
  • Raporty kontrola jakosci wykonywanej pracy
  • Zlozonosc projektów wymusza automatyzacje testów
    i odciazenie projektanta od wykonywania
    powtarzalnych czynnosci

5
Koncepcja realizacji testów
  • testy jednostkowe (rozbudowanie mechanizmów
    asercji, raportowania i automatyzacji testów)

TestBench
Raporty (HTML/XML)
Stymulus
Testowany model (VHDL)
VhdlUnit (vhdl)
TestCase
Asercja wymuszenie zachowania okreslonego
warunku podczas pracy symulowanego systemu (np.
przyjmowanie przez dany sygnal okreslonego stanu
- wartosci)
6
Standardowe metody asercji
Asercja sprawdzajaca warunek ? Czy ab ?
assert a b report 'Blad... a jest rózne od b'
severity ERROR
wyswietlany komunikat przy niespelnionym warunku,
ab
komunikat bledu wyswietlany na konsoli
  • ograniczone sposoby raportowania bledów
  • dzialanie w zakresie pojedynczych symulacji

7
Metody asercji biblioteki vhdlUnit
assertEquals(a,b)
ab
altgtb
Raport
  • rozbudowana lista metod asercji assertXXX dla
    róznych typów danych (mozliwosc rozszerzania o
    metody asercji dla wlasnych typów danych np.
    nstd_logic)
  • raportowanie wyników w postaci tabel

8
Pakiety biblioteki vdhlUnit
vhdlUnit.vhd
library IEEE use IEEE.STD_LOGIC_1164.all use
IEEE.STD_LOGIC_TEXTIO.all use STD.TEXTIO.all us
e work.vhdlUnit_cfg.all package vhdlUnit is
... procedure setUp(name in string
testboolean) procedure tearDown   function
assertWait(tin time)return time function
assertTime(tin 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
vhdlUnit_cfg.vhd
package vhdlUnit_cfg is constant
TEST_PROJECT_NAME String "Nazwa testu"
constant TEST_PROJECT_HOME String
"lokalizacja" end vhdlUnit_cfg
plik konfiguracyjny
metody asercji
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
mapowanie biblioteki vhdlUnit
TestBench.vhdl
Stymulatory
Testowany komponent
UUT
Jednostka testowa TestCase
proces testowy
10
Struktura jednostki testowej
TestBench.vhdl
vhdlUnit.vhdl
Jednostka testowa
setUp() assertTime() assertWait() assertEqual
s() assertTrue() assertInfo() fail tearDown
Stymulatory
TestCase process begin setUp(Test,true)
wait for assertTime(50ns) assertEquals(out1,0
) tearDown wait end process
1
2
Testowany komponent
3
UUT
vhdlUnit_cfg.vhdl
Proces testowy jest najmniejsza jednostka testowa
skladajaca sie z metody setUp inicjujacej test,
grupy metod asercji assertXXX testujacych stan
testowanych sygnalów, oraz metody teardown
zakonczenia testu.
1
2
3
tearDown
assertXXX()
setUp(...)
11
TestCase - przyklady
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
bezposrednie porównania
TestCase process constant test_vector
nstd_logic_vector(1 to 16) "0000000000000001"
constant test_time time 50ns   begin
setUp("bramka_and4",true) -- inicjalizacja testu
for i in 1 to test_vector'LENGTH loop
wait for assertTime(itest_time)
assertEquals("out_1",out_1,test_vector(i))
end loop tearDown -- koniec testu
wait   end process
porównanie z wektorem danych
12
Przyklad test pelnego sumatora FA
Wzorzec
TestBench
?
Raport
13
Osadzanie testów
vhdlunit.properties plik buforujacy dane
przekazywane pomiedzy kolejnymi symulacjami
vhdlUnit.do
VhdlUnit_tb (unit_initialize)
open new
initialize
update
test 1
Raport (Html/XML)
update
test 2
Testowane komponenty
update
test N
close
VhdlUnit_tb (unit_finalize)
finalize
14
Osadzanie testów
Przykladowe makro srodowiska ActiveHDL (ALDEC)
clear SetActiveLib -work set
PROJECT_HOME "DSN\src\vhdlunit\examples" comp
-include "PROJECT_HOME\vhdlunit\vhdlUnit_cfg.vhd"
comp -include "DSN\src\vhdlUnit\vhdlUnit.vh
d"   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
VhdlUnit_tb (unit_initialize)
Testowane komponenty

VhdlUnit_tb (unit_finalize)
Sekwencyjne wywolanie symulacji testowych wraz z
dodatkowa symulacja poczatkowa (INITIALIZE_VHDL_UN
IT) i koncowa (FINALIZE_VHDL_UNIT)
15
Konfiguracja vhdlUnit
vhdlUnit_cfg.vhd
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
Plik konfiguracyjny umozliwia selektywne
wlaczanie okreslonych procesów testowych
TestCaseB process begin setUp(Test,TestCase_
2) wait for assertTime(50ns)
assertEquals(out1,0) tearDown
wait end process
TestCaseA process begin setUp(Test,TestCase_
1) wait for assertTime(50ns)
assertEquals(out1,0) tearDown
wait end process
Dwie jednostki testowe (procesy) znajdujace sie w
jednym wspólnym lub dwóch niezaleznych
testbenchach wykonywanych w niezaleznych
symulacjach
16
Raportowanie wyników testu
Info Success Error Failure
statystyka testu
17
Modul rozszerzajacy - przyklad
vhdlUnit.vhd
library IEEE use IEEE.STD_LOGIC_1164.all use
IEEE.STD_LOGIC_TEXTIO.all use STD.TEXTIO.all us
e work.vhdlUnit_cfg.all package vhdlUnit is
... procedure assertEquals(arg1,arg2 in
std_logic) ... end vhdlUnit
vhdlUnit_ext_nstd_logic.vhd
library IEEE use IEEE.STD_LOGIC_1164.all use
IEEE.STD_LOGIC_TEXTIO.all use STD.TEXTIO.all li
brary nstd_logic_2000 use nstd_logic_2000.nstd_lo
gic_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
TestBench (nstd_logic)
use work.vhdlUnit_cfg.all use
work.vhdlUnit.all use work.vhdlUnit_ext_nstd_logi
c.all
vhdlUnit_ext_nstd_logic.vhd
vhdlUnit.vhd
Biblioteka vhdlUnit nie wymaga
modyfikacji (przeciazanie metod asercji)
18
Rozwój biblioteki vhdlUnit
  • Dodatkowe moduly raportujace (np. XML, SVG)
  • Implementacja metod asercji pobierajacych
    wzorcowe dane z zewnetrznych plików
    assert(FILE), assert(LIST), assert(WAVE)
  • Porównywanie przeprowadzonych testów z ich
    wczesniejszymi wersjami (rejestrowanie postepu
    prac projektowych liczby poprawnie dzialajacych
    testów, ...)
  • Rozbudowa mechanizmów przekazywania danych
    pomiedzy dwoma symulacjami (vhdlUnit.properties)

19
vhdlUnit ? Open Source Project
http//kik.ie.tu.koszalin.pl/vhdlunit
20
Podsumowanie
  • Niezaleznosc od srodowiska projektowego (calosc
    kodu opracowana w jezyku VHDL)
  • Mozliwosc rozszerzania o wlasne moduly
    (vhdlUnit_ext_nstd_logic.vhd)
  • Zgodnosc nazewnicza z innymi bibliotekami
    testów jednostkowych (JUnit)
  • Mozliwosc wspólnego raportowania wyników testu
    dla wielu niezaleznych symulacji
Write a Comment
User Comments (0)
About PowerShow.com