Fix wild compare operators on strings
This commit is contained in:
parent
f82f59a024
commit
83eb54ec7e
|
|
@ -9564,9 +9564,11 @@ class WidthVisitor final : public VNVisitor {
|
|||
// No width change on output;... // All below have bool or double outputs
|
||||
switch (nodep->type()) {
|
||||
case VNType::Eq:
|
||||
case VNType::EqCase: newp = new AstEqN{fl, lhsp, rhsp}; break;
|
||||
case VNType::EqCase:
|
||||
case VNType::EqWild: newp = new AstEqN{fl, lhsp, rhsp}; break;
|
||||
case VNType::Neq:
|
||||
case VNType::NeqCase: newp = new AstNeqN{fl, lhsp, rhsp}; break;
|
||||
case VNType::NeqCase:
|
||||
case VNType::NeqWild: newp = new AstNeqN{fl, lhsp, rhsp}; break;
|
||||
case VNType::Gt:
|
||||
case VNType::GtS: newp = new AstGtN{fl, lhsp, rhsp}; break;
|
||||
case VNType::Gte:
|
||||
|
|
|
|||
|
|
@ -4,7 +4,16 @@
|
|||
// SPDX-FileCopyrightText: 2026 Antmicro
|
||||
// SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
// verilog_format: off
|
||||
`define stop $stop
|
||||
`define checkd(gotv,expv) do if ((gotv) !== (expv)) begin $write("%%Error: %s:%0d: got=%0d exp=%0d\n", `__FILE__,`__LINE__, (gotv), (expv)); `stop; end while(0);
|
||||
// verilog_format: on
|
||||
|
||||
module t;
|
||||
localparam string AB = "AB";
|
||||
|
||||
bit r;
|
||||
|
||||
initial begin
|
||||
if (('bxz10 ==? 'bxxx0) !== 1) $stop;
|
||||
if (('bxz10 ==? 'bxxx1) !== 0) $stop;
|
||||
|
|
@ -12,6 +21,16 @@ module t;
|
|||
if (('bxz10 !=? 'bxxx1) !== 1) $stop;
|
||||
if (('bxz10 !=? 'bxxx0) !== 0) $stop;
|
||||
if (('bxz10 !=? 'b1xx0) !== 'x) $stop;
|
||||
|
||||
r = (AB ==? "AA");
|
||||
`checkd(r, 0);
|
||||
r = (AB ==? "AB");
|
||||
`checkd(r, 1);
|
||||
r = (AB !=? "AB");
|
||||
`checkd(r, 0);
|
||||
|
||||
// real/shortreal is illegal so not tested here
|
||||
|
||||
$write("*-* All Finished *-*\n");
|
||||
$finish;
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue