UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Visitor tony88
Visitor
14,107 Views
Registered: ‎10-14-2013

attribute 'event in Vivado

Jump to solution

is attribute 'event supported in Vivado? if isn't supported how can I replace? 

0 Kudos
1 Solution

Accepted Solutions
Xilinx Employee
Xilinx Employee
23,274 Views
Registered: ‎01-03-2008

Re: attribute 'event in Vivado

Jump to solution

This use of  'event is definitely not supported

 

if(count_up'event) then

 

as it is not synthesizable due to a need for dual edge asynchronous resource.  I don't think that you really intended this to behave this way at all and the code should have been written something like this.

 

read_process: process( M_AXIS_ACLK)
begin

if (rising_edge(M_AXIS_ACLK)) then
  if(count_up = '1' ) then
    case (current_state_read) is
      when Idle =>
        M_AXIS_TLAST<='0';
        M_AXIS_TVALID<='0';
        count_en<='0';
        M_AXIS_TDATA <=(others=>'0');
        if(fifo_ok='1' AND fifo_empty='0') then
          next_state_read<=SEND;
          fifo_rd_en <='0';
        else
          fifo_rd_en <='0';
          next_state_read<=IDLE;
        end if;
      when Send =>
        if(M_AXIS_TREADY='1') then
          fifo_rd_en <='1';
          count_en<='1';
          M_AXIS_TDATA <=fifo_rd_data;
          M_AXIS_TVALID<='1';
          if(count_up = '1') then
            next_state_read<=Send_Last;
            M_AXIS_TLAST<='0';
          else
            next_state_read<=Send;
            M_AXIS_TLAST<='0';
          end if;
        else
          count_en<='0';
          M_AXIS_TLAST<='0';
          M_AXIS_TVALID<='0';
          fifo_rd_en <='0';
          M_AXIS_TDATA <=(others=>'0');
          next_state_read<=Send;
        end if;
      when Send_Last =>
        count_en<='0';
        if(M_AXIS_TREADY='1') then
          fifo_rd_en <='1';
          M_AXIS_TDATA <=fifo_rd_data;
          M_AXIS_TVALID<='1';
          M_AXIS_TLAST<='1';
          next_state_read<=Idle;
        else
          fifo_rd_en <='0';
          M_AXIS_TDATA <=(others=>'0');
          M_AXIS_TVALID<='0';
          M_AXIS_TLAST<='0';
          next_state_read<=Send_Last;
        end if;
      when others =>
        count_en<='0';
        fifo_rd_en <='0';
        M_AXIS_TDATA <=(others=>'0');
        M_AXIS_TVALID<='0';
        M_AXIS_TLAST<='0';
        next_state_read<=Idle;
      end case;
    end if;
  end if;
end process;

The code above is likely not 100% correct as I noticed that in addition to the original count_up'event you also had an if statement inside with "count_up = '1'".  I don't know what your intention was on the use of this signal.

 

 

------Have you tried typing your question into Google? If not you should before posting.
Too many results? Try adding site:www.xilinx.com
0 Kudos
7 Replies
Xilinx Employee
Xilinx Employee
14,101 Views
Registered: ‎02-16-2014

Re: attribute 'event in Vivado

Jump to solution

Hi,

 

'event  attribute is supported in Vivado.

 

Are you facing any issues in using it?

0 Kudos
Visitor tony88
Visitor
14,096 Views
Registered: ‎10-14-2013

Re: attribute 'event in Vivado

Jump to solution

Thanks for your reply.

I'm using Vivado 2013.4 and I'm creating a custom IpCore in VHDL language. When I use 'event attribute I received the following error:

[Synth 8-26] attribute 'event not implemented 

 

0 Kudos
Historian
Historian
14,092 Views
Registered: ‎02-25-2008

Re: attribute 'event in Vivado

Jump to solution

@tony88 wrote:

Thanks for your reply.

I'm using Vivado 2013.4 and I'm creating a custom IpCore in VHDL language. When I use 'event attribute I received the following error:

[Synth 8-26] attribute 'event not implemented 

 


In what context are you using this attribute? Show code.

----------------------------Yes, I do this for a living.
0 Kudos
Xilinx Employee
Xilinx Employee
14,090 Views
Registered: ‎02-16-2014

Re: attribute 'event in Vivado

Jump to solution

 

Is it possible to share the code to figureout the root cause?

0 Kudos
Visitor tony88
Visitor
14,072 Views
Registered: ‎10-14-2013

Re: attribute 'event in Vivado

Jump to solution

read_process: process( M_AXIS_ACLK, current_state_read, count_up)

begin

if(count_up'event) then
case (current_state_read) is

when Idle =>
M_AXIS_TLAST<='0';
M_AXIS_TVALID<='0';
count_en<='0';


M_AXIS_TDATA <=(others=>'0');
if(fifo_ok='1' AND fifo_empty='0') then
next_state_read<=SEND;
fifo_rd_en <='0';
else
fifo_rd_en <='0';
next_state_read<=IDLE;
end if;
when Send =>

if(M_AXIS_TREADY='1') then
fifo_rd_en <='1';
count_en<='1';
M_AXIS_TDATA <=fifo_rd_data;
M_AXIS_TVALID<='1';
if(count_up = '1') then
next_state_read<=Send_Last;
M_AXIS_TLAST<='0';
else
next_state_read<=Send;
M_AXIS_TLAST<='0';
end if;
else
count_en<='0';
M_AXIS_TLAST<='0';
M_AXIS_TVALID<='0';
fifo_rd_en <='0';
M_AXIS_TDATA <=(others=>'0');
next_state_read<=Send;
end if;
when Send_Last =>
count_en<='0';
if(M_AXIS_TREADY='1') then
fifo_rd_en <='1';
M_AXIS_TDATA <=fifo_rd_data;
M_AXIS_TVALID<='1';
M_AXIS_TLAST<='1';
next_state_read<=Idle;
else
fifo_rd_en <='0';
M_AXIS_TDATA <=(others=>'0');
M_AXIS_TVALID<='0';
M_AXIS_TLAST<='0';
next_state_read<=Send_Last;
end if;
when others =>
count_en<='0';
fifo_rd_en <='0';
M_AXIS_TDATA <=(others=>'0');
M_AXIS_TVALID<='0';
M_AXIS_TLAST<='0';
next_state_read<=Idle;
end case;
end if;

end process;

 

 

This process attempts to write on axi stream bus.

0 Kudos
Xilinx Employee
Xilinx Employee
23,275 Views
Registered: ‎01-03-2008

Re: attribute 'event in Vivado

Jump to solution

This use of  'event is definitely not supported

 

if(count_up'event) then

 

as it is not synthesizable due to a need for dual edge asynchronous resource.  I don't think that you really intended this to behave this way at all and the code should have been written something like this.

 

read_process: process( M_AXIS_ACLK)
begin

if (rising_edge(M_AXIS_ACLK)) then
  if(count_up = '1' ) then
    case (current_state_read) is
      when Idle =>
        M_AXIS_TLAST<='0';
        M_AXIS_TVALID<='0';
        count_en<='0';
        M_AXIS_TDATA <=(others=>'0');
        if(fifo_ok='1' AND fifo_empty='0') then
          next_state_read<=SEND;
          fifo_rd_en <='0';
        else
          fifo_rd_en <='0';
          next_state_read<=IDLE;
        end if;
      when Send =>
        if(M_AXIS_TREADY='1') then
          fifo_rd_en <='1';
          count_en<='1';
          M_AXIS_TDATA <=fifo_rd_data;
          M_AXIS_TVALID<='1';
          if(count_up = '1') then
            next_state_read<=Send_Last;
            M_AXIS_TLAST<='0';
          else
            next_state_read<=Send;
            M_AXIS_TLAST<='0';
          end if;
        else
          count_en<='0';
          M_AXIS_TLAST<='0';
          M_AXIS_TVALID<='0';
          fifo_rd_en <='0';
          M_AXIS_TDATA <=(others=>'0');
          next_state_read<=Send;
        end if;
      when Send_Last =>
        count_en<='0';
        if(M_AXIS_TREADY='1') then
          fifo_rd_en <='1';
          M_AXIS_TDATA <=fifo_rd_data;
          M_AXIS_TVALID<='1';
          M_AXIS_TLAST<='1';
          next_state_read<=Idle;
        else
          fifo_rd_en <='0';
          M_AXIS_TDATA <=(others=>'0');
          M_AXIS_TVALID<='0';
          M_AXIS_TLAST<='0';
          next_state_read<=Send_Last;
        end if;
      when others =>
        count_en<='0';
        fifo_rd_en <='0';
        M_AXIS_TDATA <=(others=>'0');
        M_AXIS_TVALID<='0';
        M_AXIS_TLAST<='0';
        next_state_read<=Idle;
      end case;
    end if;
  end if;
end process;

The code above is likely not 100% correct as I noticed that in addition to the original count_up'event you also had an if statement inside with "count_up = '1'".  I don't know what your intention was on the use of this signal.

 

 

------Have you tried typing your question into Google? If not you should before posting.
Too many results? Try adding site:www.xilinx.com
0 Kudos
Visitor tony88
Visitor
14,051 Views
Registered: ‎10-14-2013

Re: attribute 'event in Vivado

Jump to solution

yes, It is not properly correct, it was only an example. Thanks for your reply.

0 Kudos