From: Marcin Koƛcielnicki Date: Mon, 30 Mar 2020 13:02:24 +0000 (+0200) Subject: deminout: prevent any constant assignment from demoting to input X-Git-Tag: working-ls180~701^2 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f68985f997865acefef63c3cb15074ebe2882869;p=yosys.git deminout: prevent any constant assignment from demoting to input Before this patch, ``` module top(inout io); assign io = 1'bx; endmodule ``` would have the `io` pin demoted to input (same happens for `1'bz`, but not for `1'b0` or `1'b1`), resulting in check failures later on. Part of fix for #1841. --- diff --git a/passes/techmap/deminout.cc b/passes/techmap/deminout.cc index 35d43b106..a7dce9c81 100644 --- a/passes/techmap/deminout.cc +++ b/passes/techmap/deminout.cc @@ -113,7 +113,7 @@ struct DeminoutPass : public Pass { { if (bits_numports[bit] > 1 || bits_inout.count(bit)) new_input = true, new_output = true; - if (bit == State::S0 || bit == State::S1) + if (!bit.wire) new_output = true; if (bits_written.count(bit)) { new_output = true;