mirror of https://github.com/YosysHQ/yosys.git
Merge pull request #872 from YosysHQ/clifford/pmuxfix
Improve handling of "full_case" attributes
This commit is contained in:
commit
44a44a06ed
|
@ -204,7 +204,7 @@ void ILANG_BACKEND::dump_proc_switch(std::ostream &f, std::string indent, const
|
||||||
f << stringf("%s case ", indent.c_str());
|
f << stringf("%s case ", indent.c_str());
|
||||||
for (size_t i = 0; i < (*it)->compare.size(); i++) {
|
for (size_t i = 0; i < (*it)->compare.size(); i++) {
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
f << stringf(", ");
|
f << stringf(" , ");
|
||||||
dump_sigspec(f, (*it)->compare[i]);
|
dump_sigspec(f, (*it)->compare[i]);
|
||||||
}
|
}
|
||||||
f << stringf("\n");
|
f << stringf("\n");
|
||||||
|
|
|
@ -525,7 +525,16 @@ struct AST_INTERNAL::ProcessGenerator
|
||||||
}
|
}
|
||||||
|
|
||||||
if (last_generated_case != NULL && ast->get_bool_attribute("\\full_case") && default_case == NULL) {
|
if (last_generated_case != NULL && ast->get_bool_attribute("\\full_case") && default_case == NULL) {
|
||||||
|
#if 0
|
||||||
|
// this is a valid transformation, but as optimization it is premature.
|
||||||
|
// better: add a default case that assigns 'x' to everything, and let later
|
||||||
|
// optimizations take care of the rest
|
||||||
last_generated_case->compare.clear();
|
last_generated_case->compare.clear();
|
||||||
|
#else
|
||||||
|
default_case = new RTLIL::CaseRule;
|
||||||
|
addChunkActions(default_case->actions, this_case_eq_ltemp, SigSpec(State::Sx, GetSize(this_case_eq_rvalue)));
|
||||||
|
sw->cases.push_back(default_case);
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
if (default_case == NULL) {
|
if (default_case == NULL) {
|
||||||
default_case = new RTLIL::CaseRule;
|
default_case = new RTLIL::CaseRule;
|
||||||
|
|
Loading…
Reference in New Issue