Hi again!

I want to know the following about the VVP simulator
implementation.

The Question:
What is the difference between a functor and an event
is in terms of the simulation simulation technique?

Here goes my understanding and probable
"mis-conception" about the two things":

Essentially, events are edge sensitive. Events on a
bunch of wires are seemingly captured by "Event/or"
construct in the VVP assembly.
So, can we say "Event = event_sensitivity +
or-functor"


So, Kindly validate my understanding in this regard.

Regards,
~Karthik

--- Karthik Parashar <[EMAIL PROTECTED]>
wrote:

> Thanks for the reply!
> Meanwhile, I'm brewing up another set of questions.
> 
> I'm getting my hands dirty into the iverilog-vvp
> code.
> 
> Thanks and Regards,
> ~Karthik.
> 
> 
> 
> 
> --- Stephen Williams <[EMAIL PROTECTED]> wrote:
> 
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> > 
> > 
> > Just to be clear, you don't need to know any of
> this
> > in order
> > to use Icarus Verilog. The vvp format can be
> treated
> > as a compiled
> > form generated by the iverilog -tvvp compiler, and
> > run by the vvp
> > engine. I'm assuming from the detail you are
> > requesting that you
> > want to know "how and why" in order to poke and
> prod
> > for pleasure
> > or to work on the compiler generator or vvp
> engine.
> > 
> > Karthik Parashar wrote:
> > 
> > > As i understand, broadly, there are 2 types of 
> > > arithmetic and logical instruction.
> > > 
> > > The structural type and the
> procedeural(supposedly
> > > generated from the behavioral code)
> > > What does it mean in terms of verilog code, to
> > > generate 
> > > 
> > > 1.a structural addition like .arith/add
> > > 2.an indexed addition like %ix/add
> > > 3.a behavioral addition %add
> > 
> > Structural addition (or any structural operation)
> > comes from
> > things like continuous assignments or module port
> > bindings.
> > They are things that react to stimulus and are
> > simulated by
> > passing events around through nets. An example:
> > 
> >   wire [7:0] foo = a + b;
> > 
> > This is a continuous assignment, and you will get
> an
> > .arith/add
> > node out of it. There are similar nodes for the
> > whole bunch of
> > different operators that are available in
> continuous
> > assign and
> > similar contexts.
> > 
> > What's distinct about these is that they are
> > connected together
> > in a graph of links, and they are simulated by
> > propagating
> > values through the netlist. Propagations create
> > scheduling
> > items that are enqueued and scheduled.
> > 
> > > Also since the above class of instructions exist
> > for
> > > other arithmetic and logical instructions, it is
> > > important to understand this distiction so as to
> > > understnad VVP.
> > 
> > It helps, I think.
> > 
> > > Similarly, there are thread load/store and the
> > index
> > > register load store instructions. 
> > > As i understand, all the nets and vars are
> modeled
> > as
> > > thread wise, single bit registers where as the
> > index
> > > registers are used to load and store from memory
> > or
> > > store temporary states of nets and vars.
> > 
> > Not quite. The nets and variables are structural
> > items line
> > .net, .var, etc. The threads contain private
> > registers that
> > it uses for doing processing on values. There are
> > bit registers
> > that carry 01xy values, and there are word
> (formally
> > index) and
> > real registers that carry word and real values.
> > 
> > The "%foo ..." statments are sequentially executed
> > statements
> > that look and smell a lot like a typical CPU
> > assembly language.
> > There are statements to read values from the
> > netlist, write
> > values to variables in the netlist, and process
> > values that
> > are read into thread working registers. Behavioral
> > code, which
> > is inherintly sequential, is translated into this
> > sort of
> > code much the way that C compilers make assembly
> > statements.
> > The obvious difference is that the "memory" is
> > actually the
> > netlist made up by the structural statements, and
> > there are
> > different classes of registers for holding values.
> > 
> > - --
> > Steve Williams                "The woods are
> lovely,
> > dark and deep.
> > steve at icarus.com           But I have promises
> to
> > keep,
> > http://www.icarus.com         and lines to code
> > before I sleep,
> > http://www.picturel.com       And lines to code
> > before I sleep."
> > -----BEGIN PGP SIGNATURE-----
> > Version: GnuPG v1.2.5 (GNU/Linux)
> > Comment: Using GnuPG with Mozilla -
> > http://enigmail.mozdev.org
> > 
> >
>
iD8DBQFD6N0OrPt1Sc2b3ikRAsMJAJ4qKsqbr44dlFTHBSKgIfKafR0fiACcCWY1
> > xEuzjJhC3KWQ1H6pTpR02ig=
> > =s+3c
> > -----END PGP SIGNATURE-----
> > 
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam
> protection around 
> http://mail.yahoo.com 
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Reply via email to