@@ -661,6 +661,7 @@ module i3c_target_fsm #(
661
661
assign event_target_nack_o = ! nack_transaction_q && nack_transaction_d;
662
662
663
663
`ifndef SYNTHESIS
664
+ `ifndef VERILATOR
664
665
property cover_known_addr_ack;
665
666
@ (posedge clk_i)
666
667
(
@@ -684,5 +685,32 @@ module i3c_target_fsm #(
684
685
covprop_unknown_addr_nack: cover property (cover_unknown_addr_nack);
685
686
686
687
covprop_valid_addr: cover property (@ (posedge clk_i) ($rose (bus_addr_valid)));
688
+
689
+ covergroup cg_bus_event_fsm_transitions @ (posedge clk_i);
690
+ FsmState : coverpoint state_q {
691
+ bins valid_start_trans =
692
+ (Idle => RxFByte);
693
+ bins valid_rstart_trans =
694
+ (RxPWriteData, TxPReadData, TxPReadTbit, Wait => RxFByte),
695
+ (RxSByte => RxSByteRepeated);
696
+ bins valid_stop_trans =
697
+ (RxFByte, CheckFByte, TxAckFByte, RxSByte, RxSByteRepeated, CheckSByte, TxAckSByte,
698
+ RxPWriteData, RxPWriteTbit, TxPReadData, TxPReadTbit, Wait, DoIBI, DoneIBI, DoCCC,
699
+ DoneCCC, DoHotJoin, DoRstAction, DoHdrExit => Idle);
700
+ }
701
+ BusStartEvent : coverpoint bus_start_det_i {
702
+ bins start_detected = { 1'b1 } ;
703
+ }
704
+ BusRStartEvent : coverpoint bus_rstart_det_i {
705
+ bins rstart_detected = { 1'b1 } ;
706
+ }
707
+ BusStopEvent : coverpoint bus_stop_det_i {
708
+ bins stop_detected = { 1'b1 } ;
709
+ }
710
+
711
+ endgroup : cg_bus_event_fsm_transitions
712
+
713
+ cg_bus_event_fsm_transitions cg_bus_event_fsm_trans = new ();
714
+ `endif
687
715
`endif
688
716
endmodule : i3c_target_fsm
0 commit comments