60 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			VHDL
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			VHDL
		
	
	
	
	
	
ARCHITECTURE test OF nanoBlaze_tester IS
 | 
						|
 | 
						|
  constant clockFrequency: real := 100.0E6;
 | 
						|
  constant clockPeriod: time := (1.0/clockFrequency) * 1 sec;
 | 
						|
  signal clock_int: std_uLogic := '1';
 | 
						|
 | 
						|
  signal dataReg: std_ulogic_vector(dataOut'range);
 | 
						|
 | 
						|
BEGIN
 | 
						|
  ------------------------------------------------------------------------------
 | 
						|
                                                              -- reset and clock
 | 
						|
  reset <= '1', '0' after 2*clockPeriod;
 | 
						|
 | 
						|
  clock_int <= not clock_int after clockPeriod/2;
 | 
						|
  clock <= transport clock_int after clockPeriod*9.0/10.0;
 | 
						|
 | 
						|
  ------------------------------------------------------------------------------
 | 
						|
                                                                       -- enable
 | 
						|
  en <= '1';
 | 
						|
 | 
						|
  ------------------------------------------------------------------------------
 | 
						|
                                                                         -- data
 | 
						|
  storeData: process(clock_int)
 | 
						|
  begin
 | 
						|
    if rising_edge(clock_int) then
 | 
						|
      if writeStrobe = '1' then
 | 
						|
        dataReg <= dataOut;
 | 
						|
      end if;
 | 
						|
    end if;
 | 
						|
  end process storeData;
 | 
						|
 | 
						|
  dataIn <= not dataReg;
 | 
						|
 | 
						|
  ------------------------------------------------------------------------------
 | 
						|
                                                               -- error checking
 | 
						|
  checkBus: process(clock_int)
 | 
						|
  begin
 | 
						|
    if rising_edge(clock_int) then
 | 
						|
      if writeStrobe = '1' then
 | 
						|
        if (dataAddress = 0) and (unsigned(dataOut) = 0) then
 | 
						|
          assert false
 | 
						|
            report "Testbench reports error (output value 0 at address 0)"
 | 
						|
            severity failure;
 | 
						|
        end if;
 | 
						|
        if (dataAddress = 0) and (unsigned(dataOut) = 1) then
 | 
						|
          assert false
 | 
						|
            report
 | 
						|
              cr & cr &
 | 
						|
              "--------------------------------------------------------------------------------" & cr &
 | 
						|
              "Testbench reports successful end of simulation (output value 1 at address 0)" & cr &
 | 
						|
              "--------------------------------------------------------------------------------" & cr &
 | 
						|
              cr
 | 
						|
            severity failure;
 | 
						|
        end if;
 | 
						|
      end if;
 | 
						|
    end if;
 | 
						|
  end process checkBus;
 | 
						|
 | 
						|
END ARCHITECTURE test;
 |