• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Functional Verification
  3. Verilog Monitor to Check 'X' state of a Clock from the DUT...

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 66
  • Views 8027
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Verilog Monitor to Check 'X' state of a Clock from the DUT.

RaghavNS
RaghavNS over 16 years ago

Hi,

I want to find out the clock driven from the DUT doesn't have a 'X' State. I tried different ways of finding the 'X' State in the clock but every effort was without success.
always @ clock
if ( clock === 1'bX)
Flag Error
always @ clock
if (clock !== 1'b0 | clock !== 1'b1)
Flag error
while (clock === 1'bX)
Flag error
None of the above code Flagged an Error
Can anyone please provide me a solution for finding the 'X' state in a Signal/Clock?

I require the monitor in Verilog.

Thanks
Raghav

  • Cancel
Parents
  • Mickey
    Mickey over 16 years ago

    Hi Raghav,

    There is an assertion check in the IAL library that you can use to do this.  to use it do the following:

    1)  add an instance of ial_never_unknown_async to your verilog code.  It can either be in your current testbench or within a new standalone module that has OOMR references to the appropriate signals and connect reset_n, test_expr, and enable pins as applicable

    2)  add the following to your compile line to compile the assertion library, include the appropriate components, and invoke the assertion:  <IUS_install>/tools/ial/verilog/*.vlib  -<IUS_install>/tools/ial/include -assert

     an example would be as follows:

    module clock;
    reg clk;

    initial
      begin
      clk <= 1'b0;
      forever #5 clk <= !clk;
      end
     
    initial
      begin
       #7 clk <= 1'bx;
       #10 $finish;
      end
     
    ial_never_unknown_async test (.reset_n(1'b1), .test_expr(clk), .enable(1'b1));

    endmodule

    Hope that helps.

    Mickey

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Mickey
    Mickey over 16 years ago

    Hi Raghav,

    There is an assertion check in the IAL library that you can use to do this.  to use it do the following:

    1)  add an instance of ial_never_unknown_async to your verilog code.  It can either be in your current testbench or within a new standalone module that has OOMR references to the appropriate signals and connect reset_n, test_expr, and enable pins as applicable

    2)  add the following to your compile line to compile the assertion library, include the appropriate components, and invoke the assertion:  <IUS_install>/tools/ial/verilog/*.vlib  -<IUS_install>/tools/ial/include -assert

     an example would be as follows:

    module clock;
    reg clk;

    initial
      begin
      clk <= 1'b0;
      forever #5 clk <= !clk;
      end
     
    initial
      begin
       #7 clk <= 1'bx;
       #10 $finish;
      end
     
    ial_never_unknown_async test (.reset_n(1'b1), .test_expr(clk), .enable(1'b1));

    endmodule

    Hope that helps.

    Mickey

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information