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