3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-06-25 15:23:42 +00:00

Revert "opt_clean: handle undriven and x-bit driven bits consistently"

This reverts commit 8eb48fe446.
This commit is contained in:
Emil J. Tywoniak 2025-04-10 11:35:19 +02:00
parent ff88b7b2e8
commit 9f74e1bd2b
2 changed files with 4 additions and 32 deletions

View file

@ -31,20 +31,6 @@ PRIVATE_NAMESPACE_BEGIN
using RTLIL::id2cstr; using RTLIL::id2cstr;
struct CleanerPool : SigPool
{
bool check_all_def(const RTLIL::SigSpec &sig) const
{
for (auto &bit : sig) {
if (bit.wire != NULL && bits.count(bit) == 0)
return false;
if (bit.wire == NULL && bit.data == RTLIL::State::Sx)
return false;
}
return true;
}
};
struct keep_cache_t struct keep_cache_t
{ {
Design *design; Design *design;
@ -404,7 +390,7 @@ bool rmunused_module_signals(RTLIL::Module *module, bool purge_mode, bool x_mode
// used signals pre-sigmapped // used signals pre-sigmapped
SigPool raw_used_signals; SigPool raw_used_signals;
// used signals sigmapped, ignoring drivers (we keep track of this to set `unused_bits`) // used signals sigmapped, ignoring drivers (we keep track of this to set `unused_bits`)
CleanerPool used_signals_nodrivers; SigPool used_signals_nodrivers;
// gather the usage information for cells // gather the usage information for cells
for (auto &it : module->cells_) { for (auto &it : module->cells_) {
@ -520,10 +506,10 @@ bool rmunused_module_signals(RTLIL::Module *module, bool purge_mode, bool x_mode
module->connect(new_conn); module->connect(new_conn);
} }
if (!used_signals_nodrivers.check_all_def(s2)) { if (!used_signals_nodrivers.check_all(s2)) {
std::string unused_bits; std::string unused_bits;
for (int i = 0; i < GetSize(s2); i++) { for (int i = 0; i < GetSize(s2); i++) {
if ((s2[i].wire == NULL) && (s2[i].data != RTLIL::State::Sx)) if (s2[i].wire == NULL)
continue; continue;
if (!used_signals_nodrivers.check(s2[i])) { if (!used_signals_nodrivers.check(s2[i])) {
if (!unused_bits.empty()) if (!unused_bits.empty())

View file

@ -1,14 +0,0 @@
read_verilog <<EOT
module alu(
);
wire [1:0] p1, p2;
assign p1 = 2'bx1;
assign p2[0] = 1'b1;
endmodule
EOT
proc
opt_clean
dump
select -assert-count 1 w:p1 a:unused_bits=1 %i
select -assert-count 1 w:p2 a:unused_bits=1 %i