vvp: Factor out code to scale time using the timescale of a VPI object.
This commit is contained in:
parent
0c61923636
commit
872fcd13ae
|
|
@ -565,9 +565,18 @@ int vpip_time_precision_from_handle(vpiHandle obj)
|
|||
}
|
||||
}
|
||||
|
||||
double vpip_scaled_time_from_handle(vvp_time64_t time, vpiHandle obj)
|
||||
{
|
||||
int scale = vpip_get_time_precision() -
|
||||
vpip_time_units_from_handle(obj);
|
||||
if (scale >= 0)
|
||||
return (double)time * pow(10.0, scale);
|
||||
else
|
||||
return (double)time / pow(10.0, -scale);
|
||||
}
|
||||
|
||||
void vpi_get_time(vpiHandle obj, s_vpi_time*vp)
|
||||
{
|
||||
int scale;
|
||||
vvp_time64_t time;
|
||||
|
||||
assert(vp);
|
||||
|
|
@ -581,10 +590,7 @@ void vpi_get_time(vpiHandle obj, s_vpi_time*vp)
|
|||
break;
|
||||
|
||||
case vpiScaledRealTime:
|
||||
scale = vpip_get_time_precision() -
|
||||
vpip_time_units_from_handle(obj);
|
||||
if (scale >= 0) vp->real = (double)time * pow(10.0, scale);
|
||||
else vp->real = (double)time / pow(10.0, -scale);
|
||||
vp->real = vpip_scaled_time_from_handle(time, obj);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -1079,6 +1079,8 @@ extern void vpip_set_time_precision(int pres);
|
|||
extern int vpip_time_units_from_handle(vpiHandle obj);
|
||||
extern int vpip_time_precision_from_handle(vpiHandle obj);
|
||||
|
||||
extern double vpip_scaled_time_from_handle(vvp_time64_t time, vpiHandle obj);
|
||||
|
||||
extern void vpip_time_to_timestruct(struct t_vpi_time*ts, vvp_time64_t ti);
|
||||
extern vvp_time64_t vpip_timestruct_to_time(const struct t_vpi_time*ts);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue