summaryrefslogtreecommitdiff
path: root/src/gpuwattch/XML_Parse.cc
diff options
context:
space:
mode:
authorTim Rogers <[email protected]>2019-09-13 21:45:08 -0400
committerGitHub <[email protected]>2019-09-13 21:45:08 -0400
commitdba877b45fe11187d56904bbd169f4e0a5ad0586 (patch)
tree649ddec731e6934cb535b569d7d3d2c754b8e89c /src/gpuwattch/XML_Parse.cc
parentbea40c4a22a86fddbf1f7845265697716727f8b1 (diff)
parentd65f6d38f054a48733bd1dfd22cb37864b5bded6 (diff)
Merge pull request #31 from rgreen/dev
Application of clang-format to make the code use standardized formatting.
Diffstat (limited to 'src/gpuwattch/XML_Parse.cc')
-rw-r--r--src/gpuwattch/XML_Parse.cc6562
1 files changed, 4508 insertions, 2054 deletions
diff --git a/src/gpuwattch/XML_Parse.cc b/src/gpuwattch/XML_Parse.cc
index 39bf2a1..1b9a38a 100644
--- a/src/gpuwattch/XML_Parse.cc
+++ b/src/gpuwattch/XML_Parse.cc
@@ -29,2102 +29,4556 @@
*
***************************************************************************/
/********************************************************************
-* Modified by: *
-* Jingwen Leng, Univeristy of Texas, Austin *
-* Syed Gilani, University of Wisconsin–Madison *
-* Tayler Hetherington, University of British Columbia *
-* Ahmed ElTantawy, University of British Columbia *
-********************************************************************/
+ * Modified by:
+ ** Jingwen Leng, Univeristy of Texas, Austin * Syed Gilani,
+ *University of Wisconsin–Madison * Tayler Hetherington,
+ *University of British Columbia * Ahmed ElTantawy, University of
+ *British Columbia *
+ ********************************************************************/
+#include "XML_Parse.h"
#include <stdio.h>
-#include "xmlParser.h"
#include <string>
-#include "XML_Parse.h"
+#include "xmlParser.h"
using namespace std;
-const char * perf_count_label[] = {"TOT_INST,", "FP_INT,", "IC_H,", "IC_M,", "DC_RH,", "DC_RM,", "DC_WH,", "DC_WM,",
- "TC_H,", "TC_M,", "CC_H,", "CC_M,", "SHRD_ACC,", "REG_RD,", "REG_WR,", "NON_REG_OPs,",
- "SP_ACC,", "SFU_ACC,", "FPU_ACC,", "MEM_RD,","MEM_WR,", "MEM_PRE,", "L2_RH,", "L2_RM,", "L2_WH,",
- "L2_WM,", "NOC_A,", "PIPE_A,", "IDLE_CORE_N,", "CONST_DYNAMICN"};
-
-void ParseXML::parse(char* filepath)
-{
- unsigned int i,j,k,m,n;
- unsigned int NumofCom_4;
- unsigned int itmp;
- //Initialize all structures
- ParseXML::initialize();
- string strtmp;
- char chtmp[60];
- char chtmp1[60];
- chtmp1[0]='\0';
- // this open and parse the XML file:
- XMLNode xMainNode=XMLNode::openFileHelper(filepath,"component"); //the 'component' in the first layer
-
- XMLNode xNode2=xMainNode.getChildNode("component"); // the 'component' in the second layer
- //get all params in the second layer
- itmp=xNode2.nChildNode("param");
- for(i=0; i<itmp; i++)
- {
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"GPU_Architecture")==0) {sys.GPU_Architecture=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"number_of_cores")==0) {sys.number_of_cores=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"architecture")==0) {sys.architecture=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"number_of_L1Directories")==0) {sys.number_of_L1Directories=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"number_of_L2Directories")==0) {sys.number_of_L2Directories=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"number_of_L2s")==0) {sys.number_of_L2s=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"Private_L2")==0) {sys.Private_L2=(bool)atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"number_of_L3s")==0) {sys.number_of_L3s=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"number_of_NoCs")==0) {sys.number_of_NoCs=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"number_of_dir_levels")==0) {sys.number_of_dir_levels=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"domain_size")==0) {sys.domain_size=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"first_level_dir")==0) {sys.first_level_dir=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"homogeneous_cores")==0) {sys.homogeneous_cores=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"core_tech_node")==0) {sys.core_tech_node=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"target_core_clockrate")==0) {sys.target_core_clockrate=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"target_chip_area")==0) {sys.target_chip_area=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"temperature")==0) {sys.temperature=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"number_cache_levels")==0) {sys.number_cache_levels=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"L1_property")==0) {sys.L1_property =atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"L2_property")==0) {sys.L2_property =atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"homogeneous_L2s")==0) {sys.homogeneous_L2s=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"homogeneous_L1Directories")==0) {sys.homogeneous_L1Directories=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"homogeneous_L2Directories")==0) {sys.homogeneous_L2Directories=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"L3_property")==0) {sys.L3_property =atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"homogeneous_L3s")==0) {sys.homogeneous_L3s=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"homogeneous_ccs")==0) {sys.homogeneous_ccs=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"homogeneous_NoCs")==0) {sys.homogeneous_NoCs=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"Max_area_deviation")==0) {sys.Max_area_deviation=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"Max_power_deviation")==0) {sys.Max_power_deviation=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"device_type")==0) {sys.device_type=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"longer_channel_device")==0) {sys.longer_channel_device=(bool)atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"opt_dynamic_power")==0) {sys.opt_dynamic_power=(bool)atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"opt_lakage_power")==0) {sys.opt_lakage_power=(bool)atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"opt_clockrate")==0) {sys.opt_clockrate=(bool)atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"opt_area")==0) {sys.opt_area=(bool)atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"Embedded")==0) {sys.Embedded=(bool)atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"interconnect_projection_type")==0) {sys.interconnect_projection_type=atoi(xNode2.getChildNode("param",i).getAttribute("value"))==0?0:1;continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"machine_bits")==0) {sys.machine_bits=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"virtual_address_width")==0) {sys.virtual_address_width=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"physical_address_width")==0) {sys.physical_address_width=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"virtual_memory_page_size")==0) {sys.virtual_memory_page_size=atoi(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"idle_core_power")==0) {sys.idle_core_power=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"TOT_INST")==0) {sys.scaling_coefficients[TOT_INST]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"FP_INT")==0) {sys.scaling_coefficients[FP_INT]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"IC_H")==0) {sys.scaling_coefficients[IC_H]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"IC_M")==0) {sys.scaling_coefficients[IC_M]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"DC_RH")==0) {sys.scaling_coefficients[DC_RH]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"DC_RM")==0) {sys.scaling_coefficients[DC_RM]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"DC_WH")==0) {sys.scaling_coefficients[DC_WH]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"DC_WM")==0) {sys.scaling_coefficients[DC_WM]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"TC_H")==0) {sys.scaling_coefficients[TC_H]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"TC_M")==0) {sys.scaling_coefficients[TC_M]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"CC_H")==0) {sys.scaling_coefficients[CC_H]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"CC_M")==0) {sys.scaling_coefficients[CC_M]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"SHRD_ACC")==0) {sys.scaling_coefficients[SHRD_ACC]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"REG_RD")==0) {sys.scaling_coefficients[REG_RD]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"REG_WR")==0) {sys.scaling_coefficients[REG_WR]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"NON_REG_OPs")==0) {sys.scaling_coefficients[NON_REG_OPs]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"SP_ACC")==0) {sys.scaling_coefficients[SP_ACC]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"SFU_ACC")==0) {sys.scaling_coefficients[SFU_ACC]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"FPU_ACC")==0) {sys.scaling_coefficients[FPU_ACC]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"MEM_RD")==0) {sys.scaling_coefficients[MEM_RD]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"MEM_WR")==0) {sys.scaling_coefficients[MEM_WR]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"MEM_PRE")==0) {sys.scaling_coefficients[MEM_PRE]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"L2_RH")==0) {sys.scaling_coefficients[L2_RH]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"L2_RM")==0) {sys.scaling_coefficients[L2_RM]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"L2_WH")==0) {sys.scaling_coefficients[L2_WH]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"L2_WM")==0) {sys.scaling_coefficients[L2_WM]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"NOC_A")==0) {sys.scaling_coefficients[NOC_A]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"PIPE_A")==0) {sys.scaling_coefficients[PIPE_A]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"IDLE_CORE_N")==0) {sys.scaling_coefficients[IDLE_CORE_N]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"CONST_DYNAMICN")==0) {sys.scaling_coefficients[CONST_DYNAMICN]=atof(xNode2.getChildNode("param",i).getAttribute("value"));continue;}
-
-/*
- if (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"scaling_coefficients")==0)
- {
- strtmp.assign(xNode2.getChildNode("param",i).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.scaling_coefficients[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.scaling_coefficients[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
-*/
- }
-
-// if (sys.Private_L2 && sys.number_of_cores!=sys.number_of_L2s)
-// {
-// cout<<"Private L2: Number of L2s must equal to Number of Cores"<<endl;
-// exit(0);
-// }
-
- itmp=xNode2.nChildNode("stat");
- for(i=0; i<itmp; i++)
- {
- if (strcmp(xNode2.getChildNode("stat",i).getAttribute("name"),"total_cycles")==0) {sys.total_cycles=atof(xNode2.getChildNode("stat",i).getAttribute("value"));continue;}
- if (strcmp(xNode2.getChildNode("stat",i).getAttribute("name"),"num_idle_cores")==0) {sys.num_idle_cores=atoi(xNode2.getChildNode("stat",i).getAttribute("value"));continue;}
-
- }
-
-
-
- //get the number of components within the second layer
- unsigned int NumofCom_3=xNode2.nChildNode("component");
- XMLNode xNode3,xNode4; //define the third-layer(system.core0) and fourth-layer(system.core0.predictor) xnodes
-
-
- unsigned int OrderofComponents_3layer=0;
- if (NumofCom_3>OrderofComponents_3layer)
- {
- //___________________________get all system.core0-n________________________________________________
- if (sys.homogeneous_cores==1) OrderofComponents_3layer=0;
- else OrderofComponents_3layer=sys.number_of_cores-1;
- for (i=0; i<=OrderofComponents_3layer; i++)
- {
- xNode3=xNode2.getChildNode("component",i);
- if (xNode3.isEmpty()==1) {
- printf("The value of homogeneous_cores or number_of_cores is not correct!");
- exit(0);
- }
- else{
- if (strstr(xNode3.getAttribute("name"),"core")!=NULL)
- {
- { //For cpu0-cpui
- //Get all params with system.core?
- itmp=xNode3.nChildNode("param");
- for(k=0; k<itmp; k++)
- {
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"clock_rate")==0) {sys.core[i].clock_rate=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"opt_local")==0) {sys.core[i].opt_local=(bool)atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"x86")==0) {sys.core[i].x86=(bool)atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"machine_bits")==0) {sys.core[i].machine_bits=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"virtual_address_width")==0) {sys.core[i].virtual_address_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"physical_address_width")==0) {sys.core[i].physical_address_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"instruction_length")==0) {sys.core[i].instruction_length=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"opcode_width")==0) {sys.core[i].opcode_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"micro_opcode_width")==0) {sys.core[i].micro_opcode_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"machine_type")==0) {sys.core[i].machine_type=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"internal_datapath_width")==0) {sys.core[i].internal_datapath_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"number_hardware_threads")==0) {sys.core[i].number_hardware_threads=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"fetch_width")==0) {sys.core[i].fetch_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"number_instruction_fetch_ports")==0) {sys.core[i].number_instruction_fetch_ports=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"decode_width")==0) {sys.core[i].decode_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"issue_width")==0) {sys.core[i].issue_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"peak_issue_width")==0) {sys.core[i].peak_issue_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"commit_width")==0) {sys.core[i].commit_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"fp_issue_width")==0) {sys.core[i].fp_issue_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"prediction_width")==0) {sys.core[i].prediction_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
-
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"pipelines_per_core")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].pipelines_per_core[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].pipelines_per_core[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"pipeline_depth")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].pipeline_depth[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].pipeline_depth[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
-
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"FPU")==0) {strcpy(sys.core[i].FPU,xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"divider_multiplier")==0) {strcpy(sys.core[i].divider_multiplier,xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"ALU_per_core")==0) {sys.core[i].ALU_per_core=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"FPU_per_core")==0) {sys.core[i].FPU_per_core=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"MUL_per_core")==0) {sys.core[i].MUL_per_core=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"instruction_buffer_size")==0) {sys.core[i].instruction_buffer_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"decoded_stream_buffer_size")==0) {sys.core[i].decoded_stream_buffer_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"instruction_window_scheme")==0) {sys.core[i].instruction_window_scheme =atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"instruction_window_size")==0) {sys.core[i].instruction_window_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"fp_instruction_window_size")==0) {sys.core[i].fp_instruction_window_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"ROB_size")==0) {sys.core[i].ROB_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"rf_banks")==0) {sys.core[i].rf_banks=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"simd_width")==0) {sys.core[i].simd_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"collector_units")==0) {sys.core[i].collector_units=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"core_clock_ratio")==0) {sys.core[i].core_clock_ratio=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"warp_size")==0) {sys.core[i].warp_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
-
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"archi_Regs_IRF_size")==0) {sys.core[i].archi_Regs_IRF_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"archi_Regs_FRF_size")==0) {sys.core[i].archi_Regs_FRF_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"phy_Regs_IRF_size")==0) {sys.core[i].phy_Regs_IRF_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"phy_Regs_FRF_size")==0) {sys.core[i].phy_Regs_FRF_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"rename_scheme")==0) {sys.core[i].rename_scheme=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"register_windows_size")==0) {sys.core[i].register_windows_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"LSU_order")==0) {strcpy(sys.core[i].LSU_order,xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"store_buffer_size")==0) {sys.core[i].store_buffer_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"load_buffer_size")==0) {sys.core[i].load_buffer_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"memory_ports")==0) {sys.core[i].memory_ports=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"Dcache_dual_pump")==0) {strcpy(sys.core[i].Dcache_dual_pump,xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"RAS_size")==0) {sys.core[i].RAS_size=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- }
- //Get all stats with system.core?
- itmp=xNode3.nChildNode("stat");
- for(k=0; k<itmp; k++)
- {
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_instructions")==0) {sys.core[i].total_instructions=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"int_instructions")==0) {sys.core[i].int_instructions=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"fp_instructions")==0) {sys.core[i].fp_instructions=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"branch_instructions")==0) {sys.core[i].branch_instructions=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"branch_mispredictions")==0) {sys.core[i].branch_mispredictions=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"committed_instructions")==0) {sys.core[i].committed_instructions=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"committed_int_instructions")==0) {sys.core[i].committed_int_instructions=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"committed_fp_instructions")==0) {sys.core[i].committed_fp_instructions=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"load_instructions")==0) {sys.core[i].load_instructions=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"store_instructions")==0) {sys.core[i].store_instructions=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_cycles")==0) {sys.core[i].total_cycles=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"idle_cycles")==0) {sys.core[i].idle_cycles=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"busy_cycles")==0) {sys.core[i].busy_cycles=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"instruction_buffer_reads")==0) {sys.core[i].instruction_buffer_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"instruction_buffer_write")==0) {sys.core[i].instruction_buffer_write=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"ROB_reads")==0) {sys.core[i].ROB_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"ROB_writes")==0) {sys.core[i].ROB_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"rename_reads")==0) {sys.core[i].rename_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"rename_writes")==0) {sys.core[i].rename_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"fp_rename_reads")==0) {sys.core[i].fp_rename_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"fp_rename_writes")==0) {sys.core[i].fp_rename_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"inst_window_reads")==0) {sys.core[i].inst_window_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"inst_window_writes")==0) {sys.core[i].inst_window_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"inst_window_wakeup_accesses")==0) {sys.core[i].inst_window_wakeup_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"inst_window_selections")==0) {sys.core[i].inst_window_selections=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"fp_inst_window_reads")==0) {sys.core[i].fp_inst_window_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"fp_inst_window_writes")==0) {sys.core[i].fp_inst_window_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"fp_inst_window_wakeup_accesses")==0) {sys.core[i].fp_inst_window_wakeup_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"archi_int_regfile_reads")==0) {sys.core[i].archi_int_regfile_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"archi_float_regfile_reads")==0) {sys.core[i].archi_float_regfile_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"phy_int_regfile_reads")==0) {sys.core[i].phy_int_regfile_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"phy_float_regfile_reads")==0) {sys.core[i].phy_float_regfile_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"phy_int_regfile_writes")==0) {sys.core[i].archi_int_regfile_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"phy_float_regfile_writes")==0) {sys.core[i].archi_float_regfile_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"archi_int_regfile_writes")==0) {sys.core[i].phy_int_regfile_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"archi_float_regfile_writes")==0) {sys.core[i].phy_float_regfile_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"int_regfile_reads")==0) {sys.core[i].int_regfile_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"float_regfile_reads")==0) {sys.core[i].float_regfile_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"int_regfile_writes")==0) {sys.core[i].int_regfile_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"float_regfile_writes")==0) {sys.core[i].float_regfile_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"non_rf_operands")==0) {sys.core[i].non_rf_operands=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
-
-
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"windowed_reg_accesses")==0) {sys.core[i].windowed_reg_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"windowed_reg_transports")==0) {sys.core[i].windowed_reg_transports=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"function_calls")==0) {sys.core[i].function_calls=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"context_switches")==0) {sys.core[i].context_switches=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"ialu_accesses")==0) {sys.core[i].ialu_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"fpu_accesses")==0) {sys.core[i].fpu_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"mul_accesses")==0) {sys.core[i].mul_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"cdb_alu_accesses")==0) {sys.core[i].cdb_alu_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"cdb_mul_accesses")==0) {sys.core[i].cdb_mul_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"cdb_fpu_accesses")==0) {sys.core[i].cdb_fpu_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"load_buffer_reads")==0) {sys.core[i].load_buffer_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"load_buffer_writes")==0) {sys.core[i].load_buffer_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"load_buffer_cams")==0) {sys.core[i].load_buffer_cams=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"store_buffer_reads")==0) {sys.core[i].store_buffer_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"store_buffer_writes")==0) {sys.core[i].store_buffer_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"store_buffer_cams")==0) {sys.core[i].store_buffer_cams=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"store_buffer_forwards")==0) {sys.core[i].store_buffer_forwards=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"main_memory_access")==0) {sys.core[i].main_memory_access=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"main_memory_read")==0) {sys.core[i].main_memory_read=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"main_memory_write")==0) {sys.core[i].main_memory_write=atoi(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"pipeline_duty_cycle")==0) {sys.core[i].pipeline_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
-
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"IFU_duty_cycle")==0) {sys.core[i].IFU_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"BR_duty_cycle")==0) {sys.core[i].BR_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"LSU_duty_cycle")==0) {sys.core[i].LSU_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"MemManU_I_duty_cycle")==0) {sys.core[i].MemManU_I_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"MemManU_D_duty_cycle")==0) {sys.core[i].MemManU_D_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"ALU_duty_cycle")==0) {sys.core[i].ALU_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"MUL_duty_cycle")==0) {sys.core[i].MUL_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"FPU_duty_cycle")==0) {sys.core[i].FPU_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"ALU_cdb_duty_cycle")==0) {sys.core[i].ALU_cdb_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"MUL_cdb_duty_cycle")==0) {sys.core[i].MUL_cdb_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"FPU_cdb_duty_cycle")==0) {sys.core[i].FPU_cdb_duty_cycle=atoi(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- }
- }
-
- NumofCom_4=xNode3.nChildNode("component"); //get the number of components within the third layer
- for(j=0; j<NumofCom_4; j++)
- {
- xNode4=xNode3.getChildNode("component",j);
- if (strcmp(xNode4.getAttribute("name"),"PBT")==0)
- { //find PBT
- itmp=xNode4.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.core0.predictor--PBT
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"prediction_width")==0) {sys.core[i].predictor.prediction_width=atoi(xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"prediction_scheme")==0) {strcpy(sys.core[i].predictor.prediction_scheme,xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"predictor_size")==0) {sys.core[i].predictor.predictor_size=atoi(xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"predictor_entries")==0) {sys.core[i].predictor.predictor_entries=atoi(xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"local_predictor_size")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].predictor.local_predictor_size[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].predictor.local_predictor_size[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"local_predictor_entries")==0) {sys.core[i].predictor.local_predictor_entries=atoi(xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"global_predictor_entries")==0) {sys.core[i].predictor.global_predictor_entries=atoi(xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"global_predictor_bits")==0) {sys.core[i].predictor.global_predictor_bits=atoi(xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"chooser_predictor_entries")==0) {sys.core[i].predictor.chooser_predictor_entries=atoi(xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"chooser_predictor_bits")==0) {sys.core[i].predictor.chooser_predictor_bits=atoi(xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- }
- itmp=xNode4.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in system.core0.predictor--PBT
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"predictor_accesses")==0) sys.core[i].predictor.predictor_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));
- }
- }
- if (strcmp(xNode4.getAttribute("name"),"itlb")==0)
- {//find system.core0.itlb
- itmp=xNode4.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.core0.itlb--itlb
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"number_entries")==0) sys.core[i].itlb.number_entries=atoi(xNode4.getChildNode("param",k).getAttribute("value"));
- }
- itmp=xNode4.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in itlb
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_hits")==0) {sys.core[i].itlb.total_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) {sys.core[i].itlb.total_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_misses")==0) {sys.core[i].itlb.total_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"conflicts")==0) {sys.core[i].itlb.conflicts=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- }
- }
- if (strcmp(xNode4.getAttribute("name"),"icache")==0)
- {//find system.core0.icache
- itmp=xNode4.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.core0.icache--icache
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"icache_config")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].icache.icache_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].icache.icache_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"buffer_sizes")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].icache.buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].icache.buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- itmp=xNode4.nChildNode("stat");
- for(k=0; k<itmp; k++)
- {
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) {sys.core[i].icache.total_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_accesses")==0) {sys.core[i].icache.read_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_misses")==0) {sys.core[i].icache.read_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"replacements")==0) {sys.core[i].icache.replacements=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_hits")==0) {sys.core[i].icache.read_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_hits")==0) {sys.core[i].icache.total_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_misses")==0) {sys.core[i].icache.total_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"miss_buffer_access")==0) {sys.core[i].icache.miss_buffer_access=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"fill_buffer_accesses")==0) {sys.core[i].icache.fill_buffer_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_accesses")==0) {sys.core[i].icache.prefetch_buffer_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_writes")==0) {sys.core[i].icache.prefetch_buffer_writes=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_reads")==0) {sys.core[i].icache.prefetch_buffer_reads=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_hits")==0) {sys.core[i].icache.prefetch_buffer_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"conflicts")==0) {sys.core[i].icache.conflicts=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- }
- }
- if (strcmp(xNode4.getAttribute("name"),"dtlb")==0)
- {//find system.core0.dtlb
- itmp=xNode4.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.core0.dtlb--dtlb
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"number_entries")==0) sys.core[i].dtlb.number_entries=atoi(xNode4.getChildNode("param",k).getAttribute("value"));
- }
- itmp=xNode4.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in dtlb
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) {sys.core[i].dtlb.total_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_accesses")==0) {sys.core[i].dtlb.read_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_accesses")==0) {sys.core[i].dtlb.write_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_hits")==0) {sys.core[i].dtlb.read_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_hits")==0) {sys.core[i].dtlb.write_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_misses")==0) {sys.core[i].dtlb.read_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_misses")==0) {sys.core[i].dtlb.write_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_hits")==0) {sys.core[i].dtlb.total_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_misses")==0) {sys.core[i].dtlb.total_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"conflicts")==0) {sys.core[i].dtlb.conflicts=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
-
- }
- }
-
-// Added by Jingwen
- if (strcmp(xNode4.getAttribute("name"),"ccache")==0)
- {//find system.core0.ccache
- itmp=xNode4.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.core0.ccache--ccache
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"ccache_config")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].ccache.dcache_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].ccache.dcache_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"buffer_sizes")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].ccache.buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].ccache.buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- itmp=xNode4.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in ccache
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) {sys.core[i].ccache.total_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_accesses")==0) {sys.core[i].ccache.read_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_accesses")==0) {sys.core[i].ccache.write_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_hits")==0) {sys.core[i].ccache.total_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_misses")==0) {sys.core[i].ccache.total_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_hits")==0) {sys.core[i].ccache.read_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_hits")==0) {sys.core[i].ccache.write_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_misses")==0) {sys.core[i].ccache.read_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_misses")==0) {sys.core[i].ccache.write_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"replacements")==0) {sys.core[i].ccache.replacements=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_backs")==0) {sys.core[i].ccache.write_backs=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"miss_buffer_access")==0) {sys.core[i].ccache.miss_buffer_access=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"fill_buffer_accesses")==0) {sys.core[i].ccache.fill_buffer_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_accesses")==0) {sys.core[i].ccache.prefetch_buffer_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_writes")==0) {sys.core[i].ccache.prefetch_buffer_writes=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_reads")==0) {sys.core[i].ccache.prefetch_buffer_reads=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_hits")==0) {sys.core[i].ccache.prefetch_buffer_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"wbb_writes")==0) {sys.core[i].ccache.wbb_writes=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"wbb_reads")==0) {sys.core[i].ccache.wbb_reads=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"conflicts")==0) {sys.core[i].ccache.conflicts=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
-
- }
- }
+const char* perf_count_label[] = {
+ "TOT_INST,", "FP_INT,", "IC_H,", "IC_M,", "DC_RH,",
+ "DC_RM,", "DC_WH,", "DC_WM,", "TC_H,", "TC_M,",
+ "CC_H,", "CC_M,", "SHRD_ACC,", "REG_RD,", "REG_WR,",
+ "NON_REG_OPs,", "SP_ACC,", "SFU_ACC,", "FPU_ACC,", "MEM_RD,",
+ "MEM_WR,", "MEM_PRE,", "L2_RH,", "L2_RM,", "L2_WH,",
+ "L2_WM,", "NOC_A,", "PIPE_A,", "IDLE_CORE_N,", "CONST_DYNAMICN"};
- //tcache
- if (strcmp(xNode4.getAttribute("name"),"tcache")==0)
- {//find system.core0.tcache
- itmp=xNode4.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.core0.tcache--tcache
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"tcache_config")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].tcache.dcache_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].tcache.dcache_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"buffer_sizes")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].tcache.buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].tcache.buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- itmp=xNode4.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in tcache
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) {sys.core[i].tcache.total_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_accesses")==0) {sys.core[i].tcache.read_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_accesses")==0) {sys.core[i].tcache.write_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_hits")==0) {sys.core[i].tcache.total_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_misses")==0) {sys.core[i].tcache.total_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_hits")==0) {sys.core[i].tcache.read_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_hits")==0) {sys.core[i].tcache.write_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_misses")==0) {sys.core[i].tcache.read_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_misses")==0) {sys.core[i].tcache.write_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"replacements")==0) {sys.core[i].tcache.replacements=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_backs")==0) {sys.core[i].tcache.write_backs=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"miss_buffer_access")==0) {sys.core[i].tcache.miss_buffer_access=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"fill_buffer_accesses")==0) {sys.core[i].tcache.fill_buffer_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_accesses")==0) {sys.core[i].tcache.prefetch_buffer_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_writes")==0) {sys.core[i].tcache.prefetch_buffer_writes=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_reads")==0) {sys.core[i].tcache.prefetch_buffer_reads=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_hits")==0) {sys.core[i].tcache.prefetch_buffer_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"wbb_writes")==0) {sys.core[i].tcache.wbb_writes=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"wbb_reads")==0) {sys.core[i].tcache.wbb_reads=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"conflicts")==0) {sys.core[i].tcache.conflicts=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
+void ParseXML::parse(char* filepath) {
+ unsigned int i, j, k, m, n;
+ unsigned int NumofCom_4;
+ unsigned int itmp;
+ // Initialize all structures
+ ParseXML::initialize();
+ string strtmp;
+ char chtmp[60];
+ char chtmp1[60];
+ chtmp1[0] = '\0';
+ // this open and parse the XML file:
+ XMLNode xMainNode = XMLNode::openFileHelper(
+ filepath, "component"); // the 'component' in the first layer
- }
- }
+ XMLNode xNode2 = xMainNode.getChildNode(
+ "component"); // the 'component' in the second layer
+ // get all params in the second layer
+ itmp = xNode2.nChildNode("param");
+ for (i = 0; i < itmp; i++) {
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "GPU_Architecture") == 0) {
+ sys.GPU_Architecture =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "number_of_cores") == 0) {
+ sys.number_of_cores =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "architecture") == 0) {
+ sys.architecture =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "number_of_L1Directories") == 0) {
+ sys.number_of_L1Directories =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "number_of_L2Directories") == 0) {
+ sys.number_of_L2Directories =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "number_of_L2s") == 0) {
+ sys.number_of_L2s =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "Private_L2") == 0) {
+ sys.Private_L2 =
+ (bool)atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "number_of_L3s") == 0) {
+ sys.number_of_L3s =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "number_of_NoCs") == 0) {
+ sys.number_of_NoCs =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "number_of_dir_levels") == 0) {
+ sys.number_of_dir_levels =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "domain_size") == 0) {
+ sys.domain_size =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "first_level_dir") == 0) {
+ sys.first_level_dir =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "homogeneous_cores") == 0) {
+ sys.homogeneous_cores =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "core_tech_node") == 0) {
+ sys.core_tech_node =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "target_core_clockrate") == 0) {
+ sys.target_core_clockrate =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "target_chip_area") == 0) {
+ sys.target_chip_area =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "temperature") == 0) {
+ sys.temperature =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "number_cache_levels") == 0) {
+ sys.number_cache_levels =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "L1_property") == 0) {
+ sys.L1_property =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "L2_property") == 0) {
+ sys.L2_property =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "homogeneous_L2s") == 0) {
+ sys.homogeneous_L2s =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "homogeneous_L1Directories") == 0) {
+ sys.homogeneous_L1Directories =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "homogeneous_L2Directories") == 0) {
+ sys.homogeneous_L2Directories =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "L3_property") == 0) {
+ sys.L3_property =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "homogeneous_L3s") == 0) {
+ sys.homogeneous_L3s =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "homogeneous_ccs") == 0) {
+ sys.homogeneous_ccs =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "homogeneous_NoCs") == 0) {
+ sys.homogeneous_NoCs =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "Max_area_deviation") == 0) {
+ sys.Max_area_deviation =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "Max_power_deviation") == 0) {
+ sys.Max_power_deviation =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "device_type") == 0) {
+ sys.device_type =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "longer_channel_device") == 0) {
+ sys.longer_channel_device =
+ (bool)atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "opt_dynamic_power") == 0) {
+ sys.opt_dynamic_power =
+ (bool)atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "opt_lakage_power") == 0) {
+ sys.opt_lakage_power =
+ (bool)atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "opt_clockrate") == 0) {
+ sys.opt_clockrate =
+ (bool)atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "opt_area") == 0) {
+ sys.opt_area =
+ (bool)atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "Embedded") == 0) {
+ sys.Embedded =
+ (bool)atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "interconnect_projection_type") == 0) {
+ sys.interconnect_projection_type =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value")) == 0 ? 0
+ : 1;
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "machine_bits") == 0) {
+ sys.machine_bits =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "virtual_address_width") == 0) {
+ sys.virtual_address_width =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "physical_address_width") == 0) {
+ sys.physical_address_width =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "virtual_memory_page_size") == 0) {
+ sys.virtual_memory_page_size =
+ atoi(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "idle_core_power") == 0) {
+ sys.idle_core_power =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "TOT_INST") == 0) {
+ sys.scaling_coefficients[TOT_INST] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "FP_INT") == 0) {
+ sys.scaling_coefficients[FP_INT] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "IC_H") ==
+ 0) {
+ sys.scaling_coefficients[IC_H] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "IC_M") ==
+ 0) {
+ sys.scaling_coefficients[IC_M] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "DC_RH") ==
+ 0) {
+ sys.scaling_coefficients[DC_RH] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "DC_RM") ==
+ 0) {
+ sys.scaling_coefficients[DC_RM] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "DC_WH") ==
+ 0) {
+ sys.scaling_coefficients[DC_WH] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "DC_WM") ==
+ 0) {
+ sys.scaling_coefficients[DC_WM] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "TC_H") ==
+ 0) {
+ sys.scaling_coefficients[TC_H] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "TC_M") ==
+ 0) {
+ sys.scaling_coefficients[TC_M] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "CC_H") ==
+ 0) {
+ sys.scaling_coefficients[CC_H] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "CC_M") ==
+ 0) {
+ sys.scaling_coefficients[CC_M] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "SHRD_ACC") == 0) {
+ sys.scaling_coefficients[SHRD_ACC] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "REG_RD") == 0) {
+ sys.scaling_coefficients[REG_RD] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "REG_WR") == 0) {
+ sys.scaling_coefficients[REG_WR] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "NON_REG_OPs") == 0) {
+ sys.scaling_coefficients[NON_REG_OPs] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "SP_ACC") == 0) {
+ sys.scaling_coefficients[SP_ACC] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "SFU_ACC") == 0) {
+ sys.scaling_coefficients[SFU_ACC] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "FPU_ACC") == 0) {
+ sys.scaling_coefficients[FPU_ACC] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "MEM_RD") == 0) {
+ sys.scaling_coefficients[MEM_RD] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "MEM_WR") == 0) {
+ sys.scaling_coefficients[MEM_WR] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "MEM_PRE") == 0) {
+ sys.scaling_coefficients[MEM_PRE] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "L2_RH") ==
+ 0) {
+ sys.scaling_coefficients[L2_RH] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "L2_RM") ==
+ 0) {
+ sys.scaling_coefficients[L2_RM] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "L2_WH") ==
+ 0) {
+ sys.scaling_coefficients[L2_WH] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "L2_WM") ==
+ 0) {
+ sys.scaling_coefficients[L2_WM] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"), "NOC_A") ==
+ 0) {
+ sys.scaling_coefficients[NOC_A] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "PIPE_A") == 0) {
+ sys.scaling_coefficients[PIPE_A] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "IDLE_CORE_N") == 0) {
+ sys.scaling_coefficients[IDLE_CORE_N] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("param", i).getAttribute("name"),
+ "CONST_DYNAMICN") == 0) {
+ sys.scaling_coefficients[CONST_DYNAMICN] =
+ atof(xNode2.getChildNode("param", i).getAttribute("value"));
+ continue;
+ }
+ /*
+ if
+ (strcmp(xNode2.getChildNode("param",i).getAttribute("name"),"scaling_coefficients")==0)
+ {
+ strtmp.assign(xNode2.getChildNode("param",i).getAttribute("value"));
+ m=0;
+ for(n=0; n<strtmp.length(); n++)
+ {
+ if (strtmp[n]!=',')
+ {
+ sprintf(chtmp,"%c",strtmp[n]);
+ strcat(chtmp1,chtmp);
+ }
+ else{
+ sys.scaling_coefficients[m]=atof(chtmp1);
+ m++;
+ chtmp1[0]='\0';
+ }
+ }
+ sys.scaling_coefficients[m]=atof(chtmp1);
+ m++;
+ chtmp1[0]='\0';
+ continue;
+ }
+ */
+ }
- if (strcmp(xNode4.getAttribute("name"),"sharedmemory")==0)
- {//find system.core0.sharedmemory
- itmp=xNode4.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.core0.sharedmemory--sharedmemory
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"sharedmemory_config")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].sharedmemory.dcache_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].sharedmemory.dcache_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"buffer_sizes")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].sharedmemory.buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].sharedmemory.buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- itmp=xNode4.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in sharedmemory
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) {sys.core[i].sharedmemory.total_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_accesses")==0) {sys.core[i].sharedmemory.read_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_accesses")==0) {sys.core[i].sharedmemory.write_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_hits")==0) {sys.core[i].sharedmemory.total_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_misses")==0) {sys.core[i].sharedmemory.total_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_hits")==0) {sys.core[i].sharedmemory.read_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_hits")==0) {sys.core[i].sharedmemory.write_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_misses")==0) {sys.core[i].sharedmemory.read_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_misses")==0) {sys.core[i].sharedmemory.write_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"replacements")==0) {sys.core[i].sharedmemory.replacements=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_backs")==0) {sys.core[i].sharedmemory.write_backs=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"miss_buffer_access")==0) {sys.core[i].sharedmemory.miss_buffer_access=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"fill_buffer_accesses")==0) {sys.core[i].sharedmemory.fill_buffer_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_accesses")==0) {sys.core[i].sharedmemory.prefetch_buffer_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_writes")==0) {sys.core[i].sharedmemory.prefetch_buffer_writes=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_reads")==0) {sys.core[i].sharedmemory.prefetch_buffer_reads=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_hits")==0) {sys.core[i].sharedmemory.prefetch_buffer_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"wbb_writes")==0) {sys.core[i].sharedmemory.wbb_writes=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"wbb_reads")==0) {sys.core[i].sharedmemory.wbb_reads=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"conflicts")==0) {sys.core[i].sharedmemory.conflicts=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
+ // if (sys.Private_L2 && sys.number_of_cores!=sys.number_of_L2s)
+ // {
+ // cout<<"Private L2: Number of L2s must equal to Number of
+ // Cores"<<endl; exit(0);
+ // }
- }
- }
+ itmp = xNode2.nChildNode("stat");
+ for (i = 0; i < itmp; i++) {
+ if (strcmp(xNode2.getChildNode("stat", i).getAttribute("name"),
+ "total_cycles") == 0) {
+ sys.total_cycles =
+ atof(xNode2.getChildNode("stat", i).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode2.getChildNode("stat", i).getAttribute("name"),
+ "num_idle_cores") == 0) {
+ sys.num_idle_cores =
+ atoi(xNode2.getChildNode("stat", i).getAttribute("value"));
+ continue;
+ }
+ }
+ // get the number of components within the second layer
+ unsigned int NumofCom_3 = xNode2.nChildNode("component");
+ XMLNode xNode3, xNode4; // define the third-layer(system.core0) and
+ // fourth-layer(system.core0.predictor) xnodes
- if (strcmp(xNode4.getAttribute("name"),"dcache")==0)
- {//find system.core0.dcache
- itmp=xNode4.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.core0.dcache--dcache
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"dcache_config")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].dcache.dcache_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].dcache.dcache_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"buffer_sizes")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].dcache.buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].dcache.buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- itmp=xNode4.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in dcache
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) {sys.core[i].dcache.total_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_accesses")==0) {sys.core[i].dcache.read_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_accesses")==0) {sys.core[i].dcache.write_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_hits")==0) {sys.core[i].dcache.total_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_misses")==0) {sys.core[i].dcache.total_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_hits")==0) {sys.core[i].dcache.read_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_hits")==0) {sys.core[i].dcache.write_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_misses")==0) {sys.core[i].dcache.read_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_misses")==0) {sys.core[i].dcache.write_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"replacements")==0) {sys.core[i].dcache.replacements=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_backs")==0) {sys.core[i].dcache.write_backs=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"miss_buffer_access")==0) {sys.core[i].dcache.miss_buffer_access=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"fill_buffer_accesses")==0) {sys.core[i].dcache.fill_buffer_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_accesses")==0) {sys.core[i].dcache.prefetch_buffer_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_writes")==0) {sys.core[i].dcache.prefetch_buffer_writes=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_reads")==0) {sys.core[i].dcache.prefetch_buffer_reads=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_hits")==0) {sys.core[i].dcache.prefetch_buffer_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"wbb_writes")==0) {sys.core[i].dcache.wbb_writes=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"wbb_reads")==0) {sys.core[i].dcache.wbb_reads=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"conflicts")==0) {sys.core[i].dcache.conflicts=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
+ unsigned int OrderofComponents_3layer = 0;
+ if (NumofCom_3 > OrderofComponents_3layer) {
+ //___________________________get all
+ // system.core0-n________________________________________________
+ if (sys.homogeneous_cores == 1)
+ OrderofComponents_3layer = 0;
+ else
+ OrderofComponents_3layer = sys.number_of_cores - 1;
+ for (i = 0; i <= OrderofComponents_3layer; i++) {
+ xNode3 = xNode2.getChildNode("component", i);
+ if (xNode3.isEmpty() == 1) {
+ printf(
+ "The value of homogeneous_cores or number_of_cores is not "
+ "correct!");
+ exit(0);
+ } else {
+ if (strstr(xNode3.getAttribute("name"), "core") != NULL) {
+ { // For cpu0-cpui
+ // Get all params with system.core?
+ itmp = xNode3.nChildNode("param");
+ for (k = 0; k < itmp; k++) {
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "clock_rate") == 0) {
+ sys.core[i].clock_rate =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "opt_local") == 0) {
+ sys.core[i].opt_local = (bool)atoi(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "x86") == 0) {
+ sys.core[i].x86 = (bool)atoi(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "machine_bits") == 0) {
+ sys.core[i].machine_bits =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "virtual_address_width") == 0) {
+ sys.core[i].virtual_address_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "physical_address_width") == 0) {
+ sys.core[i].physical_address_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "instruction_length") == 0) {
+ sys.core[i].instruction_length =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "opcode_width") == 0) {
+ sys.core[i].opcode_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "micro_opcode_width") == 0) {
+ sys.core[i].micro_opcode_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "machine_type") == 0) {
+ sys.core[i].machine_type =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "internal_datapath_width") == 0) {
+ sys.core[i].internal_datapath_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "number_hardware_threads") == 0) {
+ sys.core[i].number_hardware_threads =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "fetch_width") == 0) {
+ sys.core[i].fetch_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "number_instruction_fetch_ports") == 0) {
+ sys.core[i].number_instruction_fetch_ports =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "decode_width") == 0) {
+ sys.core[i].decode_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "issue_width") == 0) {
+ sys.core[i].issue_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "peak_issue_width") == 0) {
+ sys.core[i].peak_issue_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "commit_width") == 0) {
+ sys.core[i].commit_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "fp_issue_width") == 0) {
+ sys.core[i].fp_issue_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "prediction_width") == 0) {
+ sys.core[i].prediction_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
- }
- }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "pipelines_per_core") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].pipelines_per_core[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].pipelines_per_core[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "pipeline_depth") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].pipeline_depth[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].pipeline_depth[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "FPU") == 0) {
+ strcpy(sys.core[i].FPU,
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "divider_multiplier") == 0) {
+ strcpy(sys.core[i].divider_multiplier,
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "ALU_per_core") == 0) {
+ sys.core[i].ALU_per_core =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "FPU_per_core") == 0) {
+ sys.core[i].FPU_per_core =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "MUL_per_core") == 0) {
+ sys.core[i].MUL_per_core =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "instruction_buffer_size") == 0) {
+ sys.core[i].instruction_buffer_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "decoded_stream_buffer_size") == 0) {
+ sys.core[i].decoded_stream_buffer_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "instruction_window_scheme") == 0) {
+ sys.core[i].instruction_window_scheme =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "instruction_window_size") == 0) {
+ sys.core[i].instruction_window_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "fp_instruction_window_size") == 0) {
+ sys.core[i].fp_instruction_window_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "ROB_size") == 0) {
+ sys.core[i].ROB_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "rf_banks") == 0) {
+ sys.core[i].rf_banks =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "simd_width") == 0) {
+ sys.core[i].simd_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "collector_units") == 0) {
+ sys.core[i].collector_units =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "core_clock_ratio") == 0) {
+ sys.core[i].core_clock_ratio =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "warp_size") == 0) {
+ sys.core[i].warp_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
- if (strcmp(xNode4.getAttribute("name"),"BTB")==0)
- {//find system.core0.BTB
- itmp=xNode4.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.core0.BTB--BTB
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"BTB_config")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.core[i].BTB.BTB_config[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.core[i].BTB.BTB_config[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- itmp=xNode4.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in BTB
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) {sys.core[i].BTB.total_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_accesses")==0) {sys.core[i].BTB.read_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_accesses")==0) {sys.core[i].BTB.write_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_hits")==0) {sys.core[i].BTB.total_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"total_misses")==0) {sys.core[i].BTB.total_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_hits")==0) {sys.core[i].BTB.read_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_hits")==0) {sys.core[i].BTB.write_hits=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"read_misses")==0) {sys.core[i].BTB.read_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"write_misses")==0) {sys.core[i].BTB.write_misses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"replacements")==0) {sys.core[i].BTB.replacements=atof(xNode4.getChildNode("stat",k).getAttribute("value"));continue;}
- }
- }
- }
- }
- else {
- printf("The value of homogeneous_cores or number_of_cores is not correct!");
- exit(0);
- }
- }
- }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "archi_Regs_IRF_size") == 0) {
+ sys.core[i].archi_Regs_IRF_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "archi_Regs_FRF_size") == 0) {
+ sys.core[i].archi_Regs_FRF_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "phy_Regs_IRF_size") == 0) {
+ sys.core[i].phy_Regs_IRF_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "phy_Regs_FRF_size") == 0) {
+ sys.core[i].phy_Regs_FRF_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "rename_scheme") == 0) {
+ sys.core[i].rename_scheme =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "register_windows_size") == 0) {
+ sys.core[i].register_windows_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "LSU_order") == 0) {
+ strcpy(sys.core[i].LSU_order,
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "store_buffer_size") == 0) {
+ sys.core[i].store_buffer_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "load_buffer_size") == 0) {
+ sys.core[i].load_buffer_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "memory_ports") == 0) {
+ sys.core[i].memory_ports =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "Dcache_dual_pump") == 0) {
+ strcpy(sys.core[i].Dcache_dual_pump,
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "RAS_size") == 0) {
+ sys.core[i].RAS_size =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ }
+ // Get all stats with system.core?
+ itmp = xNode3.nChildNode("stat");
+ for (k = 0; k < itmp; k++) {
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_instructions") == 0) {
+ sys.core[i].total_instructions =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "int_instructions") == 0) {
+ sys.core[i].int_instructions =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "fp_instructions") == 0) {
+ sys.core[i].fp_instructions =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "branch_instructions") == 0) {
+ sys.core[i].branch_instructions =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "branch_mispredictions") == 0) {
+ sys.core[i].branch_mispredictions =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "committed_instructions") == 0) {
+ sys.core[i].committed_instructions =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "committed_int_instructions") == 0) {
+ sys.core[i].committed_int_instructions =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "committed_fp_instructions") == 0) {
+ sys.core[i].committed_fp_instructions =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "load_instructions") == 0) {
+ sys.core[i].load_instructions =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "store_instructions") == 0) {
+ sys.core[i].store_instructions =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_cycles") == 0) {
+ sys.core[i].total_cycles =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "idle_cycles") == 0) {
+ sys.core[i].idle_cycles =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "busy_cycles") == 0) {
+ sys.core[i].busy_cycles =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "instruction_buffer_reads") == 0) {
+ sys.core[i].instruction_buffer_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "instruction_buffer_write") == 0) {
+ sys.core[i].instruction_buffer_write =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "ROB_reads") == 0) {
+ sys.core[i].ROB_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "ROB_writes") == 0) {
+ sys.core[i].ROB_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "rename_reads") == 0) {
+ sys.core[i].rename_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "rename_writes") == 0) {
+ sys.core[i].rename_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "fp_rename_reads") == 0) {
+ sys.core[i].fp_rename_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "fp_rename_writes") == 0) {
+ sys.core[i].fp_rename_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "inst_window_reads") == 0) {
+ sys.core[i].inst_window_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "inst_window_writes") == 0) {
+ sys.core[i].inst_window_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "inst_window_wakeup_accesses") == 0) {
+ sys.core[i].inst_window_wakeup_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "inst_window_selections") == 0) {
+ sys.core[i].inst_window_selections =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "fp_inst_window_reads") == 0) {
+ sys.core[i].fp_inst_window_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "fp_inst_window_writes") == 0) {
+ sys.core[i].fp_inst_window_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "fp_inst_window_wakeup_accesses") == 0) {
+ sys.core[i].fp_inst_window_wakeup_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "archi_int_regfile_reads") == 0) {
+ sys.core[i].archi_int_regfile_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "archi_float_regfile_reads") == 0) {
+ sys.core[i].archi_float_regfile_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "phy_int_regfile_reads") == 0) {
+ sys.core[i].phy_int_regfile_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "phy_float_regfile_reads") == 0) {
+ sys.core[i].phy_float_regfile_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "phy_int_regfile_writes") == 0) {
+ sys.core[i].archi_int_regfile_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "phy_float_regfile_writes") == 0) {
+ sys.core[i].archi_float_regfile_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "archi_int_regfile_writes") == 0) {
+ sys.core[i].phy_int_regfile_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "archi_float_regfile_writes") == 0) {
+ sys.core[i].phy_float_regfile_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "int_regfile_reads") == 0) {
+ sys.core[i].int_regfile_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "float_regfile_reads") == 0) {
+ sys.core[i].float_regfile_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "int_regfile_writes") == 0) {
+ sys.core[i].int_regfile_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "float_regfile_writes") == 0) {
+ sys.core[i].float_regfile_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "non_rf_operands") == 0) {
+ sys.core[i].non_rf_operands =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
- //__________________________________________Get system.L1Directory0-n____________________________________________
- int w,tmpOrderofComponents_3layer;
- w=OrderofComponents_3layer+1;
- tmpOrderofComponents_3layer=OrderofComponents_3layer;
- if (sys.homogeneous_L1Directories==1) OrderofComponents_3layer=OrderofComponents_3layer+1;
- else OrderofComponents_3layer=OrderofComponents_3layer+sys.number_of_L1Directories;
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "windowed_reg_accesses") == 0) {
+ sys.core[i].windowed_reg_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "windowed_reg_transports") == 0) {
+ sys.core[i].windowed_reg_transports =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "function_calls") == 0) {
+ sys.core[i].function_calls =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "context_switches") == 0) {
+ sys.core[i].context_switches =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "ialu_accesses") == 0) {
+ sys.core[i].ialu_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "fpu_accesses") == 0) {
+ sys.core[i].fpu_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "mul_accesses") == 0) {
+ sys.core[i].mul_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "cdb_alu_accesses") == 0) {
+ sys.core[i].cdb_alu_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "cdb_mul_accesses") == 0) {
+ sys.core[i].cdb_mul_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "cdb_fpu_accesses") == 0) {
+ sys.core[i].cdb_fpu_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "load_buffer_reads") == 0) {
+ sys.core[i].load_buffer_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "load_buffer_writes") == 0) {
+ sys.core[i].load_buffer_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "load_buffer_cams") == 0) {
+ sys.core[i].load_buffer_cams =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "store_buffer_reads") == 0) {
+ sys.core[i].store_buffer_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "store_buffer_writes") == 0) {
+ sys.core[i].store_buffer_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "store_buffer_cams") == 0) {
+ sys.core[i].store_buffer_cams =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "store_buffer_forwards") == 0) {
+ sys.core[i].store_buffer_forwards =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "main_memory_access") == 0) {
+ sys.core[i].main_memory_access =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "main_memory_read") == 0) {
+ sys.core[i].main_memory_read =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "main_memory_write") == 0) {
+ sys.core[i].main_memory_write =
+ atoi(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "pipeline_duty_cycle") == 0) {
+ sys.core[i].pipeline_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
- for (i=0; i<(OrderofComponents_3layer-tmpOrderofComponents_3layer); i++)
- {
- xNode3=xNode2.getChildNode("component",w);
- if (xNode3.isEmpty()==1) {
- printf("The value of homogeneous_L1Directories or number_of_L1Directories is not correct!");
- exit(0);
- }
- else
- {
- if (strstr(xNode3.getAttribute("id"),"L1Directory")!=NULL)
- {
- itmp=xNode3.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.L1Directory
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"Dir_config")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.L1Directory[i].Dir_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.L1Directory[i].Dir_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"buffer_sizes")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.L1Directory[i].buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.L1Directory[i].buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "IFU_duty_cycle") == 0) {
+ sys.core[i].IFU_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "BR_duty_cycle") == 0) {
+ sys.core[i].BR_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "LSU_duty_cycle") == 0) {
+ sys.core[i].LSU_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "MemManU_I_duty_cycle") == 0) {
+ sys.core[i].MemManU_I_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "MemManU_D_duty_cycle") == 0) {
+ sys.core[i].MemManU_D_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "ALU_duty_cycle") == 0) {
+ sys.core[i].ALU_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "MUL_duty_cycle") == 0) {
+ sys.core[i].MUL_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "FPU_duty_cycle") == 0) {
+ sys.core[i].FPU_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "ALU_cdb_duty_cycle") == 0) {
+ sys.core[i].ALU_cdb_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "MUL_cdb_duty_cycle") == 0) {
+ sys.core[i].MUL_cdb_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "FPU_cdb_duty_cycle") == 0) {
+ sys.core[i].FPU_cdb_duty_cycle =
+ atoi(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"clockrate")==0) {sys.L1Directory[i].clockrate=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"ports")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.L1Directory[i].ports[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.L1Directory[i].ports[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"device_type")==0) {sys.L1Directory[i].device_type=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"Directory_type")==0) {sys.L1Directory[i].Directory_type=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"3D_stack")==0) {strcpy(sys.L1Directory[i].threeD_stack,xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- }
- itmp=xNode3.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in system.L2directorydirectory
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) {sys.L1Directory[i].total_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"read_accesses")==0) {sys.L1Directory[i].read_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"write_accesses")==0) {sys.L1Directory[i].write_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"read_misses")==0) {sys.L1Directory[i].read_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"write_misses")==0) {sys.L1Directory[i].write_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"conflicts")==0) {sys.L1Directory[i].conflicts=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"duty_cycle")==0) {sys.L1Directory[i].duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- }
- w=w+1;
- }
- else {
- printf("The value of homogeneous_L1Directories or number_of_L1Directories is not correct!");
- exit(0);
- }
- }
- }
+ NumofCom_4 =
+ xNode3.nChildNode("component"); // get the number of components
+ // within the third layer
+ for (j = 0; j < NumofCom_4; j++) {
+ xNode4 = xNode3.getChildNode("component", j);
+ if (strcmp(xNode4.getAttribute("name"), "PBT") == 0) { // find PBT
+ itmp = xNode4.nChildNode("param");
+ for (k = 0; k < itmp; k++) { // get all items of param in
+ // system.core0.predictor--PBT
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "prediction_width") == 0) {
+ sys.core[i].predictor.prediction_width = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "prediction_scheme") == 0) {
+ strcpy(sys.core[i].predictor.prediction_scheme,
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "predictor_size") == 0) {
+ sys.core[i].predictor.predictor_size = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "predictor_entries") == 0) {
+ sys.core[i].predictor.predictor_entries = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "local_predictor_size") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].predictor.local_predictor_size[m] =
+ atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].predictor.local_predictor_size[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "local_predictor_entries") == 0) {
+ sys.core[i].predictor.local_predictor_entries = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "global_predictor_entries") == 0) {
+ sys.core[i].predictor.global_predictor_entries = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "global_predictor_bits") == 0) {
+ sys.core[i].predictor.global_predictor_bits = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "chooser_predictor_entries") == 0) {
+ sys.core[i].predictor.chooser_predictor_entries = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "chooser_predictor_bits") == 0) {
+ sys.core[i].predictor.chooser_predictor_bits = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ }
+ itmp = xNode4.nChildNode("stat");
+ for (k = 0; k < itmp; k++) { // get all items of stat in
+ // system.core0.predictor--PBT
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "predictor_accesses") == 0)
+ sys.core[i].predictor.predictor_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ }
+ }
+ if (strcmp(xNode4.getAttribute("name"), "itlb") ==
+ 0) { // find system.core0.itlb
+ itmp = xNode4.nChildNode("param");
+ for (k = 0; k < itmp;
+ k++) { // get all items of param in system.core0.itlb--itlb
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "number_entries") == 0)
+ sys.core[i].itlb.number_entries = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ }
+ itmp = xNode4.nChildNode("stat");
+ for (k = 0; k < itmp; k++) { // get all items of stat in itlb
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_hits") == 0) {
+ sys.core[i].itlb.total_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0) {
+ sys.core[i].itlb.total_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_misses") == 0) {
+ sys.core[i].itlb.total_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "conflicts") == 0) {
+ sys.core[i].itlb.conflicts = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ }
+ if (strcmp(xNode4.getAttribute("name"), "icache") ==
+ 0) { // find system.core0.icache
+ itmp = xNode4.nChildNode("param");
+ for (k = 0; k < itmp; k++) { // get all items of param in
+ // system.core0.icache--icache
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "icache_config") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].icache.icache_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].icache.icache_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "buffer_sizes") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].icache.buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].icache.buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ itmp = xNode4.nChildNode("stat");
+ for (k = 0; k < itmp; k++) {
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0) {
+ sys.core[i].icache.total_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_accesses") == 0) {
+ sys.core[i].icache.read_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_misses") == 0) {
+ sys.core[i].icache.read_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "replacements") == 0) {
+ sys.core[i].icache.replacements = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_hits") == 0) {
+ sys.core[i].icache.read_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_hits") == 0) {
+ sys.core[i].icache.total_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_misses") == 0) {
+ sys.core[i].icache.total_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "miss_buffer_access") == 0) {
+ sys.core[i].icache.miss_buffer_access = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "fill_buffer_accesses") == 0) {
+ sys.core[i].icache.fill_buffer_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_accesses") == 0) {
+ sys.core[i].icache.prefetch_buffer_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_writes") == 0) {
+ sys.core[i].icache.prefetch_buffer_writes = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_reads") == 0) {
+ sys.core[i].icache.prefetch_buffer_reads = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_hits") == 0) {
+ sys.core[i].icache.prefetch_buffer_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "conflicts") == 0) {
+ sys.core[i].icache.conflicts = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ }
+ if (strcmp(xNode4.getAttribute("name"), "dtlb") ==
+ 0) { // find system.core0.dtlb
+ itmp = xNode4.nChildNode("param");
+ for (k = 0; k < itmp;
+ k++) { // get all items of param in system.core0.dtlb--dtlb
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "number_entries") == 0)
+ sys.core[i].dtlb.number_entries = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ }
+ itmp = xNode4.nChildNode("stat");
+ for (k = 0; k < itmp; k++) { // get all items of stat in dtlb
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0) {
+ sys.core[i].dtlb.total_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_accesses") == 0) {
+ sys.core[i].dtlb.read_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_accesses") == 0) {
+ sys.core[i].dtlb.write_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_hits") == 0) {
+ sys.core[i].dtlb.read_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_hits") == 0) {
+ sys.core[i].dtlb.write_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_misses") == 0) {
+ sys.core[i].dtlb.read_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_misses") == 0) {
+ sys.core[i].dtlb.write_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_hits") == 0) {
+ sys.core[i].dtlb.total_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_misses") == 0) {
+ sys.core[i].dtlb.total_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "conflicts") == 0) {
+ sys.core[i].dtlb.conflicts = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ }
- //__________________________________________Get system.L2Directory0-n____________________________________________
- w=OrderofComponents_3layer+1;
- tmpOrderofComponents_3layer=OrderofComponents_3layer;
- if (sys.homogeneous_L2Directories==1) OrderofComponents_3layer=OrderofComponents_3layer+1;
- else OrderofComponents_3layer=OrderofComponents_3layer+sys.number_of_L2Directories;
+ // Added by Jingwen
+ if (strcmp(xNode4.getAttribute("name"), "ccache") ==
+ 0) { // find system.core0.ccache
+ itmp = xNode4.nChildNode("param");
+ for (k = 0; k < itmp; k++) { // get all items of param in
+ // system.core0.ccache--ccache
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "ccache_config") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].ccache.dcache_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].ccache.dcache_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "buffer_sizes") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].ccache.buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].ccache.buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ itmp = xNode4.nChildNode("stat");
+ for (k = 0; k < itmp; k++) { // get all items of stat in ccache
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0) {
+ sys.core[i].ccache.total_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_accesses") == 0) {
+ sys.core[i].ccache.read_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_accesses") == 0) {
+ sys.core[i].ccache.write_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_hits") == 0) {
+ sys.core[i].ccache.total_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_misses") == 0) {
+ sys.core[i].ccache.total_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_hits") == 0) {
+ sys.core[i].ccache.read_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_hits") == 0) {
+ sys.core[i].ccache.write_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_misses") == 0) {
+ sys.core[i].ccache.read_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_misses") == 0) {
+ sys.core[i].ccache.write_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "replacements") == 0) {
+ sys.core[i].ccache.replacements = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_backs") == 0) {
+ sys.core[i].ccache.write_backs = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "miss_buffer_access") == 0) {
+ sys.core[i].ccache.miss_buffer_access = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "fill_buffer_accesses") == 0) {
+ sys.core[i].ccache.fill_buffer_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_accesses") == 0) {
+ sys.core[i].ccache.prefetch_buffer_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_writes") == 0) {
+ sys.core[i].ccache.prefetch_buffer_writes = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_reads") == 0) {
+ sys.core[i].ccache.prefetch_buffer_reads = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_hits") == 0) {
+ sys.core[i].ccache.prefetch_buffer_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "wbb_writes") == 0) {
+ sys.core[i].ccache.wbb_writes = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "wbb_reads") == 0) {
+ sys.core[i].ccache.wbb_reads = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "conflicts") == 0) {
+ sys.core[i].ccache.conflicts = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ }
- for (i=0; i<(OrderofComponents_3layer-tmpOrderofComponents_3layer); i++)
- {
- xNode3=xNode2.getChildNode("component",w);
- if (xNode3.isEmpty()==1) {
- printf("The value of homogeneous_L2Directories or number_of_L2Directories is not correct!");
- exit(0);
- }
- else
- {
- if (strstr(xNode3.getAttribute("id"),"L2Directory")!=NULL)
- {
- itmp=xNode3.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.L2Directory
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"Dir_config")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.L2Directory[i].Dir_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.L2Directory[i].Dir_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"buffer_sizes")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.L2Directory[i].buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.L2Directory[i].buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
+ // tcache
+ if (strcmp(xNode4.getAttribute("name"), "tcache") ==
+ 0) { // find system.core0.tcache
+ itmp = xNode4.nChildNode("param");
+ for (k = 0; k < itmp; k++) { // get all items of param in
+ // system.core0.tcache--tcache
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "tcache_config") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].tcache.dcache_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].tcache.dcache_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "buffer_sizes") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].tcache.buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].tcache.buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ itmp = xNode4.nChildNode("stat");
+ for (k = 0; k < itmp; k++) { // get all items of stat in tcache
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0) {
+ sys.core[i].tcache.total_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_accesses") == 0) {
+ sys.core[i].tcache.read_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_accesses") == 0) {
+ sys.core[i].tcache.write_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_hits") == 0) {
+ sys.core[i].tcache.total_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_misses") == 0) {
+ sys.core[i].tcache.total_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_hits") == 0) {
+ sys.core[i].tcache.read_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_hits") == 0) {
+ sys.core[i].tcache.write_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_misses") == 0) {
+ sys.core[i].tcache.read_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_misses") == 0) {
+ sys.core[i].tcache.write_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "replacements") == 0) {
+ sys.core[i].tcache.replacements = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_backs") == 0) {
+ sys.core[i].tcache.write_backs = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "miss_buffer_access") == 0) {
+ sys.core[i].tcache.miss_buffer_access = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "fill_buffer_accesses") == 0) {
+ sys.core[i].tcache.fill_buffer_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_accesses") == 0) {
+ sys.core[i].tcache.prefetch_buffer_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_writes") == 0) {
+ sys.core[i].tcache.prefetch_buffer_writes = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_reads") == 0) {
+ sys.core[i].tcache.prefetch_buffer_reads = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_hits") == 0) {
+ sys.core[i].tcache.prefetch_buffer_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "wbb_writes") == 0) {
+ sys.core[i].tcache.wbb_writes = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "wbb_reads") == 0) {
+ sys.core[i].tcache.wbb_reads = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "conflicts") == 0) {
+ sys.core[i].tcache.conflicts = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"clockrate")==0) {sys.L2Directory[i].clockrate=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"Directory_type")==0) {sys.L2Directory[i].Directory_type=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"ports")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.L2Directory[i].ports[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.L2Directory[i].ports[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"device_type")==0) {sys.L2Directory[i].device_type=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"3D_stack")==0) {strcpy(sys.L2Directory[i].threeD_stack,xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- }
- itmp=xNode3.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in system.L2directorydirectory
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) {sys.L2Directory[i].total_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"read_accesses")==0) {sys.L2Directory[i].read_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"write_accesses")==0) {sys.L2Directory[i].write_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"read_misses")==0) {sys.L2Directory[i].read_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"write_misses")==0) {sys.L2Directory[i].write_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"conflicts")==0) {sys.L2Directory[i].conflicts=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"duty_cycle")==0) {sys.L2Directory[i].duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
+ if (strcmp(xNode4.getAttribute("name"), "sharedmemory") ==
+ 0) { // find system.core0.sharedmemory
+ itmp = xNode4.nChildNode("param");
+ for (k = 0; k < itmp;
+ k++) { // get all items of param in
+ // system.core0.sharedmemory--sharedmemory
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "sharedmemory_config") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].sharedmemory.dcache_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].sharedmemory.dcache_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "buffer_sizes") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].sharedmemory.buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].sharedmemory.buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ itmp = xNode4.nChildNode("stat");
+ for (k = 0; k < itmp;
+ k++) { // get all items of stat in sharedmemory
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0) {
+ sys.core[i].sharedmemory.total_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_accesses") == 0) {
+ sys.core[i].sharedmemory.read_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_accesses") == 0) {
+ sys.core[i].sharedmemory.write_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_hits") == 0) {
+ sys.core[i].sharedmemory.total_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_misses") == 0) {
+ sys.core[i].sharedmemory.total_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_hits") == 0) {
+ sys.core[i].sharedmemory.read_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_hits") == 0) {
+ sys.core[i].sharedmemory.write_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_misses") == 0) {
+ sys.core[i].sharedmemory.read_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_misses") == 0) {
+ sys.core[i].sharedmemory.write_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "replacements") == 0) {
+ sys.core[i].sharedmemory.replacements = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_backs") == 0) {
+ sys.core[i].sharedmemory.write_backs = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "miss_buffer_access") == 0) {
+ sys.core[i].sharedmemory.miss_buffer_access = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "fill_buffer_accesses") == 0) {
+ sys.core[i].sharedmemory.fill_buffer_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_accesses") == 0) {
+ sys.core[i].sharedmemory.prefetch_buffer_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_writes") == 0) {
+ sys.core[i].sharedmemory.prefetch_buffer_writes = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_reads") == 0) {
+ sys.core[i].sharedmemory.prefetch_buffer_reads = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_hits") == 0) {
+ sys.core[i].sharedmemory.prefetch_buffer_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "wbb_writes") == 0) {
+ sys.core[i].sharedmemory.wbb_writes = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "wbb_reads") == 0) {
+ sys.core[i].sharedmemory.wbb_reads = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "conflicts") == 0) {
+ sys.core[i].sharedmemory.conflicts = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ }
- }
- w=w+1;
- }
- else {
- printf("The value of homogeneous_L2Directories or number_of_L2Directories is not correct!");
- exit(0);
- }
- }
- }
+ if (strcmp(xNode4.getAttribute("name"), "dcache") ==
+ 0) { // find system.core0.dcache
+ itmp = xNode4.nChildNode("param");
+ for (k = 0; k < itmp; k++) { // get all items of param in
+ // system.core0.dcache--dcache
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "dcache_config") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].dcache.dcache_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].dcache.dcache_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "buffer_sizes") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].dcache.buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].dcache.buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ itmp = xNode4.nChildNode("stat");
+ for (k = 0; k < itmp; k++) { // get all items of stat in dcache
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0) {
+ sys.core[i].dcache.total_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_accesses") == 0) {
+ sys.core[i].dcache.read_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_accesses") == 0) {
+ sys.core[i].dcache.write_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_hits") == 0) {
+ sys.core[i].dcache.total_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_misses") == 0) {
+ sys.core[i].dcache.total_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_hits") == 0) {
+ sys.core[i].dcache.read_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_hits") == 0) {
+ sys.core[i].dcache.write_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_misses") == 0) {
+ sys.core[i].dcache.read_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_misses") == 0) {
+ sys.core[i].dcache.write_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "replacements") == 0) {
+ sys.core[i].dcache.replacements = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_backs") == 0) {
+ sys.core[i].dcache.write_backs = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "miss_buffer_access") == 0) {
+ sys.core[i].dcache.miss_buffer_access = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "fill_buffer_accesses") == 0) {
+ sys.core[i].dcache.fill_buffer_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_accesses") == 0) {
+ sys.core[i].dcache.prefetch_buffer_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_writes") == 0) {
+ sys.core[i].dcache.prefetch_buffer_writes = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_reads") == 0) {
+ sys.core[i].dcache.prefetch_buffer_reads = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_hits") == 0) {
+ sys.core[i].dcache.prefetch_buffer_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "wbb_writes") == 0) {
+ sys.core[i].dcache.wbb_writes = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "wbb_reads") == 0) {
+ sys.core[i].dcache.wbb_reads = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "conflicts") == 0) {
+ sys.core[i].dcache.conflicts = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ }
- //__________________________________________Get system.L2[0..n]____________________________________________
- w=OrderofComponents_3layer+1;
- tmpOrderofComponents_3layer=OrderofComponents_3layer;
- if (sys.homogeneous_L2s==1) OrderofComponents_3layer=OrderofComponents_3layer+1;
- else OrderofComponents_3layer=OrderofComponents_3layer+sys.number_of_L2s;
+ if (strcmp(xNode4.getAttribute("name"), "BTB") ==
+ 0) { // find system.core0.BTB
+ itmp = xNode4.nChildNode("param");
+ for (k = 0; k < itmp;
+ k++) { // get all items of param in system.core0.BTB--BTB
+ if (strcmp(xNode4.getChildNode("param", k).getAttribute("name"),
+ "BTB_config") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.core[i].BTB.BTB_config[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.core[i].BTB.BTB_config[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ itmp = xNode4.nChildNode("stat");
+ for (k = 0; k < itmp; k++) { // get all items of stat in BTB
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0) {
+ sys.core[i].BTB.total_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_accesses") == 0) {
+ sys.core[i].BTB.read_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_accesses") == 0) {
+ sys.core[i].BTB.write_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_hits") == 0) {
+ sys.core[i].BTB.total_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "total_misses") == 0) {
+ sys.core[i].BTB.total_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_hits") == 0) {
+ sys.core[i].BTB.read_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_hits") == 0) {
+ sys.core[i].BTB.write_hits = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "read_misses") == 0) {
+ sys.core[i].BTB.read_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "write_misses") == 0) {
+ sys.core[i].BTB.write_misses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode4.getChildNode("stat", k).getAttribute("name"),
+ "replacements") == 0) {
+ sys.core[i].BTB.replacements = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ }
+ }
+ } else {
+ printf(
+ "The value of homogeneous_cores or number_of_cores is not "
+ "correct!");
+ exit(0);
+ }
+ }
+ }
- for (i=0; i<(OrderofComponents_3layer-tmpOrderofComponents_3layer); i++)
- {
- xNode3=xNode2.getChildNode("component",w);
- if (xNode3.isEmpty()==1) {
- printf("The value of homogeneous_L2s or number_of_L2s is not correct!");
- exit(0);
- }
- else
- {
- if (strstr(xNode3.getAttribute("name"),"L2")!=NULL)
- {
- { //For L20-L2i
- //Get all params with system.L2?
- itmp=xNode3.nChildNode("param");
- for(k=0; k<itmp; k++)
- {
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"L2_config")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.L2[i].L2_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.L2[i].L2_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"clockrate")==0) {sys.L2[i].clockrate=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"merged_dir")==0) {sys.L2[i].merged_dir=(bool)atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"ports")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.L2[i].ports[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.L2[i].ports[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"device_type")==0) {sys.L2[i].device_type=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"threeD_stack")==0) {strcpy(sys.L2[i].threeD_stack,(xNode3.getChildNode("param",k).getAttribute("value")));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"buffer_sizes")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.L2[i].buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.L2[i].buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- }
- //Get all stats with system.L2?
- itmp=xNode3.nChildNode("stat");
- for(k=0; k<itmp; k++)
- {
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) {sys.L2[i].total_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"read_accesses")==0) {sys.L2[i].read_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"write_accesses")==0) {sys.L2[i].write_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_hits")==0) {sys.L2[i].total_hits=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_misses")==0) {sys.L2[i].total_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"read_hits")==0) {sys.L2[i].read_hits=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"write_hits")==0) {sys.L2[i].write_hits=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"read_misses")==0) {sys.L2[i].read_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"write_misses")==0) {sys.L2[i].write_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"replacements")==0) {sys.L2[i].replacements=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"write_backs")==0) {sys.L2[i].write_backs=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"miss_buffer_accesses")==0) {sys.L2[i].miss_buffer_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"fill_buffer_accesses")==0) {sys.L2[i].fill_buffer_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_accesses")==0) {sys.L2[i].prefetch_buffer_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_writes")==0) {sys.L2[i].prefetch_buffer_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_reads")==0) {sys.L2[i].prefetch_buffer_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_hits")==0) {sys.L2[i].prefetch_buffer_hits=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"wbb_writes")==0) {sys.L2[i].wbb_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"wbb_reads")==0) {sys.L2[i].wbb_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"conflicts")==0) {sys.L2[i].conflicts=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"duty_cycle")==0) {sys.L2[i].duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
+ //__________________________________________Get
+ // system.L1Directory0-n____________________________________________
+ int w, tmpOrderofComponents_3layer;
+ w = OrderofComponents_3layer + 1;
+ tmpOrderofComponents_3layer = OrderofComponents_3layer;
+ if (sys.homogeneous_L1Directories == 1)
+ OrderofComponents_3layer = OrderofComponents_3layer + 1;
+ else
+ OrderofComponents_3layer =
+ OrderofComponents_3layer + sys.number_of_L1Directories;
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"homenode_read_accesses")==0) {sys.L2[i].homenode_read_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"homenode_read_accesses")==0) {sys.L2[i].homenode_read_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"homenode_read_hits")==0) {sys.L2[i].homenode_read_hits=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"homenode_write_hits")==0) {sys.L2[i].homenode_write_hits=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"homenode_read_misses")==0) {sys.L2[i].homenode_read_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"homenode_write_misses")==0) {sys.L2[i].homenode_write_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"dir_duty_cycle")==0) {sys.L2[i].dir_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
+ for (i = 0; i < (OrderofComponents_3layer - tmpOrderofComponents_3layer);
+ i++) {
+ xNode3 = xNode2.getChildNode("component", w);
+ if (xNode3.isEmpty() == 1) {
+ printf(
+ "The value of homogeneous_L1Directories or number_of_L1Directories "
+ "is not correct!");
+ exit(0);
+ } else {
+ if (strstr(xNode3.getAttribute("id"), "L1Directory") != NULL) {
+ itmp = xNode3.nChildNode("param");
+ for (k = 0; k < itmp;
+ k++) { // get all items of param in system.L1Directory
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "Dir_config") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.L1Directory[i].Dir_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.L1Directory[i].Dir_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "buffer_sizes") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.L1Directory[i].buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.L1Directory[i].buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
- }
- }
- w=w+1;
- }
- else {
- printf("The value of homogeneous_L2s or number_of_L2s is not correct!");
- exit(0);
- }
- }
- }
- //__________________________________________Get system.L3[0..n]____________________________________________
- w=OrderofComponents_3layer+1;
- tmpOrderofComponents_3layer=OrderofComponents_3layer;
- if (sys.homogeneous_L3s==1) OrderofComponents_3layer=OrderofComponents_3layer+1;
- else OrderofComponents_3layer=OrderofComponents_3layer+sys.number_of_L3s;
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "clockrate") == 0) {
+ sys.L1Directory[i].clockrate =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "ports") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.L1Directory[i].ports[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.L1Directory[i].ports[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "device_type") == 0) {
+ sys.L1Directory[i].device_type =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "Directory_type") == 0) {
+ sys.L1Directory[i].Directory_type =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "3D_stack") == 0) {
+ strcpy(sys.L1Directory[i].threeD_stack,
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ }
+ itmp = xNode3.nChildNode("stat");
+ for (k = 0; k < itmp;
+ k++) { // get all items of stat in system.L2directorydirectory
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0) {
+ sys.L1Directory[i].total_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "read_accesses") == 0) {
+ sys.L1Directory[i].read_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "write_accesses") == 0) {
+ sys.L1Directory[i].write_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "read_misses") == 0) {
+ sys.L1Directory[i].read_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "write_misses") == 0) {
+ sys.L1Directory[i].write_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "conflicts") == 0) {
+ sys.L1Directory[i].conflicts =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "duty_cycle") == 0) {
+ sys.L1Directory[i].duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ w = w + 1;
+ } else {
+ printf(
+ "The value of homogeneous_L1Directories or "
+ "number_of_L1Directories is not correct!");
+ exit(0);
+ }
+ }
+ }
- for (i=0; i<(OrderofComponents_3layer-tmpOrderofComponents_3layer); i++)
- {
- xNode3=xNode2.getChildNode("component",w);
- if (xNode3.isEmpty()==1) {
- printf("The value of homogeneous_L3s or number_of_L3s is not correct!");
- exit(0);
- }
- else
- {
- if (strstr(xNode3.getAttribute("name"),"L3")!=NULL)
- {
- { //For L30-L3i
- //Get all params with system.L3?
- itmp=xNode3.nChildNode("param");
- for(k=0; k<itmp; k++)
- {
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"L3_config")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.L3[i].L3_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.L3[i].L3_config[m]=atof(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"clockrate")==0) {sys.L3[i].clockrate=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"merged_dir")==0) {sys.L3[i].merged_dir=(bool)atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"ports")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.L3[i].ports[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.L3[i].ports[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"device_type")==0) {sys.L3[i].device_type=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"threeD_stack")==0) {strcpy(sys.L3[i].threeD_stack,(xNode3.getChildNode("param",k).getAttribute("value")));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"buffer_sizes")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.L3[i].buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.L3[i].buffer_sizes[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- }
- //Get all stats with system.L3?
- itmp=xNode3.nChildNode("stat");
- for(k=0; k<itmp; k++)
- {
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) {sys.L3[i].total_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"read_accesses")==0) {sys.L3[i].read_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"write_accesses")==0) {sys.L3[i].write_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_hits")==0) {sys.L3[i].total_hits=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_misses")==0) {sys.L3[i].total_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"read_hits")==0) {sys.L3[i].read_hits=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"write_hits")==0) {sys.L3[i].write_hits=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"read_misses")==0) {sys.L3[i].read_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"write_misses")==0) {sys.L3[i].write_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"replacements")==0) {sys.L3[i].replacements=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"write_backs")==0) {sys.L3[i].write_backs=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"miss_buffer_accesses")==0) {sys.L3[i].miss_buffer_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"fill_buffer_accesses")==0) {sys.L3[i].fill_buffer_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_accesses")==0) {sys.L3[i].prefetch_buffer_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_writes")==0) {sys.L3[i].prefetch_buffer_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_reads")==0) {sys.L3[i].prefetch_buffer_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"prefetch_buffer_hits")==0) {sys.L3[i].prefetch_buffer_hits=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"wbb_writes")==0) {sys.L3[i].wbb_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"wbb_reads")==0) {sys.L3[i].wbb_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"conflicts")==0) {sys.L3[i].conflicts=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"duty_cycle")==0) {sys.L3[i].duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
+ //__________________________________________Get
+ // system.L2Directory0-n____________________________________________
+ w = OrderofComponents_3layer + 1;
+ tmpOrderofComponents_3layer = OrderofComponents_3layer;
+ if (sys.homogeneous_L2Directories == 1)
+ OrderofComponents_3layer = OrderofComponents_3layer + 1;
+ else
+ OrderofComponents_3layer =
+ OrderofComponents_3layer + sys.number_of_L2Directories;
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"homenode_read_accesses")==0) {sys.L3[i].homenode_read_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"homenode_read_accesses")==0) {sys.L3[i].homenode_read_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"homenode_read_hits")==0) {sys.L3[i].homenode_read_hits=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"homenode_write_hits")==0) {sys.L3[i].homenode_write_hits=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"homenode_read_misses")==0) {sys.L3[i].homenode_read_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"homenode_write_misses")==0) {sys.L3[i].homenode_write_misses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"dir_duty_cycle")==0) {sys.L3[i].dir_duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
+ for (i = 0; i < (OrderofComponents_3layer - tmpOrderofComponents_3layer);
+ i++) {
+ xNode3 = xNode2.getChildNode("component", w);
+ if (xNode3.isEmpty() == 1) {
+ printf(
+ "The value of homogeneous_L2Directories or number_of_L2Directories "
+ "is not correct!");
+ exit(0);
+ } else {
+ if (strstr(xNode3.getAttribute("id"), "L2Directory") != NULL) {
+ itmp = xNode3.nChildNode("param");
+ for (k = 0; k < itmp;
+ k++) { // get all items of param in system.L2Directory
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "Dir_config") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.L2Directory[i].Dir_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.L2Directory[i].Dir_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "buffer_sizes") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.L2Directory[i].buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.L2Directory[i].buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
- }
- }
- w=w+1;
- }
- else {
- printf("The value of homogeneous_L3s or number_of_L3s is not correct!");
- exit(0);
- }
- }
- }
- //__________________________________________Get system.NoC[0..n]____________________________________________
- w=OrderofComponents_3layer+1;
- tmpOrderofComponents_3layer=OrderofComponents_3layer;
- if (sys.homogeneous_NoCs==1) OrderofComponents_3layer=OrderofComponents_3layer+1;
- else OrderofComponents_3layer=OrderofComponents_3layer+sys.number_of_NoCs;
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "clockrate") == 0) {
+ sys.L2Directory[i].clockrate =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "Directory_type") == 0) {
+ sys.L2Directory[i].Directory_type =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "ports") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.L2Directory[i].ports[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.L2Directory[i].ports[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "device_type") == 0) {
+ sys.L2Directory[i].device_type =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "3D_stack") == 0) {
+ strcpy(sys.L2Directory[i].threeD_stack,
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ }
+ itmp = xNode3.nChildNode("stat");
+ for (k = 0; k < itmp;
+ k++) { // get all items of stat in system.L2directorydirectory
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0) {
+ sys.L2Directory[i].total_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "read_accesses") == 0) {
+ sys.L2Directory[i].read_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "write_accesses") == 0) {
+ sys.L2Directory[i].write_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "read_misses") == 0) {
+ sys.L2Directory[i].read_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "write_misses") == 0) {
+ sys.L2Directory[i].write_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "conflicts") == 0) {
+ sys.L2Directory[i].conflicts =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "duty_cycle") == 0) {
+ sys.L2Directory[i].duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ w = w + 1;
+ } else {
+ printf(
+ "The value of homogeneous_L2Directories or "
+ "number_of_L2Directories is not correct!");
+ exit(0);
+ }
+ }
+ }
- for (i=0; i<(OrderofComponents_3layer-tmpOrderofComponents_3layer); i++)
- {
- xNode3=xNode2.getChildNode("component",w);
- if (xNode3.isEmpty()==1) {
- printf("The value of homogeneous_NoCs or number_of_NoCs is not correct!");
- exit(0);
- }
- else
- {
- if (strstr(xNode3.getAttribute("name"),"noc")!=NULL)
- {
- { //For NoC0-NoCi
- //Get all params with system.NoC?
- itmp=xNode3.nChildNode("param");
- for(k=0; k<itmp; k++)
- {
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"clockrate")==0) {sys.NoC[i].clockrate=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"type")==0) {sys.NoC[i].type=(bool)atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"topology")==0) {strcpy(sys.NoC[i].topology,(xNode3.getChildNode("param",k).getAttribute("value")));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"horizontal_nodes")==0) {sys.NoC[i].horizontal_nodes=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"vertical_nodes")==0) {sys.NoC[i].vertical_nodes=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"has_global_link")==0) {sys.NoC[i].has_global_link=(bool)atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"link_throughput")==0) {sys.NoC[i].link_throughput=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"link_latency")==0) {sys.NoC[i].link_latency=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"input_ports")==0) {sys.NoC[i].input_ports=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"output_ports")==0) {sys.NoC[i].output_ports=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"virtual_channel_per_port")==0) {sys.NoC[i].virtual_channel_per_port=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"flit_bits")==0) {sys.NoC[i].flit_bits=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"input_buffer_entries_per_vc")==0) {sys.NoC[i].input_buffer_entries_per_vc=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"dual_pump")==0) {sys.NoC[i].dual_pump=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"chip_coverage")==0) {sys.NoC[i].chip_coverage=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"link_routing_over_percentage")==0) {sys.NoC[i].route_over_perc=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"ports_of_input_buffer")==0)
- {
- strtmp.assign(xNode3.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.NoC[i].ports_of_input_buffer[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.NoC[i].ports_of_input_buffer[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- continue;
- }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"number_of_crossbars")==0) {sys.NoC[i].number_of_crossbars=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"crossbar_type")==0) {strcpy(sys.NoC[i].crossbar_type,(xNode3.getChildNode("param",k).getAttribute("value")));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"crosspoint_type")==0) {strcpy(sys.NoC[i].crosspoint_type,(xNode3.getChildNode("param",k).getAttribute("value")));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"arbiter_type")==0) {sys.NoC[i].arbiter_type=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- }
- NumofCom_4=xNode3.nChildNode("component"); //get the number of components within the third layer
- for(j=0; j<NumofCom_4; j++)
- {
- xNode4=xNode3.getChildNode("component",j);
- if (strcmp(xNode4.getAttribute("name"),"xbar0")==0)
- { //find PBT
- itmp=xNode4.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.XoC0.xbar0--xbar0
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"number_of_inputs_of_crossbars")==0) {sys.NoC[i].xbar0.number_of_inputs_of_crossbars=atoi(xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"number_of_outputs_of_crossbars")==0) {sys.NoC[i].xbar0.number_of_outputs_of_crossbars=atoi(xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"flit_bits")==0) {sys.NoC[i].xbar0.flit_bits=atoi(xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"input_buffer_entries_per_port")==0) {sys.NoC[i].xbar0.input_buffer_entries_per_port=atoi(xNode4.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode4.getChildNode("param",k).getAttribute("name"),"ports_of_input_buffer")==0)
- {
- strtmp.assign(xNode4.getChildNode("param",k).getAttribute("value"));
- m=0;
- for(n=0; n<strtmp.length(); n++)
- {
- if (strtmp[n]!=',')
- {
- sprintf(chtmp,"%c",strtmp[n]);
- strcat(chtmp1,chtmp);
- }
- else{
- sys.NoC[i].xbar0.ports_of_input_buffer[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- sys.NoC[i].xbar0.ports_of_input_buffer[m]=atoi(chtmp1);
- m++;
- chtmp1[0]='\0';
- }
- }
- itmp=xNode4.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in system.core0.predictor--PBT
- if (strcmp(xNode4.getChildNode("stat",k).getAttribute("name"),"predictor_accesses")==0) sys.core[i].predictor.predictor_accesses=atof(xNode4.getChildNode("stat",k).getAttribute("value"));
- }
- }
- }
- //Get all stats with system.NoC?
- itmp=xNode3.nChildNode("stat");
- for(k=0; k<itmp; k++)
- {
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_accesses")==0) sys.NoC[i].total_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"duty_cycle")==0) sys.NoC[i].duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));
- }
- }
- w=w+1;
- }
- }
- }
- //__________________________________________Get system.mem____________________________________________
- if (OrderofComponents_3layer>0) OrderofComponents_3layer=OrderofComponents_3layer+1;
- xNode3=xNode2.getChildNode("component",OrderofComponents_3layer);
- if (xNode3.isEmpty()==1) {
- printf("some value(s) of number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are not correct!");
- exit(0);
- }
- if (strstr(xNode3.getAttribute("id"),"system.mem")!=NULL)
- {
+ //__________________________________________Get
+ // system.L2[0..n]____________________________________________
+ w = OrderofComponents_3layer + 1;
+ tmpOrderofComponents_3layer = OrderofComponents_3layer;
+ if (sys.homogeneous_L2s == 1)
+ OrderofComponents_3layer = OrderofComponents_3layer + 1;
+ else
+ OrderofComponents_3layer = OrderofComponents_3layer + sys.number_of_L2s;
- itmp=xNode3.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.mem
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"mem_tech_node")==0) {sys.mem.mem_tech_node=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"device_clock")==0) {sys.mem.device_clock=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"peak_transfer_rate")==0) {sys.mem.peak_transfer_rate=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"capacity_per_channel")==0) {sys.mem.capacity_per_channel=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"number_ranks")==0) {sys.mem.number_ranks=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"num_banks_of_DRAM_chip")==0) {sys.mem.num_banks_of_DRAM_chip=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"Block_width_of_DRAM_chip")==0) {sys.mem.Block_width_of_DRAM_chip=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"output_width_of_DRAM_chip")==0) {sys.mem.output_width_of_DRAM_chip=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"page_size_of_DRAM_chip")==0) {sys.mem.page_size_of_DRAM_chip=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"burstlength_of_DRAM_chip")==0) {sys.mem.burstlength_of_DRAM_chip=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"internal_prefetch_of_DRAM_chip")==0) {sys.mem.internal_prefetch_of_DRAM_chip=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- }
- itmp=xNode3.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in system.mem
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"memory_accesses")==0) {sys.mem.memory_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"memory_reads")==0) {sys.mem.memory_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"memory_writes")==0) {sys.mem.memory_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"dram_pre")==0) {sys.mem.dram_pre=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- }
- }
- else{
- printf("some value(s) of number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are not correct!");
- exit(0);
- }
- //__________________________________________Get system.mc____________________________________________
- if (OrderofComponents_3layer>0) OrderofComponents_3layer=OrderofComponents_3layer+1;
- xNode3=xNode2.getChildNode("component",OrderofComponents_3layer);
- if (xNode3.isEmpty()==1) {
- printf("some value(s) of number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are not correct!");
- exit(0);
- }
- if (strstr(xNode3.getAttribute("id"),"system.mc")!=NULL)
- {
- itmp=xNode3.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.mem
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"mc_clock")==0) {sys.mc.mc_clock=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"block_size")==0) {sys.mc.llc_line_length=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"number_mcs")==0) {sys.mc.number_mcs=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"memory_channels_per_mc")==0) {sys.mc.memory_channels_per_mc=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"req_window_size_per_channel")==0) {sys.mc.req_window_size_per_channel=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"IO_buffer_size_per_channel")==0) {sys.mc.IO_buffer_size_per_channel=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"databus_width")==0) {sys.mc.databus_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"addressbus_width")==0) {sys.mc.addressbus_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"PRT_entries")==0) {sys.mc.PRT_entries=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"peak_transfer_rate")==0) {sys.mc.peak_transfer_rate=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"number_ranks")==0) {sys.mc.number_ranks=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"LVDS")==0) {sys.mc.LVDS=(bool)atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"type")==0) {sys.mc.type=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"withPHY")==0) {sys.mc.withPHY=(bool)atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
+ for (i = 0; i < (OrderofComponents_3layer - tmpOrderofComponents_3layer);
+ i++) {
+ xNode3 = xNode2.getChildNode("component", w);
+ if (xNode3.isEmpty() == 1) {
+ printf("The value of homogeneous_L2s or number_of_L2s is not correct!");
+ exit(0);
+ } else {
+ if (strstr(xNode3.getAttribute("name"), "L2") != NULL) {
+ { // For L20-L2i
+ // Get all params with system.L2?
+ itmp = xNode3.nChildNode("param");
+ for (k = 0; k < itmp; k++) {
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "L2_config") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.L2[i].L2_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.L2[i].L2_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "clockrate") == 0) {
+ sys.L2[i].clockrate =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "merged_dir") == 0) {
+ sys.L2[i].merged_dir = (bool)atoi(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "ports") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.L2[i].ports[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.L2[i].ports[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "device_type") == 0) {
+ sys.L2[i].device_type =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "threeD_stack") == 0) {
+ strcpy(sys.L2[i].threeD_stack,
+ (xNode3.getChildNode("param", k).getAttribute("value")));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "buffer_sizes") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.L2[i].buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.L2[i].buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ }
+ // Get all stats with system.L2?
+ itmp = xNode3.nChildNode("stat");
+ for (k = 0; k < itmp; k++) {
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0) {
+ sys.L2[i].total_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "read_accesses") == 0) {
+ sys.L2[i].read_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "write_accesses") == 0) {
+ sys.L2[i].write_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_hits") == 0) {
+ sys.L2[i].total_hits =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_misses") == 0) {
+ sys.L2[i].total_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "read_hits") == 0) {
+ sys.L2[i].read_hits =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "write_hits") == 0) {
+ sys.L2[i].write_hits =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "read_misses") == 0) {
+ sys.L2[i].read_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "write_misses") == 0) {
+ sys.L2[i].write_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "replacements") == 0) {
+ sys.L2[i].replacements =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "write_backs") == 0) {
+ sys.L2[i].write_backs =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "miss_buffer_accesses") == 0) {
+ sys.L2[i].miss_buffer_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "fill_buffer_accesses") == 0) {
+ sys.L2[i].fill_buffer_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_accesses") == 0) {
+ sys.L2[i].prefetch_buffer_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_writes") == 0) {
+ sys.L2[i].prefetch_buffer_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_reads") == 0) {
+ sys.L2[i].prefetch_buffer_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_hits") == 0) {
+ sys.L2[i].prefetch_buffer_hits =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "wbb_writes") == 0) {
+ sys.L2[i].wbb_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "wbb_reads") == 0) {
+ sys.L2[i].wbb_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "conflicts") == 0) {
+ sys.L2[i].conflicts =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "duty_cycle") == 0) {
+ sys.L2[i].duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"dram_cmd_coeff")==0) {sys.mc.dram_cmd_coeff=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"dram_act_coeff")==0) {sys.mc.dram_act_coeff=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"dram_nop_coeff")==0) {sys.mc.dram_nop_coeff=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"dram_activity_coeff")==0) {sys.mc.dram_activity_coeff=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"dram_pre_coeff")==0) {sys.mc.dram_pre_coeff=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"dram_rd_coeff")==0) {sys.mc.dram_rd_coeff=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"dram_wr_coeff")==0) {sys.mc.dram_wr_coeff=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"dram_req_coeff")==0) {sys.mc.dram_req_coeff=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"dram_const_coeff")==0) {sys.mc.dram_const_coeff=atof(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- }
- itmp=xNode3.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in system.mendirectory
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"memory_accesses")==0) {sys.mc.memory_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"memory_reads")==0) {sys.mc.memory_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"memory_writes")==0) {sys.mc.memory_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"dram_pre")==0) {sys.mc.dram_pre=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- }
- }
- else{
- printf("some value(s) of number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are not correct!");
- exit(0);
- }
- //__________________________________________Get system.niu____________________________________________
- if (OrderofComponents_3layer>0) OrderofComponents_3layer=OrderofComponents_3layer+1;
- xNode3=xNode2.getChildNode("component",OrderofComponents_3layer);
- if (xNode3.isEmpty()==1) {
- printf("some value(s) of number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are not correct!");
- exit(0);
- }
- if (strstr(xNode3.getAttribute("id"),"system.niu")!=NULL)
- {
- itmp=xNode3.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.mem
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"clockrate")==0) {sys.niu.clockrate=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"number_units")==0) {sys.niu.number_units=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"type")==0) {sys.niu.type=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- }
- itmp=xNode3.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in system.mendirectory
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"duty_cycle")==0) {sys.niu.duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_load_perc")==0) {sys.niu.total_load_perc=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- }
- }
- else{
- printf("some value(s) of number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are not correct!");
- exit(0);
- }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "homenode_read_accesses") == 0) {
+ sys.L2[i].homenode_read_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "homenode_read_accesses") == 0) {
+ sys.L2[i].homenode_read_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "homenode_read_hits") == 0) {
+ sys.L2[i].homenode_read_hits =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "homenode_write_hits") == 0) {
+ sys.L2[i].homenode_write_hits =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "homenode_read_misses") == 0) {
+ sys.L2[i].homenode_read_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "homenode_write_misses") == 0) {
+ sys.L2[i].homenode_write_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "dir_duty_cycle") == 0) {
+ sys.L2[i].dir_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ }
+ w = w + 1;
+ } else {
+ printf(
+ "The value of homogeneous_L2s or number_of_L2s is not correct!");
+ exit(0);
+ }
+ }
+ }
+ //__________________________________________Get
+ // system.L3[0..n]____________________________________________
+ w = OrderofComponents_3layer + 1;
+ tmpOrderofComponents_3layer = OrderofComponents_3layer;
+ if (sys.homogeneous_L3s == 1)
+ OrderofComponents_3layer = OrderofComponents_3layer + 1;
+ else
+ OrderofComponents_3layer = OrderofComponents_3layer + sys.number_of_L3s;
- //__________________________________________Get system.pcie____________________________________________
- if (OrderofComponents_3layer>0) OrderofComponents_3layer=OrderofComponents_3layer+1;
- xNode3=xNode2.getChildNode("component",OrderofComponents_3layer);
- if (xNode3.isEmpty()==1) {
- printf("some value(s) of number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are not correct!");
- exit(0);
- }
- if (strstr(xNode3.getAttribute("id"),"system.pcie")!=NULL)
- {
- itmp=xNode3.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.mem
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"clockrate")==0) {sys.pcie.clockrate=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"number_units")==0) {sys.pcie.number_units=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"num_channels")==0) {sys.pcie.num_channels=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"type")==0) {sys.pcie.type=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"withPHY")==0) {sys.pcie.withPHY=(bool)atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
+ for (i = 0; i < (OrderofComponents_3layer - tmpOrderofComponents_3layer);
+ i++) {
+ xNode3 = xNode2.getChildNode("component", w);
+ if (xNode3.isEmpty() == 1) {
+ printf("The value of homogeneous_L3s or number_of_L3s is not correct!");
+ exit(0);
+ } else {
+ if (strstr(xNode3.getAttribute("name"), "L3") != NULL) {
+ { // For L30-L3i
+ // Get all params with system.L3?
+ itmp = xNode3.nChildNode("param");
+ for (k = 0; k < itmp; k++) {
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "L3_config") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.L3[i].L3_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.L3[i].L3_config[m] = atof(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "clockrate") == 0) {
+ sys.L3[i].clockrate =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "merged_dir") == 0) {
+ sys.L3[i].merged_dir = (bool)atoi(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "ports") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.L3[i].ports[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.L3[i].ports[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "device_type") == 0) {
+ sys.L3[i].device_type =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "threeD_stack") == 0) {
+ strcpy(sys.L3[i].threeD_stack,
+ (xNode3.getChildNode("param", k).getAttribute("value")));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "buffer_sizes") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.L3[i].buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.L3[i].buffer_sizes[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ }
+ // Get all stats with system.L3?
+ itmp = xNode3.nChildNode("stat");
+ for (k = 0; k < itmp; k++) {
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0) {
+ sys.L3[i].total_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "read_accesses") == 0) {
+ sys.L3[i].read_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "write_accesses") == 0) {
+ sys.L3[i].write_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_hits") == 0) {
+ sys.L3[i].total_hits =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_misses") == 0) {
+ sys.L3[i].total_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "read_hits") == 0) {
+ sys.L3[i].read_hits =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "write_hits") == 0) {
+ sys.L3[i].write_hits =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "read_misses") == 0) {
+ sys.L3[i].read_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "write_misses") == 0) {
+ sys.L3[i].write_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "replacements") == 0) {
+ sys.L3[i].replacements =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "write_backs") == 0) {
+ sys.L3[i].write_backs =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "miss_buffer_accesses") == 0) {
+ sys.L3[i].miss_buffer_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "fill_buffer_accesses") == 0) {
+ sys.L3[i].fill_buffer_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_accesses") == 0) {
+ sys.L3[i].prefetch_buffer_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_writes") == 0) {
+ sys.L3[i].prefetch_buffer_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_reads") == 0) {
+ sys.L3[i].prefetch_buffer_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "prefetch_buffer_hits") == 0) {
+ sys.L3[i].prefetch_buffer_hits =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "wbb_writes") == 0) {
+ sys.L3[i].wbb_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "wbb_reads") == 0) {
+ sys.L3[i].wbb_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "conflicts") == 0) {
+ sys.L3[i].conflicts =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "duty_cycle") == 0) {
+ sys.L3[i].duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
- }
- itmp=xNode3.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in system.mendirectory
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"duty_cycle")==0) {sys.pcie.duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_load_perc")==0) {sys.pcie.total_load_perc=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- }
- }
- else{
- printf("some value(s) of number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are not correct!");
- exit(0);
- }
- //__________________________________________Get system.flashcontroller____________________________________________
- if (OrderofComponents_3layer>0) OrderofComponents_3layer=OrderofComponents_3layer+1;
- xNode3=xNode2.getChildNode("component",OrderofComponents_3layer);
- if (xNode3.isEmpty()==1) {
- printf("some value(s) of number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are not correct!");
- exit(0);
- }
- if (strstr(xNode3.getAttribute("id"),"system.flashc")!=NULL)
- {
- itmp=xNode3.nChildNode("param");
- for(k=0; k<itmp; k++)
- { //get all items of param in system.mem
-// if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"flashc_clock")==0) {sys.flashc.mc_clock=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
-// if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"block_size")==0) {sys.flashc.llc_line_length=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"number_flashcs")==0) {sys.flashc.number_mcs=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
-// if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"memory_channels_per_flashc")==0) {sys.flashc.memory_channels_per_mc=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
-// if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"req_window_size_per_channel")==0) {sys.flashc.req_window_size_per_channel=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
-// if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"IO_buffer_size_per_channel")==0) {sys.flashc.IO_buffer_size_per_channel=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
-// if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"databus_width")==0) {sys.flashc.databus_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
-// if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"addressbus_width")==0) {sys.flashc.addressbus_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"peak_transfer_rate")==0) {sys.flashc.peak_transfer_rate=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
-// if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"number_ranks")==0) {sys.flashc.number_ranks=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
-// if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"LVDS")==0) {sys.flashc.LVDS=(bool)atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"type")==0) {sys.flashc.type=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"withPHY")==0) {sys.flashc.withPHY=(bool)atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "homenode_read_accesses") == 0) {
+ sys.L3[i].homenode_read_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "homenode_read_accesses") == 0) {
+ sys.L3[i].homenode_read_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "homenode_read_hits") == 0) {
+ sys.L3[i].homenode_read_hits =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "homenode_write_hits") == 0) {
+ sys.L3[i].homenode_write_hits =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "homenode_read_misses") == 0) {
+ sys.L3[i].homenode_read_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "homenode_write_misses") == 0) {
+ sys.L3[i].homenode_write_misses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "dir_duty_cycle") == 0) {
+ sys.L3[i].dir_duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ }
+ w = w + 1;
+ } else {
+ printf(
+ "The value of homogeneous_L3s or number_of_L3s is not correct!");
+ exit(0);
+ }
+ }
+ }
+ //__________________________________________Get
+ // system.NoC[0..n]____________________________________________
+ w = OrderofComponents_3layer + 1;
+ tmpOrderofComponents_3layer = OrderofComponents_3layer;
+ if (sys.homogeneous_NoCs == 1)
+ OrderofComponents_3layer = OrderofComponents_3layer + 1;
+ else
+ OrderofComponents_3layer = OrderofComponents_3layer + sys.number_of_NoCs;
- }
- itmp=xNode3.nChildNode("stat");
- for(k=0; k<itmp; k++)
- { //get all items of stat in system.mendirectory
-// if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"memory_accesses")==0) {sys.flashc.memory_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
-// if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"memory_reads")==0) {sys.flashc.memory_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
-// if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"memory_writes")==0) {sys.flashc.memory_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"duty_cycle")==0) {sys.flashc.duty_cycle=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
- if (strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"total_load_perc")==0) {sys.flashc.total_load_perc=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
+ for (i = 0; i < (OrderofComponents_3layer - tmpOrderofComponents_3layer);
+ i++) {
+ xNode3 = xNode2.getChildNode("component", w);
+ if (xNode3.isEmpty() == 1) {
+ printf(
+ "The value of homogeneous_NoCs or number_of_NoCs is not correct!");
+ exit(0);
+ } else {
+ if (strstr(xNode3.getAttribute("name"), "noc") != NULL) {
+ { // For NoC0-NoCi
+ // Get all params with system.NoC?
+ itmp = xNode3.nChildNode("param");
+ for (k = 0; k < itmp; k++) {
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "clockrate") == 0) {
+ sys.NoC[i].clockrate =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "type") == 0) {
+ sys.NoC[i].type = (bool)atoi(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "topology") == 0) {
+ strcpy(sys.NoC[i].topology,
+ (xNode3.getChildNode("param", k).getAttribute("value")));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "horizontal_nodes") == 0) {
+ sys.NoC[i].horizontal_nodes =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "vertical_nodes") == 0) {
+ sys.NoC[i].vertical_nodes =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "has_global_link") == 0) {
+ sys.NoC[i].has_global_link = (bool)atoi(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "link_throughput") == 0) {
+ sys.NoC[i].link_throughput =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "link_latency") == 0) {
+ sys.NoC[i].link_latency =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "input_ports") == 0) {
+ sys.NoC[i].input_ports =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "output_ports") == 0) {
+ sys.NoC[i].output_ports =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "virtual_channel_per_port") == 0) {
+ sys.NoC[i].virtual_channel_per_port =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "flit_bits") == 0) {
+ sys.NoC[i].flit_bits =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "input_buffer_entries_per_vc") == 0) {
+ sys.NoC[i].input_buffer_entries_per_vc =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "dual_pump") == 0) {
+ sys.NoC[i].dual_pump =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "chip_coverage") == 0) {
+ sys.NoC[i].chip_coverage =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "link_routing_over_percentage") == 0) {
+ sys.NoC[i].route_over_perc =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "ports_of_input_buffer") == 0) {
+ strtmp.assign(
+ xNode3.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.NoC[i].ports_of_input_buffer[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.NoC[i].ports_of_input_buffer[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "number_of_crossbars") == 0) {
+ sys.NoC[i].number_of_crossbars =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "crossbar_type") == 0) {
+ strcpy(sys.NoC[i].crossbar_type,
+ (xNode3.getChildNode("param", k).getAttribute("value")));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "crosspoint_type") == 0) {
+ strcpy(sys.NoC[i].crosspoint_type,
+ (xNode3.getChildNode("param", k).getAttribute("value")));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "arbiter_type") == 0) {
+ sys.NoC[i].arbiter_type =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ }
+ NumofCom_4 =
+ xNode3.nChildNode("component"); // get the number of components
+ // within the third layer
+ for (j = 0; j < NumofCom_4; j++) {
+ xNode4 = xNode3.getChildNode("component", j);
+ if (strcmp(xNode4.getAttribute("name"), "xbar0") ==
+ 0) { // find PBT
+ itmp = xNode4.nChildNode("param");
+ for (k = 0; k < itmp; k++) { // get all items of param in
+ // system.XoC0.xbar0--xbar0
+ if (strcmp(
+ xNode4.getChildNode("param", k).getAttribute("name"),
+ "number_of_inputs_of_crossbars") == 0) {
+ sys.NoC[i].xbar0.number_of_inputs_of_crossbars = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(
+ xNode4.getChildNode("param", k).getAttribute("name"),
+ "number_of_outputs_of_crossbars") == 0) {
+ sys.NoC[i].xbar0.number_of_outputs_of_crossbars = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(
+ xNode4.getChildNode("param", k).getAttribute("name"),
+ "flit_bits") == 0) {
+ sys.NoC[i].xbar0.flit_bits = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(
+ xNode4.getChildNode("param", k).getAttribute("name"),
+ "input_buffer_entries_per_port") == 0) {
+ sys.NoC[i].xbar0.input_buffer_entries_per_port = atoi(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(
+ xNode4.getChildNode("param", k).getAttribute("name"),
+ "ports_of_input_buffer") == 0) {
+ strtmp.assign(
+ xNode4.getChildNode("param", k).getAttribute("value"));
+ m = 0;
+ for (n = 0; n < strtmp.length(); n++) {
+ if (strtmp[n] != ',') {
+ sprintf(chtmp, "%c", strtmp[n]);
+ strcat(chtmp1, chtmp);
+ } else {
+ sys.NoC[i].xbar0.ports_of_input_buffer[m] =
+ atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ sys.NoC[i].xbar0.ports_of_input_buffer[m] = atoi(chtmp1);
+ m++;
+ chtmp1[0] = '\0';
+ }
+ }
+ itmp = xNode4.nChildNode("stat");
+ for (k = 0; k < itmp; k++) { // get all items of stat in
+ // system.core0.predictor--PBT
+ if (strcmp(
+ xNode4.getChildNode("stat", k).getAttribute("name"),
+ "predictor_accesses") == 0)
+ sys.core[i].predictor.predictor_accesses = atof(
+ xNode4.getChildNode("stat", k).getAttribute("value"));
+ }
+ }
+ }
+ // Get all stats with system.NoC?
+ itmp = xNode3.nChildNode("stat");
+ for (k = 0; k < itmp; k++) {
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_accesses") == 0)
+ sys.NoC[i].total_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "duty_cycle") == 0)
+ sys.NoC[i].duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ }
+ }
+ w = w + 1;
+ }
+ }
+ }
+ //__________________________________________Get
+ // system.mem____________________________________________
+ if (OrderofComponents_3layer > 0)
+ OrderofComponents_3layer = OrderofComponents_3layer + 1;
+ xNode3 = xNode2.getChildNode("component", OrderofComponents_3layer);
+ if (xNode3.isEmpty() == 1) {
+ printf(
+ "some value(s) of "
+ "number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are "
+ "not correct!");
+ exit(0);
+ }
+ if (strstr(xNode3.getAttribute("id"), "system.mem") != NULL) {
+ itmp = xNode3.nChildNode("param");
+ for (k = 0; k < itmp; k++) { // get all items of param in system.mem
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "mem_tech_node") == 0) {
+ sys.mem.mem_tech_node =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "device_clock") == 0) {
+ sys.mem.device_clock =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "peak_transfer_rate") == 0) {
+ sys.mem.peak_transfer_rate =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "capacity_per_channel") == 0) {
+ sys.mem.capacity_per_channel =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "number_ranks") == 0) {
+ sys.mem.number_ranks =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "num_banks_of_DRAM_chip") == 0) {
+ sys.mem.num_banks_of_DRAM_chip =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "Block_width_of_DRAM_chip") == 0) {
+ sys.mem.Block_width_of_DRAM_chip =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "output_width_of_DRAM_chip") == 0) {
+ sys.mem.output_width_of_DRAM_chip =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "page_size_of_DRAM_chip") == 0) {
+ sys.mem.page_size_of_DRAM_chip =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "burstlength_of_DRAM_chip") == 0) {
+ sys.mem.burstlength_of_DRAM_chip =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "internal_prefetch_of_DRAM_chip") == 0) {
+ sys.mem.internal_prefetch_of_DRAM_chip =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ }
+ itmp = xNode3.nChildNode("stat");
+ for (k = 0; k < itmp; k++) { // get all items of stat in system.mem
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "memory_accesses") == 0) {
+ sys.mem.memory_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "memory_reads") == 0) {
+ sys.mem.memory_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "memory_writes") == 0) {
+ sys.mem.memory_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "dram_pre") == 0) {
+ sys.mem.dram_pre =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ } else {
+ printf(
+ "some value(s) of "
+ "number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are "
+ "not correct!");
+ exit(0);
+ }
+ //__________________________________________Get
+ // system.mc____________________________________________
+ if (OrderofComponents_3layer > 0)
+ OrderofComponents_3layer = OrderofComponents_3layer + 1;
+ xNode3 = xNode2.getChildNode("component", OrderofComponents_3layer);
+ if (xNode3.isEmpty() == 1) {
+ printf(
+ "some value(s) of "
+ "number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are "
+ "not correct!");
+ exit(0);
+ }
+ if (strstr(xNode3.getAttribute("id"), "system.mc") != NULL) {
+ itmp = xNode3.nChildNode("param");
+ for (k = 0; k < itmp; k++) { // get all items of param in system.mem
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "mc_clock") == 0) {
+ sys.mc.mc_clock =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "block_size") == 0) {
+ sys.mc.llc_line_length =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "number_mcs") == 0) {
+ sys.mc.number_mcs =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "memory_channels_per_mc") == 0) {
+ sys.mc.memory_channels_per_mc =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "req_window_size_per_channel") == 0) {
+ sys.mc.req_window_size_per_channel =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "IO_buffer_size_per_channel") == 0) {
+ sys.mc.IO_buffer_size_per_channel =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "databus_width") == 0) {
+ sys.mc.databus_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "addressbus_width") == 0) {
+ sys.mc.addressbus_width =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "PRT_entries") == 0) {
+ sys.mc.PRT_entries =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "peak_transfer_rate") == 0) {
+ sys.mc.peak_transfer_rate =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "number_ranks") == 0) {
+ sys.mc.number_ranks =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "LVDS") == 0) {
+ sys.mc.LVDS =
+ (bool)atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "type") == 0) {
+ sys.mc.type =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "withPHY") == 0) {
+ sys.mc.withPHY =
+ (bool)atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
- }
- }
- else{
- printf("some value(s) of number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are not correct!");
- exit(0);
- }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "dram_cmd_coeff") == 0) {
+ sys.mc.dram_cmd_coeff =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "dram_act_coeff") == 0) {
+ sys.mc.dram_act_coeff =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "dram_nop_coeff") == 0) {
+ sys.mc.dram_nop_coeff =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "dram_activity_coeff") == 0) {
+ sys.mc.dram_activity_coeff =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "dram_pre_coeff") == 0) {
+ sys.mc.dram_pre_coeff =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "dram_rd_coeff") == 0) {
+ sys.mc.dram_rd_coeff =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "dram_wr_coeff") == 0) {
+ sys.mc.dram_wr_coeff =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "dram_req_coeff") == 0) {
+ sys.mc.dram_req_coeff =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "dram_const_coeff") == 0) {
+ sys.mc.dram_const_coeff =
+ atof(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ }
+ itmp = xNode3.nChildNode("stat");
+ for (k = 0; k < itmp;
+ k++) { // get all items of stat in system.mendirectory
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "memory_accesses") == 0) {
+ sys.mc.memory_accesses =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "memory_reads") == 0) {
+ sys.mc.memory_reads =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "memory_writes") == 0) {
+ sys.mc.memory_writes =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "dram_pre") == 0) {
+ sys.mc.dram_pre =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ } else {
+ printf(
+ "some value(s) of "
+ "number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are "
+ "not correct!");
+ exit(0);
+ }
+ //__________________________________________Get
+ // system.niu____________________________________________
+ if (OrderofComponents_3layer > 0)
+ OrderofComponents_3layer = OrderofComponents_3layer + 1;
+ xNode3 = xNode2.getChildNode("component", OrderofComponents_3layer);
+ if (xNode3.isEmpty() == 1) {
+ printf(
+ "some value(s) of "
+ "number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are "
+ "not correct!");
+ exit(0);
+ }
+ if (strstr(xNode3.getAttribute("id"), "system.niu") != NULL) {
+ itmp = xNode3.nChildNode("param");
+ for (k = 0; k < itmp; k++) { // get all items of param in system.mem
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "clockrate") == 0) {
+ sys.niu.clockrate =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "number_units") == 0) {
+ sys.niu.number_units =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "type") == 0) {
+ sys.niu.type =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ }
+ itmp = xNode3.nChildNode("stat");
+ for (k = 0; k < itmp;
+ k++) { // get all items of stat in system.mendirectory
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "duty_cycle") == 0) {
+ sys.niu.duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_load_perc") == 0) {
+ sys.niu.total_load_perc =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ } else {
+ printf(
+ "some value(s) of "
+ "number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are "
+ "not correct!");
+ exit(0);
+ }
- }
+ //__________________________________________Get
+ // system.pcie____________________________________________
+ if (OrderofComponents_3layer > 0)
+ OrderofComponents_3layer = OrderofComponents_3layer + 1;
+ xNode3 = xNode2.getChildNode("component", OrderofComponents_3layer);
+ if (xNode3.isEmpty() == 1) {
+ printf(
+ "some value(s) of "
+ "number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are "
+ "not correct!");
+ exit(0);
+ }
+ if (strstr(xNode3.getAttribute("id"), "system.pcie") != NULL) {
+ itmp = xNode3.nChildNode("param");
+ for (k = 0; k < itmp; k++) { // get all items of param in system.mem
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "clockrate") == 0) {
+ sys.pcie.clockrate =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "number_units") == 0) {
+ sys.pcie.number_units =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "num_channels") == 0) {
+ sys.pcie.num_channels =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "type") == 0) {
+ sys.pcie.type =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "withPHY") == 0) {
+ sys.pcie.withPHY =
+ (bool)atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ }
+ itmp = xNode3.nChildNode("stat");
+ for (k = 0; k < itmp;
+ k++) { // get all items of stat in system.mendirectory
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "duty_cycle") == 0) {
+ sys.pcie.duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_load_perc") == 0) {
+ sys.pcie.total_load_perc =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ } else {
+ printf(
+ "some value(s) of "
+ "number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are "
+ "not correct!");
+ exit(0);
+ }
+ //__________________________________________Get
+ // system.flashcontroller____________________________________________
+ if (OrderofComponents_3layer > 0)
+ OrderofComponents_3layer = OrderofComponents_3layer + 1;
+ xNode3 = xNode2.getChildNode("component", OrderofComponents_3layer);
+ if (xNode3.isEmpty() == 1) {
+ printf(
+ "some value(s) of "
+ "number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are "
+ "not correct!");
+ exit(0);
+ }
+ if (strstr(xNode3.getAttribute("id"), "system.flashc") != NULL) {
+ itmp = xNode3.nChildNode("param");
+ for (k = 0; k < itmp; k++) { // get all items of param in system.mem
+ // if
+ //(strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"flashc_clock")==0)
+ //{sys.flashc.mc_clock=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
+ // if
+ //(strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"block_size")==0)
+ //{sys.flashc.llc_line_length=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "number_flashcs") == 0) {
+ sys.flashc.number_mcs =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ // if
+ //(strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"memory_channels_per_flashc")==0)
+ //{sys.flashc.memory_channels_per_mc=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
+ // if
+ //(strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"req_window_size_per_channel")==0)
+ //{sys.flashc.req_window_size_per_channel=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
+ // if
+ //(strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"IO_buffer_size_per_channel")==0)
+ //{sys.flashc.IO_buffer_size_per_channel=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
+ // if
+ //(strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"databus_width")==0)
+ //{sys.flashc.databus_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
+ // if
+ //(strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"addressbus_width")==0)
+ //{sys.flashc.addressbus_width=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "peak_transfer_rate") == 0) {
+ sys.flashc.peak_transfer_rate =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ // if
+ //(strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"number_ranks")==0)
+ //{sys.flashc.number_ranks=atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
+ // if
+ //(strcmp(xNode3.getChildNode("param",k).getAttribute("name"),"LVDS")==0)
+ //{sys.flashc.LVDS=(bool)atoi(xNode3.getChildNode("param",k).getAttribute("value"));continue;}
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "type") == 0) {
+ sys.flashc.type =
+ atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("param", k).getAttribute("name"),
+ "withPHY") == 0) {
+ sys.flashc.withPHY =
+ (bool)atoi(xNode3.getChildNode("param", k).getAttribute("value"));
+ continue;
+ }
+ }
+ itmp = xNode3.nChildNode("stat");
+ for (k = 0; k < itmp;
+ k++) { // get all items of stat in system.mendirectory
+ // if
+ //(strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"memory_accesses")==0)
+ //{sys.flashc.memory_accesses=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
+ // if
+ //(strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"memory_reads")==0)
+ //{sys.flashc.memory_reads=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
+ // if
+ //(strcmp(xNode3.getChildNode("stat",k).getAttribute("name"),"memory_writes")==0)
+ //{sys.flashc.memory_writes=atof(xNode3.getChildNode("stat",k).getAttribute("value"));continue;}
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "duty_cycle") == 0) {
+ sys.flashc.duty_cycle =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ if (strcmp(xNode3.getChildNode("stat", k).getAttribute("name"),
+ "total_load_perc") == 0) {
+ sys.flashc.total_load_perc =
+ atof(xNode3.getChildNode("stat", k).getAttribute("value"));
+ continue;
+ }
+ }
+ } else {
+ printf(
+ "some value(s) of "
+ "number_of_cores/number_of_L2s/number_of_L3s/number_of_NoCs is/are "
+ "not correct!");
+ exit(0);
+ }
+ }
}
-void ParseXML::initialize() //Initialize all
+void ParseXML::initialize() // Initialize all
{
- //All number_of_* at the level of 'system' 03/21/2009
- sys.number_of_cores=1;
- sys.architecture=1; //1 - fermi
- sys.number_of_L1Directories=1;
- sys.number_of_L2Directories=1;
- sys.number_of_L2s=1;
- sys.Private_L2 = false;
- sys.number_of_L3s=1;
- sys.number_of_NoCs=1;
- // All params at the level of 'system'
- //strcpy(sys.homogeneous_cores,"default");
- sys.core_tech_node=1;
- sys.target_core_clockrate=1;
- sys.target_chip_area=1;
- sys.temperature=1;
- sys.number_cache_levels=1;
- sys.homogeneous_cores=1;
- sys.homogeneous_L1Directories=1;
- sys.homogeneous_L2Directories=1;
- sys.homogeneous_L2s=1;
- sys.homogeneous_L3s=1;
- sys.homogeneous_NoCs=1;
- sys.homogeneous_ccs=1;
+ // All number_of_* at the level of 'system' 03/21/2009
+ sys.number_of_cores = 1;
+ sys.architecture = 1; // 1 - fermi
+ sys.number_of_L1Directories = 1;
+ sys.number_of_L2Directories = 1;
+ sys.number_of_L2s = 1;
+ sys.Private_L2 = false;
+ sys.number_of_L3s = 1;
+ sys.number_of_NoCs = 1;
+ // All params at the level of 'system'
+ // strcpy(sys.homogeneous_cores,"default");
+ sys.core_tech_node = 1;
+ sys.target_core_clockrate = 1;
+ sys.target_chip_area = 1;
+ sys.temperature = 1;
+ sys.number_cache_levels = 1;
+ sys.homogeneous_cores = 1;
+ sys.homogeneous_L1Directories = 1;
+ sys.homogeneous_L2Directories = 1;
+ sys.homogeneous_L2s = 1;
+ sys.homogeneous_L3s = 1;
+ sys.homogeneous_NoCs = 1;
+ sys.homogeneous_ccs = 1;
- sys.Max_area_deviation=1;
- sys.Max_power_deviation=1;
- sys.device_type=1;
- sys.longer_channel_device =true;
- sys.Embedded =false;
- sys.opt_dynamic_power=false;
- sys.opt_lakage_power=false;
- sys.opt_clockrate=true;
- sys.opt_area=false;
- sys.interconnect_projection_type=1;
- sys.idle_core_power=0;
- int i,j;
- for (i=0; i<=63; i++)
- {
- sys.scaling_coefficients[i]=1;
- sys.core[i].clock_rate=1;
- sys.core[i].opt_local = true;
- sys.core[i].x86 = false;
- sys.core[i].machine_bits=1;
- sys.core[i].virtual_address_width=1;
- sys.core[i].physical_address_width=1;
- sys.core[i].opcode_width=1;
- sys.core[i].micro_opcode_width=1;
- //strcpy(sys.core[i].machine_type,"default");
- sys.core[i].internal_datapath_width=1;
- sys.core[i].number_hardware_threads=1;
- sys.core[i].fetch_width=1;
- sys.core[i].number_instruction_fetch_ports=1;
- sys.core[i].decode_width=1;
- sys.core[i].issue_width=1;
- sys.core[i].peak_issue_width=1;
- sys.core[i].commit_width=1;
- for (j=0; j<20; j++) sys.core[i].pipelines_per_core[j]=1;
- for (j=0; j<20; j++) sys.core[i].pipeline_depth[j]=1;
- strcpy(sys.core[i].FPU,"default");
- strcpy(sys.core[i]. divider_multiplier,"default");
- sys.core[i].ALU_per_core=1;
- sys.core[i].FPU_per_core=1.0;
- sys.core[i].MUL_per_core=1;
- sys.core[i].instruction_buffer_size=1;
- sys.core[i].decoded_stream_buffer_size=1;
- //strcpy(sys.core[i].instruction_window_scheme,"default");
- sys.core[i].instruction_window_size=1;
- sys.core[i].ROB_size=1;
- sys.core[i].archi_Regs_IRF_size=1;
- sys.core[i].archi_Regs_FRF_size=1;
- sys.core[i].phy_Regs_IRF_size=1;
- sys.core[i].phy_Regs_FRF_size=1;
- //strcpy(sys.core[i].rename_scheme,"default");
- sys.core[i].register_windows_size=1;
- strcpy(sys.core[i].LSU_order,"default");
- sys.core[i].store_buffer_size=1;
- sys.core[i].load_buffer_size=1;
- sys.core[i].memory_ports=1;
- strcpy(sys.core[i].Dcache_dual_pump,"default");
- sys.core[i].RAS_size=1;
- //all stats at the level of system.core(0-n)
- sys.core[i].total_instructions=1;
- sys.core[i].int_instructions=1;
- sys.core[i].fp_instructions=1;
- sys.core[i].branch_instructions=1;
- sys.core[i].branch_mispredictions=1;
- sys.core[i].committed_instructions=1;
- sys.core[i].load_instructions=1;
- sys.core[i].store_instructions=1;
- sys.core[i].total_cycles=1;
- sys.core[i].idle_cycles=1;
- sys.core[i].busy_cycles=1;
- sys.core[i].instruction_buffer_reads=1;
- sys.core[i].instruction_buffer_write=1;
- sys.core[i].ROB_reads=1;
- sys.core[i].ROB_writes=1;
- sys.core[i].rename_accesses=1;
- sys.core[i].inst_window_reads=1;
- sys.core[i].inst_window_writes=1;
- sys.core[i].inst_window_wakeup_accesses=1;
- sys.core[i].inst_window_selections=1;
- sys.core[i].archi_int_regfile_reads=1;
- sys.core[i].archi_float_regfile_reads=1;
- sys.core[i].phy_int_regfile_reads=1;
- sys.core[i].phy_float_regfile_reads=1;
- sys.core[i].windowed_reg_accesses=1;
- sys.core[i].windowed_reg_transports=1;
- sys.core[i].function_calls=1;
- sys.core[i].ialu_accesses=1;
- sys.core[i].fpu_accesses=1;
- sys.core[i].mul_accesses=1;
- sys.core[i].cdb_alu_accesses=1;
- sys.core[i].cdb_mul_accesses=1;
- sys.core[i].cdb_fpu_accesses=1;
- sys.core[i].load_buffer_reads=1;
- sys.core[i].load_buffer_writes=1;
- sys.core[i].load_buffer_cams=1;
- sys.core[i].store_buffer_reads=1;
- sys.core[i].store_buffer_writes=1;
- sys.core[i].store_buffer_cams=1;
- sys.core[i].store_buffer_forwards=1;
- sys.core[i].main_memory_access=1;
- sys.core[i].main_memory_read=1;
- sys.core[i].main_memory_write=1;
- sys.core[i].IFU_duty_cycle = 1;
- sys.core[i].BR_duty_cycle = 1;
- sys.core[i].LSU_duty_cycle = 1;
- sys.core[i].MemManU_I_duty_cycle =1;
- sys.core[i].MemManU_D_duty_cycle =1;
- sys.core[i].ALU_duty_cycle =1;
- sys.core[i].MUL_duty_cycle =1;
- sys.core[i].FPU_duty_cycle =1;
- sys.core[i].ALU_cdb_duty_cycle =1;
- sys.core[i].MUL_cdb_duty_cycle =1;
- sys.core[i].FPU_cdb_duty_cycle =1;
- //system.core?.predictor
- sys.core[i].predictor.prediction_width=1;
- strcpy(sys.core[i].predictor.prediction_scheme,"default");
- sys.core[i].predictor.predictor_size=1;
- sys.core[i].predictor.predictor_entries=1;
- sys.core[i].predictor.local_predictor_entries=1;
- for (j=0; j<20; j++) sys.core[i].predictor.local_predictor_size[j]=1;
- sys.core[i].predictor.global_predictor_entries=1;
- sys.core[i].predictor.global_predictor_bits=1;
- sys.core[i].predictor.chooser_predictor_entries=1;
- sys.core[i].predictor.chooser_predictor_bits=1;
- sys.core[i].predictor.predictor_accesses=1;
- //system.core?.itlb
- sys.core[i].itlb.number_entries=1;
- sys.core[i].itlb.total_hits=1;
- sys.core[i].itlb.total_accesses=1;
- sys.core[i].itlb.total_misses=1;
- //system.core?.icache
- for (j=0; j<20; j++) sys.core[i].icache.icache_config[j]=1;
- //strcpy(sys.core[i].icache.buffer_sizes,"default");
- sys.core[i].icache.total_accesses=1;
- sys.core[i].icache.read_accesses=1;
- sys.core[i].icache.read_misses=1;
- sys.core[i].icache.replacements=1;
- sys.core[i].icache.read_hits=1;
- sys.core[i].icache.total_hits=1;
- sys.core[i].icache.total_misses=1;
- sys.core[i].icache.miss_buffer_access=1;
- sys.core[i].icache.fill_buffer_accesses=1;
- sys.core[i].icache.prefetch_buffer_accesses=1;
- sys.core[i].icache.prefetch_buffer_writes=1;
- sys.core[i].icache.prefetch_buffer_reads=1;
- sys.core[i].icache.prefetch_buffer_hits=1;
- //system.core?.dtlb
- sys.core[i].dtlb.number_entries=1;
- sys.core[i].dtlb.total_accesses=1;
- sys.core[i].dtlb.read_accesses=1;
- sys.core[i].dtlb.write_accesses=1;
- sys.core[i].dtlb.write_hits=1;
- sys.core[i].dtlb.read_hits=1;
- sys.core[i].dtlb.read_misses=1;
- sys.core[i].dtlb.write_misses=1;
- sys.core[i].dtlb.total_hits=1;
- sys.core[i].dtlb.total_misses=1;
- //system.core?.dcache
- for (j=0; j<20; j++) sys.core[i].dcache.dcache_config[j]=1;
- //strcpy(sys.core[i].dcache.buffer_sizes,"default");
- sys.core[i].dcache.total_accesses=1;
- sys.core[i].dcache.read_accesses=1;
- sys.core[i].dcache.write_accesses=1;
- sys.core[i].dcache.total_hits=1;
- sys.core[i].dcache.total_misses=1;
- sys.core[i].dcache.read_hits=1;
- sys.core[i].dcache.write_hits=1;
- sys.core[i].dcache.read_misses=1;
- sys.core[i].dcache.write_misses=1;
- sys.core[i].dcache.replacements=1;
- sys.core[i].dcache.write_backs=1;
- sys.core[i].dcache.miss_buffer_access=1;
- sys.core[i].dcache.fill_buffer_accesses=1;
- sys.core[i].dcache.prefetch_buffer_accesses=1;
- sys.core[i].dcache.prefetch_buffer_writes=1;
- sys.core[i].dcache.prefetch_buffer_reads=1;
- sys.core[i].dcache.prefetch_buffer_hits=1;
- sys.core[i].dcache.wbb_writes=1;
- sys.core[i].dcache.wbb_reads=1;
- //system.core?.BTB
- for (j=0; j<20; j++) sys.core[i].BTB.BTB_config[j]=1;
- sys.core[i].BTB.total_accesses=1;
- sys.core[i].BTB.read_accesses=1;
- sys.core[i].BTB.write_accesses=1;
- sys.core[i].BTB.total_hits=1;
- sys.core[i].BTB.total_misses=1;
- sys.core[i].BTB.read_hits=1;
- sys.core[i].BTB.write_hits=1;
- sys.core[i].BTB.read_misses=1;
- sys.core[i].BTB.write_misses=1;
- sys.core[i].BTB.replacements=1;
- }
+ sys.Max_area_deviation = 1;
+ sys.Max_power_deviation = 1;
+ sys.device_type = 1;
+ sys.longer_channel_device = true;
+ sys.Embedded = false;
+ sys.opt_dynamic_power = false;
+ sys.opt_lakage_power = false;
+ sys.opt_clockrate = true;
+ sys.opt_area = false;
+ sys.interconnect_projection_type = 1;
+ sys.idle_core_power = 0;
+ int i, j;
+ for (i = 0; i <= 63; i++) {
+ sys.scaling_coefficients[i] = 1;
+ sys.core[i].clock_rate = 1;
+ sys.core[i].opt_local = true;
+ sys.core[i].x86 = false;
+ sys.core[i].machine_bits = 1;
+ sys.core[i].virtual_address_width = 1;
+ sys.core[i].physical_address_width = 1;
+ sys.core[i].opcode_width = 1;
+ sys.core[i].micro_opcode_width = 1;
+ // strcpy(sys.core[i].machine_type,"default");
+ sys.core[i].internal_datapath_width = 1;
+ sys.core[i].number_hardware_threads = 1;
+ sys.core[i].fetch_width = 1;
+ sys.core[i].number_instruction_fetch_ports = 1;
+ sys.core[i].decode_width = 1;
+ sys.core[i].issue_width = 1;
+ sys.core[i].peak_issue_width = 1;
+ sys.core[i].commit_width = 1;
+ for (j = 0; j < 20; j++) sys.core[i].pipelines_per_core[j] = 1;
+ for (j = 0; j < 20; j++) sys.core[i].pipeline_depth[j] = 1;
+ strcpy(sys.core[i].FPU, "default");
+ strcpy(sys.core[i].divider_multiplier, "default");
+ sys.core[i].ALU_per_core = 1;
+ sys.core[i].FPU_per_core = 1.0;
+ sys.core[i].MUL_per_core = 1;
+ sys.core[i].instruction_buffer_size = 1;
+ sys.core[i].decoded_stream_buffer_size = 1;
+ // strcpy(sys.core[i].instruction_window_scheme,"default");
+ sys.core[i].instruction_window_size = 1;
+ sys.core[i].ROB_size = 1;
+ sys.core[i].archi_Regs_IRF_size = 1;
+ sys.core[i].archi_Regs_FRF_size = 1;
+ sys.core[i].phy_Regs_IRF_size = 1;
+ sys.core[i].phy_Regs_FRF_size = 1;
+ // strcpy(sys.core[i].rename_scheme,"default");
+ sys.core[i].register_windows_size = 1;
+ strcpy(sys.core[i].LSU_order, "default");
+ sys.core[i].store_buffer_size = 1;
+ sys.core[i].load_buffer_size = 1;
+ sys.core[i].memory_ports = 1;
+ strcpy(sys.core[i].Dcache_dual_pump, "default");
+ sys.core[i].RAS_size = 1;
+ // all stats at the level of system.core(0-n)
+ sys.core[i].total_instructions = 1;
+ sys.core[i].int_instructions = 1;
+ sys.core[i].fp_instructions = 1;
+ sys.core[i].branch_instructions = 1;
+ sys.core[i].branch_mispredictions = 1;
+ sys.core[i].committed_instructions = 1;
+ sys.core[i].load_instructions = 1;
+ sys.core[i].store_instructions = 1;
+ sys.core[i].total_cycles = 1;
+ sys.core[i].idle_cycles = 1;
+ sys.core[i].busy_cycles = 1;
+ sys.core[i].instruction_buffer_reads = 1;
+ sys.core[i].instruction_buffer_write = 1;
+ sys.core[i].ROB_reads = 1;
+ sys.core[i].ROB_writes = 1;
+ sys.core[i].rename_accesses = 1;
+ sys.core[i].inst_window_reads = 1;
+ sys.core[i].inst_window_writes = 1;
+ sys.core[i].inst_window_wakeup_accesses = 1;
+ sys.core[i].inst_window_selections = 1;
+ sys.core[i].archi_int_regfile_reads = 1;
+ sys.core[i].archi_float_regfile_reads = 1;
+ sys.core[i].phy_int_regfile_reads = 1;
+ sys.core[i].phy_float_regfile_reads = 1;
+ sys.core[i].windowed_reg_accesses = 1;
+ sys.core[i].windowed_reg_transports = 1;
+ sys.core[i].function_calls = 1;
+ sys.core[i].ialu_accesses = 1;
+ sys.core[i].fpu_accesses = 1;
+ sys.core[i].mul_accesses = 1;
+ sys.core[i].cdb_alu_accesses = 1;
+ sys.core[i].cdb_mul_accesses = 1;
+ sys.core[i].cdb_fpu_accesses = 1;
+ sys.core[i].load_buffer_reads = 1;
+ sys.core[i].load_buffer_writes = 1;
+ sys.core[i].load_buffer_cams = 1;
+ sys.core[i].store_buffer_reads = 1;
+ sys.core[i].store_buffer_writes = 1;
+ sys.core[i].store_buffer_cams = 1;
+ sys.core[i].store_buffer_forwards = 1;
+ sys.core[i].main_memory_access = 1;
+ sys.core[i].main_memory_read = 1;
+ sys.core[i].main_memory_write = 1;
+ sys.core[i].IFU_duty_cycle = 1;
+ sys.core[i].BR_duty_cycle = 1;
+ sys.core[i].LSU_duty_cycle = 1;
+ sys.core[i].MemManU_I_duty_cycle = 1;
+ sys.core[i].MemManU_D_duty_cycle = 1;
+ sys.core[i].ALU_duty_cycle = 1;
+ sys.core[i].MUL_duty_cycle = 1;
+ sys.core[i].FPU_duty_cycle = 1;
+ sys.core[i].ALU_cdb_duty_cycle = 1;
+ sys.core[i].MUL_cdb_duty_cycle = 1;
+ sys.core[i].FPU_cdb_duty_cycle = 1;
+ // system.core?.predictor
+ sys.core[i].predictor.prediction_width = 1;
+ strcpy(sys.core[i].predictor.prediction_scheme, "default");
+ sys.core[i].predictor.predictor_size = 1;
+ sys.core[i].predictor.predictor_entries = 1;
+ sys.core[i].predictor.local_predictor_entries = 1;
+ for (j = 0; j < 20; j++) sys.core[i].predictor.local_predictor_size[j] = 1;
+ sys.core[i].predictor.global_predictor_entries = 1;
+ sys.core[i].predictor.global_predictor_bits = 1;
+ sys.core[i].predictor.chooser_predictor_entries = 1;
+ sys.core[i].predictor.chooser_predictor_bits = 1;
+ sys.core[i].predictor.predictor_accesses = 1;
+ // system.core?.itlb
+ sys.core[i].itlb.number_entries = 1;
+ sys.core[i].itlb.total_hits = 1;
+ sys.core[i].itlb.total_accesses = 1;
+ sys.core[i].itlb.total_misses = 1;
+ // system.core?.icache
+ for (j = 0; j < 20; j++) sys.core[i].icache.icache_config[j] = 1;
+ // strcpy(sys.core[i].icache.buffer_sizes,"default");
+ sys.core[i].icache.total_accesses = 1;
+ sys.core[i].icache.read_accesses = 1;
+ sys.core[i].icache.read_misses = 1;
+ sys.core[i].icache.replacements = 1;
+ sys.core[i].icache.read_hits = 1;
+ sys.core[i].icache.total_hits = 1;
+ sys.core[i].icache.total_misses = 1;
+ sys.core[i].icache.miss_buffer_access = 1;
+ sys.core[i].icache.fill_buffer_accesses = 1;
+ sys.core[i].icache.prefetch_buffer_accesses = 1;
+ sys.core[i].icache.prefetch_buffer_writes = 1;
+ sys.core[i].icache.prefetch_buffer_reads = 1;
+ sys.core[i].icache.prefetch_buffer_hits = 1;
+ // system.core?.dtlb
+ sys.core[i].dtlb.number_entries = 1;
+ sys.core[i].dtlb.total_accesses = 1;
+ sys.core[i].dtlb.read_accesses = 1;
+ sys.core[i].dtlb.write_accesses = 1;
+ sys.core[i].dtlb.write_hits = 1;
+ sys.core[i].dtlb.read_hits = 1;
+ sys.core[i].dtlb.read_misses = 1;
+ sys.core[i].dtlb.write_misses = 1;
+ sys.core[i].dtlb.total_hits = 1;
+ sys.core[i].dtlb.total_misses = 1;
+ // system.core?.dcache
+ for (j = 0; j < 20; j++) sys.core[i].dcache.dcache_config[j] = 1;
+ // strcpy(sys.core[i].dcache.buffer_sizes,"default");
+ sys.core[i].dcache.total_accesses = 1;
+ sys.core[i].dcache.read_accesses = 1;
+ sys.core[i].dcache.write_accesses = 1;
+ sys.core[i].dcache.total_hits = 1;
+ sys.core[i].dcache.total_misses = 1;
+ sys.core[i].dcache.read_hits = 1;
+ sys.core[i].dcache.write_hits = 1;
+ sys.core[i].dcache.read_misses = 1;
+ sys.core[i].dcache.write_misses = 1;
+ sys.core[i].dcache.replacements = 1;
+ sys.core[i].dcache.write_backs = 1;
+ sys.core[i].dcache.miss_buffer_access = 1;
+ sys.core[i].dcache.fill_buffer_accesses = 1;
+ sys.core[i].dcache.prefetch_buffer_accesses = 1;
+ sys.core[i].dcache.prefetch_buffer_writes = 1;
+ sys.core[i].dcache.prefetch_buffer_reads = 1;
+ sys.core[i].dcache.prefetch_buffer_hits = 1;
+ sys.core[i].dcache.wbb_writes = 1;
+ sys.core[i].dcache.wbb_reads = 1;
+ // system.core?.BTB
+ for (j = 0; j < 20; j++) sys.core[i].BTB.BTB_config[j] = 1;
+ sys.core[i].BTB.total_accesses = 1;
+ sys.core[i].BTB.read_accesses = 1;
+ sys.core[i].BTB.write_accesses = 1;
+ sys.core[i].BTB.total_hits = 1;
+ sys.core[i].BTB.total_misses = 1;
+ sys.core[i].BTB.read_hits = 1;
+ sys.core[i].BTB.write_hits = 1;
+ sys.core[i].BTB.read_misses = 1;
+ sys.core[i].BTB.write_misses = 1;
+ sys.core[i].BTB.replacements = 1;
+ }
- //system_L1directory
- for (i=0; i<=63; i++)
- {
- for (j=0; j<20; j++) sys.L1Directory[i].Dir_config[j]=1;
- for (j=0; j<20; j++) sys.L1Directory[i].buffer_sizes[j]=1;
- sys.L1Directory[i].clockrate=1;
- sys.L1Directory[i].ports[20]=1;
- sys.L1Directory[i].device_type=1;
- strcpy(sys.L1Directory[i].threeD_stack,"default");
- sys.L1Directory[i].total_accesses=1;
- sys.L1Directory[i].read_accesses=1;
- sys.L1Directory[i].write_accesses=1;
- sys.L1Directory[i].duty_cycle =1;
- }
- //system_L2directory
- for (i=0; i<=63; i++)
- {
- for (j=0; j<20; j++) sys.L2Directory[i].Dir_config[j]=1;
- for (j=0; j<20; j++) sys.L2Directory[i].buffer_sizes[j]=1;
- sys.L2Directory[i].clockrate=1;
- sys.L2Directory[i].ports[20]=1;
- sys.L2Directory[i].device_type=1;
- strcpy(sys.L2Directory[i].threeD_stack,"default");
- sys.L2Directory[i].total_accesses=1;
- sys.L2Directory[i].read_accesses=1;
- sys.L2Directory[i].write_accesses=1;
- sys.L2Directory[i].duty_cycle =1;
- }
- for (i=0; i<=63; i++)
- {
- //system_L2
- for (j=0; j<20; j++) sys.L2[i].L2_config[j]=1;
- sys.L2[i].clockrate=1;
- for (j=0; j<20; j++) sys.L2[i].ports[j]=1;
- sys.L2[i].device_type=1;
- strcpy(sys.L2[i].threeD_stack,"default");
- for (j=0; j<20; j++) sys.L2[i].buffer_sizes[j]=1;
- sys.L2[i].total_accesses=1;
- sys.L2[i].read_accesses=1;
- sys.L2[i].write_accesses=1;
- sys.L2[i].total_hits=1;
- sys.L2[i].total_misses=1;
- sys.L2[i].read_hits=1;
- sys.L2[i].write_hits=1;
- sys.L2[i].read_misses=1;
- sys.L2[i].write_misses=1;
- sys.L2[i].replacements=1;
- sys.L2[i].write_backs=1;
- sys.L2[i].miss_buffer_accesses=1;
- sys.L2[i].fill_buffer_accesses=1;
- sys.L2[i].prefetch_buffer_accesses=1;
- sys.L2[i].prefetch_buffer_writes=1;
- sys.L2[i].prefetch_buffer_reads=1;
- sys.L2[i].prefetch_buffer_hits=1;
- sys.L2[i].wbb_writes=1;
- sys.L2[i].wbb_reads=1;
- sys.L2[i].duty_cycle =1;
- sys.L2[i].merged_dir=false;
- sys.L2[i].homenode_read_accesses =1;
- sys.L2[i].homenode_write_accesses=1;
- sys.L2[i].homenode_read_hits=1;
- sys.L2[i].homenode_write_hits=1;
- sys.L2[i].homenode_read_misses=1;
- sys.L2[i].homenode_write_misses=1;
- sys.L2[i].dir_duty_cycle=1;
- }
- for (i=0; i<=63; i++)
- {
- //system_L3
- for (j=0; j<20; j++) sys.L3[i].L3_config[j]=1;
- sys.L3[i].clockrate=1;
- for (j=0; j<20; j++) sys.L3[i].ports[j]=1;
- sys.L3[i].device_type=1;
- strcpy(sys.L3[i].threeD_stack,"default");
- for (j=0; j<20; j++) sys.L3[i].buffer_sizes[j]=1;
- sys.L3[i].total_accesses=1;
- sys.L3[i].read_accesses=1;
- sys.L3[i].write_accesses=1;
- sys.L3[i].total_hits=1;
- sys.L3[i].total_misses=1;
- sys.L3[i].read_hits=1;
- sys.L3[i].write_hits=1;
- sys.L3[i].read_misses=1;
- sys.L3[i].write_misses=1;
- sys.L3[i].replacements=1;
- sys.L3[i].write_backs=1;
- sys.L3[i].miss_buffer_accesses=1;
- sys.L3[i].fill_buffer_accesses=1;
- sys.L3[i].prefetch_buffer_accesses=1;
- sys.L3[i].prefetch_buffer_writes=1;
- sys.L3[i].prefetch_buffer_reads=1;
- sys.L3[i].prefetch_buffer_hits=1;
- sys.L3[i].wbb_writes=1;
- sys.L3[i].wbb_reads=1;
- sys.L3[i].duty_cycle =1;
- sys.L3[i].merged_dir=false;
- sys.L3[i].homenode_read_accesses =1;
- sys.L3[i].homenode_write_accesses=1;
- sys.L3[i].homenode_read_hits=1;
- sys.L3[i].homenode_write_hits=1;
- sys.L3[i].homenode_read_misses=1;
- sys.L3[i].homenode_write_misses=1;
- sys.L3[i].dir_duty_cycle=1;
- }
- //system_NoC
- for (i=0; i<=63; i++)
- {
- sys.NoC[i].clockrate=1;
- sys.NoC[i].type=true;
- sys.NoC[i].chip_coverage=1;
- sys.NoC[i].has_global_link = true;
- strcpy(sys.NoC[i].topology,"default");
- sys.NoC[i].horizontal_nodes=1;
- sys.NoC[i].vertical_nodes=1;
- sys.NoC[i].input_ports=1;
- sys.NoC[i].output_ports=1;
- sys.NoC[i].virtual_channel_per_port=1;
- sys.NoC[i].flit_bits=1;
- sys.NoC[i].input_buffer_entries_per_vc=1;
- sys.NoC[i].total_accesses=1;
- sys.NoC[i].duty_cycle=1;
- sys.NoC[i].route_over_perc = 0.5;
- for (j=0; j<20; j++) sys.NoC[i].ports_of_input_buffer[j]=1;
- sys.NoC[i].number_of_crossbars=1;
- strcpy(sys.NoC[i].crossbar_type,"default");
- strcpy(sys.NoC[i].crosspoint_type,"default");
- //system.NoC?.xbar0;
- sys.NoC[i].xbar0.number_of_inputs_of_crossbars=1;
- sys.NoC[i].xbar0.number_of_outputs_of_crossbars=1;
- sys.NoC[i].xbar0.flit_bits=1;
- sys.NoC[i].xbar0.input_buffer_entries_per_port=1;
- sys.NoC[i].xbar0.ports_of_input_buffer[20]=1;
- sys.NoC[i].xbar0.crossbar_accesses=1;
- }
- //system_mem
- sys.mem.mem_tech_node=1;
- sys.mem.device_clock=1;
- sys.mem.capacity_per_channel=1;
- sys.mem.number_ranks=1;
- sys.mem.peak_transfer_rate =1;
- sys.mem.num_banks_of_DRAM_chip=1;
- sys.mem.Block_width_of_DRAM_chip=1;
- sys.mem.output_width_of_DRAM_chip=1;
- sys.mem.page_size_of_DRAM_chip=1;
- sys.mem.burstlength_of_DRAM_chip=1;
- sys.mem.internal_prefetch_of_DRAM_chip=1;
- sys.mem.memory_accesses=1;
- sys.mem.memory_reads=1;
- sys.mem.memory_writes=1;
+ // system_L1directory
+ for (i = 0; i <= 63; i++) {
+ for (j = 0; j < 20; j++) sys.L1Directory[i].Dir_config[j] = 1;
+ for (j = 0; j < 20; j++) sys.L1Directory[i].buffer_sizes[j] = 1;
+ sys.L1Directory[i].clockrate = 1;
+ sys.L1Directory[i].ports[20] = 1;
+ sys.L1Directory[i].device_type = 1;
+ strcpy(sys.L1Directory[i].threeD_stack, "default");
+ sys.L1Directory[i].total_accesses = 1;
+ sys.L1Directory[i].read_accesses = 1;
+ sys.L1Directory[i].write_accesses = 1;
+ sys.L1Directory[i].duty_cycle = 1;
+ }
+ // system_L2directory
+ for (i = 0; i <= 63; i++) {
+ for (j = 0; j < 20; j++) sys.L2Directory[i].Dir_config[j] = 1;
+ for (j = 0; j < 20; j++) sys.L2Directory[i].buffer_sizes[j] = 1;
+ sys.L2Directory[i].clockrate = 1;
+ sys.L2Directory[i].ports[20] = 1;
+ sys.L2Directory[i].device_type = 1;
+ strcpy(sys.L2Directory[i].threeD_stack, "default");
+ sys.L2Directory[i].total_accesses = 1;
+ sys.L2Directory[i].read_accesses = 1;
+ sys.L2Directory[i].write_accesses = 1;
+ sys.L2Directory[i].duty_cycle = 1;
+ }
+ for (i = 0; i <= 63; i++) {
+ // system_L2
+ for (j = 0; j < 20; j++) sys.L2[i].L2_config[j] = 1;
+ sys.L2[i].clockrate = 1;
+ for (j = 0; j < 20; j++) sys.L2[i].ports[j] = 1;
+ sys.L2[i].device_type = 1;
+ strcpy(sys.L2[i].threeD_stack, "default");
+ for (j = 0; j < 20; j++) sys.L2[i].buffer_sizes[j] = 1;
+ sys.L2[i].total_accesses = 1;
+ sys.L2[i].read_accesses = 1;
+ sys.L2[i].write_accesses = 1;
+ sys.L2[i].total_hits = 1;
+ sys.L2[i].total_misses = 1;
+ sys.L2[i].read_hits = 1;
+ sys.L2[i].write_hits = 1;
+ sys.L2[i].read_misses = 1;
+ sys.L2[i].write_misses = 1;
+ sys.L2[i].replacements = 1;
+ sys.L2[i].write_backs = 1;
+ sys.L2[i].miss_buffer_accesses = 1;
+ sys.L2[i].fill_buffer_accesses = 1;
+ sys.L2[i].prefetch_buffer_accesses = 1;
+ sys.L2[i].prefetch_buffer_writes = 1;
+ sys.L2[i].prefetch_buffer_reads = 1;
+ sys.L2[i].prefetch_buffer_hits = 1;
+ sys.L2[i].wbb_writes = 1;
+ sys.L2[i].wbb_reads = 1;
+ sys.L2[i].duty_cycle = 1;
+ sys.L2[i].merged_dir = false;
+ sys.L2[i].homenode_read_accesses = 1;
+ sys.L2[i].homenode_write_accesses = 1;
+ sys.L2[i].homenode_read_hits = 1;
+ sys.L2[i].homenode_write_hits = 1;
+ sys.L2[i].homenode_read_misses = 1;
+ sys.L2[i].homenode_write_misses = 1;
+ sys.L2[i].dir_duty_cycle = 1;
+ }
+ for (i = 0; i <= 63; i++) {
+ // system_L3
+ for (j = 0; j < 20; j++) sys.L3[i].L3_config[j] = 1;
+ sys.L3[i].clockrate = 1;
+ for (j = 0; j < 20; j++) sys.L3[i].ports[j] = 1;
+ sys.L3[i].device_type = 1;
+ strcpy(sys.L3[i].threeD_stack, "default");
+ for (j = 0; j < 20; j++) sys.L3[i].buffer_sizes[j] = 1;
+ sys.L3[i].total_accesses = 1;
+ sys.L3[i].read_accesses = 1;
+ sys.L3[i].write_accesses = 1;
+ sys.L3[i].total_hits = 1;
+ sys.L3[i].total_misses = 1;
+ sys.L3[i].read_hits = 1;
+ sys.L3[i].write_hits = 1;
+ sys.L3[i].read_misses = 1;
+ sys.L3[i].write_misses = 1;
+ sys.L3[i].replacements = 1;
+ sys.L3[i].write_backs = 1;
+ sys.L3[i].miss_buffer_accesses = 1;
+ sys.L3[i].fill_buffer_accesses = 1;
+ sys.L3[i].prefetch_buffer_accesses = 1;
+ sys.L3[i].prefetch_buffer_writes = 1;
+ sys.L3[i].prefetch_buffer_reads = 1;
+ sys.L3[i].prefetch_buffer_hits = 1;
+ sys.L3[i].wbb_writes = 1;
+ sys.L3[i].wbb_reads = 1;
+ sys.L3[i].duty_cycle = 1;
+ sys.L3[i].merged_dir = false;
+ sys.L3[i].homenode_read_accesses = 1;
+ sys.L3[i].homenode_write_accesses = 1;
+ sys.L3[i].homenode_read_hits = 1;
+ sys.L3[i].homenode_write_hits = 1;
+ sys.L3[i].homenode_read_misses = 1;
+ sys.L3[i].homenode_write_misses = 1;
+ sys.L3[i].dir_duty_cycle = 1;
+ }
+ // system_NoC
+ for (i = 0; i <= 63; i++) {
+ sys.NoC[i].clockrate = 1;
+ sys.NoC[i].type = true;
+ sys.NoC[i].chip_coverage = 1;
+ sys.NoC[i].has_global_link = true;
+ strcpy(sys.NoC[i].topology, "default");
+ sys.NoC[i].horizontal_nodes = 1;
+ sys.NoC[i].vertical_nodes = 1;
+ sys.NoC[i].input_ports = 1;
+ sys.NoC[i].output_ports = 1;
+ sys.NoC[i].virtual_channel_per_port = 1;
+ sys.NoC[i].flit_bits = 1;
+ sys.NoC[i].input_buffer_entries_per_vc = 1;
+ sys.NoC[i].total_accesses = 1;
+ sys.NoC[i].duty_cycle = 1;
+ sys.NoC[i].route_over_perc = 0.5;
+ for (j = 0; j < 20; j++) sys.NoC[i].ports_of_input_buffer[j] = 1;
+ sys.NoC[i].number_of_crossbars = 1;
+ strcpy(sys.NoC[i].crossbar_type, "default");
+ strcpy(sys.NoC[i].crosspoint_type, "default");
+ // system.NoC?.xbar0;
+ sys.NoC[i].xbar0.number_of_inputs_of_crossbars = 1;
+ sys.NoC[i].xbar0.number_of_outputs_of_crossbars = 1;
+ sys.NoC[i].xbar0.flit_bits = 1;
+ sys.NoC[i].xbar0.input_buffer_entries_per_port = 1;
+ sys.NoC[i].xbar0.ports_of_input_buffer[20] = 1;
+ sys.NoC[i].xbar0.crossbar_accesses = 1;
+ }
+ // system_mem
+ sys.mem.mem_tech_node = 1;
+ sys.mem.device_clock = 1;
+ sys.mem.capacity_per_channel = 1;
+ sys.mem.number_ranks = 1;
+ sys.mem.peak_transfer_rate = 1;
+ sys.mem.num_banks_of_DRAM_chip = 1;
+ sys.mem.Block_width_of_DRAM_chip = 1;
+ sys.mem.output_width_of_DRAM_chip = 1;
+ sys.mem.page_size_of_DRAM_chip = 1;
+ sys.mem.burstlength_of_DRAM_chip = 1;
+ sys.mem.internal_prefetch_of_DRAM_chip = 1;
+ sys.mem.memory_accesses = 1;
+ sys.mem.memory_reads = 1;
+ sys.mem.memory_writes = 1;
- //system_mc
- sys.mc.mc_clock =1;
- sys.mc.number_mcs=1;
- sys.mc.peak_transfer_rate =1;
- sys.mc.memory_channels_per_mc=1;
- sys.mc.number_ranks=1;
- sys.mc.req_window_size_per_channel=1;
- sys.mc.IO_buffer_size_per_channel=1;
- sys.mc.databus_width=1;
- sys.mc.addressbus_width=1;
- sys.mc.memory_accesses=1;
- sys.mc.memory_reads=1;
- sys.mc.memory_writes=1;
- sys.mc.LVDS=true;
- sys.mc.type=1;
+ // system_mc
+ sys.mc.mc_clock = 1;
+ sys.mc.number_mcs = 1;
+ sys.mc.peak_transfer_rate = 1;
+ sys.mc.memory_channels_per_mc = 1;
+ sys.mc.number_ranks = 1;
+ sys.mc.req_window_size_per_channel = 1;
+ sys.mc.IO_buffer_size_per_channel = 1;
+ sys.mc.databus_width = 1;
+ sys.mc.addressbus_width = 1;
+ sys.mc.memory_accesses = 1;
+ sys.mc.memory_reads = 1;
+ sys.mc.memory_writes = 1;
+ sys.mc.LVDS = true;
+ sys.mc.type = 1;
- //system_niu
- sys.niu.clockrate =1;
- sys.niu.number_units=1;
- sys.niu.type = 1;
- sys.niu.duty_cycle =1;
- sys.niu.total_load_perc=1;
- //system_pcie
- sys.pcie.clockrate =1;
- sys.pcie.number_units=1;
- sys.pcie.num_channels=1;
- sys.pcie.type = 1;
- sys.pcie.withPHY = false;
- sys.pcie.duty_cycle =1;
- sys.pcie.total_load_perc=1;
- //system_flash_controller
- sys.flashc.mc_clock =1;
- sys.flashc.number_mcs=1;
- sys.flashc.peak_transfer_rate =1;
- sys.flashc.memory_channels_per_mc=1;
- sys.flashc.number_ranks=1;
- sys.flashc.req_window_size_per_channel=1;
- sys.flashc.IO_buffer_size_per_channel=1;
- sys.flashc.databus_width=1;
- sys.flashc.addressbus_width=1;
- sys.flashc.memory_accesses=1;
- sys.flashc.memory_reads=1;
- sys.flashc.memory_writes=1;
- sys.flashc.LVDS=true;
- sys.flashc.withPHY = false;
- sys.flashc.type =1;
- sys.flashc.duty_cycle =1;
- sys.flashc.total_load_perc=1;
+ // system_niu
+ sys.niu.clockrate = 1;
+ sys.niu.number_units = 1;
+ sys.niu.type = 1;
+ sys.niu.duty_cycle = 1;
+ sys.niu.total_load_perc = 1;
+ // system_pcie
+ sys.pcie.clockrate = 1;
+ sys.pcie.number_units = 1;
+ sys.pcie.num_channels = 1;
+ sys.pcie.type = 1;
+ sys.pcie.withPHY = false;
+ sys.pcie.duty_cycle = 1;
+ sys.pcie.total_load_perc = 1;
+ // system_flash_controller
+ sys.flashc.mc_clock = 1;
+ sys.flashc.number_mcs = 1;
+ sys.flashc.peak_transfer_rate = 1;
+ sys.flashc.memory_channels_per_mc = 1;
+ sys.flashc.number_ranks = 1;
+ sys.flashc.req_window_size_per_channel = 1;
+ sys.flashc.IO_buffer_size_per_channel = 1;
+ sys.flashc.databus_width = 1;
+ sys.flashc.addressbus_width = 1;
+ sys.flashc.memory_accesses = 1;
+ sys.flashc.memory_reads = 1;
+ sys.flashc.memory_writes = 1;
+ sys.flashc.LVDS = true;
+ sys.flashc.withPHY = false;
+ sys.flashc.type = 1;
+ sys.flashc.duty_cycle = 1;
+ sys.flashc.total_load_perc = 1;
}