Line 223... |
Line 223... |
} else
|
} else
|
if (strcmp(*argv, "--enable-mprofile") == 0) {
|
if (strcmp(*argv, "--enable-mprofile") == 0) {
|
runtime.simcmd.mprofile = 1;
|
runtime.simcmd.mprofile = 1;
|
argv++; argc--;
|
argv++; argc--;
|
} else
|
} else
|
if (strcmp(*argv, "--output-cfg") == 0) {
|
|
runtime.sim.output_cfg = 1;
|
|
argv++; argc--;
|
|
} else
|
|
if (strcmp(*argv, "-d") == 0) {
|
if (strcmp(*argv, "-d") == 0) {
|
parse_dbchs(*(++argv));
|
parse_dbchs(*(++argv));
|
argv++; argc -= 2;
|
argv++; argc -= 2;
|
} else {
|
} else {
|
fprintf(stderr, "Unknown option: %s\n", *argv);
|
fprintf(stderr, "Unknown option: %s\n", *argv);
|
Line 738... |
Line 734... |
cur_section = NULL;
|
cur_section = NULL;
|
|
|
sprintf(ctmp, "%s/.or1k/%s", home, filename);
|
sprintf(ctmp, "%s/.or1k/%s", home, filename);
|
if ((f = fopen (filename, "rt")) != NULL
|
if ((f = fopen (filename, "rt")) != NULL
|
|| home != NULL && !(local = 0) && (f = fopen (ctmp, "rt")) != NULL) {
|
|| home != NULL && !(local = 0) && (f = fopen (ctmp, "rt")) != NULL) {
|
if (config.sim.verbose && !runtime.sim.output_cfg)
|
if (config.sim.verbose)
|
PRINTF ("Reading script file from '%s'...\n", local ? filename : ctmp);
|
PRINTF ("Reading script file from '%s'...\n", local ? filename : ctmp);
|
strcpy (runtime.sim.script_fn, local ? filename : ctmp);
|
strcpy (runtime.sim.script_fn, local ? filename : ctmp);
|
|
|
while (!feof(f)) {
|
while (!feof(f)) {
|
char param[STR_SIZE];
|
char param[STR_SIZE];
|
Line 878... |
Line 874... |
PRINTF ("Invalid parameters specified.\n");
|
PRINTF ("Invalid parameters specified.\n");
|
break;
|
break;
|
}
|
}
|
}
|
}
|
|
|
/* Outputs C structure of current config to file */
|
|
void output_cfg (FILE *f)
|
|
{
|
|
int i, comma;
|
|
fprintf (f, "/* This file was automatically generated by or1ksim,\n"
|
|
" using --output-cfg switch (cfg file '%s'). */\n"
|
|
"const static struct config config = {\n", runtime.sim.script_fn);
|
|
|
|
fprintf (f, " tick:{enabled:%i},\n", config.tick.enabled);
|
|
|
|
fprintf (f, " memory:{pattern:%i, random_seed:%i, type:%s, nmemories:%i, table:{", config.memory.pattern, config.memory.random_seed,
|
|
config.memory.type == MT_UNKNOWN ? "MT_UNKNOWN" : config.memory.type == MT_PATTERN ? "MT_PATTERN" : "MT_RANDOM", config.memory.nmemories);
|
|
comma = 0;
|
|
for (i = 0; i < config.memory.nmemories; i++) {
|
|
fprintf (f, "%s\n {ce:%i, baseaddr:0x%08lx, size:0x%08lx, name:\"%s\", log:\"%s\", delayr:%i, delayw:%i}",
|
|
comma ? "," :"", config.memory.table[i].ce, config.memory.table[i].baseaddr, config.memory.table[i].size, config.memory.table[i].name,
|
|
config.memory.table[i].log, config.memory.table[i].delayr, config.memory.table[i].delayw);
|
|
comma = 1;
|
|
}
|
|
fprintf (f, "}},\n");
|
|
|
|
fprintf (f, " immu:{enabled:%i, nways:%i, nsets:%i, pagesize:%i, entrysize:%i, ustates:%i, missdelay:%i, hitdelay:%i},\n",
|
|
config.immu.enabled, config.immu.nways, config.immu.nsets, config.immu.pagesize, config.immu.entrysize, config.immu.ustates,
|
|
config.immu.missdelay, config.immu.hitdelay);
|
|
|
|
fprintf (f, " dmmu:{enabled:%i, nways:%i, nsets:%i, pagesize:%i, entrysize:%i, ustates:%i, missdelay:%i, hitdelay:%i},\n",
|
|
config.dmmu.enabled, config.dmmu.nways, config.dmmu.nsets, config.dmmu.pagesize, config.dmmu.entrysize, config.dmmu.ustates,
|
|
config.dmmu.missdelay, config.dmmu.hitdelay);
|
|
|
|
fprintf (f, " ic:{enabled:%i, nways:%i, nsets:%i, blocksize:%i, ustates:%i, missdelay:%i, hitdelay:%i},\n",
|
|
config.ic.enabled, config.ic.nways, config.ic.nsets, config.ic.blocksize, config.ic.ustates,
|
|
config.ic.missdelay, config.ic.hitdelay);
|
|
|
|
fprintf (f, " dc:{enabled:%i, nways:%i, nsets:%i, blocksize:%i, ustates:%i,\n"
|
|
" load_missdelay:%i, load_hitdelay:%i, store_missdelay:%i, store_hitdelay:%i},\n",
|
|
config.dc.enabled, config.dc.nways, config.dc.nsets, config.dc.blocksize, config.dc.ustates,
|
|
config.dc.load_missdelay, config.dc.load_hitdelay, config.dc.store_missdelay, config.dc.store_hitdelay);
|
|
|
|
fprintf (f, " bpb:{enabled:%i, sbp_bnf_fwd:%i, sbp_bf_fwd:%i, btic:%i, missdelay:%i, hitdelay:%i},\n",
|
|
config.bpb.enabled, config.bpb.sbp_bnf_fwd, config.bpb.sbp_bf_fwd, config.bpb.btic, config.bpb.missdelay, config.bpb.hitdelay);
|
|
|
|
fprintf (f, " cpu:{upr:0x%08lx, ver:0x%04lx, rev:0x%04lx, superscalar:%i, hazards:%i, dependstats:%i,\n"
|
|
" sr:0x%08x},\n",
|
|
config.cpu.upr, config.cpu.ver, config.cpu.rev, config.cpu.superscalar, config.cpu.hazards, config.cpu.dependstats,
|
|
config.cpu.sr);
|
|
|
|
fprintf (f, " sim:{debug:%i, verbose:%i, profile:%i, prof_fn:\"%s\", mprofile:%i, mprof_fn:\"%s\",\n",
|
|
config.sim.debug, config.sim.verbose, config.sim.profile, config.sim.prof_fn, config.sim.mprofile, config.sim.mprof_fn);
|
|
|
|
fprintf (f, " history:%i, exe_log:%i, exe_log_fn:\"%s\", clkcycle_ps:%li,\n",
|
|
config.sim.history, config.sim.exe_log, config.sim.exe_log_fn, config.sim.clkcycle_ps);
|
|
|
|
fprintf (f, " spr_log:%i, spr_log_fn:\"%s\"},\n",
|
|
config.sim.spr_log, config.sim.spr_log_fn);
|
|
|
|
fprintf (f, " debug:{enabled:%i, gdb_enabled:%i, server_port:%i, vapi_id:0x%08lx},\n",
|
|
config.debug.enabled, config.debug.gdb_enabled, config.debug.server_port, config.debug.vapi_id);
|
|
|
|
fprintf (f, " vapi:{enabled:%i, server_port:%i, log_enabled:%i, hide_device_id:%i, vapi_fn:\"%s\"},\n",
|
|
config.vapi.enabled, config.vapi.server_port, config.vapi.log_enabled, config.vapi.hide_device_id, config.vapi.vapi_fn);
|
|
|
|
fprintf (f, " pm:{enabled:%i}\n",
|
|
config.pm.enabled);
|
|
|
|
fprintf (f, "};\n");
|
|
}
|
|
|
|
No newline at end of file
|
No newline at end of file
|