pub use vj_vpi::*;
pub mod build;
pub fn prepare_systf(
src: &str,
) -> (
String,
Vec<vj_codegen::frontend::SystfDeclaration>,
Vec<vj_exec::vpi_data::SysTfDecl>,
) {
use sv_lang::SystemFunctionType;
use systf::RetType;
use vj_codegen::frontend::SystfReturn;
let (src, decls, codegen) = systf::prepare(src);
let decls = decls
.into_iter()
.map(|(name, ret, arity)| {
let ret = match ret {
RetType::Void => SystfReturn::Typed(SystemFunctionType::Void),
RetType::Real => SystfReturn::Typed(SystemFunctionType::Real),
RetType::Integer => SystfReturn::Typed(SystemFunctionType::Integer),
RetType::Time => SystfReturn::Typed(SystemFunctionType::Time),
RetType::Sized { width, signed } => SystfReturn::Sized { width, signed },
};
(name, ret, arity)
})
.collect();
(src, decls, codegen)
}