1
0

Fix groundtest without HTIF

This commit is contained in:
Andrew Waterman 2016-06-23 12:17:26 -07:00
parent 30331fcaeb
commit 2d44be747a
6 changed files with 25 additions and 22 deletions

@ -1 +1 @@
Subproject commit e9e5bb28ac230ab7c54aab9ca30fbe164bbb84be Subproject commit 257bd9732cc977479d1bdc91742dee32cc47e8a9

@ -1 +1 @@
Subproject commit 70a41e5aed5dc3bc52133aecf46049a5946d33fe Subproject commit 2e9b41cafe9158f20ecb03ae9eabecb82e557829

View File

@ -25,6 +25,7 @@
#include "emulator_type.h" #include "emulator_type.h"
static dtm_t* dtm; static dtm_t* dtm;
static uint64_t trace_count = 0;
bool verbose; bool verbose;
void handle_sigterm(int sig) void handle_sigterm(int sig)
@ -32,11 +33,15 @@ void handle_sigterm(int sig)
dtm->stop(); dtm->stop();
} }
double sc_time_stamp()
{
return trace_count;
}
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
unsigned random_seed = (unsigned)time(NULL) ^ (unsigned)getpid(); unsigned random_seed = (unsigned)time(NULL) ^ (unsigned)getpid();
uint64_t max_cycles = -1; uint64_t max_cycles = -1;
uint64_t trace_count = 0;
uint64_t start = 0; uint64_t start = 0;
int ret = 0; int ret = 0;
const char* vcd = NULL; const char* vcd = NULL;
@ -179,7 +184,7 @@ int main(int argc, char** argv)
#include TBFRAG #include TBFRAG
while (!dtm->done() && (trace_count >> 1) < max_cycles && ret == 0) while (!dtm->done() && trace_count < max_cycles && ret == 0)
{ {
for (int i = 0; i < N_MEM_CHANNELS; i++) { for (int i = 0; i < N_MEM_CHANNELS; i++) {
value(mem_ar_ready[i]) = mm[i]->ar_ready(); value(mem_ar_ready[i]) = mm[i]->ar_ready();
@ -212,13 +217,12 @@ int main(int argc, char** argv)
tile.eval(); tile.eval();
// make sure we dump on cycle 0 to get dump_init // make sure we dump on cycle 0 to get dump_init
#if VM_TRACE #if VM_TRACE
if (tfp && ((trace_count >> 1) == 0 || (trace_count >> 1) >= start)) if (tfp && (trace_count == 0 || trace_count >= start))
tfp->dump(trace_count); tfp->dump(trace_count * 2);
#endif #endif
#endif #endif
trace_count++;
} catch (std::runtime_error& e) { } catch (std::runtime_error& e) {
max_cycles = trace_count >> 1; // terminate cleanly after this cycle max_cycles = trace_count; // terminate cleanly after this cycle
ret = 1; ret = 1;
std::cerr << e.what() << std::endl; std::cerr << e.what() << std::endl;
} }
@ -258,20 +262,20 @@ int main(int argc, char** argv)
} }
#ifndef VERILATOR #ifndef VERILATOR
if (verbose && (trace_count >> 1) >= start) if (verbose && trace_count >= start)
tile.print(stderr); tile.print(stderr);
// make sure we dump on cycle 0 to get dump_init // make sure we dump on cycle 0 to get dump_init
if (vcd && ((trace_count >> 1) == 0 || (trace_count >> 1) >= start)) if (vcd && (trace_count == 0 || trace_count >= start))
tile.dump(vcdfile, trace_count >> 1); tile.dump(vcdfile, trace_count);
tile.clock_hi(LIT<1>(0)); tile.clock_hi(LIT<1>(0));
#else #else
tile.clk = 1; tile.clk = 1;
tile.eval(); tile.eval();
#if VM_TRACE #if VM_TRACE
if (tfp && ((trace_count >> 1) == 0 || (trace_count >> 1) >= start)) if (tfp && (trace_count == 0 || trace_count >= start))
tfp->dump(trace_count); tfp->dump(trace_count * 2 + 1);
#endif #endif
#endif #endif
trace_count++; trace_count++;
@ -288,17 +292,17 @@ int main(int argc, char** argv)
if (dtm->exit_code()) if (dtm->exit_code())
{ {
fprintf(stderr, "*** FAILED *** (code = %d, seed %d) after %ld cycles\n", dtm->exit_code(), random_seed, trace_count >> 1); fprintf(stderr, "*** FAILED *** (code = %d, seed %d) after %ld cycles\n", dtm->exit_code(), random_seed, trace_count);
ret = dtm->exit_code(); ret = dtm->exit_code();
} }
else if ((trace_count >> 1) == max_cycles) else if (trace_count == max_cycles)
{ {
fprintf(stderr, "*** FAILED *** (timeout, seed %d) after %ld cycles\n", random_seed, trace_count >> 1); fprintf(stderr, "*** FAILED *** (timeout, seed %d) after %ld cycles\n", random_seed, trace_count);
ret = 2; ret = 2;
} }
else if (verbose || print_cycles) else if (verbose || print_cycles)
{ {
fprintf(stderr, "Completed after %ld cycles\n", trace_count >> 1); fprintf(stderr, "Completed after %ld cycles\n", trace_count);
} }
delete dtm; delete dtm;

2
firrtl

@ -1 +1 @@
Subproject commit 860b04eff7758c3efae09fb0b5b908abad3b4593 Subproject commit 85dc973ecc3042370f218b77dfa0990fde6c2e0f

@ -1 +1 @@
Subproject commit 45fd2af56be99ff2f9f04b7acc8e402d2efb770b Subproject commit e636d7a4ff1a6fe11f6fd4ee8ad2588becae68ae

View File

@ -36,8 +36,7 @@ class WithGroundTest extends Config(
(r: Bool, p: Parameters) => (r: Bool, p: Parameters) =>
Module(new GroundTestTile(i, r)(p.alterPartial({ Module(new GroundTestTile(i, r)(p.alterPartial({
case TLId => "L1toL2" case TLId => "L1toL2"
case NUncachedTileLinkPorts => case NUncachedTileLinkPorts => p(GroundTestUncachedClients)
(if (i == 0) 1 else 0) + p(GroundTestUncachedClients)
}))) })))
} }
} }
@ -76,7 +75,7 @@ class WithComparator extends Config(
Seq((r: Bool, p: Parameters) => Module(new ComparatorTile(r)( Seq((r: Bool, p: Parameters) => Module(new ComparatorTile(r)(
p.alterPartial({ p.alterPartial({
case TLId => "L1toL2" case TLId => "L1toL2"
case NUncachedTileLinkPorts => 1 + site(ComparatorKey).targets.size case NUncachedTileLinkPorts => site(ComparatorKey).targets.size
})))) }))))
} }
case ComparatorKey => ComparatorParameters( case ComparatorKey => ComparatorParameters(