cpu: Fix the traffic gen read percentage
This patch fixes the computation that determines whether to perform a read or a write such that the two corner cases (0 and 100) are both more efficient and handled correctly.
This commit is contained in:
parent
852a7bcf92
commit
f22d3bb9c3
|
@ -370,10 +370,11 @@ void
|
||||||
TrafficGen::StateGraph::LinearGen::execute()
|
TrafficGen::StateGraph::LinearGen::execute()
|
||||||
{
|
{
|
||||||
// choose if we generate a read or a write here
|
// choose if we generate a read or a write here
|
||||||
bool isRead = random_mt.random<uint8_t>(0, 100) < readPercent;
|
bool isRead = readPercent != 0 &&
|
||||||
|
(readPercent == 100 || random_mt.random<uint8_t>(0, 100) < readPercent);
|
||||||
|
|
||||||
if (readPercent == 0)
|
assert((readPercent == 0 && !isRead) || (readPercent == 100 && isRead) ||
|
||||||
assert(!isRead);
|
readPercent != 100);
|
||||||
|
|
||||||
DPRINTF(TrafficGen, "LinearGen::execute: %c to addr %x, size %d\n",
|
DPRINTF(TrafficGen, "LinearGen::execute: %c to addr %x, size %d\n",
|
||||||
isRead ? 'r' : 'w', nextAddr, blocksize);
|
isRead ? 'r' : 'w', nextAddr, blocksize);
|
||||||
|
@ -442,10 +443,11 @@ void
|
||||||
TrafficGen::StateGraph::RandomGen::execute()
|
TrafficGen::StateGraph::RandomGen::execute()
|
||||||
{
|
{
|
||||||
// choose if we generate a read or a write here
|
// choose if we generate a read or a write here
|
||||||
bool isRead = random_mt.random<uint8_t>(0, 100) < readPercent;
|
bool isRead = readPercent != 0 &&
|
||||||
|
(readPercent == 100 || random_mt.random<uint8_t>(0, 100) < readPercent);
|
||||||
|
|
||||||
if (readPercent == 0)
|
assert((readPercent == 0 && !isRead) || (readPercent == 100 && isRead) ||
|
||||||
assert(!isRead);
|
readPercent != 100);
|
||||||
|
|
||||||
// address of the request
|
// address of the request
|
||||||
Addr addr = random_mt.random<Addr>(startAddr, endAddr - 1);
|
Addr addr = random_mt.random<Addr>(startAddr, endAddr - 1);
|
||||||
|
|
Loading…
Reference in a new issue