sim: Fix handling of constant-connected cell inputs at startup

Signed-off-by: David Shah <dave@ds0.me>
This commit is contained in:
David Shah 2020-04-21 08:58:52 +01:00
parent c98cde8842
commit abf81c7639
2 changed files with 18 additions and 1 deletions

View File

@ -128,8 +128,12 @@ struct SimInstance
for (auto &port : cell->connections()) {
if (cell->input(port.first))
for (auto bit : sigmap(port.second))
for (auto bit : sigmap(port.second)) {
upd_cells[bit].insert(cell);
// Make sure cell inputs connected to constants are updated in the first cycle
if (bit.wire == nullptr)
dirty_bits.insert(bit);
}
}
if (cell->type.in(ID($dff))) {

View File

@ -0,0 +1,13 @@
read_verilog <<EOT
module top(input clk, output reg [1:0] q);
wire [1:0] x = 2'b10;
always @(posedge clk)
q <= x & 2'b11;
endmodule
EOT
proc
sim -clock clk -n 1 -w top
select -assert-count 1 a:init=2'b10 top/q %i