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

Subversion Repositories zipcpu

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /zipcpu
    from Rev 153 to Rev 154
    Reverse comparison

Rev 153 → Rev 154

/trunk/bench/cpp/div_tb.cpp
74,36 → 74,41
} *str = '\0';
}
 
void dbgdump(void) {
char outstr[2048], *s;
sprintf(outstr, "Tick %4ld %s%s%s%s%s%s%s %2d(%s= 0)",
m_tickcount,
(m_core->o_busy)?"B":" ",
(m_core->v__DOT__r_busy)?"R":" ",
(m_core->o_valid)?"V":" ",
(m_core->i_wr)?"W":" ",
(m_core->v__DOT__pre_sign)?"+":" ",
(m_core->v__DOT__r_sign)?"-":" ",
(m_core->v__DOT__r_z)?"Z":" ",
m_core->v__DOT__r_bit,
(m_core->v__DOT__last_bit)?"=":"!");
s = &outstr[strlen(outstr)];
sprintf(s, "%s\n%10s %40s",s, "Div","");
s = &s[strlen(s)];
bprint( s, 32, m_core->v__DOT__r_dividend);
s=&s[strlen(s)];
sprintf(s, "%s\n%10s ",s, "Div"); s = &s[strlen(s)];
bprint( s, 64, m_core->v__DOT__r_divisor);
s=&s[strlen(s)];
sprintf(s, "%s\n%10s %40s",s, "Q",""); s=&s[strlen(s)];
bprint( s, 32, m_core->o_quotient); s = &s[strlen(s)];
sprintf(s, "%s\n%10s %38s",s, "Diff","");
s=&s[strlen(s)];
bprint( s, 33, m_core->v__DOT__diff); s = &s[strlen(s)];
strcat(s, "\n");
puts(outstr);
}
 
void tick(void) {
bool debug = false;
 
if (debug) {
char outstr[2048], *s;
sprintf(outstr, "Tick %4ld %s%s%s%s%s%s %2d",
m_tickcount,
(m_core->o_busy)?"B":" ",
(m_core->o_valid)?"V":" ",
(m_core->i_wr)?"W":" ",
(m_core->v__DOT__pre_sign)?"+":" ",
(m_core->v__DOT__r_sign)?"-":" ",
(m_core->v__DOT__r_z)?"Z":" ",
m_core->v__DOT__r_bit);
s = &outstr[strlen(outstr)];
sprintf(s, "%s\n%10s %40s",s, "Div","");
s = &s[strlen(s)];
bprint( s, 32, m_core->v__DOT__r_dividend);
s=&s[strlen(s)];
sprintf(s, "%s\n%10s ",s, "Div"); s = &s[strlen(s)];
bprint( s, 64, m_core->v__DOT__r_divisor);
s=&s[strlen(s)];
sprintf(s, "%s\n%10s %40s",s, "Q",""); s=&s[strlen(s)];
bprint( s, 32, m_core->o_quotient); s = &s[strlen(s)];
sprintf(s, "%s\n%10s %38s",s, "Diff","");
s=&s[strlen(s)];
bprint( s, 33, m_core->v__DOT__diff); s = &s[strlen(s)];
strcat(s, "\n");
puts(outstr);
}
if (debug)
dbgdump();
TESTB<Vdiv>::tick();
}
 
126,12 → 131,22
m_core->i_numerator = 0;
m_core->i_denominator = 0;
 
// Make certain busy is immediately true upon the first clock
// after we issue the divide.
assert(m_core->o_busy);
assert(m_core->o_valid == 0);
 
// while((!m_core->o_valid)&&(!m_core->o_err))
while(!m_core->o_valid)
while(!m_core->o_valid) {
if (!m_core->o_busy) {
// Make certain busy is asserted whenever
// valid is false and we're ... well, busy
dbgdump();
assert(m_core->o_busy);
}
tick();
} if (dbg) dbgdump();
assert(!m_core->o_busy);
 
if (dbg) {
printf("%s%s: %d / %d =? %d\n",
169,8 → 184,10
assert(m_core->o_busy);
assert(m_core->o_valid == 0);
 
while(!m_core->o_valid)
while(!m_core->o_valid) {
assert(m_core->o_busy);
tick();
} assert(!m_core->o_busy);
 
if (dbg) {
printf("%s%s: %u / %u =? %d (Expecting %u)\n",

powered by: WebSVN 2.1.0

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