OpenCores
URL https://opencores.org/ocsvn/sdhc-sc-core/sdhc-sc-core/trunk

Subversion Repositories sdhc-sc-core

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /sdhc-sc-core/trunk/src/grpSdVerification/unitSdCoreChecker
    from Rev 155 to Rev 158
    Reverse comparison

Rev 155 → Rev 158

/src/ExpectedResult.sv
1,7 → 1,13
`ifndef EXPECTEDRESULT_SV
`define EXPECTEDRESULT_SV
 
`include "RamAction.sv";
 
class ExpectedResult;
 
RamAction RamActions[];
SdCoreTransaction trans;
 
endclass
 
typedef mailbox #(ExpectedResult) ExpectedResultMb;
/src/SdCoreChecker.sv
4,6 → 4,7
`include "SdCoreTransaction.sv";
`include "RamAction.sv";
`include "ExpectedResult.sv";
`include "Logger.sv";
 
class SdCoreChecker;
 
10,10 → 11,105
SdCoreTransSeqMb SdTransInMb;
RamActionMb RamActionInMb;
ExpectedResultMb ExpectedResultInMb;
Logger Log = new();
local SdCoreTransaction trans;
 
function void start();
covergroup SdCoreTransactions;
coverpoint trans.kind {
bins types[] = {SdCoreTransaction::readSingleBlock,
SdCoreTransaction::writeSingleBlock,
SdCoreTransaction::readMultipleBlock,
SdCoreTransaction::writeMultipleBlocks,
SdCoreTransaction::erase,
SdCoreTransaction::readSdCardStatus};
bins transitions[] = (SdCoreTransaction::readSingleBlock,
SdCoreTransaction::writeSingleBlock,
SdCoreTransaction::readMultipleBlock,
SdCoreTransaction::writeMultipleBlocks,
SdCoreTransaction::erase,
SdCoreTransaction::readSdCardStatus =>
SdCoreTransaction::readSingleBlock,
SdCoreTransaction::writeSingleBlock,
SdCoreTransaction::readMultipleBlock,
SdCoreTransaction::writeMultipleBlocks,
SdCoreTransaction::erase,
SdCoreTransaction::readSdCardStatus);
}
 
singleblock: coverpoint trans.kind {
bins types[] = {SdCoreTransaction::readSingleBlock,
SdCoreTransaction::writeSingleBlock};
}
 
multiblock: coverpoint trans.kind {
bins types[] = {SdCoreTransaction::readMultipleBlock,
SdCoreTransaction::writeMultipleBlocks,
SdCoreTransaction::erase};
}
 
startAddr: coverpoint trans.startAddr {
bins legal = {[0:1000]};
illegal_bins ill = default;
}
 
endAddr: coverpoint trans.endAddr {
bins legal = {[0:1000]};
illegal_bins ill = default;
}
 
addressrange: coverpoint (trans.endAddr - trans.startAddr) {
bins valid = {[1:$]};
bins zero = {0};
bins invalid = {[$:-1]};
}
 
cross singleblock, startAddr;
cross multiblock, startAddr, endAddr;
cross multiblock, addressrange;
endgroup
 
int StopAfter = -1;
 
function new();
SdCoreTransactions = new();
endfunction
 
task start();
fork
run();
join_none
endtask
 
task run();
while (StopAfter != 0) begin
ExpectedResult res;
RamAction ram;
 
ExpectedResultInMb.get(res);
SdTransInMb.get(trans);
 
//if (res.RamActions.size() > 0) RamActionInMb.get(ram);
 
Log.warning("SdCoreChecker: RamActions not handled");
 
// update functional coverage
SdCoreTransactions.sample();
 
if (res.trans.compare(trans) == 1) begin
Log.note("Checker: Transaction successful");
end
else begin
string msg;
$swrite(msg, "Actual: %s, Expected: %s", trans.toString(), res.trans.toString());
Log.error(msg);
end
 
if (StopAfter > 0) StopAfter--;
end
 
endtask
 
endclass
 
`endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.