Skip to content

Commit 99f63f1

Browse files
Add cover properties for SETDASA and SETAASA CCCs
Signed-off-by: Robert Szczepanski <[email protected]>
1 parent 1234cd9 commit 99f63f1

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

src/ctrl/ccc.sv

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,4 +1192,80 @@ module ccc
11921192
.address_o(entdaa_address),
11931193
.address_valid_o(entdaa_addres_valid)
11941194
);
1195+
1196+
`ifndef SYNTHESIS
1197+
`ifndef VERILATOR
1198+
// Detect each SETDASA CCC targeted to us while we don't have dynamic address set
1199+
property cover_first_both_dyn_setdasa;
1200+
@(posedge clk_i) ($rose(direct_addr_ack) && (command_code == `I3C_DIRECT_SETDASA)) |=>
1201+
##1 @(posedge bus_rx_done_i) ##1
1202+
##1 @(posedge clk_i) ##2
1203+
(
1204+
($rose(virtual_target_dyn_address_valid_i) ##0 $changed(virtual_target_dyn_address_i)) or
1205+
($rose(target_dyn_address_valid_i) ##0 $changed(target_dyn_address_i))
1206+
);
1207+
endproperty : cover_first_both_dyn_setdasa
1208+
covprop_first_both_dyn_setdasa: cover property (cover_first_both_dyn_setdasa);
1209+
1210+
// Detect each SETDASA CCC targeted to us while we have dynamic address set
1211+
property cover_not_first_both_dyn_setdasa;
1212+
@(posedge clk_i)
1213+
(
1214+
$rose(bus_rx_done_i) && (command_code == `I3C_DIRECT_SETDASA) && ccc_valid_i &&
1215+
$stable(bus_rx_req_byte_o) && bus_rx_req_byte_o ##1
1216+
$rose(is_byte_our_static_addr) || $rose(is_byte_our_virtual_static_addr)
1217+
) |=>
1218+
@(posedge bus_rx_done_i) ##1
1219+
##1 @(posedge clk_i) ##2
1220+
(
1221+
($stable(direct_addr_ack) && ~direct_addr_ack) and
1222+
(
1223+
($stable(virtual_target_dyn_address_valid_i) && virtual_target_dyn_address_valid_i ##0 $stable(virtual_target_dyn_address_i) && virtual_target_dyn_address_i) or
1224+
($stable(target_dyn_address_valid_i) && target_dyn_address_valid_i ##0 $stable(target_dyn_address_i) && target_dyn_address_i)
1225+
)
1226+
);
1227+
endproperty : cover_not_first_both_dyn_setdasa
1228+
covprop_not_first_both_dyn_setdasa: cover property (cover_not_first_both_dyn_setdasa);
1229+
1230+
// Detect each SETAASA CCC while we don't have dynamic address set
1231+
property cover_first_both_dyn_setaasa;
1232+
@(posedge clk_i) $rose(ccc_valid_i) ##1 (command_code == `I3C_BCAST_SETAASA) && ~(virtual_target_dyn_address_valid_i & target_dyn_address_valid_i)|=>
1233+
##1 @(posedge bus_rx_done_i)
1234+
##1 @(posedge clk_i) ##2
1235+
(
1236+
($rose(virtual_target_dyn_address_valid_i) ##0 $changed(virtual_target_dyn_address_i)) or
1237+
($rose(target_dyn_address_valid_i) ##0 $changed(target_dyn_address_i))
1238+
);
1239+
endproperty : cover_first_both_dyn_setaasa
1240+
covprop_first_both_dyn_setaasa: cover property (cover_first_both_dyn_setaasa);
1241+
1242+
// Detect each SETAASA CCC while we have dynamic address set
1243+
property cover_not_first_both_dyn_setaasa;
1244+
@(posedge clk_i) $rose(ccc_valid_i) ##1 (command_code == `I3C_BCAST_SETAASA) && (virtual_target_dyn_address_valid_i & target_dyn_address_valid_i)|=>
1245+
##1 @(posedge bus_rx_done_i)
1246+
##1 @(posedge clk_i) ##2
1247+
(
1248+
($stable(virtual_target_dyn_address_valid_i) ##0 $stable(virtual_target_dyn_address_i)) and
1249+
($stable(target_dyn_address_valid_i) ##0 $stable(target_dyn_address_i))
1250+
);
1251+
endproperty : cover_not_first_both_dyn_setaasa
1252+
covprop_not_first_both_dyn_setaasa: cover property (cover_not_first_both_dyn_setaasa);
1253+
1254+
// Detect each SETDASA CCC targeted to us
1255+
property cover_recv_setdasa;
1256+
@(posedge clk_i)
1257+
(
1258+
ccc_valid_i && (command_code == `I3C_DIRECT_SETDASA) &&
1259+
($rose(is_byte_our_addr) || $rose(is_byte_virtual_addr))
1260+
);
1261+
endproperty : cover_recv_setdasa
1262+
covprop_recv_setdasa: cover property (cover_recv_setdasa);
1263+
1264+
// Detect each SETAASA CCC
1265+
property cover_recv_setaasa;
1266+
@(posedge clk_i) ($rose(ccc_valid_i) ##1 (command_code == `I3C_BCAST_SETAASA));
1267+
endproperty : cover_recv_setaasa
1268+
covprop_recv_setaasa: cover property (cover_recv_setaasa);
1269+
`endif
1270+
`endif
11951271
endmodule

0 commit comments

Comments
 (0)