Fix wild compare operators on strings

This commit is contained in:
Wilson Snyder 2026-07-04 11:05:34 -04:00
parent f82f59a024
commit 83eb54ec7e
2 changed files with 23 additions and 2 deletions

View File

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

View File

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