On 2006-06-20, Lourens Veen wrote:
> On Tuesday 20 June 2006 00:37, Timothy Miller wrote:
> > On 6/17/06, Petter Urkedal <[EMAIL PROTECTED]> wrote:
> > > I think I read that is
> > > an error to intentionally leave out variables from the sensitivity
> > > list to condition the whole behavioural block to execute only when
> > > some of the values are changed.  This makes sense, of course.
> >
> > Yeah.  In a real chip, it's sensitive to everything that's an input.
> > Leaving someting out will make simulation behavior deviate from
> > synthesis behavior.
> 
> You've mentioned this before a few times, and it confuses me. Isn't the 
> point of a simulation that it simulates the actual thing? Then why are 
> we thinking differently about a simulated chip than an actual one? What 
> are the differences, and what causes them?

I think if you leave out a signal which is used in the block, (and the
compiler can not eliminate it,) then the compiler should produce a
warning.  Given that, I think it can be a useful verification of the
programmer's expectations.

> It seems that we are talking about generated hardware all the time, 
> rather than of the semantics of the Verilog language. That is akin to 
> writing about the semantics of a C++ programme by what kind of assembly 
> it compiles to. It just doesn't make much sense to me. A reg is 
> something that can be assigned to (an lvalue, in C++) and a wire is 
> something that you can only read from (rvalue, in C++). Period! Who 
> cares whether a register gets synthesised? As long as it does what it's 
> supposed to do according to the Verilog semantics, it doesn't matter 
> much, does it?

I really want to understand how the code translate into gates, because
this makes it possible to understand

  * How many gates (at least order of magnitude) will be generated.  We
    have limited space.

  * What is the longest chain of gates from any register output to a
    register input.  I believe that will roughly determine the maximum
    clock rate.

In other words I want to know how to make efficient code.  If I do
numerical coding, I may also want to know a bit about how C code is
turned into assembler.  Agreed, most programming tasks don't require any
low-level knowledge.  However, I think in this case, we should know a
bit about the "do" and "don't"s of efficient HDL.  I already read some
Verilog tutorial, so I apologise if I'm skipping ahead.
_______________________________________________
Open-graphics mailing list
[email protected]
http://lists.duskglow.com/mailman/listinfo/open-graphics
List service provided by Duskglow Consulting, LLC (www.duskglow.com)

Reply via email to