private void PreviousResults_AfterSelect(object sender, EventArgs e) { //make sure something is selected if(previousResults.SelectedNode!=null) { //check to make sure it is a child node if(previousResults.SelectedNode.Nodes.Count==0 && previousResults.SelectedNode.Checked) { //display the correct property grids devicePropertyGrid.SelectedObject = visFileList[previousResults.SelectedNode.Name].deviceParameters; deviceParameters = visFileList[previousResults.SelectedNode.Name].deviceParameters; systemPropertyGrid.SelectedObject = visFileList[previousResults.SelectedNode.Name].systemParameters; systemParameters = visFileList[previousResults.SelectedNode.Name].systemParameters; //highlight correct listing in device combo box VisFileContainer vfc = visFileList[previousResults.SelectedNode.Name]; string[] pieces = vfc.filepath.Split(System.IO.Path.DirectorySeparatorChar); deviceComboBox.SelectedIndex = deviceComboBox.FindString(pieces[pieces.Length-2]); ((SystemParameters)(systemPropertyGrid.SelectedObject)).TOTAL_STORAGE = (long)(systemParameters.JEDEC_DATA_BUS_BITS / deviceParameters.DEVICE_WIDTH) * systemParameters.NUM_RANKS * ((long)deviceParameters.NUM_ROWS * deviceParameters.NUM_COLS * deviceParameters.DEVICE_WIDTH * deviceParameters.NUM_BANKS) / 8; systemPropertyGrid.Refresh(); // highlight this data gBandwidth.HighlightGraph(vfc); gLatency.HighlightGraph(vfc); gPower.HighlightGraph(vfc); } else { gBandwidth.HighlightGraph(null); gLatency.HighlightGraph(null); gPower.HighlightGraph(null); } } }
public SystemParameters ReadSystemData() { string line; SystemParameters systemParameters = new SystemParameters(); while((line = inputFile.ReadLine())!=null) { line = line.Trim(); if(line.Equals("!!DEVICE_INI")) break; if(line.Equals("!!SYSTEM_INI") || line.StartsWith(";") || line.Length==0) continue; if(line.IndexOf(";")>0) { //trim off comments line = line.Substring(0,line.IndexOf(";")); } string param = line.Substring(0,line.IndexOf("=")); param = param.Trim(); string val = line.Substring(line.IndexOf("=")+1); val = val.Trim(); switch(param) { /* case "TOTAL_STORAGE": systemParameters.TOTAL_STORAGE = long.Parse(val); break; */ case "NUM_RANKS": systemParameters.NUM_RANKS = uint.Parse(val); break; case "NUM_CHANS": systemParameters.NUM_CHANS = uint.Parse(val); break; case "CACHE_LINE_SIZE": systemParameters.CACHE_LINE_SIZE = uint.Parse(val); break; case "JEDEC_DATA_BUS_BITS": systemParameters.JEDEC_DATA_BUS_BITS = uint.Parse(val); break; case "TRANS_QUEUE_DEPTH": systemParameters.TRANS_QUEUE_DEPTH = uint.Parse(val); break; case "CMD_QUEUE_DEPTH": systemParameters.CMD_QUEUE_DEPTH = uint.Parse(val); break; case "USE_LOW_POWER": systemParameters.USE_LOW_POWER = bool.Parse(val); break; case "EPOCH_COUNT": systemParameters.EPOCH_COUNT = uint.Parse(val); break; case "TOTAL_ROW_ACCESSES": systemParameters.TOTAL_ROW_ACCESSES = uint.Parse(val); break; case "ROW_BUFFER_POLICY": switch(val) { case "open_page": systemParameters.ROW_BUFFER_POLICY = RowBufferPolicy.open_page; break; case "close_page": systemParameters.ROW_BUFFER_POLICY = RowBufferPolicy.close_page; break; default: return null; } break; case "SCHEDULING_POLICY": switch (val) { case "rank_then_bank_round_robin": systemParameters.SCHEDULING_POLICY = SchedulingPolicy.rank_then_bank_round_robin; break; case "bank_then_rank_round_robin": systemParameters.SCHEDULING_POLICY = SchedulingPolicy.bank_then_rank_round_robin; break; default: return null; } break; case "ADDRESS_MAPPING_SCHEME": switch (val) { case "scheme1": systemParameters.ADDRESS_MAPPING_SCHEME = AddressMappingScheme.scheme1; break; case "scheme2": systemParameters.ADDRESS_MAPPING_SCHEME = AddressMappingScheme.scheme2; break; case "scheme3": systemParameters.ADDRESS_MAPPING_SCHEME = AddressMappingScheme.scheme3; break; case "scheme4": systemParameters.ADDRESS_MAPPING_SCHEME = AddressMappingScheme.scheme4; break; case "scheme5": systemParameters.ADDRESS_MAPPING_SCHEME = AddressMappingScheme.scheme5; break; case "scheme6": systemParameters.ADDRESS_MAPPING_SCHEME = AddressMappingScheme.scheme6; break; default: return null; } break; case "QUEUING_STRUCTURE": switch (val) { case "per_rank": systemParameters.QUEUING_STRUCTURE = QueuingStructure.per_rank; break; case "per_rank_per_bank": systemParameters.QUEUING_STRUCTURE = QueuingStructure.per_rank_per_bank; break; default: return null; } break; case "DEBUG_TRANS_Q": systemParameters.DEBUG_TRANS_Q = bool.Parse(val); break; case "DEBUG_CMD_Q": systemParameters.DEBUG_CMD_Q = bool.Parse(val); break; case "DEBUG_ADDR_MAP": systemParameters.DEBUG_ADDR_MAP = bool.Parse(val); break; case "DEBUG_BANKSTATE": systemParameters.DEBUG_BANKSTATE = bool.Parse(val); break; case "DEBUG_BUS": systemParameters.DEBUG_BUS = bool.Parse(val); break; case "DEBUG_BANKS": systemParameters.DEBUG_BANKS = bool.Parse(val); break; case "DEBUG_POWER": systemParameters.DEBUG_POWER = bool.Parse(val); break; case "VERIFICATION_OUTPUT": systemParameters.VERIFICATION_OUTPUT = bool.Parse(val); break; default: break; } } return systemParameters; }
private void PreviousResults_AfterCheck(object sender, TreeViewEventArgs e) { TreeNode checkedNode = e.Node; //handle recursion if(checkedNode.Checked) { if(checkedNode.Parent!=null && !checkedNode.Parent.Checked) { checkedNode.Parent.Checked = true; } if(e.Action != TreeViewAction.Unknown && checkedNode.Nodes.Count>0) { foreach(TreeNode tn in checkedNode.Nodes) { tn.Checked = true; CheckChildren(tn); } } } else { if(checkedNode.Nodes.Count>0) { foreach(TreeNode tn in checkedNode.Nodes) { if(tn.Checked) tn.Checked = false; } } } //if the node is a child if(e.Node.Nodes.Count==0) { //and it is checked if(e.Node.Checked) { string[] pieces = e.Node.FullPath.Split('\\'); string filename = DRAMSimPath+"/results/"+traceNameDisplay.Text+"/"+pieces[0]+"/"+pieces[1]+".1Ch."+ pieces[2]+"."+pieces[3]+"."+pieces[4]+"."+pieces[5]+".vis"; //Console.WriteLine("load file : "+filename); //make container of relevant data VisFileContainer vfc; //need to check if it is still present since it might have already been checked (and then unchecked) if(!visFileList.ContainsKey(filename)) { vfc = new VisFileContainer(filename); visFileList.Add(filename,vfc); //prevents a node from staying highlighted after it has been checked, thereby forcing user to reselect to highlight previousResults.SelectedNode = null; //ensures that the file which was just produced from simulator output or from an open vis file // dialog is the data which is displayed in the property grids string[] p = vfc.filepath.Split(System.IO.Path.DirectorySeparatorChar); if(inputFileName=="" || inputFileName==vfc.filepath) { //display the correct property grids devicePropertyGrid.SelectedObject = null; devicePropertyGrid.SelectedObject = vfc.deviceParameters; deviceParameters = vfc.deviceParameters; systemPropertyGrid.SelectedObject = null; systemPropertyGrid.SelectedObject = vfc.systemParameters; systemParameters = vfc.systemParameters; //highlight correct listing in device combo box deviceComboBox.SelectedIndex = deviceComboBox.FindString(p[p.Length-2]); ((SystemParameters)(systemPropertyGrid.SelectedObject)).TOTAL_STORAGE = (long)(systemParameters.JEDEC_DATA_BUS_BITS / deviceParameters.DEVICE_WIDTH) * systemParameters.NUM_RANKS * ((long)deviceParameters.NUM_ROWS * deviceParameters.NUM_COLS * deviceParameters.DEVICE_WIDTH * deviceParameters.NUM_BANKS) / 8; systemPropertyGrid.Refresh(); } vfc.configurationName = p[p.Length-1]; vfc.deviceName = p[p.Length-2]; Console.WriteLine("about to add "+vfc.configurationName+" and "+vfc.deviceName); this.gBandwidth.AddToCanvas(vfc); this.gLatency.AddToCanvas(vfc); this.gPower.AddGraph(vfc); this.gHistogram.AddGraph(vfc); } } //unchecking else { string filename = e.Node.Name; VisFileContainer vfc = this.visFileList[filename]; this.gBandwidth.RemoveFromCanvas(vfc); this.gLatency.RemoveFromCanvas(vfc); this.gPower.RemoveGraph(vfc); this.gHistogram.RemoveGraph(vfc); visFileList.Remove(filename); } } }
private void PlayButton_Click(object sender, EventArgs e) { if(this.traceNameDisplay.Text=="") { MessageBox.Show("Please select a trace"); return; } string DRAMSimExe = DRAMSimPath + "/DRAMSim"; if(!File.Exists(DRAMSimExe)) { MessageBox.Show("DRAMSim binary not found"); return; } if(selectedDeviceName==null) { selectedDeviceName = (string)deviceComboBox.Items[deviceComboBox.SelectedIndex]; } systemParameters = (SystemParameters)systemPropertyGrid.SelectedObject; if(systemParameters.TOTAL_STORAGE==0) { deviceComboBox.SelectedIndex = deviceComboBox.SelectedIndex; } this.systemParameters.PrintToFile(DRAMSimPath+"/system.ini"); string traceTypeFlag; if(traceNameDisplay.Text.StartsWith("k6")) { traceTypeFlag = "-k"; } else { traceTypeFlag = ""; } //remove highlights gBandwidth.HighlightGraph(null); gLatency.HighlightGraph(null); gPower.HighlightGraph(null); if(((ToolStripButton)sender).Name.Equals("Play")) { visFileList.Clear(); gBandwidth.Clear(); gLatency.Clear(); gPower.Clear(); gHistogram.Clear(); } string DRAMSimArgs = "-c "+cycleCount.Text+" -q "+traceTypeFlag+" -p "+DRAMSimPath+" -t traces/"+ traceNameDisplay.Text+" -s system.ini -d ini/" + selectedDeviceName; Console.WriteLine("Executing : "+DRAMSimExe+" "+DRAMSimArgs); string deviceName = selectedDeviceName; string outputFilename = systemParameters.GetVisFilename(); int lastSlash = deviceName.LastIndexOf("/"); if (lastSlash > 0) { deviceName = deviceName.Substring(lastSlash+1); } int iniExtPosition = deviceName.LastIndexOf(".ini"); if (iniExtPosition > 0) { deviceName = deviceName.Substring(0,iniExtPosition); } this.inputFileName = DRAMSimPath+"/results/"+traceNameDisplay.Text+"/"+deviceName+"/"+outputFilename; holdOnWindow = new Form(); holdOnWindow.Text = "DRAMSim Executing"; Label msg = new Label(); msg.Text = "Please wait while execution finishes . . . "; msg.Dock = DockStyle.Fill; msg.Font = new Font(msg.Font, FontStyle.Bold); msg.TextAlign = ContentAlignment.MiddleCenter; holdOnWindow.Controls.Add(msg); holdOnWindow.Size = new Size(300,100); holdOnWindow.Show(); holdOnWindow.ShowInTaskbar = false; holdOnWindow.UseWaitCursor = true; holdOnWindow.Location = new Point(this.Location.X + this.Size.Width/2,this.Location.Y + this.Size.Height/2); System.Diagnostics.Process p = new System.Diagnostics.Process(); p = System.Diagnostics.Process.Start(DRAMSimExe, DRAMSimArgs); p.EnableRaisingEvents = true; p.Exited += new EventHandler(this.DRAMSim_Exit); }
private void PreviousResults_AfterCheck(object sender, TreeViewEventArgs e) { TreeNode checkedNode = e.Node; //handle recursion if (checkedNode.Checked) { if (checkedNode.Parent != null && !checkedNode.Parent.Checked) { checkedNode.Parent.Checked = true; } if (e.Action != TreeViewAction.Unknown && checkedNode.Nodes.Count > 0) { foreach (TreeNode tn in checkedNode.Nodes) { tn.Checked = true; CheckChildren(tn); } } } else { if (checkedNode.Nodes.Count > 0) { foreach (TreeNode tn in checkedNode.Nodes) { if (tn.Checked) { tn.Checked = false; } } } } //if the node is a child if (e.Node.Nodes.Count == 0) { //and it is checked if (e.Node.Checked) { string[] pieces = e.Node.FullPath.Split('\\'); string filename = DRAMSimPath + "/results/" + traceNameDisplay.Text + "/" + pieces[0] + "/" + pieces[1] + ".1Ch." + pieces[2] + "." + pieces[3] + "." + pieces[4] + "." + pieces[5] + ".vis"; //Console.WriteLine("load file : "+filename); //make container of relevant data VisFileContainer vfc; //need to check if it is still present since it might have already been checked (and then unchecked) if (!visFileList.ContainsKey(filename)) { vfc = new VisFileContainer(filename); visFileList.Add(filename, vfc); //prevents a node from staying highlighted after it has been checked, thereby forcing user to reselect to highlight previousResults.SelectedNode = null; //ensures that the file which was just produced from simulator output or from an open vis file // dialog is the data which is displayed in the property grids string[] p = vfc.filepath.Split(System.IO.Path.DirectorySeparatorChar); if (inputFileName == "" || inputFileName == vfc.filepath) { //display the correct property grids devicePropertyGrid.SelectedObject = null; devicePropertyGrid.SelectedObject = vfc.deviceParameters; deviceParameters = vfc.deviceParameters; systemPropertyGrid.SelectedObject = null; systemPropertyGrid.SelectedObject = vfc.systemParameters; systemParameters = vfc.systemParameters; //highlight correct listing in device combo box deviceComboBox.SelectedIndex = deviceComboBox.FindString(p[p.Length - 2]); ((SystemParameters)(systemPropertyGrid.SelectedObject)).TOTAL_STORAGE = (long)(systemParameters.JEDEC_DATA_BUS_BITS / deviceParameters.DEVICE_WIDTH) * systemParameters.NUM_RANKS * ((long)deviceParameters.NUM_ROWS * deviceParameters.NUM_COLS * deviceParameters.DEVICE_WIDTH * deviceParameters.NUM_BANKS) / 8; systemPropertyGrid.Refresh(); } vfc.configurationName = p[p.Length - 1]; vfc.deviceName = p[p.Length - 2]; Console.WriteLine("about to add " + vfc.configurationName + " and " + vfc.deviceName); this.gBandwidth.AddToCanvas(vfc); this.gLatency.AddToCanvas(vfc); this.gPower.AddGraph(vfc); this.gHistogram.AddGraph(vfc); } } //unchecking else { string filename = e.Node.Name; VisFileContainer vfc = this.visFileList[filename]; this.gBandwidth.RemoveFromCanvas(vfc); this.gLatency.RemoveFromCanvas(vfc); this.gPower.RemoveGraph(vfc); this.gHistogram.RemoveGraph(vfc); visFileList.Remove(filename); } } }
private void PlayButton_Click(object sender, EventArgs e) { if (this.traceNameDisplay.Text == "") { MessageBox.Show("Please select a trace"); return; } string DRAMSimExe = DRAMSimPath + "/DRAMSim"; if (!File.Exists(DRAMSimExe)) { MessageBox.Show("DRAMSim binary not found"); return; } if (selectedDeviceName == null) { selectedDeviceName = (string)deviceComboBox.Items[deviceComboBox.SelectedIndex]; } systemParameters = (SystemParameters)systemPropertyGrid.SelectedObject; if (systemParameters.TOTAL_STORAGE == 0) { deviceComboBox.SelectedIndex = deviceComboBox.SelectedIndex; } this.systemParameters.PrintToFile(DRAMSimPath + "/system.ini"); string traceTypeFlag; if (traceNameDisplay.Text.StartsWith("k6")) { traceTypeFlag = "-k"; } else { traceTypeFlag = ""; } //remove highlights gBandwidth.HighlightGraph(null); gLatency.HighlightGraph(null); gPower.HighlightGraph(null); if (((ToolStripButton)sender).Name.Equals("Play")) { visFileList.Clear(); gBandwidth.Clear(); gLatency.Clear(); gPower.Clear(); gHistogram.Clear(); } string DRAMSimArgs = "-c " + cycleCount.Text + " -q " + traceTypeFlag + " -p " + DRAMSimPath + " -t traces/" + traceNameDisplay.Text + " -s system.ini -d ini/" + selectedDeviceName; Console.WriteLine("Executing : " + DRAMSimExe + " " + DRAMSimArgs); string deviceName = selectedDeviceName; string outputFilename = systemParameters.GetVisFilename(); int lastSlash = deviceName.LastIndexOf("/"); if (lastSlash > 0) { deviceName = deviceName.Substring(lastSlash + 1); } int iniExtPosition = deviceName.LastIndexOf(".ini"); if (iniExtPosition > 0) { deviceName = deviceName.Substring(0, iniExtPosition); } this.inputFileName = DRAMSimPath + "/results/" + traceNameDisplay.Text + "/" + deviceName + "/" + outputFilename; holdOnWindow = new Form(); holdOnWindow.Text = "DRAMSim Executing"; Label msg = new Label(); msg.Text = "Please wait while execution finishes . . . "; msg.Dock = DockStyle.Fill; msg.Font = new Font(msg.Font, FontStyle.Bold); msg.TextAlign = ContentAlignment.MiddleCenter; holdOnWindow.Controls.Add(msg); holdOnWindow.Size = new Size(300, 100); holdOnWindow.Show(); holdOnWindow.ShowInTaskbar = false; holdOnWindow.UseWaitCursor = true; holdOnWindow.Location = new Point(this.Location.X + this.Size.Width / 2, this.Location.Y + this.Size.Height / 2); System.Diagnostics.Process p = new System.Diagnostics.Process(); p = System.Diagnostics.Process.Start(DRAMSimExe, DRAMSimArgs); p.EnableRaisingEvents = true; p.Exited += new EventHandler(this.DRAMSim_Exit); }
public SystemParameters ReadSystemData() { string line; SystemParameters systemParameters = new SystemParameters(); while ((line = inputFile.ReadLine()) != null) { line = line.Trim(); if (line.Equals("!!DEVICE_INI")) { break; } if (line.Equals("!!SYSTEM_INI") || line.StartsWith(";") || line.Length == 0) { continue; } if (line.IndexOf(";") > 0) { //trim off comments line = line.Substring(0, line.IndexOf(";")); } string param = line.Substring(0, line.IndexOf("=")); param = param.Trim(); string val = line.Substring(line.IndexOf("=") + 1); val = val.Trim(); switch (param) { /* * case "TOTAL_STORAGE": * systemParameters.TOTAL_STORAGE = long.Parse(val); * break; */ case "NUM_RANKS": systemParameters.NUM_RANKS = uint.Parse(val); break; case "NUM_CHANS": systemParameters.NUM_CHANS = uint.Parse(val); break; case "CACHE_LINE_SIZE": systemParameters.CACHE_LINE_SIZE = uint.Parse(val); break; case "JEDEC_DATA_BUS_BITS": systemParameters.JEDEC_DATA_BUS_BITS = uint.Parse(val); break; case "TRANS_QUEUE_DEPTH": systemParameters.TRANS_QUEUE_DEPTH = uint.Parse(val); break; case "CMD_QUEUE_DEPTH": systemParameters.CMD_QUEUE_DEPTH = uint.Parse(val); break; case "USE_LOW_POWER": systemParameters.USE_LOW_POWER = bool.Parse(val); break; case "EPOCH_COUNT": systemParameters.EPOCH_COUNT = uint.Parse(val); break; case "TOTAL_ROW_ACCESSES": systemParameters.TOTAL_ROW_ACCESSES = uint.Parse(val); break; case "ROW_BUFFER_POLICY": switch (val) { case "open_page": systemParameters.ROW_BUFFER_POLICY = RowBufferPolicy.open_page; break; case "close_page": systemParameters.ROW_BUFFER_POLICY = RowBufferPolicy.close_page; break; default: return(null); } break; case "SCHEDULING_POLICY": switch (val) { case "rank_then_bank_round_robin": systemParameters.SCHEDULING_POLICY = SchedulingPolicy.rank_then_bank_round_robin; break; case "bank_then_rank_round_robin": systemParameters.SCHEDULING_POLICY = SchedulingPolicy.bank_then_rank_round_robin; break; default: return(null); } break; case "ADDRESS_MAPPING_SCHEME": switch (val) { case "scheme1": systemParameters.ADDRESS_MAPPING_SCHEME = AddressMappingScheme.scheme1; break; case "scheme2": systemParameters.ADDRESS_MAPPING_SCHEME = AddressMappingScheme.scheme2; break; case "scheme3": systemParameters.ADDRESS_MAPPING_SCHEME = AddressMappingScheme.scheme3; break; case "scheme4": systemParameters.ADDRESS_MAPPING_SCHEME = AddressMappingScheme.scheme4; break; case "scheme5": systemParameters.ADDRESS_MAPPING_SCHEME = AddressMappingScheme.scheme5; break; case "scheme6": systemParameters.ADDRESS_MAPPING_SCHEME = AddressMappingScheme.scheme6; break; default: return(null); } break; case "QUEUING_STRUCTURE": switch (val) { case "per_rank": systemParameters.QUEUING_STRUCTURE = QueuingStructure.per_rank; break; case "per_rank_per_bank": systemParameters.QUEUING_STRUCTURE = QueuingStructure.per_rank_per_bank; break; default: return(null); } break; case "DEBUG_TRANS_Q": systemParameters.DEBUG_TRANS_Q = bool.Parse(val); break; case "DEBUG_CMD_Q": systemParameters.DEBUG_CMD_Q = bool.Parse(val); break; case "DEBUG_ADDR_MAP": systemParameters.DEBUG_ADDR_MAP = bool.Parse(val); break; case "DEBUG_BANKSTATE": systemParameters.DEBUG_BANKSTATE = bool.Parse(val); break; case "DEBUG_BUS": systemParameters.DEBUG_BUS = bool.Parse(val); break; case "DEBUG_BANKS": systemParameters.DEBUG_BANKS = bool.Parse(val); break; case "DEBUG_POWER": systemParameters.DEBUG_POWER = bool.Parse(val); break; case "VERIFICATION_OUTPUT": systemParameters.VERIFICATION_OUTPUT = bool.Parse(val); break; default: break; } } return(systemParameters); }