1997/8/9, KJH - Computer Action...
Transcript of 1997/8/9, KJH - Computer Action...
![Page 1: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/1.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/20011
TestBench
Prof. K. J. Hintz
Department of Electricaland
Computer EngineeringGeorge Mason University
![Page 2: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/2.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/20012
Testbench Example
■ Configuration■ Clock■ Test Bench■ Behavioral to Structural■ After J. Pick, VHDL Techniques,
Experiments, and Caveats,McGraw-Hill,1996.
![Page 3: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/3.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/20013
Counter Test Bench Entity
entity Counter_Wrapper_TB is
end Counter_Wrapper_TB ;
No port clause since encapsulating counter totest it.
![Page 4: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/4.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/20014
First Counter Architecture
architecture Count_1 ofCounter_Wrapper_TB is
signal Clock : bit := ‘0’ ;
begin
![Page 5: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/5.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/20015
Local Clock
Clock_P_1 : process
begin
Clock <= not Clock after 50 ns;
wait on Clock ;
end process Clock_P_1 ;
![Page 6: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/6.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/20016
Counter Process
Inc_Cntr: process
variable Count_Now : integer := 0 ;
begin
--wait for trailing edge
wait until Clock = ‘0’ ;
![Page 7: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/7.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/20017
Increment Counter
--increment mod 8
if Count_Now = 7 then
Count_now := 0 ;
else
Count_now := Count_Now + 1 ;
end if ;
end process Inc_Cntr ;
end Count_1 ;
![Page 8: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/8.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/20018
2nd Counter Architecture
architecture Count_2 ofCounter_Wrapper_TB is
signal Clock : bit := ‘0’ ;
begin
-- no change
![Page 9: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/9.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/20019
Local Clock with StaticSensitivity List
Clock_P_2 : process ( Clock )
begin
Clock <= not Clock after 50 ns;
-- removed ... wait on Clock ;
end process Clock_P_2 ;
![Page 10: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/10.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200110
Counter Process
Inc_Cntr: process
variable Count_Now : integer := 0 ;
begin
--wait for trailing edge
wait until Clock = ‘0’ ;
-- no change
![Page 11: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/11.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200111
Increment Counter
--increment mod 8
if Count_Now = 7 then Count_now := 0 ;
else
Count_now := Count_Now + 1 ;
end if ;
-- no change
end process Inc_Cntr ;
end Count_2 ;
-- no change
![Page 12: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/12.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200112
3rd Counter
■ Same As Others Except for Clock Generator
■ Concurrent Clock Instead of Process
■ Wrapper Slides Not Repeated Here
![Page 13: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/13.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200113
Concurrent Local Clock
Clock_P_3 :
-- removed process ( Clock )
-- removed begin
Clock <= not Clock after 50 ns;
-- removed ... wait on Clock ;
-- removed end process Clock_P_2;
![Page 14: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/14.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200114
Specific Configuration ofCounter
configuration Conf_KJH_1 of
Counter_Wrapper_TB is
--no ambiguity here
--only one entity per library
for Count_1
--ambiguity so need to
--specify architecture
![Page 15: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/15.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200115
End Configuration
end for ;
end Conf_KJH_1 ;
--architecture is now bound
--to entity
![Page 16: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/16.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200116
Encapsulation
Counter_Wrapper_TB
Conf_KJH_1
Count_1
![Page 17: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/17.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200117
2nd Specific Configuration ofCounter
configuration Conf_KJH_2 of
Counter_Wrapper_TB is
--no ambiguity here
--only one entity per library
for Count_2
--ambiguity so need to
--specify architecture
![Page 18: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/18.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200118
End Configuration
end for ;
end Conf_KJH_2 ;
--different architecture is
--now bound to same entity
--mutually exclusive bindings
![Page 19: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/19.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200119
Encapsulation
Counter_Wrapper_TB
Conf_KJH_2
Count_2
![Page 20: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/20.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200120
Encapsulation
Conf_KJH_?
Counter_Wrapper_TB
Count_?
Count_1
Count_2
Count_3
Architectures
![Page 21: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/21.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200121
Structural Decomposition ofCounter_Wrapper_TB
Counter_Wrapper_TB
Count_3
Counter
Counter_Wrapper_TB
Clock
Verify
![Page 22: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/22.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200122
SD Counter Clock Component
architecture Count_SD ofCounter_Wrapper_TB is
component Clock
generic (PW : time ) ;
port ( Clock : out bit );
end component Clock ;
![Page 23: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/23.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200123
SD Counter Component
component Counter_Mod_8
port (
Clock : in bit ;
DataOut : out bit_vector (2 downto 0 ) );
end component Counter_Mod_8 ;
![Page 24: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/24.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200124
SD Verify Component
component Verify
port (
DataIn : in bit_vector (2 downto 0 ) );
end component Verify ;
![Page 25: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/25.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200125
SD Signals
signal Clock_Tic : bit := ‘0’ ;
signal Count_Data : bit_vector
(2 downto 0 ) := ( others => ‘0’ );
--initializes all values to ‘0’
![Page 26: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/26.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200126
Clock Instantiation
begin
Synch : Clock
generic map ( PW => 50 ns )
--no ; required cause port next
port map ( Clock_Tic ) ;
![Page 27: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/27.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200127
Counter Instantiation
Counter_Instance : Counter_Mod_8
port map ( Clock_Tic , Count_Data ) ;
![Page 28: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/28.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200128
Verify Instantiation
Verify_Instance : Verify
port map ( DataIn => Count_Data ) ;
end Count_SD ;
![Page 29: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/29.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200129
Block Diagram of SD
Clock out
Clock inDataOut (2)
DataOut (1)
DataOut (0)
Count_SD
Counter_Mod_8DataIn (2)
DataIn (1)
DataIn (0)
Verify
![Page 30: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/30.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200130
Approach
■ Turn Counter_Mod_8 into an entity and putin a library after it has been verified
■ Count_SD is a good start to a testbenchwhere the counter drives a signal generatorwhich creates the sequential signals toexcite the device under test
■ Verify is a component which needs to beexpanded with assert/report statements toverify performance
![Page 31: 1997/8/9, KJH - Computer Action Teamweb.cecs.pdx.edu/~mperkows/CLASS_VHDL_99/545_09-test-bench.pdf · ... 5/8/2001 7 Increment Counter--increment mod 8 if ... integer: =0; begin ...](https://reader031.fdocuments.in/reader031/viewer/2022022523/5b33c4c37f8b9a6b548b6212/html5/thumbnails/31.jpg)
Copyright 1997/8/9, KJH, 545_9, 5/8/200131
End of Lecture
■ Configuration■ Test Bench■ Structural
Decomposition