celox 0.3.1

Celox HDL Simulator
Documentation
use crate::ir::{AbsoluteAddr, RuntimeProgram};
use celox_frontend_veryl::VerylTestbenchSource;
use celox_testbench::TestbenchProgram;

pub(crate) fn project_observability(
    program: &mut RuntimeProgram,
    source: &VerylTestbenchSource,
) -> Result<(), celox_frontend_veryl::ParserError> {
    let (sites, read_variables) =
        celox_frontend_veryl::collect_testbench_observability(&program.frontend, source)?;
    program.runtime_schema.runtime_event_sites.extend(sites);
    program.runtime_schema.testbench_read_roots = read_variables;
    Ok(())
}

pub(crate) fn compile_semantic_testbench(
    program: &RuntimeProgram,
    source: &VerylTestbenchSource,
    random_seed: Option<u64>,
) -> Result<Option<TestbenchProgram<AbsoluteAddr>>, celox_frontend_veryl::ParserError> {
    celox_frontend_veryl::compile_semantic_testbench(
        &program.frontend,
        source,
        program.runtime_schema.runtime_event_sites.len(),
        random_seed,
    )
}