From: glen herrmannsfeldt on 17 Apr 2010 19:17
In comp.arch.fpga rickman <gnuarm(a)gmail.com> wrote:
(snip on test benches)
>> I suppose so, but consider it the other way around.
>> 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.
> I don't follow what you are saying. This first sentence seems to be
> saying that a timing simulation *is* a good place to find timing
> problems, or are you talking about real world test benches? The point
> is that static timing is enough to catch all timing failures given
> that your timing constraints cover the design properly... and I agree
> that is a big given. Your second sentence seems to be agreeing with
> my previous statement.
Yes, I was describing real world (hardware) test benches.
Depending on how close you are to a setup/hold violation,
it may take a long time for a failure to actually occur.
>> Also, you can't do static timing analysis on the implemented logic.
>> (That is, given an actual built circuit and a logic analyzer.)
>> Now, setup and hold violations are easy to test with static
>> analysis, but much harder to check in actual logic. ?Among others,
>> you would want to check all possible clock skew failures, which is
>> normally not possible. ?With the right test bench and logic
>> implementation (including programmable delays on each FF clock)
>> it might be possible, though.
> In twenty years of designing with FPGAs I have never found a clock
> skew problem. I always write my code to allow the clock trees to
> deliver the clocks and I believe the tools guaranty that there will
> not be a skew problem. Static timing actually does cover clock skew,
> at least the tools I use.
Yes, I was trying to cover the case of not using static timing
analysis but only testing actual hardware. For ASICs, it is
usually necessary to test the actual chips, though they should
have already passed static timing.
> BTW, how do you design a "right test bench"? Static timing analysis
> will at least give you the coverage level although one of my
> complaints is that they don't provide any tools for analyzing if your
> constraints are correct. But I have no idea how to verify that my
> test bench is testing the timing adequately.
If you only have one clock, it isn't so hard. As you add more,
with different frequencies and/or phases, it gets much harder,
I agree. It would be nice to get as much help as possible
from the tools.
From: Paul Uiterlinden on 19 Apr 2010 10:12
Andrew FPGA wrote:
> Interesting in the discussion on myHdl/testbenches, no-one raised
> SystemVerilog. SystemVerilog raises the level of abstraction(like
> myHdl), but more importantly it introduces constrained random
> verification. For writing testbenches, SV is a better choice than
> MyHdl/VHDL/Verilog, assuming tool availablility.
And assuming availability of financial means to buy licenses.
And assuming availability of time to rewrite existing verification
components, all of course written in VHDL.
And assuming availability of time to learn SV.
And assuming availability of time to learn OVM.
Oh man, is it because of the seasonal change that I'm feeling so tired, or
is it something else? ;-)
> It would seem that SV does not bring much to the table in terms of RTL
> design - its just a catchup to get verilog up to the capabilities that
> VHDL already has.
I agree that SV seems to give most room for growth in the verification side.
VHDL is becoming too restrictive when you want to create really reusable
verification parts (reuse verification code from block level at chip
level). More often than not, the language is working against you in that
case. Most of the time because it is strongly typed. In general I prefer
prefer strongly typed over weakly typed. But sometimes it just gets in your
For design I too do not see much advantage of SV over VHDL, especially when
you already are using VHDL. So then a mix would be preferable: VHDL for
design, SV/OVM for verification.
e-mail addres: remove the not.
From: Andy on 19 Apr 2010 13:18
On Apr 14, 3:23 pm, Jan Decaluwe <j...(a)jandecaluwe.com> wrote:
> Seriously, that's why conversion to VHDL/Verilog gets so much
> attention. It allows you to view MyHDL simply as a more effective
> or fun way to create your trusted VHDL/Verilog design.
> Therefore, no need to ask nor tell anyone. If you're intrigued,
> just do it, and do it as a good engineer: start with a simple
> but relevant module, not with a whole design. After conversion,
> few will be able to tell (you may even get praise for the
> code quality :-)).
And do what? Be forced into a design/coding paradigm that is the least
common denominator of verilog and vhdl?
No thanks, I don't need or want another code generator.
Code conversion is only applicable if you never have to read it or
maintain it in its converted form. I can't rely on myhdl in order to
maintain the source.
From: Jan Decaluwe on 19 Apr 2010 16:56
On Apr 19, 7:18 pm, Andy <jonesa...(a)comcast.net> wrote:
> On Apr 14, 3:23 pm, Jan Decaluwe <j...(a)jandecaluwe.com> wrote:
> > Seriously, that's why conversion to VHDL/Verilog gets so much
> > attention. It allows you to view MyHDL simply as a more effective
> > or fun way to create your trusted VHDL/Verilog design.
> > Therefore, no need to ask nor tell anyone. If you're intrigued,
> > just do it, and do it as a good engineer: start with a simple
> > but relevant module, not with a whole design. After conversion,
> > few will be able to tell (you may even get praise for the
> > code quality :-)).
> And do what? Be forced into a design/coding paradigm that is the least
> common denominator of verilog and vhdl?
Not necessarily, because conversion happens after elaboration
by the Python interpreter, and because MyHDL's type system
for RTL is at a more abstract level.
> No thanks, I don't need or want another code generator.
Sure, don't bother if it doesn't solve a real problem
for you. Just let it be an informed decision.
Please: don't call it code generation. It's essentially a
powerful HDL with strong conversion capabilities.
Also, last time I forgot to mention that there actually is
commercial support (though it may not be expensive enough
to impress you :-))
> Code conversion is only applicable if you never have to read it or
> maintain it in its converted form. I can't rely on myhdl in order to
> maintain the source.
I wouldn't know why not. You can even maintain equivalent VHDL and
Verilog simultanuously. What other technology can do that?
From: Andy on 19 Apr 2010 19:00
All the abstraction is gone when you convert to VHDL/Verilog, rather
than trying to represent the abstraction intact as much as possible in
the copnverted code (significant in VHDL, not so much in Verilog).
Without a proven, supported tool chain I cannot depend on maintaining
code in the MyHDL domain. Therefore, I have to use it only as a code
generator, and be able to maintain the generated VHDL/Verilog code in
case said tool goes away (with all the limitations inherent in the
converted code). If I started out in VHDL, the VHDL would be much more
maintainable. I'll look into the support link you provided, but until
a major synthesis tool supports it directly, I can't say that it would
make any difference.
Your definition of maintaining equivalent VHDL and Verilog is only
through the as-yet-unsupported language. That's not maintenance in my
book. It may work for commercial products that are here and gone in a
year or two, but in my business, support is measured in decades.
All this said, I am attracted to MyHDL as an academic exercise (even
though I hate some of the syntactic baggage, especially ".next"), not
as a useable tool in my professional environment. At least not yet...