write_verilog: avoid emitting empty cases.

The Verilog grammar does not allow an empty case.  Most synthesis tools
are quite permissive about this, but Quartus is not.  This causes
problems for amaranth with Quartus (see amaranth-lang/amaranth#931).
This commit is contained in:
Wanda 2023-10-08 01:11:30 +02:00
parent a1923a5f77
commit c36cf9c5ac
1 changed files with 5 additions and 0 deletions

View File

@ -2008,6 +2008,11 @@ void dump_proc_switch(std::ostream &f, std::string indent, RTLIL::SwitchRule *sw
dump_case_body(f, indent + " ", *it); dump_case_body(f, indent + " ", *it);
} }
if (sw->cases.empty()) {
// Verilog does not allow empty cases.
f << stringf("%s default: ;\n", indent.c_str());
}
f << stringf("%s" "endcase\n", indent.c_str()); f << stringf("%s" "endcase\n", indent.c_str());
} }