diff --git a/DRAMSys/docs/images/PayloadMemoryManager.svg b/DRAMSys/docs/images/PayloadMemoryManager.svg
index 3cf9fd46..56a0547f 100644
--- a/DRAMSys/docs/images/PayloadMemoryManager.svg
+++ b/DRAMSys/docs/images/PayloadMemoryManager.svg
@@ -985,4 +985,24 @@
y="0"
id="tspan640"
style="font-size:13.99967957px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">()
+free
+()
\ No newline at end of file
diff --git a/DRAMSys/docs/images/TransactionPhase.svg b/DRAMSys/docs/images/TransactionPhase.svg
index 4a2973f4..06e2d73b 100644
--- a/DRAMSys/docs/images/TransactionPhase.svg
+++ b/DRAMSys/docs/images/TransactionPhase.svg
@@ -6,23 +6,23 @@
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="765.9375"
- height="1935.9375"
+ height="990.9375"
id="svg2"
xml:space="preserve">PEQFrontEnd
Scheduler
rowBufferIsOpen
(
Bank
)
Command
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">Command
::
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">::
Activate
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">Activate
FALSE
+ style="font-size:7.99992132px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">FALSE
RowInRowBuffer
=
getRow
(
Payload
)
TRUE
+ style="font-size:7.99989271px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">TRUE
Command
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">Command
::
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">::
Precharge
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">Precharge
FALSE
-Command
+ id="tspan346"
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">Command
::
+ id="tspan350"
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">::
READ
+ id="tspan354"
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">READ
Command
+ id="tspan388"
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">Command
::
+ id="tspan392"
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">::
WRITE
+WRITE
-TRUE
+ style="font-size:6.99995613px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">TRUE
&
+ id="tspan410"
+ style="font-size:6.99995613px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">&
READ
+ id="tspan414"
+ style="font-size:6.99995613px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">READ
_
+ id="tspan418"
+ style="font-size:6.99995613px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">_
COMMAND
+COMMAND
-TRUE
+ style="font-size:7.99992132px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">TRUE
&
+ id="tspan436"
+ style="font-size:7.99992132px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">&
WRITE
+ id="tspan440"
+ style="font-size:7.99992132px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">WRITE
_
+ id="tspan444"
+ style="font-size:7.99992132px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">_
COMMAND
+ id="tspan448"
+ style="font-size:7.99992132px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">COMMAND
BEGIN
_
ACT
BEGIN
_
PRE
BEGIN
_
RD
BEGIN
_
WR
ControllerCore
(
PowerDownManager
,
RefreshManager
)
ControllerCorePEQ
+ControllerCorePEQ
-Initiator Socket
+ id="tspan766"
+ style="font-size:12.00024033px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">Initiator Socket
Target Socket
+ id="tspan770"
+ style="font-size:12.00024033px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">Target Socket
Receive
nb
+ id="tspan884"
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">nb
_
+ id="tspan888"
+ style="font-size:11.00016022px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">_
transport
+_
+fw
+transport
+ style="font-size:12.00024033px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">END
_
+ style="font-size:12.00024033px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">_
fw
+ style="font-size:12.00024033px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">ACT
END
+ style="font-size:12.00024033px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">END
_
+ style="font-size:12.00024033px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">_
ACT
+ style="font-size:12.00024033px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">PRE
END
+ style="font-size:12.00024033px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">END
_
+ style="font-size:12.00024033px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">_
PRE
+ style="font-size:12.00024033px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">RD
END
_
RD
-END
-_
-WR
BEGIN
+ id="tspan1078"
+ style="font-size:10.00013447px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">BEGIN
_
+ id="tspan1082"
+ style="font-size:10.00013447px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">_
ACT
+ id="tspan1086"
+ style="font-size:10.00013447px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">ACT
BEGIN
+ id="tspan1096"
+ style="font-size:10.00003147px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">BEGIN
_
+ id="tspan1100"
+ style="font-size:10.00003147px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">_
PRE
+ id="tspan1104"
+ style="font-size:10.00003147px;font-variant:normal;font-weight:normal;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:CALIBRI;-inkscape-font-specification:CALIBRI">PRE
BEGIN
+_
+RD
+BEGIN
+_
+WR
+BEGIN
-_
-RD
-BEGIN
-_
-WR
-DramPEQ
nb
-_
-transport
-_
-bw
-Controller
-DRAM
-Target Socket
-nb
-_
-transport
-_
-fw
-nb
_
transport
_
bw
Controller
+DRAM
+Target Socket
+nb
+_
+transport
+_
+fw
+nb
+_
+transport
+_
+bw
+From
/
to Arbiter
END
+_
+RD or END
+_
+WR
+END
+_
+ACT or END
+_
+PRE
+FALSE
+END
-_
-RD or END
-_
-WR
-END
-_
-ACT or END
-_
-PRE
-
\ No newline at end of file
+ style="fill:none;stroke:#404040;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none" />
\ No newline at end of file
diff --git a/DRAMSys/simulator/src/simulation/Arbiter.h b/DRAMSys/simulator/src/simulation/Arbiter.h
index 6ddd56f1..79e6aa97 100644
--- a/DRAMSys/simulator/src/simulation/Arbiter.h
+++ b/DRAMSys/simulator/src/simulation/Arbiter.h
@@ -123,9 +123,6 @@ private:
return TLM_ACCEPTED;
}
- // TODO: check this id. How the payload extension propagates and is used...
- // TODO: check the index mechanism for initiator and target sockets. Assert the index to be valid.
-
// Initiated by initiator side
// This function is called when an arbiter's target socket receives a transaction from a device
tlm_sync_enum nb_transport_fw(int id, tlm_generic_payload& payload, tlm_phase& phase, sc_time& fwDelay)
diff --git a/README.md b/README.md
index 88aa6cd6..539b4e51 100644
--- a/README.md
+++ b/README.md
@@ -814,17 +814,28 @@ A description of the content each directory follows.
- **Payload Extension information**
GenerationExtension is added in TracePlayer and DramExtension is added in Arbiter.
-
+
+ DramExtension indicates the decoded address (channel, bank, colums, row) and the socket id (thread) of a payload. It is added in the Arbiter and is sent to the Controller.

- **Transaction object with Memory Manager**
- The acquire method is called before passing the transaction object and the release method is called after the component is done with the transaction object.
+ The TracePlayer allocates the memory for the transaction object by calling allocatePayload method.
+
+ The acquire method is called before passing the transaction object in TracePlayer, Arbiter and Controller.
+ The release method is called after each component is done with the transaction object. After the final call of release method, the free method of the memory manager is called to free the transaction object.
+

- **Architecture of the backend TLM model**
+
+ The below figure shows our custom TLM protocol between the Controller and the Dram. A new transaction enters the Controller with the BEGIN_REQ phase is stored in frontendPEQ. The callback function of the frontendPEQ is called and send the payload to the Scheduler.
+
+ The Scheduler checks the address of payload and the current state to determine proper command (Active, Precharge, Read or Write). Then the ControllerCore sends the payload with the corresponding phase (BEGIN_ACT, BEGIN_PRE, BEGIN_RD or BEGIN_WR) to the Dram by calling nb_transport_fw method.
+ The Dram receives the transaction then send back to the Controller by calling nb_transport_bw with appropriate END phase (END_ACT, END_PRE, END_RD or END_WR).
+

#### References