Skip to content

Commit e6f9a53

Browse files
robertszczepanskitmichalak
authored andcommitted
Add cover properties for SETDASA and SETAASA CCCs
Signed-off-by: Robert Szczepanski <[email protected]>
1 parent 12dac92 commit e6f9a53

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

0 commit comments

Comments
 (0)