亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fxu_pli_utils.c

?? arm10_verilog.rar是基于arm10的verilog代碼
?? C
字號:
#include <stdio.h>#include <stdlib.h>#include "/nfs/ds.eecs.umich.edu/ecad2/solaris/vcs3.1.3/sun_sparc_solaris_5.4/lib/acc_user.h"#define SERVER_MAX_LINE_LENGTH 80#define INC_PTR(_ptr,_base, _size)\  if((++_ptr - _base)  >= _size) _ptr = _base;#define STORE_BUFFER_SIZE 100void dumpr();void simdumpr();struct Store_Record  {    unsigned	addr;    unsigned	data;  };FILE *regfile;int verify_enable;struct Store_Record *store_head, *store_tail;void init_sim(){  char *filename;  FILE *infile;  char input_string[80];  int scan_flag;  int *limit,*checkpoint,*timeout;  filename=(char *)tf_getcstringp(1);  if((infile=(fopen(filename,"r")))==NULL) {    tf_error("Cannot open '%s' file for reading\n",filename);    tf_dofinish();  }  scan_flag = fscanf (infile, "%s ", input_string);  while(scan_flag != EOF){    if( (strcmp(input_string, "instr_limit") == 0)){      fscanf(infile, "%d ", &limit);    }    else if( (strcmp(input_string, "checkpoint") == 0)){      fscanf(infile, "%d ", &checkpoint);    }    else if( (strcmp(input_string, "timeout") == 0)){      fscanf(infile, "%d ", &timeout);    }    else{      tf_error("incorrect simulation init variable '%s'\n",input_string);      tf_dofinish();    }    scan_flag = fscanf (infile, "%s ", input_string);  }  tf_putp(2,limit);		/* instr limit */  tf_putp(3,checkpoint);	/* next checkpoint */  tf_putp(4,timeout);		/* timeout */  fclose(infile);  store_head = (struct Store_Record *)               calloc (STORE_BUFFER_SIZE, sizeof(*store_head));   store_tail = store_head;}void init_state(){  char *filename;  FILE *infile;  char hname[80];  char input_string[80];  int scan_flag;  handle reg;  static s_setval_delay delay_s = {{accRealTime}, accNoDelay};  char str[80];  static s_setval_value value_s = {accHexStrVal};  /* read values from command line and determine simulatin configuration */  /* open a file to read from */  filename=(char *)tf_getcstringp(1);  if((infile=(fopen(filename,"r")))==NULL) {    tf_error("Cannot open '%s' file for reading\n",filename);    tf_dofinish();  } //not doing this anymore... hard coded in initial values.  /* open a file to write register values to */  filename=(char *)tf_getcstringp(2);  if((regfile=(fopen(filename,"w")))==NULL) {    tf_error("Cannot open '%s' file for writing\n",filename);    tf_dofinish();  }  //delay_s.time.real = 0;  scan_flag = fscanf (infile, "%s ", input_string);  while(scan_flag != EOF){    /* set any gpr values, they begin with an 'r' */    if(input_string[0] == 'r'){      fscanf(infile, "%s ", &str);      if(str[0]=='0' && str[1]=='x') {           value_s.value.str = str+2; //used to be &str      } else {	   value_s.value.str = str;      }      fprintf(stdout, "%s = %s\n",input_string,value_s.value.str);      sprintf(hname,"%s%s","test_arm.arm10.",input_string);      reg = acc_handle_object(hname);      acc_set_value(reg,&value_s,&delay_s);      fprintf(stdout, "%s = %s\n",input_string,acc_fetch_value(reg,"%x"));    }    /* the pc is really just r15, but oh well */    else if( (strcmp(input_string, "cia") == 0)){      fscanf(infile, "%s ", &str);      value_s.value.str = str; //used to be &str      fprintf(stdout, "cia = %s\n",value_s.value.str);      //sprintf(&hname,"%s","test_arm.arm10.PC",input_string);      reg = acc_handle_object("test_arm.arm10.r15");      acc_set_value(reg,&value_s,&delay_s);      fprintf(stdout, "pc = %s\n",acc_fetch_value(reg,"%x"));    }    /* misc registers */    else{      fscanf(infile, "%s ", &str);      value_s.value.str = str; //used to be &str      fprintf(stdout, "%s = %s\n",input_string,value_s.value.str);      sprintf(hname,"%s%s","test_arm10.",input_string);      reg = acc_handle_object(hname);      acc_set_value(reg,&value_s,&delay_s);      fprintf(stdout, "%s = %s\n",input_string,acc_fetch_value(reg,"%x"));    }    //fprintf(stdout, "input_string = %s\n",input_string);    scan_flag = fscanf (infile, "%s ", input_string);  }  fclose(infile); //hardcoded values in the verilog file}/* Main loop for checker */void check_state(){  int icount;	/* current instruction count */  int icheck;	/* instruction checkpoint */  int ilimit;	/* the maximum number of instructions */  int timer;	/* current cycle count */  int timeout;	/* the maximum number of cycles */  int istep;	/* checkpoint interval */   /* update with next next checkpoint (gloabl instruction number) */  int current_time;	/* current time */  char input_line[SERVER_MAX_LINE_LENGTH];  char output_line[SERVER_MAX_LINE_LENGTH];  static int executing_step = 0;  istep = 10;  current_time = tf_gettime();  if(tf_nump() != 5) {    tf_error("Improper use of command $check_state\n");    tf_error("  Usage: $check_state(icount,icheck,ilimit,timer,timeout);\n");    tf_dofinish();  }  icount = tf_getp(1);  icheck = tf_getp(2);  ilimit = tf_getp(3);  timer = tf_getp(4);  timeout = tf_getp(5);      fprintf(stderr,"check_state: %d\n icount = %d\n icheck = %d\n",current_time,icount,icheck);    fprintf(stderr," ilimit = %d\n timer = %d\n timeout = %d\n",ilimit,timer,timeout);      if (verify_enable)    {      /* Did we just return from a "step" command? If yes, print "done" */      if (executing_step)	{	  executing_step=0;	  fprintf(stdout,"sim: done\n");	  fflush(stdout);	}      /* Main loop for accepting interactive commands */      for(;;)	{	  gets(input_line);	  if (!strcmp(input_line,"send_state"))	    {	      simdumpr();	    }          else if (!strcmp(input_line,"send_stores"))            {              send_stores();            }	  else if (!strncmp(input_line,"step",4))	    {	      int instructions = 0;	      /* get argument on next line (number of steps) */	      //gets(input_line);	      if (1==sscanf(input_line+4,"%i",&istep))		{		  tf_putp(2,icheck + istep);		  executing_step = 1;		  return; /* give up control to verilog to run the instructions */		}	      else		fprintf(stdout,"sim: ERROR(0) argument to step was wrong\n");	    }	  else if (!strcmp(input_line,"quit"))	    {	      tf_dofinish();	    }	  else	    {	      fprintf(stdout,"sim: ERROR(0) Unknown command '%s'\n",input_line);	    }	  /* Send this after every command is executed */	  fprintf(stdout,"sim: done\n");	  fflush(stdout);	}    }  else    {      /* at a checkpoint, dump registers and save state */      if(icount == icheck){	if(verify_enable){simdumpr();}	else{dumpr();}	tf_putp(2,icheck + istep);      }      /* icount has reached the limit */      if(icount >= ilimit || timer >= timeout){	if(icount >= ilimit)	  fprintf(stdout,"instr_count = %d has reached instr_limit\n",icount);	else 	  fprintf(stdout,"simulation has reached timeout at %d cycles",timeout);	fflush(stdout);	fclose(regfile);	tf_dofinish();      }    }}void dumpr(){  int i,j;  handle reg;  char hname[80];  /*    I-addr: 0x00001028    GPR00: 0x0000302c   GPR01: 0x0000584b   GPR02: 0x0000721b   GPR03: 0x00003797    GPR04: 0x000075fa   GPR05: 0x000059ff   GPR06: 0x000075c9   GPR07: 0x000061bb    GPR08: 0x00007631   GPR09: 0x000069bb   GPR10: 0x00004602   GPR11: 0x00000000    GPR12: 0x00000000   GPR13: 0x00000000   GPR14: 0x00000000   GPR15: 0x00000000    GPR16: 0x00000000   GPR17: 0x00000000   GPR18: 0x00000000   GPR19: 0x00000000    GPR20: 0x00000000   GPR21: 0x00000000   GPR22: 0x00000000   GPR23: 0x00000000    GPR24: 0x00000000   GPR25: 0x00000000   GPR26: 0x00000000   GPR27: 0x00000000    GPR28: 0x00000000   GPR29: 0x00000000   GPR30: 0x00000000   GPR31: 0x00000000    LKR: 0x00000000 CTR: 0x00000000 CR: 0x00000000 XER: 0x00000000    MSR: 0x00006940 SRR0: 0x00000000 SRR1: 0x00000000    --------------------    */  /* get the instr address */  sprintf(hname,"%s","test_arm.arm10.PC");  reg = acc_handle_object(hname);  fprintf(regfile, "I-addr: 0x%s\n",acc_fetch_value(reg,"%x"));  /* get the gpr register values */  for(i=0;i<3;i++){    for(j=0;j<4;j++){      sprintf(hname,"%s%d","test_arm.arm10.r",i*4 + j);      reg = acc_handle_object(hname);      fprintf(regfile, "GPR%02d: 0x%s   ",i*4 + j,acc_fetch_value(reg,"%x"));    }    fprintf(regfile,"\n");  }  /* get special variables */	reg=acc_handle_object("test_arm.arm10.CPSR");	fprintf(regfile, "CPSR: 0x%s\n",acc_fetch_value(reg,"%x"));        reg=acc_handle_object("test_arm.arm10.SPSR_fiq");        fprintf(regfile, "CPSR: 0x%s\n",acc_fetch_value(reg,"%x"));        reg=acc_handle_object("test_arm.arm10.SPSR_svc");        fprintf(regfile, "CPSR: 0x%s\n",acc_fetch_value(reg,"%x"));        reg=acc_handle_object("test_arm.arm10.SPSR_abt");        fprintf(regfile, "CPSR: 0x%s\n",acc_fetch_value(reg,"%x"));        reg=acc_handle_object("test_arm.arm10.SPSR_irq");        fprintf(regfile, "CPSR: 0x%s\n",acc_fetch_value(reg,"%x"));        reg=acc_handle_object("test_arm.arm10.SPSR_und");        fprintf(regfile, "CPSR: 0x%s\n",acc_fetch_value(reg,"%x"));/* kept around as an example of how they did it for puma  sprintf(&hname,"%s","test_fxu_main.fxu.core.rf.misc.srr1");  reg = acc_handle_object(hname);  fprintf(regfile, "SRR1: 0x%s\n",acc_fetch_value(reg,"%x"));*/  fprintf(regfile,"--------------------\n");  fflush(NULL);}void simdumpr(){  int i,j;  handle reg;  char hname[80];  /*    I-addr: 0x00001028    GPR00: 0x0000302c   GPR01: 0x0000584b   GPR02: 0x0000721b   GPR03: 0x00003797    GPR04: 0x000075fa   GPR05: 0x000059ff   GPR06: 0x000075c9   GPR07: 0x000061bb    GPR08: 0x00007631   GPR09: 0x000069bb   GPR10: 0x00004602   GPR11: 0x00000000    GPR12: 0x00000000   GPR13: 0x00000000   GPR14: 0x00000000   GPR15: 0x00000000    GPR16: 0x00000000   GPR17: 0x00000000   GPR18: 0x00000000   GPR19: 0x00000000    GPR20: 0x00000000   GPR21: 0x00000000   GPR22: 0x00000000   GPR23: 0x00000000    GPR24: 0x00000000   GPR25: 0x00000000   GPR26: 0x00000000   GPR27: 0x00000000    GPR28: 0x00000000   GPR29: 0x00000000   GPR30: 0x00000000   GPR31: 0x00000000    LKR: 0x00000000 CTR: 0x00000000 CR: 0x00000000 XER: 0x00000000    MSR: 0x00006940 SRR0: 0x00000000 SRR1: 0x00000000    --------------------    */  /*fprintf(stdout, "sim: time %d\n",tf_gettime());*/  /* get the instr address */  sprintf(hname,"%s","test_arm.arm10.PC");  reg = acc_handle_object(hname);  fprintf(stdout, "sim: reg pc=0x%s\n",acc_fetch_value(reg,"%x"));  /* get the gpr register values */  for(i=0;i<15;i++){    sprintf(hname,"%s%d","test_arm.arm10.r",i);    reg = acc_handle_object(hname);    fprintf(stdout, "sim: reg r%d=0x%s\n",i,acc_fetch_value(reg,"%x"));  }  /* get the banked register values */  for(i=8;i<15;i++){ // FIQ banked regs  	sprintf(hname,"test_arm.arm10.r%d",i+8);	reg=acc_handle_object(hname);	fprintf(stdout, "sim: reg r%d_fiq=0x%s\n",i,acc_fetch_value(reg,"%x"));  }  for(i=13;i<15;i++){ // SVC banked regs        sprintf(hname,"test_arm.arm10.r%d",i+10);        reg=acc_handle_object(hname);        fprintf(stdout, "sim: reg r%d_svc=0x%s\n",i,acc_fetch_value(reg,"%x"));  }  for(i=13;i<15;i++){ // ABT banked regs        sprintf(hname,"test_arm.arm10.r%d",i+12);        reg=acc_handle_object(hname);        fprintf(stdout, "sim: reg r%d_abt=0x%s\n",i,acc_fetch_value(reg,"%x"));  }  for(i=13;i<15;i++){ // IRQ banked regs        sprintf(hname,"test_arm.arm10.r%d",i+14);        reg=acc_handle_object(hname);        fprintf(stdout, "sim: reg r%d_irq=0x%s\n",i,acc_fetch_value(reg,"%x"));  }  for(i=13;i<15;i++){ // UND banked regs        sprintf(hname,"test_arm.arm10.r%d",i+16);        reg=acc_handle_object(hname);        fprintf(stdout, "sim: reg r%d_und=0x%s\n",i,acc_fetch_value(reg,"%x"));  }  /* get program status registers */        reg=acc_handle_object("test_arm.arm10.CPSR");        fprintf(stdout, "sim: reg CPSR=0x%s\n",acc_fetch_value(reg,"%x"));        reg=acc_handle_object("test_arm.arm10.SPSR_fiq");        fprintf(stdout, "sim: reg SPSR_fiq=0x%s\n",acc_fetch_value(reg,"%x"));        reg=acc_handle_object("test_arm.arm10.SPSR_svc");        fprintf(stdout, "sim: reg SPSR_svc=0x%s\n",acc_fetch_value(reg,"%x"));        reg=acc_handle_object("test_arm.arm10.SPSR_abt");        fprintf(stdout, "sim: reg SPSR_abt=0x%s\n",acc_fetch_value(reg,"%x"));        reg=acc_handle_object("test_arm.arm10.SPSR_irq");        fprintf(stdout, "sim: reg SPSR_irq=0x%s\n",acc_fetch_value(reg,"%x"));        reg=acc_handle_object("test_arm.arm10.SPSR_und");        fprintf(stdout, "sim: reg SPSR_und=0x%s\n",acc_fetch_value(reg,"%x"));  fflush(stdout);  fflush(NULL);}void reopen(){  char *filename;  /* open a file to write register values to */  filename=(char *)tf_getcstringp(1);  if((regfile=(fopen(filename,"a")))==NULL) {    tf_error("Cannot open '%s' file for appending\n",filename);    tf_dofinish();  }}void init_verify(){  /* set up the verification environment */  verify_enable = 1;}void save_store(){  int	store_addr;  int	store_data;  handle bus;  bus=acc_handle_object("test_arm.arm10.addr_bus");  store_addr = atoi(acc_fetch_value(bus,"%d"));  bus=acc_handle_object("test_arm.arm10.data_bus");  store_data = atoi(acc_fetch_value(bus,"%d"));  store_tail->addr = store_addr;  store_tail->data = store_data;  /*fprintf(stdout,"log_store: 0x%08x=0x%08x\n",                  store_tail->addr,store_tail->data);*/  /* increment the tail to point at the next free entry */  INC_PTR(store_tail,store_head,STORE_BUFFER_SIZE);  if(verify_enable && (store_head == store_tail)){    tf_error("The store buffer has wrapped around... exiting...\n");    tf_dofinish();  }}void send_stores(){  /* temporary ptr to step through the buffer */  struct Store_Record *store_ptr;  /* print all stores in the buffer */  for(store_ptr = store_head; store_ptr < store_tail; store_ptr++){    fprintf(stdout, "sim: 0x%08x=0x%08x\n",store_ptr->addr,store_ptr->data);  }  /* reset the buffer */  store_tail = store_head;  fflush(stdout);  fflush(NULL);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区av| 国内精品第一页| 久久久久久免费毛片精品| 99久久精品免费看国产| 日本va欧美va欧美va精品| 中文字幕一区二区三区在线观看| 日韩一区二区三区精品视频| 色婷婷久久久综合中文字幕| 国产精品亚洲一区二区三区在线| 首页综合国产亚洲丝袜| 国产精品久线观看视频| 精品少妇一区二区三区| 欧美日韩免费高清一区色橹橹 | 国产高清久久久久| 亚洲成人动漫精品| 一区视频在线播放| 国产嫩草影院久久久久| 日韩久久久久久| 欧美精品 日韩| 欧美写真视频网站| 不卡的av电影| 国产91富婆露脸刺激对白| 精品一区二区三区免费播放 | 成人午夜看片网址| 美女在线观看视频一区二区| 亚洲午夜精品久久久久久久久| 中文字幕一区二区三区色视频| 久久影院电视剧免费观看| 91精品国产综合久久精品| 欧美性色黄大片手机版| 色婷婷综合视频在线观看| 成人动漫av在线| 成a人片亚洲日本久久| 国产99久久久国产精品免费看| 激情五月婷婷综合网| 毛片av一区二区三区| 青草av.久久免费一区| 视频一区二区三区中文字幕| 亚洲超碰97人人做人人爱| 五月天网站亚洲| 亚洲va欧美va天堂v国产综合| 亚洲成人www| 天涯成人国产亚洲精品一区av| 亚洲国产精品久久久男人的天堂| 亚洲精品v日韩精品| 一区二区日韩电影| 一区二区高清视频在线观看| 一区二区三区精品| 亚洲一区二区欧美| 亚洲第一av色| 奇米888四色在线精品| 日本aⅴ亚洲精品中文乱码| 免费观看久久久4p| 美女视频黄 久久| 国产精品资源网站| 不卡的看片网站| 在线精品视频一区二区| 欧美婷婷六月丁香综合色| 欧美久久久久久蜜桃| 日韩免费视频一区| 久久久久久久久久久黄色| 国产欧美一区在线| 伊人性伊人情综合网| 午夜久久久久久| 狠狠色狠狠色合久久伊人| 国产成人精品亚洲午夜麻豆| 色琪琪一区二区三区亚洲区| 精品视频色一区| 精品少妇一区二区三区在线播放 | 久久免费精品国产久精品久久久久| 26uuu亚洲综合色欧美| 中文字幕精品三区| 亚洲另类中文字| 蜜桃av噜噜一区二区三区小说| 国产精品乡下勾搭老头1| 色久综合一二码| 精品久久国产老人久久综合| 国产精品久久久久久亚洲毛片 | 亚洲天堂福利av| 亚洲成在人线免费| 久久福利资源站| 暴力调教一区二区三区| 欧美日韩一区在线观看| 日本一区二区电影| 亚洲成人www| 丁香婷婷综合网| 欧美日本在线一区| 欧美极品美女视频| 日韩在线卡一卡二| 成人国产一区二区三区精品| 欧美电影影音先锋| 中文一区在线播放| 日韩精品成人一区二区在线| aa级大片欧美| 精品国产一区a| 亚洲永久精品国产| 成人激情校园春色| 欧美一区午夜视频在线观看 | 夜夜精品浪潮av一区二区三区| 精品一区二区三区在线观看 | 国产日产欧美精品一区二区三区| 亚洲成人av中文| 91在线观看污| 久久综合一区二区| 日韩电影一二三区| 色av成人天堂桃色av| 国产日韩欧美一区二区三区综合| 亚洲成在人线免费| 一本大道久久a久久综合| 久久精品视频在线看| 美女高潮久久久| 欧美日本乱大交xxxxx| 亚洲老妇xxxxxx| www.成人在线| 欧美激情一区二区三区不卡| 经典一区二区三区| 91精品国产综合久久婷婷香蕉 | 成人国产精品免费观看动漫| 精品国产髙清在线看国产毛片| 日韩激情视频在线观看| 欧美日韩一级二级三级| 亚洲免费视频成人| 99re这里都是精品| 亚洲特级片在线| 成人av先锋影音| 国产精品久久久久四虎| 国产成a人亚洲| 国产精品系列在线| 国产高清成人在线| 久久精品日韩一区二区三区| 国产一区二区不卡在线 | 亚洲欧美电影一区二区| av资源网一区| 亚洲丝袜精品丝袜在线| 99久久er热在这里只有精品15| 国产精品不卡在线| 99久久综合99久久综合网站| 亚洲日韩欧美一区二区在线| 一本大道综合伊人精品热热| 一区二区三区在线观看国产| 日本高清不卡视频| 亚洲va欧美va人人爽| 在线电影欧美成精品| 奇米精品一区二区三区在线观看 | 日韩亚洲欧美高清| 精品无码三级在线观看视频| 久久精品免视看| 成人午夜激情影院| 亚洲视频一二区| 欧美影视一区二区三区| 婷婷中文字幕一区三区| 欧美一级高清片| 国产成人亚洲综合a∨婷婷| 国产免费久久精品| 色婷婷激情综合| 日韩中文欧美在线| 久久久亚洲欧洲日产国码αv| 丁香五精品蜜臀久久久久99网站 | 日本一区二区三区视频视频| 99精品视频一区二区| 亚洲最大成人综合| 日韩一区二区免费高清| 国产盗摄精品一区二区三区在线 | 在线看国产一区| 日韩福利视频网| 久久婷婷成人综合色| 成人高清视频在线| 亚洲午夜精品一区二区三区他趣| 欧美一区二区三区视频在线| 国产成人综合网| 亚洲激情在线播放| 欧美电影精品一区二区| 成人短视频下载| 五月婷婷激情综合网| 国产亚洲综合性久久久影院| 日本久久一区二区三区| 男男成人高潮片免费网站| 久久久99久久| 欧美日韩国产a| 成人91在线观看| 奇米精品一区二区三区四区| 亚洲欧洲国产日本综合| 3d动漫精品啪啪1区2区免费| 成人激情午夜影院| 午夜av区久久| 中文字幕色av一区二区三区| 日韩精品专区在线影院重磅| 色婷婷久久99综合精品jk白丝| 国内精品久久久久影院色| 一区2区3区在线看| 国产亚洲欧美日韩日本| 欧美日韩成人高清| 94色蜜桃网一区二区三区| 麻豆中文一区二区| 亚洲综合一二区| 国产精品免费久久| 欧美va在线播放| 欧美日韩国产精品成人| www.av亚洲| 国产成人在线视频网站|