V0.8: only return a real time value for $realtime.
This patch mirrors what was done in development to only return a real value when realtime is called.
This commit is contained in:
parent
451783056d
commit
8deb2c0b60
|
|
@ -133,7 +133,7 @@ static vpiHandle timevar_handle(int code, vpiHandle ref)
|
|||
}
|
||||
|
||||
|
||||
static void timevar_get_value(vpiHandle ref, s_vpi_value*vp)
|
||||
static void timevar_get_value(vpiHandle ref, s_vpi_value*vp, bool is_int_func)
|
||||
{
|
||||
/* Keep a persistent structure for passing time values back to
|
||||
the caller. */
|
||||
|
|
@ -174,12 +174,14 @@ static void timevar_get_value(vpiHandle ref, s_vpi_value*vp)
|
|||
break;
|
||||
|
||||
case vpiRealVal:
|
||||
/* Oops, in this case I want a double power of 10 to do
|
||||
the scaling, instead of the integer scaling done
|
||||
everywhere else. */
|
||||
units = rfp->scope? rfp->scope->time_units : vpi_time_precision;
|
||||
vp->value.real = pow(10, vpi_time_precision - units);
|
||||
vp->value.real *= schedule_simtime();
|
||||
/* If this is an integer based call (anything but $realtime)
|
||||
* just return the value as a double. */
|
||||
if (is_int_func) vp->value.real = (double) simtime;
|
||||
else {
|
||||
units = rfp->scope? rfp->scope->time_units : vpi_time_precision;
|
||||
vp->value.real = pow(10, vpi_time_precision - units);
|
||||
vp->value.real *= schedule_simtime();
|
||||
}
|
||||
break;
|
||||
|
||||
case vpiBinStrVal:
|
||||
|
|
@ -216,11 +218,21 @@ static void timevar_get_value(vpiHandle ref, s_vpi_value*vp)
|
|||
}
|
||||
}
|
||||
|
||||
static void timevar_get_ivalue(vpiHandle ref, s_vpi_value*vp)
|
||||
{
|
||||
timevar_get_value(ref, vp, true);
|
||||
}
|
||||
|
||||
static void timevar_get_rvalue(vpiHandle ref, s_vpi_value*vp)
|
||||
{
|
||||
timevar_get_value(ref, vp, false);
|
||||
}
|
||||
|
||||
static const struct __vpirt vpip_system_time_rt = {
|
||||
vpiSysFuncCall,
|
||||
timevar_time_get,
|
||||
timevar_time_get_str,
|
||||
timevar_get_value,
|
||||
timevar_get_ivalue,
|
||||
0,
|
||||
timevar_handle,
|
||||
0
|
||||
|
|
@ -230,7 +242,7 @@ static const struct __vpirt vpip_system_realtime_rt = {
|
|||
vpiSysFuncCall,
|
||||
timevar_realtime_get,
|
||||
timevar_realtime_get_str,
|
||||
timevar_get_value,
|
||||
timevar_get_rvalue,
|
||||
0,
|
||||
timevar_handle,
|
||||
0
|
||||
|
|
|
|||
Loading…
Reference in New Issue