Merge branch 'serialize_refresh' into 'develop'
Implement serialize and deserialize in Refresh Managers See merge request ems/astdm/modeling.dram/dram.sys.5!83
This commit is contained in:
@@ -900,4 +900,20 @@ void Controller::end_of_simulation()
|
|||||||
<< std::endl;
|
<< std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Controller::serialize(std::ostream& stream) const
|
||||||
|
{
|
||||||
|
for (auto& refreshManager : refreshManagers)
|
||||||
|
{
|
||||||
|
refreshManager->serialize(stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Controller::deserialize(std::istream& stream)
|
||||||
|
{
|
||||||
|
for (auto& refreshManager : refreshManagers)
|
||||||
|
{
|
||||||
|
refreshManager->deserialize(stream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace DRAMSys
|
} // namespace DRAMSys
|
||||||
|
|||||||
@@ -45,6 +45,8 @@
|
|||||||
#include "powerdown/PowerDownManagerIF.h"
|
#include "powerdown/PowerDownManagerIF.h"
|
||||||
#include "refresh/RefreshManagerIF.h"
|
#include "refresh/RefreshManagerIF.h"
|
||||||
#include "respqueue/RespQueueIF.h"
|
#include "respqueue/RespQueueIF.h"
|
||||||
|
#include "DRAMSys/common/Deserialize.h"
|
||||||
|
#include "DRAMSys/common/Serialize.h"
|
||||||
|
|
||||||
#include "DRAMSys/common/TlmRecorder.h"
|
#include "DRAMSys/common/TlmRecorder.h"
|
||||||
#include "DRAMSys/simulation/SimConfig.h"
|
#include "DRAMSys/simulation/SimConfig.h"
|
||||||
@@ -57,13 +59,11 @@
|
|||||||
#include <tlm>
|
#include <tlm>
|
||||||
#include <tlm_utils/simple_initiator_socket.h>
|
#include <tlm_utils/simple_initiator_socket.h>
|
||||||
#include <tlm_utils/simple_target_socket.h>
|
#include <tlm_utils/simple_target_socket.h>
|
||||||
#include <utility>
|
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace DRAMSys
|
namespace DRAMSys
|
||||||
{
|
{
|
||||||
|
|
||||||
class Controller : public sc_core::sc_module
|
class Controller : public sc_core::sc_module, public Serialize, public Deserialize
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
tlm_utils::simple_target_socket<Controller> tSocket{"tSocket"}; // Arbiter side
|
tlm_utils::simple_target_socket<Controller> tSocket{"tSocket"}; // Arbiter side
|
||||||
@@ -80,6 +80,9 @@ public:
|
|||||||
[[nodiscard]] bool idle() const { return totalNumberOfPayloads == 0; }
|
[[nodiscard]] bool idle() const { return totalNumberOfPayloads == 0; }
|
||||||
void registerIdleCallback(std::function<void()> idleCallback);
|
void registerIdleCallback(std::function<void()> idleCallback);
|
||||||
|
|
||||||
|
void serialize(std::ostream& stream) const override;
|
||||||
|
void deserialize(std::istream& stream) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void end_of_simulation() override;
|
void end_of_simulation() override;
|
||||||
|
|
||||||
|
|||||||
@@ -29,8 +29,10 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* Author: Lukas Steiner
|
* Authors:
|
||||||
* Matthias Jung
|
* Lukas Steiner
|
||||||
|
* Matthias Jung
|
||||||
|
* Derek Christ
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "RefreshManagerAllBank.h"
|
#include "RefreshManagerAllBank.h"
|
||||||
@@ -240,4 +242,14 @@ sc_time RefreshManagerAllBank::getTimeForNextTrigger()
|
|||||||
return timeForNextTrigger;
|
return timeForNextTrigger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RefreshManagerAllBank::serialize(std::ostream& stream) const
|
||||||
|
{
|
||||||
|
stream.write(reinterpret_cast<char const*>(&timeForNextTrigger), sizeof(timeForNextTrigger));
|
||||||
|
}
|
||||||
|
|
||||||
|
void RefreshManagerAllBank::deserialize(std::istream& stream)
|
||||||
|
{
|
||||||
|
stream.read(reinterpret_cast<char *>(&timeForNextTrigger), sizeof(timeForNextTrigger));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace DRAMSys
|
} // namespace DRAMSys
|
||||||
|
|||||||
@@ -29,7 +29,9 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* Author: Lukas Steiner
|
* Authors:
|
||||||
|
* Lukas Steiner
|
||||||
|
* Derek Christ
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef REFRESHMANAGERALLBANK_H
|
#ifndef REFRESHMANAGERALLBANK_H
|
||||||
@@ -37,12 +39,10 @@
|
|||||||
|
|
||||||
#include "DRAMSys/configuration/memspec/MemSpec.h"
|
#include "DRAMSys/configuration/memspec/MemSpec.h"
|
||||||
#include "DRAMSys/controller/McConfig.h"
|
#include "DRAMSys/controller/McConfig.h"
|
||||||
#include "DRAMSys/controller/checker/CheckerIF.h"
|
|
||||||
#include "DRAMSys/controller/refresh/RefreshManagerIF.h"
|
#include "DRAMSys/controller/refresh/RefreshManagerIF.h"
|
||||||
|
|
||||||
#include <systemc>
|
#include <systemc>
|
||||||
#include <tlm>
|
#include <tlm>
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace DRAMSys
|
namespace DRAMSys
|
||||||
{
|
{
|
||||||
@@ -64,6 +64,9 @@ public:
|
|||||||
void update(Command command) override;
|
void update(Command command) override;
|
||||||
sc_core::sc_time getTimeForNextTrigger() override;
|
sc_core::sc_time getTimeForNextTrigger() override;
|
||||||
|
|
||||||
|
void serialize(std::ostream& stream) const override;
|
||||||
|
void deserialize(std::istream& stream) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum class State
|
enum class State
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -29,7 +29,9 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* Author: Lukas Steiner
|
* Authors:
|
||||||
|
* Lukas Steiner
|
||||||
|
* Derek Christ
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "RefreshManagerDummy.h"
|
#include "RefreshManagerDummy.h"
|
||||||
|
|||||||
@@ -29,7 +29,9 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* Author: Lukas Steiner
|
* Authors:
|
||||||
|
* Lukas Steiner
|
||||||
|
* Derek Christ
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef REFRESHMANAGERDUMMY_H
|
#ifndef REFRESHMANAGERDUMMY_H
|
||||||
@@ -50,6 +52,9 @@ public:
|
|||||||
void update([[maybe_unused]] Command command) override {}
|
void update([[maybe_unused]] Command command) override {}
|
||||||
sc_core::sc_time getTimeForNextTrigger() override;
|
sc_core::sc_time getTimeForNextTrigger() override;
|
||||||
|
|
||||||
|
void serialize([[maybe_unused]] std::ostream& stream) const override {}
|
||||||
|
void deserialize([[maybe_unused]] std::istream& stream) override {}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const sc_core::sc_time scMaxTime = sc_core::sc_max_time();
|
const sc_core::sc_time scMaxTime = sc_core::sc_max_time();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -29,14 +29,17 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* Author: Lukas Steiner
|
* Authors:
|
||||||
|
* Lukas Steiner
|
||||||
|
* Derek Christ
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef REFRESHMANAGERIF_H
|
#ifndef REFRESHMANAGERIF_H
|
||||||
#define REFRESHMANAGERIF_H
|
#define REFRESHMANAGERIF_H
|
||||||
|
|
||||||
|
#include "DRAMSys/common/Deserialize.h"
|
||||||
|
#include "DRAMSys/common/Serialize.h"
|
||||||
#include "DRAMSys/common/dramExtensions.h"
|
#include "DRAMSys/common/dramExtensions.h"
|
||||||
#include "DRAMSys/controller/Command.h"
|
|
||||||
#include "DRAMSys/controller/ManagerIF.h"
|
#include "DRAMSys/controller/ManagerIF.h"
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
@@ -45,7 +48,7 @@
|
|||||||
namespace DRAMSys
|
namespace DRAMSys
|
||||||
{
|
{
|
||||||
|
|
||||||
class RefreshManagerIF : public ManagerIF
|
class RefreshManagerIF : public ManagerIF, public Serialize, public Deserialize
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual sc_core::sc_time getTimeForNextTrigger() = 0;
|
virtual sc_core::sc_time getTimeForNextTrigger() = 0;
|
||||||
|
|||||||
@@ -29,7 +29,9 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* Author: Lukas Steiner
|
* Authors:
|
||||||
|
* Lukas Steiner
|
||||||
|
* Derek Christ
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "RefreshManagerPer2Bank.h"
|
#include "RefreshManagerPer2Bank.h"
|
||||||
@@ -264,4 +266,14 @@ sc_time RefreshManagerPer2Bank::getTimeForNextTrigger()
|
|||||||
return timeForNextTrigger;
|
return timeForNextTrigger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RefreshManagerPer2Bank::serialize(std::ostream& stream) const
|
||||||
|
{
|
||||||
|
stream.write(reinterpret_cast<char const*>(&timeForNextTrigger), sizeof(timeForNextTrigger));
|
||||||
|
}
|
||||||
|
|
||||||
|
void RefreshManagerPer2Bank::deserialize(std::istream& stream)
|
||||||
|
{
|
||||||
|
stream.read(reinterpret_cast<char *>(&timeForNextTrigger), sizeof(timeForNextTrigger));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace DRAMSys
|
} // namespace DRAMSys
|
||||||
|
|||||||
@@ -29,7 +29,9 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* Author: Lukas Steiner
|
* Authors:
|
||||||
|
* Lukas Steiner
|
||||||
|
* Derek Christ
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef REFRESHMANAGERPER2BANK_H
|
#ifndef REFRESHMANAGERPER2BANK_H
|
||||||
@@ -37,7 +39,6 @@
|
|||||||
|
|
||||||
#include "DRAMSys/configuration/memspec/MemSpec.h"
|
#include "DRAMSys/configuration/memspec/MemSpec.h"
|
||||||
#include "DRAMSys/controller/McConfig.h"
|
#include "DRAMSys/controller/McConfig.h"
|
||||||
#include "DRAMSys/controller/checker/CheckerIF.h"
|
|
||||||
#include "DRAMSys/controller/refresh/RefreshManagerIF.h"
|
#include "DRAMSys/controller/refresh/RefreshManagerIF.h"
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
@@ -66,6 +67,9 @@ public:
|
|||||||
void update(Command command) override;
|
void update(Command command) override;
|
||||||
sc_core::sc_time getTimeForNextTrigger() override;
|
sc_core::sc_time getTimeForNextTrigger() override;
|
||||||
|
|
||||||
|
void serialize(std::ostream& stream) const override;
|
||||||
|
void deserialize(std::istream& stream) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum class State
|
enum class State
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -29,7 +29,9 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* Author: Lukas Steiner
|
* Authors:
|
||||||
|
* Lukas Steiner
|
||||||
|
* Derek Christ
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "RefreshManagerPerBank.h"
|
#include "RefreshManagerPerBank.h"
|
||||||
@@ -213,4 +215,14 @@ sc_time RefreshManagerPerBank::getTimeForNextTrigger()
|
|||||||
return timeForNextTrigger;
|
return timeForNextTrigger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RefreshManagerPerBank::serialize(std::ostream& stream) const
|
||||||
|
{
|
||||||
|
stream.write(reinterpret_cast<char const*>(&timeForNextTrigger), sizeof(timeForNextTrigger));
|
||||||
|
}
|
||||||
|
|
||||||
|
void RefreshManagerPerBank::deserialize(std::istream& stream)
|
||||||
|
{
|
||||||
|
stream.read(reinterpret_cast<char *>(&timeForNextTrigger), sizeof(timeForNextTrigger));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace DRAMSys
|
} // namespace DRAMSys
|
||||||
|
|||||||
@@ -29,14 +29,15 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* Author: Lukas Steiner
|
* Authors:
|
||||||
|
* Lukas Steiner
|
||||||
|
* Derek Christ
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef REFRESHMANAGERPERBANK_H
|
#ifndef REFRESHMANAGERPERBANK_H
|
||||||
#define REFRESHMANAGERPERBANK_H
|
#define REFRESHMANAGERPERBANK_H
|
||||||
|
|
||||||
#include "DRAMSys/configuration/memspec/MemSpec.h"
|
#include "DRAMSys/configuration/memspec/MemSpec.h"
|
||||||
#include "DRAMSys/controller/checker/CheckerIF.h"
|
|
||||||
#include "DRAMSys/controller/McConfig.h"
|
#include "DRAMSys/controller/McConfig.h"
|
||||||
#include "DRAMSys/controller/refresh/RefreshManagerIF.h"
|
#include "DRAMSys/controller/refresh/RefreshManagerIF.h"
|
||||||
|
|
||||||
@@ -44,7 +45,6 @@
|
|||||||
#include <systemc>
|
#include <systemc>
|
||||||
#include <tlm>
|
#include <tlm>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace DRAMSys
|
namespace DRAMSys
|
||||||
{
|
{
|
||||||
@@ -66,6 +66,9 @@ public:
|
|||||||
void update(Command command) override;
|
void update(Command command) override;
|
||||||
sc_core::sc_time getTimeForNextTrigger() override;
|
sc_core::sc_time getTimeForNextTrigger() override;
|
||||||
|
|
||||||
|
void serialize(std::ostream& stream) const override;
|
||||||
|
void deserialize(std::istream& stream) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum class State
|
enum class State
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -29,7 +29,9 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* Author: Lukas Steiner
|
* Authors:
|
||||||
|
* Lukas Steiner
|
||||||
|
* Derek Christ
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "RefreshManagerSameBank.h"
|
#include "RefreshManagerSameBank.h"
|
||||||
@@ -337,4 +339,14 @@ sc_time RefreshManagerSameBank::getTimeForNextTrigger()
|
|||||||
return timeForNextTrigger;
|
return timeForNextTrigger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RefreshManagerSameBank::serialize(std::ostream& stream) const
|
||||||
|
{
|
||||||
|
stream.write(reinterpret_cast<char const*>(&timeForNextTrigger), sizeof(timeForNextTrigger));
|
||||||
|
}
|
||||||
|
|
||||||
|
void RefreshManagerSameBank::deserialize(std::istream& stream)
|
||||||
|
{
|
||||||
|
stream.read(reinterpret_cast<char *>(&timeForNextTrigger), sizeof(timeForNextTrigger));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace DRAMSys
|
} // namespace DRAMSys
|
||||||
|
|||||||
@@ -29,7 +29,9 @@
|
|||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* Author: Lukas Steiner
|
* Authors:
|
||||||
|
* Lukas Steiner
|
||||||
|
* Derek Christ
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef REFRESHMANAGERSAMEBANK_H
|
#ifndef REFRESHMANAGERSAMEBANK_H
|
||||||
@@ -37,7 +39,6 @@
|
|||||||
|
|
||||||
#include "DRAMSys/configuration/memspec/MemSpec.h"
|
#include "DRAMSys/configuration/memspec/MemSpec.h"
|
||||||
#include "DRAMSys/controller/McConfig.h"
|
#include "DRAMSys/controller/McConfig.h"
|
||||||
#include "DRAMSys/controller/checker/CheckerIF.h"
|
|
||||||
#include "DRAMSys/controller/refresh/RefreshManagerIF.h"
|
#include "DRAMSys/controller/refresh/RefreshManagerIF.h"
|
||||||
|
|
||||||
#include <list>
|
#include <list>
|
||||||
@@ -65,6 +66,9 @@ public:
|
|||||||
void update(Command command) override;
|
void update(Command command) override;
|
||||||
sc_core::sc_time getTimeForNextTrigger() override;
|
sc_core::sc_time getTimeForNextTrigger() override;
|
||||||
|
|
||||||
|
void serialize(std::ostream& stream) const override;
|
||||||
|
void deserialize(std::istream& stream) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
enum class State
|
enum class State
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user