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) |