Fix X/Z extension with WIDTH param mismatch, bug764.
This commit is contained in:
parent
56b85cc63c
commit
f8f53df4ec
|
|
@ -61,10 +61,8 @@ public:
|
||||||
private:
|
private:
|
||||||
char bitIs (int bit) const {
|
char bitIs (int bit) const {
|
||||||
if (bit>=m_width) {
|
if (bit>=m_width) {
|
||||||
bit = m_width-1;
|
|
||||||
// We never sign extend
|
// We never sign extend
|
||||||
return ( "00zx"[(((m_value[bit/32] & (1UL<<(bit&31)))?1:0)
|
return '0';
|
||||||
| ((m_valueX[bit/32] & (1UL<<(bit&31)))?2:0))] );
|
|
||||||
}
|
}
|
||||||
return ( "01zx"[(((m_value[bit/32] & (1UL<<(bit&31)))?1:0)
|
return ( "01zx"[(((m_value[bit/32] & (1UL<<(bit&31)))?1:0)
|
||||||
| ((m_valueX[bit/32] & (1UL<<(bit&31)))?2:0))] ); }
|
| ((m_valueX[bit/32] & (1UL<<(bit&31)))?2:0))] ); }
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,10 @@ module t (/*AUTOARG*/
|
||||||
wire one = 1'b1;
|
wire one = 1'b1;
|
||||||
wire [5:0] rep6 = {6{one}};
|
wire [5:0] rep6 = {6{one}};
|
||||||
|
|
||||||
|
// verilator lint_off WIDTH
|
||||||
|
localparam [3:0] bug764_p11 = 1'bx;
|
||||||
|
// verilator lint_on WIDTH
|
||||||
|
|
||||||
always @ (posedge clk) begin
|
always @ (posedge clk) begin
|
||||||
if (!_ranit) begin
|
if (!_ranit) begin
|
||||||
_ranit <= 1;
|
_ranit <= 1;
|
||||||
|
|
@ -119,6 +123,17 @@ module t (/*AUTOARG*/
|
||||||
if ((~& 4'b1101) != 4'b0001) $stop;
|
if ((~& 4'b1101) != 4'b0001) $stop;
|
||||||
//verilator lint_on WIDTH
|
//verilator lint_on WIDTH
|
||||||
|
|
||||||
|
// bug764
|
||||||
|
//verilator lint_off WIDTH
|
||||||
|
// X does not sign extend
|
||||||
|
if (bug764_p11 !== 4'b000x) $stop;
|
||||||
|
if (~& bug764_p11 !== 1'b1) $stop;
|
||||||
|
//verilator lint_on WIDTH
|
||||||
|
// However IEEE says for constants in 2012 5.7.1 that smaller-sizes do extend
|
||||||
|
if (4'bx !== 4'bxxxx) $stop;
|
||||||
|
if (4'bz !== 4'bzzzz) $stop;
|
||||||
|
if (4'b1 !== 4'b0001) $stop;
|
||||||
|
|
||||||
$write("*-* All Finished *-*\n");
|
$write("*-* All Finished *-*\n");
|
||||||
$finish;
|
$finish;
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue