HI all
I am trying to prove below scenario in formal but need some help in writing assertion.
DUT spec:
-
inputs : i_rxvalid , i_rxpkt(txnid, srcid, data etc), i_txcredit
-
output : o_txvalid , o_txpkt(txnid, data, etc.) , o_rxcredit
-
After reset credits are sent by DUT on o_rxcedit and paralley received from other side on i_txcredit independently
-
from rx side say 4 requests have come back to back with txnid - 'h1, 'h2, 'h3, 'h4 on i_rxvalid & i_rxpkt
-
after some processing these 4 requests would go out of DUT out of order with some random delay between them on o_txvalid & o_txpkt say 'h3, 'h2, 'h1, 'h4 but the max delay between input to output is 500 cycles.
How can we write an assertion property to prove that for each valid request with some txn_id there was valid output with same txn_id?
Thanks