Make BlockingRead/WriteDelay configurable

This commit is contained in:
2023-03-17 09:44:31 +01:00
parent ac9351c025
commit 53d913c5f1
13 changed files with 43 additions and 18 deletions

View File

@@ -74,11 +74,15 @@ struct BlockingInitiator : sc_core::sc_module
{
tlm_utils::simple_initiator_socket<BlockingInitiator> iSocket;
static constexpr std::array<uint64_t, 8> TEST_DATA = {0xDEADBEEF};
SC_CTOR(BlockingInitiator)
DRAMSys::DRAMSys const &dramSys;
BlockingInitiator(sc_core::sc_module_name const &name, DRAMSys::DRAMSys const &dramSys)
: sc_core::sc_module(name), dramSys(dramSys)
{
SC_THREAD(readAccess);
SC_THREAD(writeAccess);
}
SC_HAS_PROCESS(BlockingInitiator);
void readAccess()
{
@@ -87,7 +91,7 @@ struct BlockingInitiator : sc_core::sc_module
sc_core::sc_time delay = sc_core::SC_ZERO_TIME;
iSocket->b_transport(payload, delay);
EXPECT_EQ(delay, Dram::BLOCKING_READ_LATENCY);
EXPECT_EQ(delay, dramSys.getConfig().blockingReadDelay);
}
void writeAccess()
@@ -100,13 +104,13 @@ struct BlockingInitiator : sc_core::sc_module
sc_core::sc_time delay = sc_core::SC_ZERO_TIME;
iSocket->b_transport(payload, delay);
EXPECT_EQ(delay, Dram::BLOCKING_WRITE_LATENCY);
EXPECT_EQ(delay, dramSys.getConfig().blockingWriteDelay);
}
};
TEST_F(BTransportNoStorage, RWDelay)
{
BlockingInitiator initiator("initiator");
BlockingInitiator initiator("initiator", dramSysNoStorage);
initiator.iSocket.bind(dramSysNoStorage.tSocket);
sc_core::sc_start(sc_core::sc_time(1, sc_core::SC_US));
@@ -114,7 +118,7 @@ TEST_F(BTransportNoStorage, RWDelay)
TEST_F(BTransportStorage, RWDelay)
{
BlockingInitiator initiator("initiator");
BlockingInitiator initiator("initiator", dramSysStorage);
initiator.iSocket.bind(dramSysStorage.tSocket);
sc_core::sc_start(sc_core::sc_time(1, sc_core::SC_US));
@@ -122,7 +126,7 @@ TEST_F(BTransportStorage, RWDelay)
TEST_F(BTransportStorage, DataWritten)
{
BlockingInitiator initiator("initiator");
BlockingInitiator initiator("initiator", dramSysStorage);
initiator.iSocket.bind(dramSysStorage.tSocket);
sc_core::sc_start(sc_core::sc_time(1, sc_core::SC_US));
@@ -140,7 +144,7 @@ TEST_F(BTransportStorage, DataWritten)
TEST_F(BTransportNoStorage, Warning)
{
BlockingInitiator initiator("initiator");
BlockingInitiator initiator("initiator", dramSysNoStorage);
initiator.iSocket.bind(dramSysNoStorage.tSocket);
// Redirect stdout to buffer

View File

@@ -59,7 +59,9 @@
"RequestBufferSize": 8,
"RespQueue": "Fifo",
"Scheduler": "FrFcfs",
"SchedulerBuffer": "Bankwise"
"SchedulerBuffer": "Bankwise",
"BlockingReadDelay": 80,
"BlockingWriteDelay": 100
},
"memspec": {
"memarchitecturespec": {