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