OpenCores
URL https://opencores.org/ocsvn/zipcpu/zipcpu/trunk

Subversion Repositories zipcpu

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /zipcpu/trunk/bench/cpp
    from Rev 58 to Rev 57
    Reverse comparison

Rev 58 → Rev 57

/pdump.cpp File deleted
/zippy_tb.cpp
73,10 → 73,9
unsigned long m_mem_size;
MEMSIM m_mem;
// QSPIFLASHSIM m_flash;
FILE *dbg_fp, *m_profile_fp;
FILE *dbg_fp;
bool dbg_flag, bomb, m_show_user_timers;
int m_cursor;
unsigned long m_last_instruction_tickcount;
 
ZIPPY_TB(void) : m_mem_size(1<<20), m_mem(m_mem_size) {
if (false) {
89,13 → 88,6
bomb = false;
m_cursor = 0;
m_show_user_timers = false;
 
m_last_instruction_tickcount = 0l;
if (true) {
m_profile_fp = fopen("pfile.bin","wb");
} else {
m_profile_fp = NULL;
}
}
 
void reset(void) {
401,9 → 393,9
(m_core->v__DOT__thecpu__DOT__opvalid_mem), //0
(!m_core->v__DOT__thecpu__DOT__clear_pipeline), //1
(m_core->v__DOT__thecpu__DOT__set_cond), //1
(!mem_stalled()), //1
(!m_core->v__DOT__thecpu__DOT__mem_stalled), //1
 
(mem_stalled()),
(m_core->v__DOT__thecpu__DOT__mem_stalled),
(m_core->v__DOT__thecpu__DOT__opvalid_mem),
(m_core->v__DOT__thecpu__DOT__master_ce),
(mem_pipe_stalled()),
491,10 → 483,8
mvprintw(ln-1,10,(m_core->v__DOT__thecpu__DOT__alu_wr)?"w":"V");
else if (m_core->v__DOT__thecpu__DOT__mem_valid)
mvprintw(ln-1,10,"v");
#ifdef OPT_ILLEGAL_INSTRUCTION
else if (m_core->v__DOT__thecpu__DOT__r_alu_illegal)
mvprintw(ln-1,10,"I");
#endif
// else if (m_core->v__DOT__thecpu__DOT__alu_illegal_op)
// mvprintw(ln-1,10,"i");
 
533,7 → 523,7
(m_core->v__DOT__thecpu__DOT__opvalid_mem)?"M":" ",
(m_core->v__DOT__thecpu__DOT__mem_ce)?"CE":" ",
(m_core->v__DOT__thecpu__DOT__mem_we)?"Wr ":"Rd ",
(mem_stalled())?"PIPE":" ",
(m_core->v__DOT__thecpu__DOT__mem_stalled)?"PIPE":" ",
(m_core->v__DOT__thecpu__DOT__mem_valid)?"V":" ",
zop_regstr[(m_core->v__DOT__thecpu__DOT__mem_wreg&0x1f)^0x10]);
}
946,18 → 936,6
alu_pc());
 
}
 
if ((m_core->v__DOT__thecpu__DOT__alu_pc_valid)
&&(!m_core->v__DOT__thecpu__DOT__clear_pipeline)) {
unsigned long iticks = m_tickcount - m_last_instruction_tickcount;
if (m_profile_fp) {
unsigned buf[2];
buf[0] = m_core->v__DOT__thecpu__DOT__alu_pc-1;
buf[1] = iticks;
fwrite(buf, sizeof(unsigned), 2, m_profile_fp);
}
m_last_instruction_tickcount = m_tickcount;
}
}
 
bool test_success(void) {
975,28 → 953,6
return m_core->v__DOT__thecpu__DOT__op_pc-1;
}
 
bool mem_busy(void) {
// return m_core->v__DOT__thecpu__DOT__mem_busy;
return m_core->v__DOT__thecpu__DOT__domem__DOT__cyc;
}
 
bool mem_stalled(void) {
bool a, b, c, d, wr_write_cc, wr_write_pc, op_gie;
 
wr_write_cc=((m_core->v__DOT__thecpu__DOT__wr_reg_id&0x0f)==0x0e);
wr_write_pc=((m_core->v__DOT__thecpu__DOT__wr_reg_id&0x0f)==0x0f);
op_gie = m_core->v__DOT__thecpu__DOT__op_gie;
 
a = m_core->v__DOT__thecpu__DOT__mem_pipe_stalled;
b = (m_core->v__DOT__thecpu__DOT__op_pipe)&&(mem_busy());
d = ((wr_write_pc)||(wr_write_cc));
c = ((m_core->v__DOT__thecpu__DOT__wr_reg_ce)
&&((m_core->v__DOT__thecpu__DOT__wr_reg_id&0x010)==op_gie)
&&d);
d =(m_core->v__DOT__thecpu__DOT__opvalid_mem)&&((a)||(b)||(c));
return ((!m_core->v__DOT__thecpu__DOT__master_ce)||(d));
}
 
unsigned alu_pc(void) {
/*
unsigned r = op_pc();
1296,36 → 1252,16
}
} else if (access(argv[argn], R_OK)==0) {
FILE *fp = fopen(argv[argn], "r");
int nr, nv = 0;
if (fp == NULL) {
printf("Cannot open %s\n", argv[argn]);
perror("O/S Err: ");
exit(-1);
} nr = fread(&tb->m_mem[mptr], sizeof(ZIPI), tb->m_mem_size - mptr, fp);
} mptr += fread(&tb->m_mem[mptr], sizeof(ZIPI), tb->m_mem_size - mptr, fp);
fclose(fp);
mptr+= nr;
if (nr == 0) {
printf("Could not read from %s, only read 0 words\n", argv[argn]);
perror("O/S Err?:");
exit(-2);
} for(int i=0; i<nr; i++) {
if (tb->m_mem[mptr-nr+i])
nv++;
} if (nv == 0) {
printf("Read nothing but zeros from %s\n", argv[argn]);
perror("O/S Err?:");
exit(-2);
}
} else {
fprintf(stderr, "No access to %s, or unknown arg\n", argv[argn]);
exit(-2);
}
}
}
 
 
assert(mptr > 0);
 
if (autorun) {
bool done = false;
 
/Makefile
51,10 → 51,6
zippy_tb: $(RTLD)/cpudefs.h
$(CXX) $(FLAGS) $(INCS) $(SOURCES) $(LIBS) -o $@
 
pdump: pdump.cpp $(ZASM)/zopcodes.cpp $(ZASM)/zparser.cpp
pdump: $(ZASM)/zopcodes.h $(ZASM)/zparser.h testb.h twoc.cpp
$(CXX) $(FLAGS) $(INCS) pdump.cpp $(ZASM)/zopcodes.cpp $(ZASM)/zparser.cpp twoc.cpp -o $@
 
.PHONY: stest
stest: zippy_tb
./zippy_tb -s $(TESTF)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.