|
From: Cary R. <cy...@ya...> - 2014-12-09 05:41:30
|
After spending a number of hours reworking all the examples in the vvp/examples directory to run under the new stack based version of vvp (yes even the completely outdated memory.vvp file). I will say there needs to be some significant updates to the documentation/comments. I spent a significant amount of time looking at vthread.cc trying to understand the new commands I needed to use and how they operate.
It also looks like the compiler generated code for array accesses may be doing more work than is required. It is using flag 4 to indicate an undefined index (a predicate flag for the stores), but I'm not sure what all the flag 8 control is for since I couldn't find where it was actually used. This was found while rewriting memory.vvp. I'm guessing there is or was a good reason for this (possibly as a jump flag), but I missed it in my first pass over the new commands.
Cary
On Monday, December 8, 2014 4:06 PM, Cary R. <cy...@ya...> wrote:
I would assume that this special object would remove the requirement for the stacks as far as the system tasks/functions were concerned since you cannot know for sure that a value calculated before the call is acceptable or not. You also have to deal with the sensitivity issue, but yes evaluating the function on demand is what I was proposing (i.e. the special object just pops a single value off the stack after executing the anonymous function). This all implies that function call/return overhead will be critical. we are specifically talking about br681, but the same idea could likely be used for br772, br605 and br495. Some of these need the sensitivity list others just need anonymous function support.
What we are discussing here is the high level part of the expression rework. Most of the actual work I have done on this in the past was focused at the lower level implementation so there's no duplication of effort if we implement this using the existing infrastructure.
I will note that this is complicated by br495 where we need to be able to traverse the expression in some manner to see if it matches during SDF back annotation (i.e. the condition expression is part of the match criteria). Maybe just keeping a string representation is enough for now.
Cary
On Monday, December 8, 2014 3:38 PM, Stephen Williams <st...@ic...> wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 12/08/2014 03:23 PM, Cary R. wrote:
> For example: $strobe(a+1); should push an expression (pointer?) a+1
> onto the vec4 stack that when used is evaluated and the calculated
> value is returned.
True, but this never worked for the pre-stacked method either.
Off the cuff, I propose that we make a special object that is
a thread that calculates the value by running the function, and
wrap that expression thread into a VPI expression object. Thus,
there is no stack extension, in fact the existing instruction
set is used to evaluate the function on demand.
- --
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 v2
iEYEARECAAYFAlSGNmUACgkQrPt1Sc2b3inVpACeK9QOnT0TS6AOwxFnxSUeKMDM
EUcAn3s6Kghmt9mMDpb1x4GJgTFO+2z5
=DsWC
-----END PGP SIGNATURE-----
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
Iverilog-devel mailing list
Ive...@li...
https://lists.sourceforge.net/lists/listinfo/iverilog-devel
|