Wait until statement problem in synthesis 
Author Message
 Wait until statement problem in synthesis

Hi,

I wonder why wait until statement when used in a process can generate a
warning of :

Warning: Clock signal is not in the sensitivity list.  "pClk"
        in routine ntyCounter line 18 in file
'/home/yeowk/vhdl.dir/MyProj.dir/Vhdl.dir/arcCounter.vhd' (HDL-400)

I thought that code (1) is the same as code (2) functionally:

process  -- Code(1)
begin
  wait until rising_edge(clk);
        :
        :
        :
end process;

process(Clk) - Code(2)
begin
  if rising_edge(Clk) then
        :
        :
        :
  end if;
end process

I check the Solvit in Synopsys but cannot find any workaround. Can
someone enlightened why the above statement is not accepted in synthesis
engine(particular Synopsys).

By the way, code(2) pass the synthesis without warning! Can you explain?

Yeo Wee Kwong, Sky (Mr)



Sun, 20 Oct 2002 03:00:00 GMT  
 Wait until statement problem in synthesis

Quote:

> Hi,

> I wonder why wait until statement when used in a process can generate a
> warning of :

> Warning: Clock signal is not in the sensitivity list.  "pClk"
>         in routine ntyCounter line 18 in file
> '/home/yeowk/vhdl.dir/MyProj.dir/Vhdl.dir/arcCounter.vhd' (HDL-400)

> I thought that code (1) is the same as code (2) functionally:

> process  -- Code(1)
> begin
>   wait until rising_edge(clk);
>         :
>         :
>         :
> end process;

> process(Clk) - Code(2)
> begin
>   if rising_edge(Clk) then
>         :
>         :
>         :
>   end if;
> end process

> I check the Solvit in Synopsys but cannot find any workaround. Can
> someone enlightened why the above statement is not accepted in synthesis
> engine(particular Synopsys).

> By the way, code(2) pass the synthesis without warning! Can you explain?

Well, the equivalent of code(2) using a wait is the subtley different
from your code(1):

process
begin
  if rising_edge(clk) then
        :
        :
  end if;
  wait on clk;
end process;

Why don't you want to use the normal idiom? Or is it being converted
from verilog?


-- Senior Design Engineer
-- Cadence Design Systems, Alba Campus, Livingston EH54 7HH, Scotland
-- Phone: +44 1506 595360                        Fax: +44 1506 595959



Sun, 20 Oct 2002 03:00:00 GMT  
 Wait until statement problem in synthesis

Quote:

> > I wonder why wait until statement when used in a process can generate a
> > warning of :
> > Warning: Clock signal is not in the sensitivity list.  "pClk"

looks like a error in the name "pClk" not "Clk".

Quote:
> > I thought that code (1) is the same as code (2) functionally:

So do I and the training companies

Quote:
> > By the way, code(2) pass the synthesis without warning! Can you explain?

Clock name difference

Quote:
> Well, the equivalent of code(2) using a wait is the subtley different
> from your code(1):
> Why don't you want to use the normal idiom?


Training companies like Dulos say the 2 are equivalent.

Andrew Ince, BAE SYSTEMS, Basildon



Mon, 21 Oct 2002 03:00:00 GMT  
 Wait until statement problem in synthesis

Quote:


> > > I thought that code (1) is the same as code (2) functionally:
> So do I and the training companies

> > Why don't you want to use the normal idiom?
> Training companies like Dulos say the 2 are equivalent.

The VHDL LRM says in Section 9.2 that:

"If a sensitivity list appear following the reserved word process, then
the process statement is assumed to contain an implicit wait statement
as the LAST statement of the process statement part"

And rising_edge(s) is not just s'event and s='1' but also
s'last_value='0' as defined in IEEE standard 1164. So the two bits of
code differ subtely for at least simulation. Synthesis equivalence
probably depends on the implementation of the synthesis program.


-- Senior Design Engineer
-- Cadence Design Systems, Alba Campus, Livingston EH54 7HH, Scotland
-- Phone: +44 1506 595360                        Fax: +44 1506 595959



Mon, 21 Oct 2002 03:00:00 GMT  
 Wait until statement problem in synthesis
All wait statements are for testbenches only, a synthesys tool can't do a
wait.

Walt


Quote:
> Hi,

> I wonder why wait until statement when used in a process can generate a
> warning of :

> Warning: Clock signal is not in the sensitivity list.  "pClk"
> in routine ntyCounter line 18 in file
> '/home/yeowk/vhdl.dir/MyProj.dir/Vhdl.dir/arcCounter.vhd' (HDL-400)

> I thought that code (1) is the same as code (2) functionally:

> process  -- Code(1)
> begin
>   wait until rising_edge(clk);
>    :
> :
> :
> end process;

> process(Clk) - Code(2)
> begin
>   if rising_edge(Clk) then
> :
> :
> :
>   end if;
> end process

> I check the Solvit in Synopsys but cannot find any workaround. Can
> someone enlightened why the above statement is not accepted in synthesis
> engine(particular Synopsys).

> By the way, code(2) pass the synthesis without warning! Can you explain?

> Yeo Wee Kwong, Sky (Mr)



Thu, 24 Oct 2002 03:00:00 GMT  
 Wait until statement problem in synthesis
Not fully true.
the following is synthesisable by FPGA express.

process
begin
  wait until a= '1';
  c4 <= not a;
end process;

Yeo Wee Kwong, Sky (Mr)

Quote:
                -----Original Message-----

                Posted At:      Monday, May 08, 2000 3:01 AM
                Posted To:      comp.lang.vhdl
                Conversation:   Wait until statement problem in
synthesis
                Subject:        Re: Wait until statement problem in
synthesis

                All wait statements are for testbenches only, a
synthesys tool can't do a
                wait.

                Walt

message


                > Hi,

                > I wonder why wait until statement when used in a
process can generate a
                > warning of :

                > Warning: Clock signal is not in the sensitivity list.
"pClk"
                > in routine ntyCounter line 18 in file

'/home/yeowk/vhdl.dir/MyProj.dir/Vhdl.dir/arcCounter.vhd' (HDL-400)

                > I thought that code (1) is the same as code (2)
functionally:

                > process  -- Code(1)
                > begin
                >   wait until rising_edge(clk);
                >    :
                > :
                > :
                > end process;

                > process(Clk) - Code(2)
                > begin
                >   if rising_edge(Clk) then
                > :
                > :
                > :
                >   end if;
                > end process

                > I check the Solvit in Synopsys but cannot find any
workaround. Can
                > someone enlightened why the above statement is not
accepted in synthesis
                > engine(particular Synopsys).

                > By the way, code(2) pass the synthesis without
warning! Can you explain?

                > Yeo Wee Kwong, Sky (Mr)



Fri, 25 Oct 2002 03:00:00 GMT  
 Wait until statement problem in synthesis
Hi,

I summarised the discussion as below to close the whole topic:

1)      Discussion Topic:
*       Wait until statement warning in Synthesis for Synopsys DC, FPGA
express

Problem:
*       Generate a HDL-400 warning

Summary of Solutions:
*       Use the sensitivity list process instead of wait until statement

Conclusion:
*       Synopsys does not support rising_edge function
*       Use sensitivity list process instead of wait until statement
*       Wait until statement usage does not generate warning for other
synthesis engines like Synplify and Leonardo Spectrum.
*       Wait until clk = '1' and clk'event will still generate the same
warning as wait until
       rising_edge(clk);
*       The two construct generate the same synthesis result despite the
warning.(Tested with FPGA express and Leonardo)

Yeo Wee Kwong, Sky (Mr)

Words Of Wisdom:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 "Let it be the way you want to be!. Amen!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



Sun, 27 Oct 2002 03:00:00 GMT  
 Wait until statement problem in synthesis


Quote:
>Hi,

>I summarised the discussion as below to close the whole topic:

>1)     Discussion Topic:
>*      Wait until statement warning in Synthesis for Synopsys DC, FPGA
>express

>Problem:
>*      Generate a HDL-400 warning

>Summary of Solutions:
>*      Use the sensitivity list process instead of wait until statement

>Conclusion:
>*      Synopsys does not support rising_edge function

This is incorrect. Versions of Synopsys after 98.08 (I think) support
rising_edge.

Quote:
>*      Use sensitivity list process instead of wait until statement

wait until is fine - HDL-400 is just a warning, it's not an error!

Quote:
>*      Wait until statement usage does not generate warning for other
>synthesis engines like Synplify and Leonardo Spectrum.
>*      Wait until clk = '1' and clk'event will still generate the same
>warning as wait until
>       rising_edge(clk);
>*      The two construct generate the same synthesis result despite the
>warning.(Tested with FPGA express and Leonardo)

>Yeo Wee Kwong, Sky (Mr)

>Words Of Wisdom:
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> "Let it be the way you want to be!. Amen!
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

--
Alan Fitch
DOULOS Ltd.
        Church Hatch, 22 Market Place, Ringwood, BH24 1AW, Hampshire, UK

Fax: +44 (0)1425 471 573            
**               Visit THE WINNING EDGE  www.doulos.com               **


Sun, 27 Oct 2002 03:00:00 GMT  
 Wait until statement problem in synthesis
Dear Sky,

As per the LRM for VHDL wait statements will not be synthesised. DC will
not synthesise
them. What you could probably do is

process(clk)
   begin
        if (clk'event and clk='1') then
            ---make sure to have your sequential statements
    end process;

This would be a sequential process. You could possibly use another
concurrent process for your concurrent statements and assignements.

Regards

Sateesh

Quote:

> Not fully true.
> the following is synthesisable by FPGA express.

> process
> begin
>   wait until a= '1';
>   c4 <= not a;
> end process;

> Yeo Wee Kwong, Sky (Mr)

>                 -----Original Message-----

>                 Posted At:      Monday, May 08, 2000 3:01 AM
>                 Posted To:      comp.lang.vhdl
>                 Conversation:   Wait until statement problem in
> synthesis
>                 Subject:        Re: Wait until statement problem in
> synthesis

>                 All wait statements are for testbenches only, a
> synthesys tool can't do a
>                 wait.

>                 Walt

> message


>                 > Hi,

>                 > I wonder why wait until statement when used in a
> process can generate a
>                 > warning of :

>                 > Warning: Clock signal is not in the sensitivity list.
> "pClk"
>                 > in routine ntyCounter line 18 in file

> '/home/yeowk/vhdl.dir/MyProj.dir/Vhdl.dir/arcCounter.vhd' (HDL-400)

>                 > I thought that code (1) is the same as code (2)
> functionally:

>                 > process  -- Code(1)
>                 > begin
>                 >   wait until rising_edge(clk);
>                 >    :
>                 > :
>                 > :
>                 > end process;

>                 > process(Clk) - Code(2)
>                 > begin
>                 >   if rising_edge(Clk) then
>                 > :
>                 > :
>                 > :
>                 >   end if;
>                 > end process

>                 > I check the Solvit in Synopsys but cannot find any
> workaround. Can
>                 > someone enlightened why the above statement is not
> accepted in synthesis
>                 > engine(particular Synopsys).

>                 > By the way, code(2) pass the synthesis without
> warning! Can you explain?

>                 > Yeo Wee Kwong, Sky (Mr)



Mon, 28 Oct 2002 03:00:00 GMT  
 Wait until statement problem in synthesis


Quote:
>Dear Sky,

>As per the LRM for VHDL wait statements will not be synthesised. DC will
>not synthesise
>them. What you could probably do is

This is not true. The LRM says absolutely nothing about synthesis - that
is up to the synthesis tool vendors.

You can use wait statements, it just depends on the synthesis tool. In
fact some tools will support multiple "wait until" statements to produce
state machines (e.g. Spectrum).

However it is fair to say that "wait for" is not supported by synthesis
tools.

Quote:

>process(clk)
>   begin
>        if (clk'event and clk='1') then
>            ---make sure to have your sequential statements
>    end process;

>This would be a sequential process.

All statements executed after the 'begin' of a process are sequential. A
process statement itself is concurrent.

<snip>

Alan
--
Alan Fitch
DOULOS Ltd.
        Church Hatch, 22 Market Place, Ringwood, BH24 1AW, Hampshire, UK

Fax: +44 (0)1425 471 573            
**               Visit THE WINNING EDGE  www.doulos.com               **



Mon, 28 Oct 2002 03:00:00 GMT  
 
 [ 13 post ] 

 Relevant Pages 

1. Final conclusion of wait until statement discussion

2. Synthesis of wait statements

3. wait statements in sub-programs for synthesis

4. Synthesis of wait statements

5. Synthesis of 'wait' statements

6. Testbench simulating a cpu, problem with wait until hold_n = 1

7. Problem with expect script waiting for input from [gets stdin] statement

8. Waiting until event is processed / Thread syncronization

9. Wait until program finish on CW5ee

10. How to wait until print spool to file completes

11. gtk: wait until window visible, how?

12. FPGA Express and 'wait until'

 

 
Powered by phpBB® Forum Software