Why the tri state declared gpio glitch-free assertion triggers only once?

In reply to balramnaik03:
You would need to delve in the LRM to determine what tri-state changes constitute an event.
In the meantime, consider those options:

  1. use $changed. @$changed(`tb_top.GPIO_P[0])
    ?? Is @$changed(sig) considered an event when sig transitions from X to 2, or from 1 to X?
    Is a change from x to 1 considered
    // **** $changed requires a clock, that would NOT work for what you want.
    //Updated by Ben
  2. use combinational support logic (with the always block) to test changes in values of (`tb_top.GPIO_P[0]) and then based on the the change in values, create your own event to be used by the assertion.

Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us
For training, consulting, services: contact Home - My cvcblr

  • SVA Handbook 4th Edition, 2016 ISBN 978-1518681448
  • Real Chip Design and Verification Using Verilog and VHDL, 2002 isbn 978-1539769712
  • A Pragmatic Approach to VMM Adoption 2006 ISBN 0-9705394-9-5
  • Using PSL/SUGAR for Formal and Dynamic Verification 2nd Edition, 2004, ISBN 0-9705394-6-0
  • Component Design by Example ", 2001 ISBN 0-9705394-0-1
  • VHDL Coding Styles and Methodologies, 2nd Edition, 1999 ISBN 0-7923-8474-1
  • VHDL Answers to Frequently Asked Questions, 2nd Edition ISBN 0-7923-8115

See Paper: 1) VF Horizons:PAPER: SVA Alternative for Complex Assertions | Verification Academy
2) http://systemverilog.us/vf/SolvingComplexUsersAssertions.