Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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;
        }
Пример #3
0
        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);
                }
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
                }
            }
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }