⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 def.h.svn-base

📁 模拟多核状态下龙芯处理器的功能
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
double Cdectreesegments[10], Rdectreesegments[10];
int    nr_dectreesegments;
double Wdec3to8n ;
double Wdec3to8p ;
double WdecNORn  ;
double WdecNORp  ;
double Wdecinvn  ;
double Wdecinvp  ;
double WwlDrvn ;
double WwlDrvp ;

double Wtdecdrivep_second;
double Wtdecdriven_second;
double Wtdecdrivep_first;
double Wtdecdriven_first;
double WtdecdrivetreeN[10];
double Ctdectreesegments[10], Rtdectreesegments[10];
int    nr_tdectreesegments;
double Wtdec3to8n ;
double Wtdec3to8p ;
double WtdecNORn  ;
double WtdecNORp  ;
double Wtdecinvn  ;
double Wtdecinvp  ;
double WtwlDrvn ;
double WtwlDrvp ;


/* #define Wmemcella	(2.4)
// added by MnM
// #define Wmemcellpmos (4.0)
// #define Wmemcellnmos (2.0)
*/

//#define Wmemcella	(0.9)
double Wmemcella;

/* added by MnM */
//#define Wmemcellpmos (0.65)
double Wmemcellpmos;
//#define Wmemcellnmos (2.0)
double Wmemcellnmos;


//#define Wmemcellbscale	2		/* means 2x bigger than Wmemcella */
int Wmemcellbscale;
/* #define Wbitpreequ	(80.0) */
double Wbitpreequ;
//#define Wpchmax		(25.0) /* precharge transistor sizes usually do not exceed 25 */
double Wpchmax;


/* #define Wbitmuxn	(10.0)
//#define WsenseQ1to4	(4.0) */

double Wpch;
double Wiso;
double WsenseEn;
double WsenseN;
double WsenseP;
double WsPch;
double WoBufN;
double WoBufP;

double WpchDrvp, WpchDrvn;
double WisoDrvp, WisoDrvn;
double WspchDrvp, WspchDrvn;
double WsenseEnDrvp, WsenseEnDrvn;

double WwrtMuxSelDrvn;
double WwrtMuxSelDrvp;
double WtwrtMuxSelDrvn;
double WtwrtMuxSelDrvp;

double Wtbitpreequ;
double Wtpch;
double Wtiso;
double WtsenseEn;
double WtsenseN;
double WtsenseP;
double WtoBufN;
double WtoBufP;
double WtsPch;

double WtpchDrvp, WtpchDrvn;
double WtisoDrvp, WtisoDrvn;
double WtspchDrvp, WtspchDrvn;
double WtsenseEnDrvp, WtsenseEnDrvn;

//#define Wcompinvp1	(10.0)
double Wcompinvp1;
//#define Wcompinvn1	(6.0)
double Wcompinvn1;
//#define Wcompinvp2	(20.0)
double Wcompinvp2;
//#define Wcompinvn2	(12.0)
double Wcompinvn2;
//#define Wcompinvp3	(40.0)
double Wcompinvp3;
//#define Wcompinvn3	(24.0)
double Wcompinvn3;
//#define Wevalinvp	(80.0)
double Wevalinvp;
//#define Wevalinvn	(40.0)
double Wevalinvn;

//#define Wfadriven    (50.0)
double Wfadriven;
//#define Wfadrivep    (100.0)
double Wfadrivep;
//#define Wfadrive2n    (200.0)
double Wfadrive2n;
//#define Wfadrive2p    (400.0)
double Wfadrive2p;
//#define Wfadecdrive1n    (5.0)
double Wfadecdrive1n;
//#define Wfadecdrive1p    (10.0)
double Wfadecdrive1p;
//#define Wfadecdrive2n    (20.0)
double Wfadecdrive2n;
//#define Wfadecdrive2p    (40.0)
double Wfadecdrive2p;
//#define Wfadecdriven    (50.0)
double Wfadecdriven;
//#define Wfadecdrivep    (100.0)
double Wfadecdrivep;
//#define Wfaprechn       (6.0)
double Wfaprechn;
//#define Wfaprechp       (10.0)
double Wfaprechp;
//#define Wdummyn         (10.0)
double Wdummyn;
//#define Wdummyinvn      (60.0)
double Wdummyinvn;
//#define Wdummyinvp      (80.0)
double Wdummyinvp;
//#define Wfainvn         (10.0)
double Wfainvn;
//#define Wfainvp         (20.0)
double Wfainvp;
//#define Waddrnandn      (50.0)
double Waddrnandn;
//#define Waddrnandp      (50.0)
double Waddrnandp;
//#define Wfanandn        (20.0)
double Wfanandn;
//#define Wfanandp        (30.0)
double Wfanandp;
//#define Wfanorn         (5.0)
double Wfanorn;
//#define Wfanorp         (10.0)
double Wfanorp;
//#define Wdecnandn       (10.0)
double Wdecnandn;
//#define Wdecnandp       (30.0)
double Wdecnandp;

//#define Wcompn		(10.0)
double Wcompn;
//#define Wcompp		(30.0)
double Wcompp;
//#define Wmuxdrv12n	(60.0)
double Wmuxdrv12n;
//#define Wmuxdrv12p	(100.0)
double Wmuxdrv12p;

/* #define WmuxdrvNANDn    (60.0)
//#define WmuxdrvNANDp    (80.0)
//#define WmuxdrvNORn	(40.0)
//#define WmuxdrvNORp	(100.0)
//#define Wmuxdrv3n	(80.0)
//#define Wmuxdrv3p	(200.0)
// #define Woutdrvseln	(24.0)
// #define Woutdrvselp	(40.0)
*/

double Coutdrvtreesegments[20], Routdrvtreesegments[20];
double WoutdrvtreeN[20];
int    nr_outdrvtreesegments;

double Cmuxdrvtreesegments[20], Rmuxdrvtreesegments[20];
double WmuxdrvtreeN[20];
int    nr_muxdrvtreesegments;

double WmuxdrvNANDn    ;
double WmuxdrvNANDp    ;
double WmuxdrvNORn	;
double WmuxdrvNORp	;
double Wmuxdrv3n	;
double Wmuxdrv3p	;
double Woutdrvseln	;
double Woutdrvselp	;


/* #define Woutdrvnandn	(10.0)
//#define Woutdrvnandp	(30.0)
//#define Woutdrvnorn	(5.0)
//#define Woutdrvnorp	(20.0)
//#define Woutdrivern	(48.0)
//#define Woutdriverp	(80.0)
*/

double Woutdrvnandn;
double Woutdrvnandp;
double Woutdrvnorn	;
double Woutdrvnorp	;
double Woutdrivern	;
double Woutdriverp	;


//#define Wsenseextdrv1p (80.0)
double Wsenseextdrv1p;
//#define Wsenseextdrv1n (40.0)
double Wsenseextdrv1n;
//#define Wsenseextdrv2p (240.0)
double Wsenseextdrv2p;
//#define Wsenseextdrv2n (160.0)
double Wsenseextdrv2n;


/* other stuff (from tech report, appendix 1) */

//#define krise		(0.4e-9)
double krise;
//#define tsensedata	(5.8e-10)
double tsensedata;
// #define psensedata      (0.025e-9)
//#define psensedata      (0.02e-9)
double psensedata;
//#define tsensescale     0.02e-10
double tsensescale;
//#define tsensetag	(2.6e-10)
double tsensetag;
// #define psensetag       (0.01e-9)
//#define psensetag	(0.016e-9)
double psensetag;
//#define tfalldata	(7e-10)
double tfalldata;
//#define tfalltag	(7e-10)
double tfalltag;
#define Vbitpre		(3.3)
static double VbitprePow;
#define Vt		(1.09)
/*
was: #define Vbitsense	(0.10)
now: 50mV seems to be the norm as of 2005
*/
#define Vbitsense	(0.05*Vdd)
#define Vbitswing	(0.20*Vdd)

/* bit width of RAM cell in um */
/*
was:
#define BitWidth	(8.0)
*/
//#define BitWidth	7.746*0.8
double BitWidth;

/* bit height of RAM cell in um */
/*
was:
#define BitHeight	(16.0)
*/
//#define BitHeight	2*7.746*0.8
double BitHeight;

//#define Cout		(0.5e-12)
double Cout;

int dualVt ;
int explore;
/*===================================================================*/

/*
 * The following are things you probably wouldn't want to change.  
 */


#define TRUE 1
#define FALSE 0
#ifndef NULL
#define NULL 0
#endif
#define OK 1
#define ERROR 0
#define BIGNUM 1e30
#define DIVIDE(a,b) ((b)==0)? 0:(a)/(b)
#define MAX(a,b) (((a)>(b))?(a):(b))

#define WAVE_PIPE 3
#define MAX_COL_MUX 16

/* Used to communicate with the horowitz model */

#define RISE 1
#define FALL 0
#define NCH  1
#define PCH  0


/* Used to pass values around the program */

/*dt: maximum numbers of entries in the 
      caching structures of the tag calculations
*/
#define MAX_CACHE_ENTRIES 512

static int sequential_access_flag;
static int fast_cache_access_flag;
int pure_sram_flag; //Changed from static int to just int as value wasn't getting passed through to 
//area function in area.c

#define EPSILON 0.5 //v4.1: This constant is being used in order to fix floating point -> integer
//conversion problems that were occuring within CACTI. Typical problem that was occuring was
//that with different compilers a floating point number like 3.0 would get represented as either 
//2.9999....or 3.00000001 and then the integer part of the floating point number (3.0) would 
//be computed differently depending on the compiler. What we are doing now is to replace 
//int (x) with (int) (x+EPSILON) where EPSILON is 0.5. This would fix such problems. Note that
//this works only when x is an integer >= 0. 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -