Line 731... |
Line 731... |
mvprintw(ln-2, 48, "r_opB: 0x%08x",
|
mvprintw(ln-2, 48, "r_opB: 0x%08x",
|
m_core->v__DOT__thecpu__DOT__opB);
|
m_core->v__DOT__thecpu__DOT__opB);
|
*/
|
*/
|
mvprintw(ln-3, 48, "Op(%x)%8x,%8x->",
|
mvprintw(ln-3, 48, "Op(%x)%8x,%8x->",
|
m_core->v__DOT__thecpu__DOT__opn,
|
m_core->v__DOT__thecpu__DOT__opn,
|
m_core->v__DOT__thecpu__DOT__r_opA,
|
m_core->v__DOT__thecpu__DOT__opA,
|
m_core->v__DOT__thecpu__DOT__r_opB);
|
m_core->v__DOT__thecpu__DOT__opB);
|
if (m_core->v__DOT__thecpu__DOT__alu_valid)
|
if (m_core->v__DOT__thecpu__DOT__alu_valid)
|
printw("%08x", m_core->v__DOT__thecpu__DOT__alu_result);
|
printw("%08x", m_core->v__DOT__thecpu__DOT__alu_result);
|
else
|
else
|
printw("%8s","");
|
printw("%8s","");
|
mvprintw(ln-1, 48, "%s%s%s ",
|
mvprintw(ln-1, 48, "%s%s%s ",
|
(m_core->v__DOT__thecpu__DOT__alu_valid)?"A"
|
(m_core->v__DOT__thecpu__DOT__alu_valid)?"A"
|
:((m_core->v__DOT__thecpu__DOT__doalu__DOT__genblk3__DOT__r_busy)?"a":" "),
|
:((m_core->v__DOT__thecpu__DOT__doalu__DOT__genblk2__DOT__r_busy)?"a":" "),
|
(m_core->v__DOT__thecpu__DOT__div_valid)?"D"
|
(m_core->v__DOT__thecpu__DOT__div_valid)?"D"
|
:((m_core->v__DOT__thecpu__DOT__div_busy)?"d":" "),
|
:((m_core->v__DOT__thecpu__DOT__div_busy)?"d":" "),
|
(m_core->v__DOT__thecpu__DOT__div_valid)?"F"
|
(m_core->v__DOT__thecpu__DOT__div_valid)?"F"
|
:((m_core->v__DOT__thecpu__DOT__div_busy)?"f":" "));
|
:((m_core->v__DOT__thecpu__DOT__div_busy)?"f":" "));
|
printw("MEM: %s%s %s%s %s %-5s",
|
printw("MEM: %s%s %s%s %s %-5s",
|
Line 1752... |
Line 1752... |
// while((tb->wb_read(CMD_REG) & (CMD_HALT|CMD_STALL))==(CMD_HALT|CMD_STALL))
|
// while((tb->wb_read(CMD_REG) & (CMD_HALT|CMD_STALL))==(CMD_HALT|CMD_STALL))
|
// tb->show_state();
|
// tb->show_state();
|
|
|
while(!done) {
|
while(!done) {
|
if ((high_speed)&&(!manual)&&(!halted)) {
|
if ((high_speed)&&(!manual)&&(!halted)) {
|
|
// chv = getch();
|
|
|
struct pollfd fds[1];
|
struct pollfd fds[1];
|
fds[0].fd = STDIN_FILENO;
|
fds[0].fd = STDIN_FILENO;
|
fds[0].events = POLLIN;
|
fds[0].events = POLLIN;
|
|
|
if (poll(fds, 1, 0) > 0)
|
if (poll(fds, 1, 0) > 0)
|
chv = getch();
|
chv = getch();
|
else
|
else
|
chv = ERR;
|
chv = ERR;
|
|
|
} else {
|
} else {
|
chv = getch();
|
chv = getch();
|
}
|
}
|
switch(chv) {
|
switch(chv) {
|
case 'h': case 'H':
|
case 'h': case 'H':
|
Line 1771... |
Line 1775... |
erase();
|
erase();
|
halted = true;
|
halted = true;
|
break;
|
break;
|
case 'G':
|
case 'G':
|
high_speed = true;
|
high_speed = true;
|
|
// cbreak();
|
case 'g':
|
case 'g':
|
tb->wb_write(CMD_REG, 0);
|
tb->wb_write(CMD_REG, 0);
|
if (halted)
|
if (halted)
|
erase();
|
erase();
|
halted = false;
|
halted = false;
|
Line 1798... |
Line 1803... |
if (!halted)
|
if (!halted)
|
erase();
|
erase();
|
tb->step();
|
tb->step();
|
manual = false;
|
manual = false;
|
halted = true;
|
halted = true;
|
|
// if (high_speed)
|
|
// halfdelay(1);
|
high_speed = false;
|
high_speed = false;
|
break;
|
break;
|
case 'S':
|
case 'S':
|
if ((!manual)||(halted))
|
if ((!manual)||(halted))
|
erase();
|
erase();
|
manual = true;
|
manual = true;
|
halted = true;
|
halted = true;
|
|
// if (high_speed)
|
|
// halfdelay(1);
|
high_speed = false;
|
high_speed = false;
|
tb->m_core->v__DOT__cmd_halt = 0;
|
tb->m_core->v__DOT__cmd_halt = 0;
|
tb->m_core->v__DOT__cmd_step = 1;
|
tb->m_core->v__DOT__cmd_step = 1;
|
tb->eval();
|
tb->eval();
|
tb->tick();
|
tb->tick();
|
Line 1816... |
Line 1825... |
case 'T': //
|
case 'T': //
|
if ((!manual)||(halted))
|
if ((!manual)||(halted))
|
erase();
|
erase();
|
manual = true;
|
manual = true;
|
halted = true;
|
halted = true;
|
|
// if (high_speed)
|
|
// halfdelay(1);
|
high_speed = false;
|
high_speed = false;
|
tb->m_core->v__DOT__cmd_halt = 1;
|
tb->m_core->v__DOT__cmd_halt = 1;
|
tb->m_core->v__DOT__cmd_step = 0;
|
tb->m_core->v__DOT__cmd_step = 0;
|
tb->eval();
|
tb->eval();
|
tb->tick();
|
tb->tick();
|
Line 1827... |
Line 1838... |
case 't':
|
case 't':
|
if ((!manual)||(halted))
|
if ((!manual)||(halted))
|
erase();
|
erase();
|
manual = true;
|
manual = true;
|
halted = false;
|
halted = false;
|
|
// if (high_speed)
|
|
// halfdelay(1);
|
high_speed = false;
|
high_speed = false;
|
// tb->m_core->v__DOT__thecpu__DOT__step = 0;
|
// tb->m_core->v__DOT__thecpu__DOT__step = 0;
|
tb->m_core->v__DOT__cmd_halt = 0;
|
tb->m_core->v__DOT__cmd_halt = 0;
|
// tb->m_core->v__DOT__cmd_step = 0;
|
// tb->m_core->v__DOT__cmd_step = 0;
|
tb->tick();
|
tb->tick();
|