use celox::Simulator;
#[path = "test_utils/mod.rs"]
#[macro_use]
mod test_utils;
all_backends! {
fn test_mux_build_smoke(sim) {
@ignore_on(veryl, sv);
@setup { let top = r#"
module Top (
i_select: input logic<2>,
i_data0 : input logic<8>,
i_data1 : input logic<8>,
i_data2 : input logic<8>,
i_data3 : input logic<8>,
o_data : output logic<8>,
) {
var data_arr: logic<8>[4];
always_comb {
data_arr[0] = i_data0;
data_arr[1] = i_data1;
data_arr[2] = i_data2;
data_arr[3] = i_data3;
}
inst u: mux #(
WIDTH : 8,
ENTRIES: 4,
KIND : selector_pkg::selector_kind::BINARY,
) (
i_select,
i_data: data_arr,
o_data,
);
}
"#;
let code = format!(
"{}\n{}\n{top}",
test_utils::veryl_std::source(&["selector", "selector_pkg.veryl"]),
test_utils::veryl_std::source(&["selector", "mux.veryl"]),
); }
@build Simulator::builder(&code, "Top");
}
fn test_demux_build_smoke(sim) {
@ignore_on(veryl, sv);
@setup { let top = r#"
module Top (
i_select: input logic<2>,
i_data : input logic<8>,
o_data0 : output logic<8>,
o_data1 : output logic<8>,
o_data2 : output logic<8>,
o_data3 : output logic<8>,
) {
var data_arr: logic<8>[4];
inst u: demux #(
WIDTH : 8,
ENTRIES: 4,
KIND : selector_pkg::selector_kind::BINARY,
) (
i_select,
i_data,
o_data: data_arr,
);
always_comb {
o_data0 = data_arr[0];
o_data1 = data_arr[1];
o_data2 = data_arr[2];
o_data3 = data_arr[3];
}
}
"#;
let code = format!(
"{}\n{}\n{top}",
test_utils::veryl_std::source(&["selector", "selector_pkg.veryl"]),
test_utils::veryl_std::source(&["selector", "demux.veryl"]),
); }
@build Simulator::builder(&code, "Top");
}
}