diff --git a/simulators/c++2/src_simulator/ServerHelpData.h b/simulators/c++2/src_simulator/ServerHelpData.h
index c32bcb150de229bfd66d137564328cef3f0b5be3..e4b66bdde6c895b845e7bf45ae14a4b221cf6f33 100644
--- a/simulators/c++2/src_simulator/ServerHelpData.h
+++ b/simulators/c++2/src_simulator/ServerHelpData.h
@@ -14,6 +14,7 @@
     div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} \n\
     ul.task-list{list-style: none;} \n\
   </style> \n\
+  <link rel=\"stylesheet\" href=\"/home/levan/Desktop/TTool/src/main/resources/help/help.css\" /> \n\
   <!--[if lt IE 9]> \n\
     <script src=\"//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js\"></script> \n\
   <![endif]--> \n\
@@ -484,8 +485,8 @@ Not defined: &lt;unknow param&gt;</code></pre> \n\
 <td style=\"text-align: center;\">Show the current timeline diagram tracein HTML format</td> \n\
 <td style=\"text-align: center;\">[Type: 2] Task List</td> \n\
 <td style=\"text-align: center;\">[Type: 1] Scale idle time: 0 -&gt; no, 1 -&gt; yes</td> \n\
-<td style=\"text-align: center;\">-</td> \n\
-<td style=\"text-align: center;\">-</td> \n\
+<td style=\"text-align: center;\">[Type: 2] Start Time</td> \n\
+<td style=\"text-align: center;\">[Type: 2] End Time</td> \n\
 <td style=\"text-align: center;\">-</td> \n\
 </tr> \n\
 <tr class=\"odd\"> \n\
diff --git a/simulators/c++2/src_simulator/arch/CPU.cpp b/simulators/c++2/src_simulator/arch/CPU.cpp
index ad985f7cc18ef024c988a0283ae71ff3a93ca3f3..f564078bcccc5a77fab0a4045cf685f166fae290 100644
--- a/simulators/c++2/src_simulator/arch/CPU.cpp
+++ b/simulators/c++2/src_simulator/arch/CPU.cpp
@@ -168,14 +168,14 @@ void CPU::schedule2XML(std::ostringstream& glob,std::ofstream& myfile) const{
 
   }
 }
-std::map<TMLTask*, std::string> CPU::HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable) {
+std::map<TMLTask*, std::string> CPU::HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable, double start, double end) {
     TransactionList _transactListClone;
     std::string taskList = iTracetaskList.c_str();
     maxScale = 0;
     for (int z = 0; z < _transactList.size(); z++) {
         std::string taskName = _transactList[z]->getCommand()->getTask()->toString();
         std::size_t pos = taskList.find(taskName); /*pos1 = position of "bin" if we working with open model*/
-        if(pos != std::string::npos){
+        if(pos != std::string::npos && start <= (double)_transactList[z]->getStartTime() && (double)_transactList[z]->getEndTime() <= end){
             _transactListClone.push_back(_transactList[z]);
         }
     }
diff --git a/simulators/c++2/src_simulator/arch/CPU.h b/simulators/c++2/src_simulator/arch/CPU.h
index a99f4423e2ac6a8dd46b301541f61e8c2a3d58e7..570cf1d11bc66766d010d5f7eac70c12ad7e8098 100755
--- a/simulators/c++2/src_simulator/arch/CPU.h
+++ b/simulators/c++2/src_simulator/arch/CPU.h
@@ -122,7 +122,7 @@ public:
 	void buttonPieChart(std::ofstream& myfile) const;
 	void showPieChart(std::ofstream& myfile) const;
 	void HW2HTML(std::ofstream& myfile) const;
-	std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable);
+	std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable, double start, double end);
 	inline unsigned int getMaxScale() { return maxScale; }
 	inline void resetMaxScale() { maxScale = 0; }
 	void schedule2HTML(std::ofstream& myfile) const;
diff --git a/simulators/c++2/src_simulator/arch/FPGA.cpp b/simulators/c++2/src_simulator/arch/FPGA.cpp
index 4aa8bba2302e8f7cd9bcc87fc8d16ceb70d0e078..3a5d9d99f214e203d0b83cec8dd4e85cec4850c5 100644
--- a/simulators/c++2/src_simulator/arch/FPGA.cpp
+++ b/simulators/c++2/src_simulator/arch/FPGA.cpp
@@ -628,14 +628,14 @@ std::string FPGA::determineHTMLCellClass(std::map<TMLTask*, std::string> &taskCo
 	return taskColors[ task ];
 }
 
-std::map<TMLTask*, std::string> FPGA::HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses1,unsigned int nextCellClassIndex1, std::string& iTracetaskList, bool isScalable) {
+std::map<TMLTask*, std::string> FPGA::HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses1,unsigned int nextCellClassIndex1, std::string& iTracetaskList, bool isScalable, double start, double end) {
     TransactionList _transactListClone;
     std::string taskList = iTracetaskList.c_str();
     maxScale = 0;
     for (int z = 0; z < _transactList.size(); z++) {
         std::string taskName = _transactList[z]->getCommand()->getTask()->toString();
         std::size_t pos = taskList.find(taskName); /*pos1 = position of "bin" if we working with open model*/
-        if(pos != std::string::npos){
+        if(pos != std::string::npos && start <= (double)_transactList[z]->getStartTime() && (double)_transactList[z]->getEndTime() <= end){
             _transactListClone.push_back(_transactList[z]);
         }
     }
diff --git a/simulators/c++2/src_simulator/arch/FPGA.h b/simulators/c++2/src_simulator/arch/FPGA.h
index 74f80b64ea11f85738e20c2f8710a9d7bfe0e271..37a556f5f683a6aae4682893a92b65fec0ae6a8d 100644
--- a/simulators/c++2/src_simulator/arch/FPGA.h
+++ b/simulators/c++2/src_simulator/arch/FPGA.h
@@ -133,7 +133,7 @@ public:
 	///inline unsigned int getTransNumber() { return _transNumber;}
         inline unsigned int getID () { return _ID;}
 	void HW2HTML(std::ofstream& myfile) ;
-	std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses1,unsigned int nextCellClassIndex1, std::string& iTracetaskList, bool isScalable);
+	std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses1,unsigned int nextCellClassIndex1, std::string& iTracetaskList, bool isScalable, double start, double end);
 	inline unsigned int getMaxScale() { return maxScale; }
 	void removeTrans(int numberOfTrans);
 	void schedule2HTML(std::ofstream& myfile) ;
diff --git a/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp b/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp
index f067e2a9bda492a76d5fef6cde036b12645f0dfa..d6dc17daad9c65b8d4c804e08ee300c238e73368 100644
--- a/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp
+++ b/simulators/c++2/src_simulator/arch/SchedulableDevice.cpp
@@ -299,14 +299,14 @@ void SchedulableDevice::buttonPieChart(std::ofstream& myfile) const{
     myfile << "   chart" << _ID << ".update();" << std::endl;
 }
 
-std::map<TMLTask*, std::string> SchedulableDevice::HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable) {
+std::map<TMLTask*, std::string> SchedulableDevice::HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable, double start, double end) {
     TransactionList _transactListClone;
     std::string taskList = iTracetaskList.c_str();
     maxScale = 0;
     for (int z = 0; z < _transactList.size(); z++) {
         std::string taskName = _transactList[z]->getCommand()->getTask()->toString();
         std::size_t pos = taskList.find(taskName); /*pos1 = position of "bin" if we working with open model*/
-        if(pos != std::string::npos){
+        if(pos != std::string::npos && start <= (double)_transactList[z]->getStartTime() && (double)_transactList[z]->getEndTime() <= end){
             _transactListClone.push_back(_transactList[z]);
         }
     }
diff --git a/simulators/c++2/src_simulator/arch/SchedulableDevice.h b/simulators/c++2/src_simulator/arch/SchedulableDevice.h
index 9a45fe397d75228140a827a3e2dc4844cbba106d..9468860af6fcb61a45c26e5737248ad57492607f 100644
--- a/simulators/c++2/src_simulator/arch/SchedulableDevice.h
+++ b/simulators/c++2/src_simulator/arch/SchedulableDevice.h
@@ -79,7 +79,7 @@ public:
 	void drawPieChart(std::ofstream& myfile) const;
 	void showPieChart(std::ofstream& myfile) const;
 	void HW2HTML(std::ofstream& myfile) const;
-	std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable);
+	std::map<TMLTask*, std::string> HWTIMELINE2HTML(std::ostringstream& myfile,std::map<TMLTask*, std::string> taskCellClasses,unsigned int nextCellClassIndex, std::string& iTracetaskList, bool isScalable, double start, double end);
 	inline unsigned int getMaxScale() { return maxScale; }
 	///Writes a HTML representation of the schedule to an output file
 	/**
diff --git a/simulators/c++2/src_simulator/sim/Simulator.cpp b/simulators/c++2/src_simulator/sim/Simulator.cpp
index 1107a1b202d9f6cccccbeb1fc33c82d32d2cb77b..83b8606300bef1008b7a1813cdd9c1f5f3feb293 100644
--- a/simulators/c++2/src_simulator/sim/Simulator.cpp
+++ b/simulators/c++2/src_simulator/sim/Simulator.cpp
@@ -462,7 +462,7 @@ void Simulator::latencies2XML(std::ostringstream& glob, int id1, int id2) {
     (*j)->latencies2XML(glob, id1,id2);
   }
 }
-void Simulator::timeline2HTML(std::string& iTracetaskList, std::ostringstream& myfile, bool isScalable) const {
+void Simulator::timeline2HTML(std::string& iTracetaskList, std::ostringstream& myfile, bool isScalable, double start, double end) const {
 
     std::map<TMLTask*, std::string> taskCellClasses;
     std::ostringstream myfileTemp, myfileTemp1;
@@ -482,7 +482,7 @@ void Simulator::timeline2HTML(std::string& iTracetaskList, std::ostringstream& m
     unsigned int maxScale = 0;
     for(CPUList::const_iterator i=_simComp->getCPUList().begin(); i != _simComp->getCPUList().end(); ++i){
         for(unsigned int j = 0; j < (*i)->getAmoutOfCore(); j++) {
-            taskCellClasses = (*i)->HWTIMELINE2HTML(myfileTemp, taskCellClasses, taskCellClasses.size(), iTracetaskList, isScalable);
+            taskCellClasses = (*i)->HWTIMELINE2HTML(myfileTemp, taskCellClasses, taskCellClasses.size(), iTracetaskList, isScalable, start, end);
             if((*i)->getMaxScale() > maxScale) {
                 maxScale = (*i)->getMaxScale();
             }
@@ -497,7 +497,7 @@ void Simulator::timeline2HTML(std::string& iTracetaskList, std::ostringstream& m
         (*j)->setStartFlagHTML(true);
         for(TaskList::const_iterator i = (*j)->getTaskList().begin(); i != (*j)->getTaskList().end(); ++i){
             (*j)->setHtmlCurrTask(*i);
-            taskCellClasses = (*j)->HWTIMELINE2HTML(myfileTemp, taskCellClasses, taskCellClasses.size(), iTracetaskList, isScalable);
+            taskCellClasses = (*j)->HWTIMELINE2HTML(myfileTemp, taskCellClasses, taskCellClasses.size(), iTracetaskList, isScalable, start, end);
             if((*j)->getMaxScale() > maxScale) {
                 maxScale = (*j)->getMaxScale();
             }
@@ -506,7 +506,7 @@ void Simulator::timeline2HTML(std::string& iTracetaskList, std::ostringstream& m
     }
 
     for(BusList::const_iterator j=_simComp->getBusList().begin(); j != _simComp->getBusList().end(); ++j){
-        taskCellClasses = (*j)->HWTIMELINE2HTML(myfileTemp, taskCellClasses, taskCellClasses.size(), iTracetaskList, isScalable);
+        taskCellClasses = (*j)->HWTIMELINE2HTML(myfileTemp, taskCellClasses, taskCellClasses.size(), iTracetaskList, isScalable, start, end);
         if((*j)->getMaxScale() > maxScale) {
             maxScale = (*j)->getMaxScale();
         }
@@ -2077,9 +2077,11 @@ void Simulator::decodeCommand(std::string iCmd, std::ostream& iXmlOutStream){
       int temp = 0;
       aInpStream >> temp;
       bool _isScalable = (temp == 1) ? true : false;
-
+      double _start = 0, _end = 0;
+      aInpStream >> _start;
+      aInpStream >> _end;
       timelineContent << "<![CDATA[";
-      timeline2HTML(aStrParam, timelineContent, _isScalable);
+      timeline2HTML(aStrParam, timelineContent, _isScalable, _start, _end);
       timelineContent << "]]>";
       aGlobMsg << TAG_MSGo << timelineContent.str() << TAG_MSGc << std::endl;
       break;
diff --git a/simulators/c++2/src_simulator/sim/Simulator.h b/simulators/c++2/src_simulator/sim/Simulator.h
index a25798d238762c4f1efaa8039fe72b8333409443..3600c3e863bedd639d24aff3920c656345b014c2 100644
--- a/simulators/c++2/src_simulator/sim/Simulator.h
+++ b/simulators/c++2/src_simulator/sim/Simulator.h
@@ -247,7 +247,7 @@ public:
 
 	///Writes a HTML representation of the schedule of CPUs and buses to an output file
 	void schedule2HTML(std::string& iTraceFileName) const;
-	void timeline2HTML(std::string& iTracetaskList, std::ostringstream& myfile, bool isScalable) const;
+	void timeline2HTML(std::string& iTracetaskList, std::ostringstream& myfile, bool isScalable, double start, double end) const;
 	std::string getTaskCellStatus(int i) const;
 
 	///Writes simulation traces in VCD format to an output file
diff --git a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
index f6872698da14b6efb92f30fd7c4a46e3adbf0520..bc2a221aecaa4e136d70c3ecb97bea92d1103c45 100644
--- a/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
+++ b/src/main/java/ui/interactivesimulation/JFrameInteractiveSimulation.java
@@ -1575,7 +1575,23 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
                     mctb.setActive(false);
                     isServerReply = false;
                     timelineParam = "";
-                    sendCommand( "show-timeline-trace " + listOfTaskToShowInTimeLine + ((isScalable) ? " 1" : " 0" ));
+                    if (tmlSimPanelTimeline.getCheckBoxSelectedTimePeriod()) {
+                        if (tmlSimPanelTimeline.isValidDuration()) {
+                            sendCommand( "show-timeline-trace " + listOfTaskToShowInTimeLine + ((isScalable) ? " 1 " : " 0 " ) + tmlSimPanelTimeline.getStarTime() + " " + tmlSimPanelTimeline.getEndTime());
+                        } else {
+                            timelineParam = "<!DOCTYPE html><html><body><header><h1>WRONG TIME FORMAT</h1></header></body></html>";
+                            tmlSimPanelTimeline.setStatusBar(status.getText().trim(), time.getText().trim(), info.getText().trim());
+                            tmlSimPanelTimeline.setContentPaneEnable(true);
+                            mctb.setActive(true);
+                            commandTab.setEnabled(true);
+                            setAll();
+                            return;
+                        }
+                    } else {
+                        sendCommand( "show-timeline-trace " + listOfTaskToShowInTimeLine + ((isScalable) ? " 1 0 10000000" : " 0 0 10000000" ) );
+                        // display transactions from 0 to 10000000
+                    }
+
                     Frame f = new JFrame("Updating Data");
                     JPanel p = new JPanel();
                     JProgressBar b = new JProgressBar();
@@ -1630,6 +1646,11 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListene
 
         if (!listOfTaskToShowInTimeLine.equals("")) {
             tmlSimPanelTimeline = new JFrameTMLSimulationPanelTimeline(new Frame(), mgui, this, "Show Trace - Timeline", timelineParam);
+            tmlSimPanelTimeline.setCheckBoxSelectedTimePeriod(jdstmlc.getSelectedTimePeriod());
+            if (jdstmlc.getSelectedTimePeriod()) {
+                tmlSimPanelTimeline.setStartTime(jdstmlc.getStartTime());
+                tmlSimPanelTimeline.setEndTime(jdstmlc.getEndTime());
+            }
             tmlSimPanelTimeline.setParam(paramMainCommand.getText().trim());
             tmlSimPanelTimeline.setVisible(true);
             updateTimelineTrace();
diff --git a/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanelTimeline.java b/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanelTimeline.java
index 24a9c84c7890efd1579b54d6b310c44af9e34766..9eee27212bfdff3f927f7fd48104a4af6891df23 100644
--- a/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanelTimeline.java
+++ b/src/main/java/ui/interactivesimulation/JFrameTMLSimulationPanelTimeline.java
@@ -40,6 +40,8 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi
     private JTextField paramMainCommand;
     private MainCommandsToolBar mctb;
     private JScrollPane jsp;
+    private JTextArea startTime, endTime;
+    private JCheckBox checkBoxSelectedTimePeriod;
     private String zoomIndex = "";
     private String toolTipText = null;
     private int X = 0, Y = 0, Y_AXIS_START = 0, maxPos = 0, minPos = 0;
@@ -78,13 +80,14 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi
         // Top panel
         JPanel timelinePane = new JPanel();
         JPanel topPanel = new JPanel();
+        JPanel northPanel = new JPanel();
         JButton buttonClose = new JButton(actions[InteractiveSimulationActions.ACT_QUIT_SD_WINDOW]);
-        topPanel.add(buttonClose);
+        northPanel.add(buttonClose);
         JButton buttonHtml = new JButton(actions[InteractiveSimulationActions.ACT_SAVE_TIMELINE_HTML]);
-        topPanel.add(buttonHtml);
+        northPanel.add(buttonHtml);
         JTextField zoomIn = new JTextField("Zoom In:");
         zoomIn.setEditable(false);
-        topPanel.add(zoomIn);
+        northPanel.add(zoomIn);
         String[] zoomFactor = new String[] {"50%","75%","100%", "125%", "150%", "175%", "200%"};
         JComboBox comboBoxUpdateView = new JComboBox<String>(zoomFactor);
         comboBoxUpdateView.setSelectedIndex(2);
@@ -111,7 +114,31 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi
                 jsp.repaint();
             }
         });
-        topPanel.add(comboBoxUpdateView);
+        northPanel.add(comboBoxUpdateView);
+
+        JPanel southPanel = new JPanel();
+        checkBoxSelectedTimePeriod = new JCheckBox("Time Duration");
+        southPanel.add(checkBoxSelectedTimePeriod);
+        startTime = new JTextArea(1, 10);
+        startTime.setToolTipText("Start Time");
+        startTime.setEnabled(false);
+        southPanel.add(startTime);
+        endTime = new JTextArea(1, 10);
+        endTime.setToolTipText("End Time");
+        endTime.setEnabled(false);
+        southPanel.add(endTime);
+        checkBoxSelectedTimePeriod.addItemListener(e -> {
+            if (e.getStateChange() == ItemEvent.SELECTED) {
+                startTime.setEnabled(true);
+                endTime.setEnabled(true);
+            } else {
+                startTime.setEnabled(false);
+                endTime.setEnabled(false);
+            }
+        });
+
+        JSplitPane combinePanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, northPanel, southPanel);
+        topPanel.add(combinePanel,BorderLayout.CENTER);
         timelinePane.add(topPanel,BorderLayout.NORTH);
         //Main control
         JPanel jp01, jp02;
@@ -561,4 +588,41 @@ public class JFrameTMLSimulationPanelTimeline extends JFrame implements ActionLi
         else if (trans.toLowerCase().contains("wait")) return TransType.WAIT;
         return TransType.NONE;
     }
+
+    public void setCheckBoxSelectedTimePeriod(boolean b) {
+        checkBoxSelectedTimePeriod.setSelected(b);
+    }
+
+    public boolean getCheckBoxSelectedTimePeriod() {
+        return checkBoxSelectedTimePeriod.isSelected();
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime.setText(startTime);
+    }
+
+    public String getStarTime() {
+        return startTime.getText();
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime.setText(endTime);
+    }
+
+    public String getEndTime() {
+        return endTime.getText();
+    }
+
+    public boolean isValidDuration() {
+        try {
+            Double start = Double.parseDouble(getStarTime());
+            Double end = Double.parseDouble(getEndTime());
+            if (start > end)
+                return false;
+            return true;
+        } catch(NumberFormatException e){
+            return false;
+        }
+
+    }
 }
diff --git a/src/main/java/ui/window/JDialogSelectTasks.java b/src/main/java/ui/window/JDialogSelectTasks.java
index 6a2d86b91517d7a022b47f0f85e4a2e7e8ed7c7a..25dbdf63c1996d583d0e436137b0cb6c6c3745ed 100644
--- a/src/main/java/ui/window/JDialogSelectTasks.java
+++ b/src/main/java/ui/window/JDialogSelectTasks.java
@@ -48,6 +48,7 @@ import javax.swing.event.ListSelectionListener;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Vector;
@@ -71,7 +72,8 @@ public class JDialogSelectTasks extends JDialogBase implements ActionListener, L
 
     //subpanels
     private JPanel panel1, panel2, panel3, panel4, panel5, panel6;
-    private JCheckBox checkBoxScaleIdleTime;
+    private JCheckBox checkBoxScaleIdleTime, checkBoxSelectedTimePeriod;
+    private JTextField startTime, endTime;
     private JList<String> listIgnored;
     private JList<String> listValidated;
     private JButton allValidated;
@@ -261,14 +263,33 @@ public class JDialogSelectTasks extends JDialogBase implements ActionListener, L
         //scale idle time by default
         checkBoxScaleIdleTime.setSelected(true);
         panel4.add(checkBoxScaleIdleTime);
-//        JLabel jLabelScale = new JLabel("Start time:");
-//        panel4.add(jLabelScale);
-//        JTextField startTime = new JTextField();
-//        panel4.add(startTime);
-//        jLabelScale = new JLabel("End time:");
-//        panel4.add(jLabelScale);
-//        JTextField endTime = new JTextField();
-//        panel4.add(endTime);
+
+        //Select time duration
+        checkBoxSelectedTimePeriod = new JCheckBox("Select StartTime and EndTime");
+        checkBoxSelectedTimePeriod.setSelected(false);
+        panel4.add(checkBoxSelectedTimePeriod);
+        JLabel jLabelScale = new JLabel("Start time:");
+        panel4.add(jLabelScale);
+        startTime = new JTextField();
+        startTime.setEnabled(false);
+        panel4.add(startTime);
+        jLabelScale = new JLabel("End time:");
+        panel4.add(jLabelScale);
+        endTime = new JTextField();
+        endTime.setText("100000000");
+        endTime.setEnabled(false);
+        panel4.add(endTime);
+
+        checkBoxSelectedTimePeriod.addItemListener(e -> {
+            if (e.getStateChange() == ItemEvent.SELECTED) {
+                startTime.setEnabled(true);
+                endTime.setEnabled(true);
+            } else {
+                startTime.setEnabled(false);
+                endTime.setEnabled(false);
+            }
+        });
+
         c2.gridwidth = GridBagConstraints.REMAINDER;
         c.add(panel4, c2);
 
@@ -283,6 +304,22 @@ public class JDialogSelectTasks extends JDialogBase implements ActionListener, L
         return checkBoxScaleIdleTime.isSelected();
     }
 
+    public boolean getSelectedTimePeriod() {
+        return checkBoxSelectedTimePeriod.isSelected();
+    }
+
+    public String getStartTime() {
+        if (startTime.isEnabled())
+            return startTime.getText();
+        return "0";
+    }
+
+    public String getEndTime() {
+        if (endTime.isEnabled())
+            return endTime.getText();
+        return "100000000";
+    }
+
     public void actionPerformed(ActionEvent evt) {
         String command = evt.getActionCommand();
 
diff --git a/src/main/resources/help/diplodocussimulator.html b/src/main/resources/help/diplodocussimulator.html
index 50852319c4e56ca28e3aeecd4d08e07983e8d82f..27b567b060df56e3cca18e75e476a2f846498268 100644
--- a/src/main/resources/help/diplodocussimulator.html
+++ b/src/main/resources/help/diplodocussimulator.html
@@ -13,6 +13,7 @@
     div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
     ul.task-list{list-style: none;}
   </style>
+  <link rel="stylesheet" href="/home/levan/Desktop/TTool/src/main/resources/help/help.css" />
   <!--[if lt IE 9]>
     <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
   <![endif]-->
@@ -483,8 +484,8 @@ Not defined: &lt;unknow param&gt;</code></pre>
 <td style="text-align: center;">Show the current timeline diagram tracein HTML format</td>
 <td style="text-align: center;">[Type: 2] Task List</td>
 <td style="text-align: center;">[Type: 1] Scale idle time: 0 -&gt; no, 1 -&gt; yes</td>
-<td style="text-align: center;">-</td>
-<td style="text-align: center;">-</td>
+<td style="text-align: center;">[Type: 2] Start Time</td>
+<td style="text-align: center;">[Type: 2] End Time</td>
 <td style="text-align: center;">-</td>
 </tr>
 <tr class="odd">
diff --git a/src/main/resources/help/diplodocussimulator.md b/src/main/resources/help/diplodocussimulator.md
index 5bd1a7c5080c48d8b3e946df6221735e2fa445b8..a5667f60f4490134dfc8c71be37620f31bf4967d 100644
--- a/src/main/resources/help/diplodocussimulator.md
+++ b/src/main/resources/help/diplodocussimulator.md
@@ -86,7 +86,7 @@ run-x-time-units | rxtu | 1 6 | Runs the simulation for x units of time | [Type:
 run-x-transactions | rxtr | 1 2 | Runs the simulation for x transactions | [Type: 1] nb of transactions | -  | -  | -  | - 
 save-simulation-state-in-file | sssif | 8 | Saves the current simulation state into a file | [Type: 2] File name | -  | -  | -  | - 
 save-trace-in-file | stif | 7 | Saves the current trace of the simulation in a VCD, HTML, TXT or XML file | [Type: 1] File format: 0-> VCD, 1->HTML, 2->TXT, 3->XML | [Type: 2] File name | -  | -  | - 
-show-timeline-trace | stlt | 7 4 | Show the current timeline diagram tracein HTML format | [Type: 2] Task List | [Type: 1] Scale idle time: 0 -> no, 1 -> yes | -  | -  | - 
+show-timeline-trace | stlt | 7 4 | Show the current timeline diagram tracein HTML format | [Type: 2] Task List | [Type: 1] Scale idle time: 0 -> no, 1 -> yes | [Type: 2] Start Time  | [Type: 2] End Time  | - 
 set-variable | sv | 5 | Set the value of a variable | [Type: 1] task ID | [Type: 1] variable ID | [Type: 1] variable value | -  | - 
 stop | stop | 15 | Stops the currently running simulation | -  | -  | -  | -  | - 
 write-in-channel | wic | 6 | Writes y samples / events to channel / event x | [Type: 1] Channel ID | [Type: 2] Nb of samples | -  | -  | - 
diff --git a/ttool/src/test/java/tmltranslator/TimelineDiagramTest.java b/ttool/src/test/java/tmltranslator/TimelineDiagramTest.java
index dcda4390db7737e1bb67c6710e023ebc7cdddd91..617de81d1f688eb6e207fb6f605f400548a02e3f 100644
--- a/ttool/src/test/java/tmltranslator/TimelineDiagramTest.java
+++ b/ttool/src/test/java/tmltranslator/TimelineDiagramTest.java
@@ -177,7 +177,7 @@ public class TimelineDiagramTest extends AbstractTest {
             try {
                 toServer(" 1 6 100", rc);
                 Thread.sleep(5);
-                toServer("7 4 ApplicationSimple__Src,ApplicationSimple__T1,ApplicationSimple__T2 1", rc);
+                toServer("7 4 ApplicationSimple__Src,ApplicationSimple__T1,ApplicationSimple__T2 1 0 100000000", rc);
                 Thread.sleep(5);
                 while (running) {
                     String line = null;