From: Jared C. <jar...@gm...> - 2009-04-25 17:13:26
|
On Sat, Apr 25, 2009 at 7:30 AM, Cary R. <cy...@ya...> wrote: > Icarus uses a private method that I added to implement this. > I believe we are trying to add a stub that acts like plain > $finish since as you found, there is no standard or in most > cases no way to actually return a value. If you can make a > functional version for some of these great, but just having > code so that a call to $finish_and_return doesn't crash and > actually exits the simulator is what we need most. To me this > is $finish_and_return with the return value ignored. > Ah, I see. But as Steve pointed out, everything but setting the return value is standard VPI stuff, so why the need for simulator specific stuff if you just want to make $finish_and_return exactly like $finish? Just a two line function vpi_control(vpiFinish, 1); return 0; should work. As long as our names, constants, structs, etc. are defined according the standard, a shared object compiled along with the other vpi libraries, using our existing infrastructure, would work in any simulator. (A quick test confirms this, but am I missing something?) However, looking at our vpi_user.h, it doesn't match the standard, is there a reason for this? (i.e. vpiFinish is #define'd to 2 in our vpi_user.h, but 67 in the standard). Page 4 of the standard has: The header file listings included in the annexes E, F, and G for acc_user.h, veriuser.h, and vpi_user.h are a normative part of this standard. All compliant software tools should use the same function declarations, constant definitions, and structure definitions contained in these header file listings. Jared |