Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutRoadmapCareersInternshipsFAQContactPrivacyTerms
Skip to lesson

Course contents

  • How to Use This Puzzle Bank
  • SystemVerilog Language Puzzles25
    • Datatype and Bit Puzzles
    • Fork Join Puzzles
    • Queue and Array Puzzles
    • String and Casting Puzzles
      • String Substr with Runtime Class Cast
      • putc/getc Index Semantics
      • Case-Sensitive vs Case-Insensitive Compare
      • Enum Safety with $cast
      • Upcast, Virtual Dispatch and Downcast
      • String Number Parsing Stops Early
    • SystemVerilog Language Puzzles: Tricky Q&A
  • Difficulty Guide
  • Full Topic Map
  • Interview-Day Tips
  • Study Route: One Week Before the Interview
  • Study Route: Two Weeks
  • Study Route: Four Weeks (Full Course)4
  • OOP & Testbench Puzzles25
  • Concurrency & Timing Puzzles25
  • Randomization & Constraint Puzzles25
  • SVA Assertion Puzzles25
  • Functional Coverage Puzzles25
  • Logic & Aptitude Puzzles25
  • Scenario & Debug Puzzles25
  • UVM Testbench Puzzles25
  • Clock, Reset & CDC Puzzles25
  • Bus and Interface Protocol Puzzles25
  • Interview Prep: Puzzle Rounds7
  • DV Puzzle Cheatsheet
Loading lesson

←String and Casting Puzzles
  1. Topics
  2. DV Interview Puzzles
  3. SystemVerilog Language Puzzles
  4. String and Casting Puzzles
  5. Case-Sensitive vs Case-Insensitive Compare
On this page

    VLSI DV Interview PuzzlesAll levels

    Case-Sensitive vs Case-Insensitive Compare

    What do these boolean checks print?

    Puzzle

    Difficulty: Easy · Puzzle 3 of 6 · Topic: String and Casting Puzzles

    What do these boolean checks print?

    Code

    p3.sv
    1
    2
    3
    4
    5
    6
    7
    8
    9
    module p3;
      string a = "Reset";
      string b = "reset";
      initial begin
        $display("eq=%0d", a == b);
        $display("compare_eq0=%0d", a.compare(b) == 0);
        $display("icompare_eq0=%0d", a.icompare(b) == 0);
      end
    endmodule

    Hint

    `==` and `compare` are case-sensitive. `icompare` ignores case.

    Step-by-step solution

    Diagram
    1) `a == b` is false because uppercase R differs from lowercase r.
    2) `compare(...) == 0` is also false for same reason.
    3) `icompare(...) == 0` is true because it performs case-insensitive comparison.

    Answer

    Answer: eq=0, compare_eq0=0, icompare_eq0=1

    How this was checked

    Checked by running the code in Verilator 5; the printed output supports the answer above. Only icompare ignores case; Icarus 13 has no compare or icompare.

    Why candidates get it wrong

    `==` and `compare` are case-sensitive while `icompare` is not; the three checks give 0, 0, 1.

    Interviewer follow-up

    Which method would you use to implement case-insensitive sort ordering? Model answer: `icompare`, which returns negative, zero or positive like `compare` (for "apple" vs "Banana", `icompare` gives a negative value because a sorts before b, while `compare` gives a positive one because lowercase sorts after uppercase; only the sign is defined, the magnitude is tool-specific: Verilator gave 31 for `compare` here).

    Say it out loud

    I would say that equal-equal and compare are both case sensitive, so the capital R makes them different and gives 0 and 0. Icompare ignores case and returns 0 for a match, so that check is 1. The trap is mixing up the three, and remembering that compare returns zero for equal, not one. I would check which compare the testbench really needs.

    Related topics

    • Strings, Reals & Special Types

    • Back to String and Casting Puzzles

    • SystemVerilog Language Puzzles section

    Previous

    31 / 293

    Next: Enum Safety with $cast

    Up next

    Up nextEnum Safety with $cast

    Sign in to save progress

    Practice this lessonPrevious lessonReport an error

    See also

    • String Substr with Runtime Class Cast
    • Upcast, Virtual Dispatch and Downcast
    • String Number Parsing Stops Early