TestBench za sat vremena !!!!
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
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
- References:
- RE: TestBench
- From: "Ivan Milosavljevic" <ivan.mile@sezampro.yu>
- RE: TestBench
Previous by date: Re: ...
Next by date: Ajde ljudi, jos samo malo izdrzite !!!
Previous by thread: RE: TestBench Next by thread: Ajde ljudi, jos samo malo izdrzite !!!
Previous by thread: RE: TestBench Next by thread: Ajde ljudi, jos samo malo izdrzite !!!