mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-12 20:18:20 +00:00
abc9_ops: update messaging (credit to @Xiretza for spotting)
This commit is contained in:
parent
b17e8495b8
commit
ea4374a223
|
@ -129,20 +129,20 @@ void check(RTLIL::Design *design, bool dff_mode)
|
||||||
for (auto derived_cell : derived_module->cells()) {
|
for (auto derived_cell : derived_module->cells()) {
|
||||||
if (derived_cell->type.in(ID($dff), ID($_DFF_N_), ID($_DFF_P_))) {
|
if (derived_cell->type.in(ID($dff), ID($_DFF_N_), ID($_DFF_P_))) {
|
||||||
if (found)
|
if (found)
|
||||||
log_error("Module '%s' with (* abc9_flop *) contains more than one $_DFF_[NP]_ cell.\n", log_id(derived_module));
|
log_error("Whitebox '%s' with (* abc9_flop *) contains more than one $_DFF_[NP]_ cell.\n", log_id(derived_module));
|
||||||
found = true;
|
found = true;
|
||||||
|
|
||||||
SigBit Q = derived_cell->getPort(ID::Q);
|
SigBit Q = derived_cell->getPort(ID::Q);
|
||||||
log_assert(GetSize(Q.wire) == 1);
|
log_assert(GetSize(Q.wire) == 1);
|
||||||
|
|
||||||
if (!Q.wire->port_output)
|
if (!Q.wire->port_output)
|
||||||
log_error("Module '%s' contains a %s cell where its 'Q' port does not drive a module output!\n", log_id(derived_module), log_id(derived_cell->type));
|
log_error("Whitebox '%s' with (* abc9_flop *) contains a %s cell where its 'Q' port does not drive a module output.\n", log_id(derived_module), log_id(derived_cell->type));
|
||||||
|
|
||||||
Const init = Q.wire->attributes.at(ID::init, State::Sx);
|
Const init = Q.wire->attributes.at(ID::init, State::Sx);
|
||||||
log_assert(GetSize(init) == 1);
|
log_assert(GetSize(init) == 1);
|
||||||
}
|
}
|
||||||
else if (unsupported.count(derived_cell->type))
|
else if (unsupported.count(derived_cell->type))
|
||||||
log_error("Module '%s' with (* abc9_flop *) contains a %s cell, which is not supported for sequential synthesis.\n", log_id(derived_module), log_id(derived_cell->type));
|
log_error("Whitebox '%s' with (* abc9_flop *) contains a %s cell, which is not supported for sequential synthesis.\n", log_id(derived_module), log_id(derived_cell->type));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -215,7 +215,7 @@ void prep_hier(RTLIL::Design *design, bool dff_mode)
|
||||||
// Block sequential synthesis on cells with (* init *) != 1'b0
|
// Block sequential synthesis on cells with (* init *) != 1'b0
|
||||||
// because ABC9 doesn't support them
|
// because ABC9 doesn't support them
|
||||||
if (init != State::S0) {
|
if (init != State::S0) {
|
||||||
log_warning("Module '%s' contains a %s cell with non-zero initial state -- this is not unsupported for ABC9 sequential synthesis. Treating as a blackbox.\n", log_id(derived_module), log_id(derived_cell->type));
|
log_warning("Whitebox '%s' with (* abc9_flop *) contains a %s cell with non-zero initial state -- this is not supported for ABC9 sequential synthesis. Treating as a blackbox.\n", log_id(derived_module), log_id(derived_cell->type));
|
||||||
derived_module->set_bool_attribute(ID::abc9_flop, false);
|
derived_module->set_bool_attribute(ID::abc9_flop, false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -50,10 +50,10 @@ FDCE_1 /*#(.INIT(1))*/ fd7(.C(C), .CE(1'b0), .D(D), .CLR(1'b0), .Q(Q[6]));
|
||||||
FDPE_1 #(.INIT(1)) fd8(.C(C), .CE(1'b0), .D(D), .PRE(1'b0), .Q(Q[7]));
|
FDPE_1 #(.INIT(1)) fd8(.C(C), .CE(1'b0), .D(D), .PRE(1'b0), .Q(Q[7]));
|
||||||
endmodule
|
endmodule
|
||||||
EOT
|
EOT
|
||||||
logger -expect warning "Module '\$paramod\\FDRE\\INIT=1' contains a \$dff cell .*" 1
|
logger -expect warning "Whitebox '\$paramod\\FDRE\\INIT=1' with \(\* abc9_flop \*\) contains a \$dff cell with non-zero initial state -- this is not supported for ABC9 sequential synthesis. Treating as a blackbox\." 1
|
||||||
logger -expect warning "Module '\$paramod\\FDRE_1\\INIT=1' contains a \$dff cell .*" 1
|
logger -expect warning "Whitebox '\$paramod\\FDRE_1\\INIT=1' with \(\* abc9_flop \*\) contains a \$dff cell with non-zero initial state -- this is not supported for ABC9 sequential synthesis. Treating as a blackbox\." 1
|
||||||
logger -expect warning "Module 'FDSE' contains a \$dff cell .*" 1
|
logger -expect warning "Whitebox 'FDSE' with \(\* abc9_flop \*\) contains a \$dff cell with non-zero initial state -- this is not supported for ABC9 sequential synthesis. Treating as a blackbox\." 1
|
||||||
logger -expect warning "Module '\$paramod\\FDSE_1\\INIT=1' contains a \$dff cell .*" 1
|
logger -expect warning "Whitebox '\$paramod\\FDSE_1\\INIT=1' with \(\* abc9_flop \*\) contains a \$dff cell with non-zero initial state -- this is not supported for ABC9 sequential synthesis. Treating as a blackbox\." 1
|
||||||
equiv_opt -assert -multiclock -map +/xilinx/cells_sim.v synth_xilinx -abc9 -dff -noiopad -noclkbuf
|
equiv_opt -assert -multiclock -map +/xilinx/cells_sim.v synth_xilinx -abc9 -dff -noiopad -noclkbuf
|
||||||
design -load postopt
|
design -load postopt
|
||||||
select -assert-count 8 t:FD*
|
select -assert-count 8 t:FD*
|
||||||
|
|
Loading…
Reference in a new issue