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.
This commit is contained in:
Marcin Kościelnicki 2020-03-30 15:02:24 +02:00
parent 1dbc701728
commit f68985f997
1 changed files with 1 additions and 1 deletions

View File

@ -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;