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: 
Highlighted
Visitor tony88
Visitor
14,383 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,550 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

View solution in original post

0 Kudos
7 Replies
Xilinx Employee
Xilinx Employee
14,377 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,372 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,368 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,366 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,348 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,551 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

View solution in original post

0 Kudos
Visitor tony88
Visitor
14,327 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