Merge branch 'development' into pct_fixes

This commit is contained in:
Lukas Steiner
2020-04-30 15:16:36 +02:00
13 changed files with 149 additions and 160 deletions

View File

@@ -20,7 +20,7 @@ build:
- mkdir -p build
- cd build
- cmake ../DRAMSys
- make -j4
- make -j16
- find . -name "*.o" -type f -delete
- rm -rf ${CI_PROJECT_DIR}/coverage
- mkdir -p ${CI_PROJECT_DIR}/coverage

View File

@@ -1,25 +1,34 @@
<!--
DDR3 Example:
1GB x64 DIMM with: 8 * 1 Gb x8 Devices (e.g. Micron MT41J128M8) with Page Size: 1KB
Device Characteristics:
Rows: 16 K [13:0] -> 14 bit
Bank: 8 [2:0] -> 3 bit
Cols: 1 K [9:0] -> 10 bit
Due to the DIMM we have a Byte Offset Y
2 2 2 | 2 2 2 2 2 2 2 1 1 1 1 1 1 1 | 1 1 1
9 8 7 | 6 5 4 3 2 1 0 9 8 7 6 5 4 3 | 2 1 0 9 8 7 6 5 4 3 | 2 1 0
B B B | R R R R R R R R R R R R R R | C C C C C C C C C C | Y Y Y
-->
<addressmapping>
<channel from="128" to="128" /> <!-- only one channel -->
<bank from="27" to="29" />
<row from="13" to="26" />
<column from="3" to="12" />
<bytes from="0" to="2" />
</addressmapping>
<CONGEN>
<SOLUTION ID="0">
<BYTE_BIT>0</BYTE_BIT>
<BYTE_BIT>1</BYTE_BIT>
<BYTE_BIT>2</BYTE_BIT>
<COLUMN_BIT>3</COLUMN_BIT>
<COLUMN_BIT>4</COLUMN_BIT>
<COLUMN_BIT>5</COLUMN_BIT>
<COLUMN_BIT>6</COLUMN_BIT>
<COLUMN_BIT>7</COLUMN_BIT>
<COLUMN_BIT>8</COLUMN_BIT>
<COLUMN_BIT>9</COLUMN_BIT>
<COLUMN_BIT>10</COLUMN_BIT>
<COLUMN_BIT>11</COLUMN_BIT>
<COLUMN_BIT>12</COLUMN_BIT>
<ROW_BIT>13</ROW_BIT>
<ROW_BIT>14</ROW_BIT>
<ROW_BIT>15</ROW_BIT>
<ROW_BIT>16</ROW_BIT>
<ROW_BIT>17</ROW_BIT>
<ROW_BIT>18</ROW_BIT>
<ROW_BIT>19</ROW_BIT>
<ROW_BIT>20</ROW_BIT>
<ROW_BIT>21</ROW_BIT>
<ROW_BIT>22</ROW_BIT>
<ROW_BIT>23</ROW_BIT>
<ROW_BIT>24</ROW_BIT>
<ROW_BIT>25</ROW_BIT>
<ROW_BIT>26</ROW_BIT>
<BANK_BIT>27</BANK_BIT>
<BANK_BIT>28</BANK_BIT>
<BANK_BIT>29</BANK_BIT>
</SOLUTION>
</CONGEN>

View File

@@ -1,50 +1,20 @@
<mcconfig>
<OpenPagePolicy value="1" />
<MaxNrOfTransactions value="8" />
<Scheduler value="FifoStrict" />
<Capsize value="5" />
<!-- 4 Modes: NoPowerDown, Staggered, TimeoutPDN, TimeoutSREF -->
<PowerDownMode value="NoPowerDown" />
<!-- Open, OpenAdaptive, Closed, ClosedAdaptive -->
<PagePolicy value="Open" />
<!-- Fifo, FrFcfs, FrFcfsGrp -->
<Scheduler value="Fifo" />
<RequestBufferSize value="8" />
<!-- Oldest, Strict -->
<CmdMux value="Strict" />
<!-- Fifo, Reorder -->
<RespQueue value="Fifo" />
<!-- NoRefresh, Rankwise, Bankwise -->
<RefreshPolicy value="Rankwise" />
<!-- 1: 1X, 2: 2X, 4: 4X (e.g., DDR4) -->
<RefreshMode value="1" />
<RefreshMaxPostponed value="0"/>
<RefreshMaxPulledin value="0"/>
<!-- NoPowerDown, Staggered, TimeoutPDN, TimeoutSREF -->
<PowerDownPolicy value="NoPowerDown" />
<PowerDownTimeout value="100" />
<!-- Bankwise -->
<BankwiseLogic value="0"/>
<!-- Refresh yes, no -->
<ControllerCoreRefDisable value="0"/>
<!-- Refresh Mode. 1: 1X, 2: 2X, 4: 4X (e.g., DDR4) -->
<ControllerCoreRefMode value="1"/>
<!-- Number of AR commands in a tREFI in 1X mode -->
<ControllerCoreRefNumARCmdsIntREFI value="8192"/>
<!-- RGR -->
<ControllerCoreRGR value="0"/>
<ControllerCoreRGRRowInc value="1"/>
<!-- Banks to be refreshed in RGR mode. 1: yes, 0: no (max. 16 banks) -->
<ControllerCoreRGRB0 value="1"/>
<ControllerCoreRGRB1 value="1"/>
<ControllerCoreRGRB2 value="1"/>
<ControllerCoreRGRB3 value="1"/>
<ControllerCoreRGRB4 value="1"/>
<ControllerCoreRGRB5 value="1"/>
<ControllerCoreRGRB6 value="1"/>
<ControllerCoreRGRB7 value="1"/>
<ControllerCoreRGRB8 value="0"/>
<ControllerCoreRGRB9 value="0"/>
<ControllerCoreRGRB10 value="0"/>
<ControllerCoreRGRB11 value="0"/>
<ControllerCoreRGRB12 value="0"/>
<ControllerCoreRGRB13 value="0"/>
<ControllerCoreRGRB14 value="0"/>
<ControllerCoreRGRB15 value="0"/>
<!-- Timings for RGR normal or optimal values -->
<ControllerCoreRGRtRASBInClkCycles value="22"/>
<ControllerCoreRGRtRRDB_LInClkCycles value="2"/>
<ControllerCoreRGRtRRDB_SInClkCycles value="2"/>
<ControllerCoreRGRtRPBInClkCycles value="15"/>
<ControllerCoreRGRtRCBInClkCycles value="37"/>
<ControllerCoreRGRtFAWBInClkCycles value="0"/>
<!-- Postpone, pull-in -->
<ControllerCoreRefEnablePostpone value="0"/>
<ControllerCoreRefEnablePullIn value="0"/>
<ControllerCoreRefMaxPostponed value="8"/>
<ControllerCoreRefMaxPulledIn value="8"/>
<ControllerCoreRefForceMaxPostponeBurst value="0"/>
</mcconfig>

View File

@@ -1,50 +1,20 @@
<mcconfig>
<OpenPagePolicy value="1" />
<MaxNrOfTransactions value="8" />
<!-- Open, OpenAdaptive, Closed, ClosedAdaptive -->
<PagePolicy value="Open" />
<!-- Fifo, FrFcfs, FrFcfsGrp -->
<Scheduler value="FrFcfs" />
<Capsize value="5" />
<!-- 4 Modes: NoPowerDown, Staggered, TimeoutPDN, TimeoutSREF -->
<PowerDownMode value="NoPowerDown" />
<RequestBufferSize value="8" />
<!-- Oldest, Strict -->
<CmdMux value="Oldest" />
<!-- Fifo, Reorder -->
<RespQueue value="Fifo" />
<!-- NoRefresh, Rankwise, Bankwise -->
<RefreshPolicy value="Rankwise" />
<!-- 1: 1X, 2: 2X, 4: 4X (e.g., DDR4) -->
<RefreshMode value="1" />
<RefreshMaxPostponed value="0"/>
<RefreshMaxPulledin value="0"/>
<!-- NoPowerDown, Staggered, TimeoutPDN, TimeoutSREF -->
<PowerDownPolicy value="NoPowerDown" />
<PowerDownTimeout value="100" />
<!-- Bankwise -->
<BankwiseLogic value="0"/>
<!-- Refresh yes, no -->
<ControllerCoreRefDisable value="0"/>
<!-- Refresh Mode. 1: 1X, 2: 2X, 4: 4X (e.g., DDR4) -->
<ControllerCoreRefMode value="1"/>
<!-- Number of AR commands in a tREFI in 1X mode -->
<ControllerCoreRefNumARCmdsIntREFI value="8192"/>
<!-- RGR -->
<ControllerCoreRGR value="0"/>
<ControllerCoreRGRRowInc value="1"/>
<!-- Banks to be refreshed in RGR mode. 1: yes, 0: no (max. 16 banks) -->
<ControllerCoreRGRB0 value="1"/>
<ControllerCoreRGRB1 value="1"/>
<ControllerCoreRGRB2 value="1"/>
<ControllerCoreRGRB3 value="1"/>
<ControllerCoreRGRB4 value="1"/>
<ControllerCoreRGRB5 value="1"/>
<ControllerCoreRGRB6 value="1"/>
<ControllerCoreRGRB7 value="1"/>
<ControllerCoreRGRB8 value="0"/>
<ControllerCoreRGRB9 value="0"/>
<ControllerCoreRGRB10 value="0"/>
<ControllerCoreRGRB11 value="0"/>
<ControllerCoreRGRB12 value="0"/>
<ControllerCoreRGRB13 value="0"/>
<ControllerCoreRGRB14 value="0"/>
<ControllerCoreRGRB15 value="0"/>
<!-- Timings for RGR normal or optimal values -->
<ControllerCoreRGRtRASBInClkCycles value="22"/>
<ControllerCoreRGRtRRDB_LInClkCycles value="2"/>
<ControllerCoreRGRtRRDB_SInClkCycles value="2"/>
<ControllerCoreRGRtRPBInClkCycles value="15"/>
<ControllerCoreRGRtRCBInClkCycles value="37"/>
<ControllerCoreRGRtFAWBInClkCycles value="0"/>
<!-- Postpone, pull-in -->
<ControllerCoreRefEnablePostpone value="0"/>
<ControllerCoreRefEnablePullIn value="0"/>
<ControllerCoreRefMaxPostponed value="8"/>
<ControllerCoreRefMaxPulledIn value="8"/>
<ControllerCoreRefForceMaxPostponeBurst value="0"/>
</mcconfig>

View File

@@ -1,5 +1,6 @@
DROP TABLE IF EXISTS Phases;
DROP TABLE IF EXISTS GeneralInfo;
DROP TABLE IF EXISTS CommandLengths;
DROP TABLE IF EXISTS Comments;
DROP TABLE IF EXISTS ranges;
DROP TABLE IF EXISTS Transactions;
@@ -17,6 +18,7 @@ CREATE TABLE Phases(
CREATE TABLE GeneralInfo(
NumberOfTransactions INTEGER,
TraceEnd INTEGER,
NumberOfRanks INTEGER,
NumberOfBanks INTEGER,
clk INTEGER,
UnitOfTime TEXT,
@@ -29,6 +31,24 @@ CREATE TABLE GeneralInfo(
ControllerThread INTEGER
);
CREATE TABLE CommandLengths(
ACT INTEGER,
PRE INTEGER,
PREA INTEGER,
RD INTEGER,
RDA INTEGER,
WR INTEGER,
WRA INTEGER,
REFA INTEGER,
REFB INTEGER,
PDEA INTEGER,
PDXA INTEGER,
PDEP INTEGER,
PDXP INTEGER,
SREFEN INTEGER,
SREFEX INTEGER
);
CREATE TABLE Power(
time DOUBLE,
AveragePower DOUBLE
@@ -58,8 +78,9 @@ CREATE TABLE Transactions(
Burstlength INTEGER,
TThread INTEGER,
TChannel INTEGER,
TBank INTEGER,
TRank INTEGER,
TBankgroup INTEGER,
TBank INTEGER,
TRow INTEGER,
TColumn INTEGER,
DataStrobeBegin INTEGER,

View File

@@ -1,5 +1,6 @@
DROP TABLE IF EXISTS Phases;
DROP TABLE IF EXISTS GeneralInfo;
DROP TABLE IF EXISTS CommandLengths;
DROP TABLE IF EXISTS Comments;
DROP TABLE IF EXISTS ranges;
DROP TABLE IF EXISTS Transactions;
@@ -17,6 +18,7 @@ CREATE TABLE Phases(
CREATE TABLE GeneralInfo(
NumberOfTransactions INTEGER,
TraceEnd INTEGER,
NumberOfRanks INTEGER,
NumberOfBanks INTEGER,
clk INTEGER,
UnitOfTime TEXT,
@@ -29,6 +31,24 @@ CREATE TABLE GeneralInfo(
ControllerThread INTEGER
);
CREATE TABLE CommandLengths(
ACT INTEGER,
PRE INTEGER,
PREA INTEGER,
RD INTEGER,
RDA INTEGER,
WR INTEGER,
WRA INTEGER,
REFA INTEGER,
REFB INTEGER,
PDEA INTEGER,
PDXA INTEGER,
PDEP INTEGER,
PDXP INTEGER,
SREFEN INTEGER,
SREFEX INTEGER
);
CREATE TABLE Power(
time DOUBLE,
AveragePower DOUBLE
@@ -58,8 +78,9 @@ CREATE TABLE Transactions(
Burstlength INTEGER,
TThread INTEGER,
TChannel INTEGER,
TBank INTEGER,
TRank INTEGER,
TBankgroup INTEGER,
TBank INTEGER,
TRow INTEGER,
TColumn INTEGER,
DataStrobeBegin INTEGER,

View File

@@ -35,20 +35,18 @@ cmake_minimum_required(VERSION 3.10)
# Project Name:
project(TraceAnalyzer)
# Add Python Dependency:
find_library(PYTHON3_LIBRARY NAMES Python3)
# Add sqlite3 Dependency:
find_package(PythonLibs REQUIRED)
# Add Python3 Dependency:
find_package(Python3 COMPONENTS Development)
# Add QWT Dependency:
find_library(QWT_LIBRARY NAMES "qwt-qt5" "qwt")
find_path (QWT_INCLUDE_DIRS NAMES "qwt_plot.h" PATHS
find_library(QWT_LIBRARY NAMES "qwt-qt5" "qwt" PATHS $ENV{LIBQWT_HOME})
find_path(QWT_INCLUDE_DIRS NAMES "qwt_plot.h" PATHS
"/usr/include/qwt-qt5"
"/usr/include/qwt"
"C:\\Qwt\\"
"C:\\Qwt-6.1.4\\"
"C:\\Users\\jung\\Zeugs\\qwt\\qwt-614-install\\include"
$ENV{LIBQWT_HEADERS}
)
# Add QT Library:
@@ -64,7 +62,7 @@ set(DCMAKE_SH="CMAKE_SH-NOTFOUND")
include_directories(
${QWT_INCLUDE_DIRS}
${PYTHON_INCLUDE_DIRS}
${Python3_INCLUDE_DIRS}
./
businessObjects/
businessObjects/phases/
@@ -86,7 +84,7 @@ add_executable(TraceAnalyzer
gototimedialog.cpp
presentation/traceplot.cpp
tracefiletab.cpp
presentation/pornotracescroller.cpp
presentation/tracescroller.cpp
traceanalyzer.cpp
presentation/transactiontreewidget.cpp
presentation/commenttreewidget.cpp
@@ -115,7 +113,7 @@ add_executable(TraceAnalyzer
# Build:
target_link_libraries(TraceAnalyzer
${PYTHON_LIBRARIES}
${Python3_LIBRARIES}
${QWT_LIBRARY}
)
qt5_use_modules(TraceAnalyzer Widgets Sql)

View File

@@ -52,7 +52,7 @@ MainWindow::MainWindow(QWidget *parent) :
db = new TraceDB("tpr.tdb", true);
traceNavigator = new TraceNavigator(db->getGeneralInfo(), this);
ui->tracePlot->init(traceNavigator, db);
ui->pornoTraceScroller->init(traceNavigator, db, ui->tracePlot);
ui->traceScroller->init(traceNavigator, db, ui->tracePlot);
phases = db->getPhasesInTimespan(
traceNavigator->GeneralTraceInfo().TraceSpan());
transactions = db->getTransactionsInTimespan(

View File

@@ -38,11 +38,11 @@
#include <qwt_plot_zoneitem.h>
#include <QWheelEvent>
#include <QMouseEvent>
#include "pornotracescroller.h"
#include "tracescroller.h"
#include "traceplotitem.h"
#include "util/engineeringScaleDraw.h"
PornoTraceScroller::PornoTraceScroller(QWidget *parent):
TraceScroller::TraceScroller(QWidget *parent):
QwtPlot(parent), isInitialized(false), drawingProperties(false, false,
ColorGrouping::PhaseType)
{
@@ -53,7 +53,7 @@ PornoTraceScroller::PornoTraceScroller(QWidget *parent):
canvasClip->attach(this);
}
void PornoTraceScroller::init(TraceNavigator *navigator, TracePlot *tracePlot)
void TraceScroller::init(TraceNavigator *navigator, TracePlot *tracePlot)
{
Q_ASSERT(isInitialized == false);
isInitialized = true;
@@ -76,7 +76,7 @@ void PornoTraceScroller::init(TraceNavigator *navigator, TracePlot *tracePlot)
}
void PornoTraceScroller::setUpTracePlotItem()
void TraceScroller::setUpTracePlotItem()
{
TracePlotItem *tracePlotItem = new TracePlotItem(transactions, *navigator,
drawingProperties);
@@ -84,7 +84,7 @@ void PornoTraceScroller::setUpTracePlotItem()
tracePlotItem->attach(this);
}
void PornoTraceScroller::setUpDrawingProperties()
void TraceScroller::setUpDrawingProperties()
{
drawingProperties.numberOfRanks = navigator->GeneralTraceInfo().numberOfRanks;
drawingProperties.numberOfBanks = navigator->GeneralTraceInfo().numberOfBanks;
@@ -96,14 +96,14 @@ void PornoTraceScroller::setUpDrawingProperties()
}
void PornoTraceScroller::setUpAxis()
void TraceScroller::setUpAxis()
{
setAxisScale(yLeft, -1, navigator->GeneralTraceInfo().numberOfBanks + 2, 1.0);
axisScaleDraw(yLeft)->enableComponent(QwtAbstractScaleDraw::Labels, false );
axisScaleDraw(yLeft)->enableComponent(QwtAbstractScaleDraw::Ticks, false );
}
void PornoTraceScroller::connectNavigatorQ_SIGNALS()
void TraceScroller::connectNavigatorQ_SIGNALS()
{
QObject::connect(navigator, SIGNAL(currentTraceTimeChanged()), this,
SLOT(currentTraceTimeChanged()));
@@ -113,15 +113,15 @@ void PornoTraceScroller::connectNavigatorQ_SIGNALS()
SLOT(selectedTransactionsChanged()));
}
Timespan PornoTraceScroller::GetCurrentTimespan()
Timespan TraceScroller::GetCurrentTimespan()
{
traceTime deltaOnTracePlot = navigator->GeneralTraceInfo().span.End() -
tracePlot->ZoomLevel();
traceTime deltaOnPornoTraceScroller = navigator->GeneralTraceInfo().span.End() -
traceTime deltaOnTraceScroller = navigator->GeneralTraceInfo().span.End() -
zoomLevel;
traceTime newBegin = static_cast<traceTime>
(tracePlot->GetCurrentTimespan().Begin() * (1.0 * deltaOnPornoTraceScroller) /
(tracePlot->GetCurrentTimespan().Begin() * (1.0 * deltaOnTraceScroller) /
deltaOnTracePlot);
Timespan span(newBegin, newBegin + zoomLevel);
@@ -133,7 +133,7 @@ Timespan PornoTraceScroller::GetCurrentTimespan()
}
void PornoTraceScroller::getAndDrawComments()
void TraceScroller::getAndDrawComments()
{
for (const auto &pair : navigator->getComments()) {
const Comment &comment = pair.second;
@@ -151,18 +151,18 @@ void PornoTraceScroller::getAndDrawComments()
*
*/
void PornoTraceScroller::selectedTransactionsChanged()
void TraceScroller::selectedTransactionsChanged()
{
replot();
}
void PornoTraceScroller::colorGroupingChanged(ColorGrouping colorGrouping)
void TraceScroller::colorGroupingChanged(ColorGrouping colorGrouping)
{
drawingProperties.colorGrouping = colorGrouping;
replot();
}
void PornoTraceScroller::currentTraceTimeChanged()
void TraceScroller::currentTraceTimeChanged()
{
Timespan spanOnTracePlot = tracePlot->GetCurrentTimespan();
canvasClip->setInterval(spanOnTracePlot.Begin(), spanOnTracePlot.End());
@@ -172,21 +172,21 @@ void PornoTraceScroller::currentTraceTimeChanged()
replot();
}
void PornoTraceScroller::commentsChanged()
void TraceScroller::commentsChanged()
{
detachItems(QwtPlotItem::Rtti_PlotMarker);
getAndDrawComments();
replot();
}
void PornoTraceScroller::tracePlotZoomChanged()
void TraceScroller::tracePlotZoomChanged()
{
zoomLevel = tracePlot->ZoomLevel() * tracePlotEnlargementFactor;
if (zoomLevel > navigator->GeneralTraceInfo().span.timeCovered())
zoomLevel = navigator->GeneralTraceInfo().span.timeCovered();
}
bool PornoTraceScroller::eventFilter( QObject *object, QEvent *event )
bool TraceScroller::eventFilter( QObject *object, QEvent *event )
{
if (object == canvas()) {
static bool clipDragged = false;

View File

@@ -35,8 +35,8 @@
* Matthias Jung
*/
#ifndef PORNOTRACESCROLLER_H
#define PORNOTRACESCROLLER_H
#ifndef TRACESCROLLER_H
#define TRACESCROLLER_H
#include <qwt_plot.h>
#include <qwt_plot_zoneitem.h>
@@ -45,7 +45,7 @@
#include "traceplot.h"
class PornoTraceScroller : public QwtPlot
class TraceScroller : public QwtPlot
{
Q_OBJECT
private:
@@ -67,7 +67,7 @@ private:
TraceDrawingProperties drawingProperties;
public:
PornoTraceScroller(QWidget *parent = NULL);
TraceScroller(QWidget *parent = NULL);
void init(TraceNavigator *navigator, TracePlot *tracePlot);
Timespan GetCurrentTimespan();
@@ -80,4 +80,4 @@ public Q_SLOTS:
};
#endif // PORNOTRACESCROLLER_H
#endif // TraceScroller_H

View File

@@ -75,9 +75,9 @@ void TraceFileTab::initNavigatorAndItsDependentWidgets(QString path)
ui->traceplot->init(navigator);
ui->pornoTraceScroller->init(navigator, ui->traceplot);
ui->traceScroller->init(navigator, ui->traceplot);
connect(this, SIGNAL(colorGroupingChanged(ColorGrouping)),
ui->pornoTraceScroller, SLOT(colorGroupingChanged(ColorGrouping)));
ui->traceScroller, SLOT(colorGroupingChanged(ColorGrouping)));
ui->selectedTransactionTree->init(navigator);
//ui->debugMessages->init(navigator,ui->traceplot);

View File

@@ -43,7 +43,7 @@
#include <QFileSystemWatcher>
#include "presentation/tracenavigator.h"
#include "presentation/traceplot.h"
#include "presentation/pornotracescroller.h"
#include "presentation/tracescroller.h"
namespace Ui {
class TraceFileTab;

View File

@@ -38,7 +38,7 @@
</widget>
</item>
<item>
<widget class="PornoTraceScroller" name="pornoTraceScroller">
<widget class="TraceScroller" name="traceScroller">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>4</horstretch>
@@ -162,9 +162,9 @@
<header>presentation/traceplot.h</header>
</customwidget>
<customwidget>
<class>PornoTraceScroller</class>
<class>TraceScroller</class>
<extends>QListView</extends>
<header>presentation/pornotracescroller.h</header>
<header>presentation/tracescroller.h</header>
</customwidget>
<customwidget>
<class>CommentTreeWidget</class>