?? tb_mc8051_siu_sim.vhd
字號:
severity failure; assert s_sbuf_out_b /= "01010101" report "CORRECT DATA RECEIVED IN MODE 1! DATA RECEIVED: 55h" severity note; wait for one_period * 600; s_sbuf_a <= conv_std_logic_vector(255, 8); -- 11111111 s_trans_a <= '1'; -- start transmission wait for one_period * 1; s_trans_a <= '0'; wait until s_scon_out_b(0) = '1' and s_scon_out_a(1) = '1'; assert s_sbuf_out_b = "11111111" report "ERROR: FALSE DATA RECEIVED IN MODE 1! DATA SENT: FFh" severity failure; assert s_sbuf_out_b /= "11111111" report "CORRECT DATA RECEIVED IN MODE 1! DATA RECEIVED: FFh" severity note; wait for one_period * 600; s_sbuf_a <= conv_std_logic_vector(0, 8); -- 00000000 s_trans_a <= '1'; -- start transmission wait for one_period * 1; s_trans_a <= '0'; wait until s_scon_out_b(0) = '1' and s_scon_out_a(1) = '1'; assert s_sbuf_out_b = "00000000" report "ERROR: FALSE DATA RECEIVED IN MODE 1! DATA SENT: 00h" severity failure; assert s_sbuf_out_b /= "00000000" report "CORRECT DATA RECEIVED IN MODE 1! DATA RECEIVED: 00h" severity note; wait for one_period * 600; s_smod_a <= '1'; s_scon_a <= conv_std_logic_vector(10, 6); -- 001010 MODE 1 + RI=0 s_sbuf_a <= conv_std_logic_vector(170, 8); -- 10101010 s_smod_b <= '1'; s_scon_b <= conv_std_logic_vector(8, 6); -- 001000 MODE 1 + RI=0 s_sbuf_b <= conv_std_logic_vector(170, 8); -- 10101010 s_trans_b <= '1'; -- start transmission wait for one_period * 1; s_trans_b <= '0'; wait until s_scon_out_a(0) = '1'; assert s_sbuf_out_a = "10101010" report "ERROR: FALSE DATA RECEIVED IN MODE 1! DATA SENT: AAh" severity failure; assert s_sbuf_out_a /= "10101010" report "CORRECT DATA RECEIVED IN MODE 1! DATA RECEIVED: AAh" severity note; wait for one_period * 600; s_smod_a <= '1'; s_scon_a <= conv_std_logic_vector(10, 6); -- 001010 MODE 1 + RI=0 s_sbuf_a <= conv_std_logic_vector(171, 8); -- 10101011 s_smod_b <= '1'; s_scon_b <= conv_std_logic_vector(10, 6); -- 001000 MODE 1 + RI=0 s_sbuf_b <= conv_std_logic_vector(170, 8); -- 10101010 s_trans_b <= '1'; -- start transmission s_trans_a <= '1'; -- start transmission wait for one_period * 1; s_trans_b <= '0'; s_trans_a <= '0'; wait until s_scon_out_a(0) = '1' and s_scon_out_b(0) = '1'; assert s_sbuf_out_a = "10101010" report "ERROR: FALSE DATA RECEIVED IN MODE 1! DATA SENT: AAh" severity failure; assert s_sbuf_out_a /= "10101010" report "CORRECT DATA RECEIVED IN MODE 1! DATA RECEIVED: AAh" severity note; assert s_sbuf_out_b = "10101011" report "ERROR: FALSE DATA RECEIVED IN MODE 1! DATA SENT: ABh" severity failure; assert s_sbuf_out_b /= "10101011" report "CORRECT DATA RECEIVED IN MODE 1! DATA RECEIVED: ABh" severity note; wait for one_period * 600; ------------------------------------------------------------------------- -- Testing MODE 2 ------------------------------------------------------------------------- s_smod_a <= '1'; s_scon_a <= conv_std_logic_vector(16, 6); -- 010000 MODE 2 s_sbuf_a <= conv_std_logic_vector(171, 8); -- 10101011 s_smod_b <= '1'; s_scon_b <= conv_std_logic_vector(18, 6); -- 010010 MODE 2 + REN=1 s_sbuf_b <= conv_std_logic_vector(171, 8); -- 10101011 s_trans_a <= '1'; -- start transmission wait for one_period * 1; s_trans_a <= '0'; wait until s_scon_out_b(0) = '1'; assert s_sbuf_out_b = "10101011" report "ERROR: FALSE DATA RECEIVED IN MODE 2! DATA SENT: ABh" severity failure; assert s_sbuf_out_b /= "10101011" report "CORRECT DATA RECEIVED IN MODE 2! DATA RECEIVED: ABh" severity note; wait for one_period * 400; s_sbuf_a <= conv_std_logic_vector(86, 8); -- 01010110 s_trans_a <= '1'; -- start transmission wait for one_period * 1; s_trans_a <= '0'; wait until s_scon_out_b(0) = '1' and s_scon_out_a(1) = '1'; assert s_sbuf_out_b = "01010110" report "ERROR: FALSE DATA RECEIVED IN MODE 2! DATA SENT: 56h" severity failure; assert s_sbuf_out_b /= "01010110" report "CORRECT DATA RECEIVED IN MODE 2! DATA RECEIVED: 56h" severity note; wait for one_period * 400; s_smod_a <= '1'; s_scon_a <= conv_std_logic_vector(18, 6); -- 010000 MODE 2 s_sbuf_a <= conv_std_logic_vector(172, 8); -- 10101100 s_smod_b <= '1'; s_scon_b <= conv_std_logic_vector(18, 6); -- 010010 MODE 2 + REN=1 s_sbuf_b <= conv_std_logic_vector(172, 8); -- 10101100 s_trans_a <= '1'; -- start transmission s_trans_b <= '1'; -- start transmission wait for one_period * 1; s_trans_a <= '0'; s_trans_b <= '0'; wait until s_scon_out_b(0) = '1' and s_scon_out_a(0) = '1'; assert s_sbuf_out_b = "10101100" report "ERROR: FALSE DATA RECEIVED IN MODE 2! DATA SENT: ACh" severity failure; assert s_sbuf_out_b /= "10101100" report "CORRECT DATA RECEIVED IN MODE 2! DATA RECEIVED: ACh" severity note; assert s_sbuf_out_a = "10101100" report "ERROR: FALSE DATA RECEIVED IN MODE 2! DATA SENT: ACh" severity failure; assert s_sbuf_out_a /= "10101100" report "CORRECT DATA RECEIVED IN MODE 2! DATA RECEIVED: ACh" severity note; wait for one_period * 400; s_smod_a <= '1'; s_scon_a <= conv_std_logic_vector(18, 6); -- 010000 MODE 2 s_sbuf_a <= conv_std_logic_vector(0, 8); -- 00000000 s_smod_b <= '1'; s_scon_b <= conv_std_logic_vector(18, 6); -- 010010 MODE 2 + REN=1 s_sbuf_b <= conv_std_logic_vector(255, 8); -- 11111111 s_trans_a <= '1'; -- start transmission s_trans_b <= '1'; -- start transmission wait for one_period * 1; s_trans_a <= '0'; s_trans_b <= '0'; wait until s_scon_out_b(0) = '1' and s_scon_out_a(0) = '1'; assert s_sbuf_out_b = "00000000" report "ERROR: FALSE DATA RECEIVED IN MODE 2! DATA SENT: 00h" severity failure; assert s_sbuf_out_b /= "00000000" report "CORRECT DATA RECEIVED IN MODE 2! DATA RECEIVED: 00h" severity note; assert s_sbuf_out_a = "11111111" report "ERROR: FALSE DATA RECEIVED IN MODE 2! DATA SENT: FFh" severity failure; assert s_sbuf_out_a /= "11111111" report "CORRECT DATA RECEIVED IN MODE 2! DATA RECEIVED: FFh" severity note; wait for one_period * 400; ------------------------------------------------------------------------- -- Testing MODE 3 ------------------------------------------------------------------------- s_scon_a <= conv_std_logic_vector(16#38#, 6); -- 111000 MODE 3 + RI=1 s_sbuf_a <= conv_std_logic_vector(16#BE#, 8); -- 10111110 s_scon_b <= conv_std_logic_vector(16#1A#, 6); -- 011010 MODE 3 + REN=1 s_trans_a <= '1'; -- start transmission wait for one_period * 1; s_trans_a <= '0'; wait until s_scon_out_b(0) = '1'; assert s_sbuf_out_b = "10111110" report "ERROR: FALSE DATA RECEIVED IN MODE 3! DATA SENT: BEh" severity failure; assert s_sbuf_out_b /= "10111110" report "CORRECT DATA RECEIVED IN MODE 3! DATA RECEIVED: BEh" severity note; wait for one_period * 4000; s_sbuf_a <= conv_std_logic_vector(16#55#, 8); -- 01010101 s_smod_a <= '0'; s_smod_b <= '0'; s_trans_a <= '1'; -- start transmission wait for one_period * 1; s_trans_a <= '0'; wait until s_scon_out_b(0) = '1' and s_scon_out_a(1) = '1'; assert s_sbuf_out_b = "01010101" report "ERROR: FALSE DATA RECEIVED IN MODE 3! DATA SENT: 55h" severity failure; assert s_sbuf_out_b /= "01010101" report "CORRECT DATA RECEIVED IN MODE 3! DATA RECEIVED: 55h" severity note; wait for one_period * 4000; s_scon_a <= conv_std_logic_vector(16#1A#, 6); -- 011010 MODE 3 + RI=0 s_sbuf_b <= conv_std_logic_vector(16#BE#, 8); -- 10111110 s_scon_b <= conv_std_logic_vector(16#1A#, 6); -- 011010 MODE 3 + REN=1 s_sbuf_a <= conv_std_logic_vector(16#B0#, 8); -- 10110000 s_trans_a <= '1'; -- start transmission s_trans_b <= '1'; -- start transmission wait for one_period * 1; s_trans_a <= '0'; s_trans_b <= '0'; wait until s_scon_out_b(0) = '1' and s_scon_out_a(0) = '1'; assert s_sbuf_out_b = "10110000" report "ERROR: FALSE DATA RECEIVED IN MODE 3! DATA SENT: B0h" severity failure; assert s_sbuf_out_b /= "10110000" report "CORRECT DATA RECEIVED IN MODE 3! DATA RECEIVED: B0h" severity note; assert s_sbuf_out_a = "10111110" report "ERROR: FALSE DATA RECEIVED IN MODE 3! DATA SENT: BEh" severity failure; assert s_sbuf_out_a /= "10111110" report "CORRECT DATA RECEIVED IN MODE 3! DATA RECEIVED: BEh" severity note; wait for one_period * 4000; ------------------------------------------------------------------------- -- END of test ------------------------------------------------------------------------- wait for one_period * 10; assert false report "--- SIMULATION ENDED WITHOUT ERROR!! ---" severity failure; end process p_run;---------------------------------------------------------------------------------------------------------------------------------------------------------------- System clock definition------------------------------------------------------------------------------- clk_b <= clk_a; p_clock : process variable v_loop1 : integer; begin clk_a <= '0'; wait for one_period / 2; while true loop clk_a <= not clk_a; wait for one_period / 2; end loop; end process p_clock;---------------------------------------------------------------------------------------------------------------------------------------------------------------- Generate timer1 overflow flag------------------------------------------------------------------------------- s_tf_b <= s_tf_a after one_period * 2; p_tf : process variable v_loop1 : integer; begin s_tf_a <= '0'; wait for one_period + one_period / 2 + 5 ns; if s_scon_a(4) /= s_scon_a(3) then -- Mode 1,3 while true loop s_tf_a <= not s_tf_a; wait for one_period * 20; end loop; else s_tf_a <= '0'; end if; end process p_tf;-------------------------------------------------------------------------------end sim;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -