diff --git a/DRAMSys/traceAnalyzer/businessObjects/dramTimeDependencies/dramtimedependenciesIF.cpp b/DRAMSys/traceAnalyzer/businessObjects/dramTimeDependencies/dramtimedependenciesIF.cpp index 40f43b6a..dd01353d 100644 --- a/DRAMSys/traceAnalyzer/businessObjects/dramTimeDependencies/dramtimedependenciesIF.cpp +++ b/DRAMSys/traceAnalyzer/businessObjects/dramTimeDependencies/dramtimedependenciesIF.cpp @@ -67,11 +67,12 @@ void DRAMTimeDependenciesIF::mFilterDependencyList(std::vector& dependencyFilter.end(), dep.phaseDep, [](const QString& cmd, const QString& depName){ - return cmd == "NAW" || QStringsComparator::compareQStrings(cmd, depName); + return depName == "NAW" || QStringsComparator::compareQStrings(cmd, depName); } ); - if (it != dependencyFilter.end() && *it == dep.phaseDep) return true; + if (dep.phaseDep == "NAW" || it != dependencyFilter.end() && *it == dep.phaseDep) + return true; return false; } diff --git a/DRAMSys/traceAnalyzer/businessObjects/phasedependenciestracker.cpp b/DRAMSys/traceAnalyzer/businessObjects/phasedependenciestracker.cpp index ccd0665c..aaf0e285 100644 --- a/DRAMSys/traceAnalyzer/businessObjects/phasedependenciestracker.cpp +++ b/DRAMSys/traceAnalyzer/businessObjects/phasedependenciestracker.cpp @@ -17,6 +17,7 @@ PhaseDependenciesTracker::calculateDependencies(TraceDB& tdb, std::vectorphaseName == "ACT") { if (timeDiff == dep.timeValue) { @@ -202,8 +204,12 @@ PhaseDependenciesTracker::mCalculateDependencies(const TraceDB& tdb, const std:: otherPhase->id, otherPhase->phaseName }); + } + + if (timeDiff <= dep.timeValue) { + nawCount++; + } - nawCount++; } diff --git a/DRAMSys/traceAnalyzer/tracefiletab.cpp b/DRAMSys/traceAnalyzer/tracefiletab.cpp index 66b2c401..fcd287d2 100644 --- a/DRAMSys/traceAnalyzer/tracefiletab.cpp +++ b/DRAMSys/traceAnalyzer/tracefiletab.cpp @@ -324,6 +324,32 @@ void TraceFileTab::on_latencyTreeView_doubleClicked(const QModelIndex &index) } } +bool TraceFileTab::eventFilter(QObject *object, QEvent *event) +{ + if (auto canvas = qobject_cast(object)) + { + if (event->type() == QEvent::MouseButtonDblClick) + { + QMouseEvent *mouseEvent = static_cast(event); + + if (mouseEvent->button() != Qt::LeftButton) + return false; + + QwtPlot *plot = canvas->plot(); + + double realTime = plot->invTransform(QwtPlot::xBottom, mouseEvent->x()); + + // Convert from seconds to picoseconds + traceTime time = realTime * 1000 * 1000 * 1000 * 1000; + + navigator->navigateToTime(time); + return true; + } + } + + return QWidget::eventFilter(object, event); +} + void TraceFileTab::on_calculateDependencies_clicked() { std::vector dependencyFilter; for (int row = 0; row < ui->depTabPossiblePhases->count(); row++) {