blob: b0dfeaa39b4ee628a9627e084c8d3bac26b62927 [file] [log] [blame]
/*****************************************************************************
* McPAT
* SOFTWARE LICENSE AGREEMENT
* Copyright 2012 Hewlett-Packard Development Company, L.P.
* All Rights Reserved
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.”
*
***************************************************************************/
#ifndef ARCH_CONST_H_
#define ARCH_CONST_H_
typedef struct{
unsigned int capacity;
unsigned int assoc;//fully
unsigned int blocksize;
} array_inputs;
//Do Not change, unless you want to bypass the XML interface and do not care about the default values.
//Global parameters
const int number_of_cores = 8;
const int number_of_L2s = 1;
const int number_of_L3s = 1;
const int number_of_NoCs = 1;
const double archi_F_sz_nm = 90.0;
const unsigned int dev_type = 0;
const double CLOCKRATE = 1.2*1e9;
const double AF = 0.5;
//const bool inorder = true;
const bool embedded = false; //NEW
const bool homogeneous_cores = true;
const bool temperature = 360;
const int number_cache_levels = 3;
const int L1_property = 0; //private 0; coherent 1, shared 2.
const int L2_property = 2;
const bool homogeneous_L2s = true;
const bool L3_property = 2;
const bool homogeneous_L3s = true;
const double Max_area_deviation = 50;
const double Max_dynamic_deviation =50; //New
const int opt_dynamic_power = 1;
const int opt_lakage_power = 0;
const int opt_area = 0;
const int interconnect_projection_type = 0;
//******************************Core Parameters
#if (inorder)
const int opcode_length = 8;//Niagara
const int reg_length = 5;//Niagara
const int instruction_length = 32;//Niagara
const int data_width = 64;
#else
const int opcode_length = 8;//16;//Niagara
const int reg_length = 7;//Niagara
const int instruction_length = 32;//Niagara
const int data_width = 64;
#endif
//Caches
//itlb
const int itlbsize=512;
const int itlbassoc=0;//fully
const int itlbblocksize=8;
//icache
const int icachesize=32768;
const int icacheassoc=4;
const int icacheblocksize=32;
//dtlb
const int dtlbsize=512;
const int dtlbassoc=0;//fully
const int dtlbblocksize=8;
//dcache
const int dcachesize=32768;
const int dcacheassoc=4;
const int dcacheblocksize=32;
const int dcache_write_buffers=8;
//cache controllers
//IB,
const int numIBEntries = 64;
const int IBsize = 64;//2*4*instruction_length/8*2;
const int IBassoc = 0;//In Niagara it is still fully associ
const int IBblocksize = 4;
//IFB and MIL should have the same parameters CAM
const int IFBsize=128;//
const int IFBassoc=0;//In Niagara it is still fully associ
const int IFBblocksize=4;
const int icache_write_buffers=8;
//register file RAM
const int regfilesize=5760;
const int regfileassoc=1;
const int regfileblocksize=18;
//regwin RAM
const int regwinsize=256;
const int regwinassoc=1;
const int regwinblocksize=8;
//store buffer, lsq
const int lsqsize=512;
const int lsqassoc=0;
const int lsqblocksize=8;
//data fill queue RAM
const int dfqsize=1024;
const int dfqassoc=1;
const int dfqblocksize=16;
//outside the cores
//L2 cache bank
const int l2cachesize=262144;
const int l2cacheassoc=16;
const int l2cacheblocksize=64;
//L2 directory
const int l2dirsize=1024;
const int l2dirassoc=0;
const int l2dirblocksize=2;
//crossbar
//PCX
const int PCX_NUMBER_INPUT_PORTS_CROSSBAR = 8;
const int PCX_NUMBER_OUTPUT_PORTS_CROSSBAR = 9;
const int PCX_NUMBER_SIGNALS_PER_PORT_CROSSBAR =144;
//PCX buffer RAM
const int pcx_buffersize=1024;
const int pcx_bufferassoc=1;
const int pcx_bufferblocksize=32;
const int pcx_numbuffer=5;
//pcx arbiter
const int pcx_arbsize=128;
const int pcx_arbassoc=1;
const int pcx_arbblocksize=2;
const int pcx_numarb=5;
//CPX
const int CPX_NUMBER_INPUT_PORTS_CROSSBAR = 5;
const int CPX_NUMBER_OUTPUT_PORTS_CROSSBAR = 8;
const int CPX_NUMBER_SIGNALS_PER_PORT_CROSSBAR =150;
//CPX buffer RAM
const int cpx_buffersize=1024;
const int cpx_bufferassoc=1;
const int cpx_bufferblocksize=32;
const int cpx_numbuffer=8;
//cpx arbiter
const int cpx_arbsize=128;
const int cpx_arbassoc=1;
const int cpx_arbblocksize=2;
const int cpx_numarb=8;
const int numPhysFloatRegs=256;
const int numPhysIntRegs=32;
const int numROBEntries=192;
const int umRobs=1;
const int BTBEntries=4096;
const int BTBTagSize=16;
const int LFSTSize=1024;
const int LQEntries=32;
const int RASSize=16;
const int SQEntries=32;
const int SSITSize=1024;
const int activity=0;
const int backComSize=5;
const int cachePorts=200;
const int choiceCtrBits=2;
const int choicePredictorSize=8192;
const int commitWidth=8;
const int decodeWidth=8;
const int dispatchWidth=8;
const int fetchWidth=8;
const int issueWidth=1;
const int renameWidth=8;
//what is this forwardComSize=5??
const int globalCtrBits=2;
const int globalHistoryBits=13;
const int globalPredictorSize=8192;
const int localCtrBits=2;
const int localHistoryBits=11;
const int localHistoryTableSize=2048;
const int localPredictorSize=2048;
const double Woutdrvnandn =30 *0.09;//(24.0 * LSCALE)
const double Woutdrvnandp =12.5 *0.09;//(10.0 * LSCALE)
const double Woutdrvnorn =7.5*0.09;//(6.0 * LSCALE)
const double Woutdrvnorp =50 * 0.09;// (40.0 * LSCALE)
const double Woutdrivern =60*0.09;//(48.0 * LSCALE)
const double Woutdriverp =100 * 0.09;//(80.0 * LSCALE)
/*
smtCommitPolicy=RoundRobin
smtFetchPolicy=SingleThread
smtIQPolicy=Partitioned
smtIQThreshold=100
smtLSQPolicy=Partitioned
smtLSQThreshold=100
smtNumFetchingThreads=1
smtROBPolicy=Partitioned
smtROBThreshold=100
squashWidth=8
*/
/*
prefetch_access=false
prefetch_cache_check_push=true
prefetch_data_accesses_only=false
prefetch_degree=1
prefetch_latency=10000
prefetch_miss=false
prefetch_past_page=false
prefetch_policy=none
prefetch_serial_squash=false
prefetch_use_cpu_id=true
prefetcher_size=100
prioritizeRequests=false
repl=Null
split=false
split_size=0
subblock_size=0
tgts_per_mshr=20
trace_addr=0
two_queue=false
cpu_side=system.cpu0.dcache_port
mem_side=system.tol2bus.port[2]
*/
//[system.cpu0.dtb]
//type=AlphaDT
#endif /* ARCH_CONST_H_ */