2022-02-02 00:03:03 +00:00
|
|
|
use crate::frontend::types::TypeStruct;
|
2022-01-23 21:52:06 +00:00
|
|
|
use crate::frontend::Callable;
|
2022-01-05 01:08:25 +00:00
|
|
|
use crate::rtlil;
|
2022-01-17 14:37:07 +00:00
|
|
|
use crate::rtlil::SigSpec;
|
|
|
|
|
2022-02-20 21:44:58 +00:00
|
|
|
fn instantiate_unop(celltype: &str, id: &str, a: &SigSpec, ret: &SigSpec) -> rtlil::Cell {
|
2022-01-05 01:08:25 +00:00
|
|
|
let mut cell = rtlil::Cell::new(id, celltype);
|
|
|
|
cell.add_param("\\A_SIGNED", "0");
|
|
|
|
cell.add_param("\\A_WIDTH", "1");
|
|
|
|
cell.add_param("\\Y_WIDTH", "1");
|
|
|
|
cell.add_connection("\\A", a);
|
2022-01-17 14:37:07 +00:00
|
|
|
cell.add_connection("\\Y", ret);
|
2022-01-05 01:08:25 +00:00
|
|
|
cell
|
|
|
|
}
|
|
|
|
|
2022-02-20 21:44:58 +00:00
|
|
|
fn instantiate_binop(
|
|
|
|
celltype: &str,
|
|
|
|
id: &str,
|
|
|
|
a: &SigSpec,
|
|
|
|
b: &SigSpec,
|
|
|
|
ret: &SigSpec,
|
|
|
|
) -> rtlil::Cell {
|
2022-01-05 01:08:25 +00:00
|
|
|
let mut cell = rtlil::Cell::new(id, celltype);
|
|
|
|
cell.add_param("\\A_SIGNED", "0");
|
|
|
|
cell.add_param("\\A_WIDTH", "1");
|
|
|
|
cell.add_param("\\B_SIGNED", "0");
|
|
|
|
cell.add_param("\\B_WIDTH", "1");
|
|
|
|
cell.add_param("\\Y_WIDTH", "1");
|
|
|
|
cell.add_connection("\\A", a);
|
|
|
|
cell.add_connection("\\B", b);
|
|
|
|
cell.add_connection("\\Y", ret);
|
|
|
|
cell
|
|
|
|
}
|