«« ( Date ) »» // «« ( Thread ) »» // vlsi-nastava - 2004

TestBench za sat vremena !!!!

by Milos Todorovic
petak, 30. januar 2004 - 14:49.

TB moze da se napse za sat vremena i to jako dobar !!!

Evo saveta :

-- biblioteke

-- entitet ( prazan )

-- arhitektura

-- signali

-- opis komponente vaseg Ser_P
--

begin

-- mapiranje S_P

CLK_Gen : process is
begin
wb_clk <='1';
wait for 10 ns;
wb_clk <='0';
wait for 10 ns;
end process CLK_Gen;

Rx_Gen : process is
begin
rx <= '1';
wait for 1000 ns;
rx <= '0';
wait for 100 ns;
rx <= '1';
wait for 100 ns;
... i tako 8 puta

end process Rx_Gen;

Stimulus : process is

-- procedura za Single Read
procedure SingleRead ( adr : ADDRESS ) is
begin
wbs_we_i <='0';
wbs_cyc_i <='1';
wbs_stb_i <='1';
wbs_adr_i <= adr;

wait for 20 ns;

wbs_stb_i <='0';
wbs_cyc_i <='0';
end procedure SingleRead;

--pa slicno za Block Read samo ubacis jednu for petlju za broj
--taktova koliko traje !!!
procedure BlockRead ( adr : ADDRESS; koliko: integer ) is
end procedure BlockRead;

-- pa bukvalno dve iste takve kopije samo sto je WE='1'
-- i dodatni podatak na DATA mag.

procedure SingleWrite ( adr : ADDRESS; dta : DATA ) is
end procedure SingleWrite;

procedure BlockWrite ( adr : ADDRESS; dta : DATA; koliko: integer ) is
end procedure BlockWrite;

-- i sad pises kako ide proces citanja, pisanja, ....
begin
wbs_stb_i <='0';
wbs_cyc_i <='0';
wbs_we_i <='0';
wbs_sel_i <="0001";

wait for 20 ns; -- ne zaboravi reset
wb_rst <= '1';
wait for 20 ns;
wb_rst <= '0';

wait for 50 ns;
SingleWrite ("00001000","0000000000000011");
wait for 20 ns;
SingleWrite ("00000000","0000000000000001");
wait for 50 ns;
SingleWrite ("00000000","0000000000000010");
wait for 1000 ns;
BlockRead ("00000100", 1000);
wait for 20000 ns;
BlockWrite ("00000000","0000000000000000", 20);
wait for 20000 ns;
BlockRead ("00000100", 10);
wait for 100000 ns; -- proces ide u krug !!!!

end process Stimulus;

end architecture beh;

-- posle sve isto kao sa Oficjalnim TB, ... top-level, inic...

POZDRAV

Milos