const bit [7:0] SKP = 'h1C;
const bit [7:0] FTS = 'h3C;
const bit [7:0] SDP = 'h5C;
const bit [7:0] IDL = 'h7C;
const bit [7:0] COM = 'hBC;
const bit [7:0] EIE = 'hFC;
const bit [7:0] PAD = 'hF7;
const bit [7:0] STP = 'hFB;
const bit [7:0] END = 'hFD;
const bit [7:0] EDB = 'hFE;
property control_rxdata_p(x,width_check);
`ASSERT_RXEVENT
( RxDataK[x] &&
PowerDown == P0 &&
RxValid &&
width_check &&
!RxElecIdle &&
Rate inside {0,1} &&
RxStatus == 3'b00 ) |-> ( RxData[x*8 +:8] == SKP ||
RxData[x*8 +:8] == FTS ||
RxData[x*8 +:8] == SDP ||
RxData[x*8 +:8] == IDL ||
RxData[x*8 +:8] == COM ||
RxData[x*8 +:8] == EIE ||
RxData[x*8 +:8] == PAD ||
RxData[x*8 +:8] == STP ||
RxData[x*8 +:8] == END ||
RxData[x*8 +:8] == EDB );
assert property (control_rxdata_p(0,1))
begin
`EVALUATED("EI_PCIE_PL_ERR_148")
end
else
begin
`FIRED("EI_PCIE_PL_ERR_148",$sformatf("Control characters are not present at RxData[7:0] = 8'h%0h",RxData[7:0]),_agent._cfg.is_active, "RX")
end
EI_PCIE_PL_ERR_003_RX_15_8:
assert property (control_rxdata_p(1,Width inside {1,2}))
begin
`EVALUATED("EI_PCIE_PL_ERR_149")
end
else
begin
`FIRED("EI_PCIE_PL_ERR_149", $sformatf("Control characters are not present at RxData[15:8] = 8'h%0h",RxData[15:8]), _agent._cfg.is_active, "RX")
end
-Question) I am not getting : 1) RxStatus == 3’b00 ) |-> ( RxData[x*8 +:8] == SKP || , are they converting string into a fixed size integral?
2) assert property (control_rxdata_p(0,1)), what is this 0,1?
3) assert property (control_rxdata_p(1,Width inside {1,2})), what is this width inside {1,2} ?
please help