From: Cary R. <cy...@ya...> - 2009-04-25 18:18:10
|
--- On Sat, 4/25/09, Jared Casper <jar...@gm...> wrote: > 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?) Nope, we have a functional $finish_and_return in Icarus and one that just finishes for simulators that do not support returning a value. This allows the most portability we can provide. You don't get the return part, but at least the task does the best it can. We may also want to have a warning in the compiletf routine mentioning that the non-return version is being used. > 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: That's likely a bug that needs to be fixed. I thought that what we had matched the standard. It was just we didn't have everything implemented/added. I guess we need to sweep the file and look for any discrepancies. Cary |