parent
fe562d4715
commit
2ed754d5ea
|
|
@ -919,14 +919,8 @@ public:
|
||||||
points.emplace_back(ref.lsb(), false); // Start of a region
|
points.emplace_back(ref.lsb(), false); // Start of a region
|
||||||
points.emplace_back(ref.msb() + 1, true); // End of a region
|
points.emplace_back(ref.msb() + 1, true); // End of a region
|
||||||
}
|
}
|
||||||
int bit_hi, bit_lo;
|
const int bit_lo = basicp()->lo();
|
||||||
if (basicp() == dtypep) {
|
const int bit_hi = bit_lo + dtypep->width() - 1;
|
||||||
bit_hi = basicp()->hi();
|
|
||||||
bit_lo = basicp()->lo();
|
|
||||||
} else { // packed struct, packed array. lo is 0
|
|
||||||
bit_hi = dtypep->width() - 1;
|
|
||||||
bit_lo = 0;
|
|
||||||
}
|
|
||||||
if (skipUnused && !m_rhs.empty()) { // Range to be read must be kept, so add points here
|
if (skipUnused && !m_rhs.empty()) { // Range to be read must be kept, so add points here
|
||||||
int lsb = bit_hi + 1;
|
int lsb = bit_hi + 1;
|
||||||
int msb = bit_lo - 1;
|
int msb = bit_lo - 1;
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,20 @@ module t(/*AUTOARG*/
|
||||||
);
|
);
|
||||||
input clk;
|
input clk;
|
||||||
|
|
||||||
|
logic [7:0] data = 0;
|
||||||
// Test loop
|
// Test loop
|
||||||
always @ (posedge clk) begin
|
always @ (posedge clk) begin
|
||||||
$write("*-* All Finished *-*\n");
|
if (data != 15) begin
|
||||||
$finish;
|
data <= data + 8'd1;
|
||||||
|
end else begin
|
||||||
|
$write("*-* All Finished *-*\n");
|
||||||
|
$finish;
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
bug5782 u_bug5782(.data_out());
|
bug5782 u_bug5782(.data_out());
|
||||||
|
bug5984 u_bug5984(.in(data));
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
|
@ -29,3 +36,25 @@ module bug5782 (
|
||||||
data_out = data[7];
|
data_out = data[7];
|
||||||
end
|
end
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
// #5984 inconsistent assignment due to wrong bit range calculation.
|
||||||
|
module bug5984 (
|
||||||
|
input logic [1:0][3:0] in
|
||||||
|
);
|
||||||
|
|
||||||
|
logic [1:0][5:2] internal;
|
||||||
|
|
||||||
|
for (genvar dim1 = 0; dim1 < 2; dim1++) begin
|
||||||
|
for (genvar dim2 = 0; dim2 < 4; dim2++) begin
|
||||||
|
assign internal[dim1][dim2+2] = in[dim1][dim2];
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for (genvar dim1 = 0; dim1 < 2; dim1++) begin
|
||||||
|
for (genvar dim2 = 0; dim2 < 4; dim2++) begin
|
||||||
|
always_ff @(negedge internal[dim1][dim2+2]) begin
|
||||||
|
$display("%0b", internal[dim1][dim2+2]);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
endmodule
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue