use vpi_sys::PLI_INT32;
#[repr(u32)]
pub enum Control {
Stop = vpi_sys::vpiStop,
Finish = vpi_sys::vpiFinish,
Reset = vpi_sys::vpiReset,
SetInteractiveScope = vpi_sys::vpiSetInteractiveScope,
}
#[cfg(feature = "sv")]
#[repr(u32)]
pub enum CoverageControl {
Start = vpi_sys::vpiCoverageStart,
Stop = vpi_sys::vpiCoverageStOp,
Reset = vpi_sys::vpiCoverageReset,
Check = vpi_sys::vpiCoverageCheck,
Merge = vpi_sys::vpiCoverageMerge,
Save = vpi_sys::vpiCoverageSave,
}
#[cfg(feature = "sv")]
#[repr(u32)]
pub enum AssertionControl {
Lock = vpi_sys::vpiAssertionLock,
Unlock = vpi_sys::vpiAssertionUnlock,
Disable = vpi_sys::vpiAssertionDisable,
Enable = vpi_sys::vpiAssertionEnable,
Reset = vpi_sys::vpiAssertionReset,
Kill = vpi_sys::vpiAssertionKill,
EnableStep = vpi_sys::vpiAssertionEnableStep,
DisableStep = vpi_sys::vpiAssertionDisableStep,
ClockSteps = vpi_sys::vpiAssertionClockSteps,
SysOn = vpi_sys::vpiAssertionSysOn,
SysOff = vpi_sys::vpiAssertionSysOff,
SysKill = vpi_sys::vpiAssertionSysKill,
SysEnd = vpi_sys::vpiAssertionSysEnd,
SysReset = vpi_sys::vpiAssertionSysReset,
DisablePassAction = vpi_sys::vpiAssertionDisablePassAction,
EnablePassAction = vpi_sys::vpiAssertionEnablePassAction,
DisableFailAction = vpi_sys::vpiAssertionDisableFailAction,
EnableFailAction = vpi_sys::vpiAssertionEnableFailAction,
DisableVacuousAction = vpi_sys::vpiAssertionDisableVacuousAction,
EnableNonvacuousAction = vpi_sys::vpiAssertionEnableNonvacuousAction,
SysEnablePassAction = vpi_sys::vpiAssertionSysEnablePassAction,
SysEnableFailAction = vpi_sys::vpiAssertionSysEnableFailAction,
SysDisablePassAction = vpi_sys::vpiAssertionSysDisablePassAction,
SysDisableFailAction = vpi_sys::vpiAssertionSysDisableFailAction,
SysEnableNonvacuousAction = vpi_sys::vpiAssertionSysEnableNonvacuousAction,
SysDisableVacuousAction = vpi_sys::vpiAssertionSysDisableVacuousAction,
}
pub fn control(control: Control) {
unsafe {
vpi_sys::vpi_control(control as PLI_INT32);
}
}
#[cfg(feature = "sv")]
fn control_sv(code: PLI_INT32) {
unsafe {
vpi_sys::vpi_control(code);
}
}
#[cfg(feature = "sv")]
pub fn coverage_control(control: CoverageControl) {
control_sv(control as PLI_INT32);
}
#[cfg(feature = "sv")]
pub fn assertion_control(control: AssertionControl) {
control_sv(control as PLI_INT32);
}