From: Bernd Paysan on
glen herrmannsfeldt wrote:
> If your test bench is good enough then it will catch all static
> timing failures (eventually). With static timing analysis, there
> are many things that you don't need to check with the test bench.

And then there are some corner cases where neither static timing analysis
nor digital simulation helps - like signals crossing asynchronous clock
boundaries (there *will* be a setup or hold violation, but a robust clock
boundary crossing circuit will work in practice).

Example: We had a counter running on a different clock (actually a VCO,
where the voltage was an analog input), and to sample it robust in the
normal digital clock domain, I grey-encoded it. There will be one bit which
is either this or that when sampling at a setup or hold violation condition,
but this is only just one bit, and it's either in the state before the
increment or after.

--
Bernd Paysan
"If you want it done right, you have to do it yourself!"
http://www.jwdt.com/~paysan/
From: evilkidder on


> For example, with MyHDL you will also have to learn about latch
> inference and how to avoid "unwanted latches". However, just like in
> VHDL/Verilog there is a much better solution for this than using a
> limited HDL: use a clocked process template by default.
>


I don't agree with this. Why provide such a general framework when
all you really want is the "clocked process" anyway. VHDL, Verilog
and MyHDL all let you make the same mistake over and over again.

Cheers,
Andy
From: Paul on
On 17 Apr, 04:40, "evilkid...(a)googlemail.com"
<evilkid...(a)googlemail.com> wrote:
> > For example, with MyHDL you will also have to learn about latch
> > inference and how to avoid "unwanted latches". However, just like in
> > VHDL/Verilog there is a much better solution for this than using a
> > limited HDL: use a clocked process template by default.
>
> I don't agree with this.  Why provide such a general framework when
> all you really want is the "clocked process" anyway.  VHDL, Verilog
> and MyHDL all let you make the same mistake over and over again.

AFAIK, to avoid latch inference you need a non-sequential language,
and most don't want that.


From: Jan Decaluwe on
On Apr 17, 5:40 am, "evilkid...(a)googlemail.com"
<evilkid...(a)googlemail.com> wrote:
> > For example, with MyHDL you will also have to learn about latch
> > inference and how to avoid "unwanted latches". However, just like in
> > VHDL/Verilog there is a much better solution for this than using a
> > limited HDL: use a clocked process template by default.
>
> I don't agree with this.  Why provide such a general framework when
> all you really want is the "clocked process" anyway.  VHDL, Verilog
> and MyHDL all let you make the same mistake over and over again.

The context of the "clocked process" paradigm is synthesizable RTL
code.
For many engineers working on complex projects, writing such code is
only
a fraction of their work. For high-level modeling and verification,
you can
use the power of the language in its full generality.

For powerful HDLs such as VHDL/Verilog/MyHDL, the synthesis coding
constraints are imposed by synthesis technology, not by the language.
It is easy to design a "fully synthesizable" HDL that incorporates
such
constraints in the language definition itself. It just seems that the
market
doesn't want those. I certainly don't. You are of course free to
ignore
that observation.

Jan

P.S not all latches are "unwanted" :-)
From: rickman on
On Apr 17, 2:21 am, Paul <pault...(a)googlemail.com> wrote:
> On 17 Apr, 04:40, "evilkid...(a)googlemail.com"
>
> <evilkid...(a)googlemail.com> wrote:
> > > For example, with MyHDL you will also have to learn about latch
> > > inference and how to avoid "unwanted latches". However, just like in
> > > VHDL/Verilog there is a much better solution for this than using a
> > > limited HDL: use a clocked process template by default.
>
> > I don't agree with this.  Why provide such a general framework when
> > all you really want is the "clocked process" anyway.  VHDL, Verilog
> > and MyHDL all let you make the same mistake over and over again.
>
> AFAIK, to avoid latch inference you need a non-sequential language,
> and most don't want that.

I'm not clear on what either of you are saying. I don't seem to have
a problem with latch inferrence mainly because I know what causes
inferred latches. It has nothing to do with sequential or non-
sequential languages. VHDL has non-sequential capabilities and I can
infer a latch using that.

a <= b when (c = '1'); -- use "c" as a latch enable

What am I missing?

Rick