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 

Reply via email to