Search code examples
vhdlxilinxxilinx-ise

Error while testing Assert statement in Xilinx


I'm currently recieving this error

ERROR:HDLCompiler:1731 - Line ...: found '0' definitions of operator "=", cannot determine exact overloaded matching definition for "="

for my last 2 Assert statements shown below (PulseOutput and IsCounting). It doesn't like that equals sign, buth how do you test for a 1 bit signal value? The assert above it (CountTemp) receives no errors. any idea?!

signal CountTemp : std_logic_vector(15 downto 0) := (others => '0');
signal PulseOutput  : std_logic;
signal IsCounting  : std_logic;
--------------------------------------------------------------
stim_proc:process
begin       
    SystemClear <= '1';
   -- hold reset state for 10 ns, then test 3 signals, then hold for additional 10 ns
   wait for 10 ns;
    assert (CountTemp = X"0000") report "CountTemp should equal 0 when System Clear is active" severity ERROR;
    assert (PulseOutput = 0) report "PulseOutput should equal 0 when System Clear is active" severity ERROR;    
    assert (IsCounting = 0) report "IsCounting should equal 0 when System Clear is active" severity ERROR;  
    wait for 10 ns;

Solution

  • std_logic bits are represented with apostrophe ' around them, note that this is also called a tick in VHDL. So for example in your code:

    stim_proc:process
    begin       
        SystemClear <= '1';
       -- hold reset state for 10 ns, then test 3 signals, then hold for additional 10 ns
       wait for 10 ns;
        assert (CountTemp = X"0000") report "CountTemp should equal 0 when System Clear is active" severity ERROR;
        assert (PulseOutput = '0') report "PulseOutput should equal 0 when System Clear is active" severity ERROR;    
        assert (IsCounting = '0') report "IsCounting should equal 0 when System Clear is active" severity ERROR;  
        wait for 10 ns;