mirror of https://github.com/YosysHQ/yosys.git
opt_expr: const_xnor replacement to pad Y with 1'b1
This commit is contained in:
parent
ebd6fa945d
commit
b5f38f8342
|
@ -575,7 +575,8 @@ void replace_const_cells(RTLIL::Design *design, RTLIL::Module *module, bool cons
|
||||||
if (cell->type.in(ID($xnor), ID($_XNOR_))) {
|
if (cell->type.in(ID($xnor), ID($_XNOR_))) {
|
||||||
cover("opt.opt_expr.const_xnor");
|
cover("opt.opt_expr.const_xnor");
|
||||||
// For consistency since simplemap does $xnor -> $_XOR_ + $_NOT_
|
// For consistency since simplemap does $xnor -> $_XOR_ + $_NOT_
|
||||||
replace_cell(assign_map, module, cell, "const_xnor", ID::Y, RTLIL::State::S1);
|
int width = cell->getParam(ID::Y_WIDTH).as_int();
|
||||||
|
replace_cell(assign_map, module, cell, "const_xnor", ID::Y, SigSpec(RTLIL::State::S1, width));
|
||||||
goto next_cell;
|
goto next_cell;
|
||||||
}
|
}
|
||||||
log_abort();
|
log_abort();
|
||||||
|
|
|
@ -83,3 +83,49 @@ miter -equiv -flatten -make_assert -make_outputs gold coarse_keepdc miter3
|
||||||
sat -verify -prove-asserts -show-ports -enable_undef miter3
|
sat -verify -prove-asserts -show-ports -enable_undef miter3
|
||||||
miter -equiv -flatten -make_assert -make_outputs coarse_keepdc fine_keepdc miter4
|
miter -equiv -flatten -make_assert -make_outputs coarse_keepdc fine_keepdc miter4
|
||||||
sat -verify -prove-asserts -show-ports -enable_undef miter4
|
sat -verify -prove-asserts -show-ports -enable_undef miter4
|
||||||
|
|
||||||
|
|
||||||
|
# Single-bit $xnor extension
|
||||||
|
design -reset
|
||||||
|
read_verilog -noopt <<EOT
|
||||||
|
module gold(input i, output [1:0] o, p, q);
|
||||||
|
assign o = i ~^ i;
|
||||||
|
assign p = 1'b0 ~^ i;
|
||||||
|
assign q = 1'b1 ~^ i;
|
||||||
|
endmodule
|
||||||
|
EOT
|
||||||
|
select -assert-count 3 t:$xnor
|
||||||
|
copy gold coarse
|
||||||
|
copy gold fine
|
||||||
|
copy gold coarse_keepdc
|
||||||
|
copy gold fine_keepdc
|
||||||
|
|
||||||
|
cd coarse
|
||||||
|
opt_expr -fine
|
||||||
|
select -assert-none t:$xnor
|
||||||
|
|
||||||
|
cd fine
|
||||||
|
simplemap
|
||||||
|
opt_expr
|
||||||
|
select -assert-none t:$_XNOR_
|
||||||
|
|
||||||
|
cd
|
||||||
|
miter -equiv -flatten -make_assert -make_outputs -ignore_gold_x gold coarse miter
|
||||||
|
sat -verify -prove-asserts -show-ports -enable_undef miter
|
||||||
|
miter -equiv -flatten -make_assert -make_outputs coarse fine miter2
|
||||||
|
sat -verify -prove-asserts -show-ports -enable_undef miter2
|
||||||
|
|
||||||
|
cd coarse_keepdc
|
||||||
|
opt_expr -keepdc -fine
|
||||||
|
select -assert-count 1 t:$xnor
|
||||||
|
|
||||||
|
cd fine_keepdc
|
||||||
|
simplemap
|
||||||
|
opt_expr -keepdc
|
||||||
|
select -assert-count 0 c:$_XNOR_
|
||||||
|
|
||||||
|
cd
|
||||||
|
miter -equiv -flatten -make_assert -make_outputs gold coarse_keepdc miter3
|
||||||
|
sat -verify -prove-asserts -show-ports -enable_undef miter3
|
||||||
|
miter -equiv -flatten -make_assert -make_outputs coarse_keepdc fine_keepdc miter4
|
||||||
|
sat -verify -prove-asserts -show-ports -enable_undef miter4
|
||||||
|
|
Loading…
Reference in New Issue