aboutsummaryrefslogtreecommitdiffstats
path: root/passes/sat
diff options
context:
space:
mode:
authorN. Engelhardt <nak@symbioticeda.com>2020-10-16 18:19:58 +0200
committerN. Engelhardt <nak@symbioticeda.com>2020-10-16 18:19:58 +0200
commit668d5253a59f3b106bae6d1fca8ba1873b2fdce0 (patch)
treedff30d768789927abfc058d7ac2b00361d6411e0 /passes/sat
parent4c925a3214347f86673c4aa97e5b127530cd0270 (diff)
downloadyosys-668d5253a59f3b106bae6d1fca8ba1873b2fdce0.tar.gz
yosys-668d5253a59f3b106bae6d1fca8ba1873b2fdce0.tar.bz2
yosys-668d5253a59f3b106bae6d1fca8ba1873b2fdce0.zip
sim -vcd: add date, version, and option for timescale
Diffstat (limited to 'passes/sat')
-rw-r--r--passes/sat/sim.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/passes/sat/sim.cc b/passes/sat/sim.cc
index fb496ff87..4c9af0bf6 100644
--- a/passes/sat/sim.cc
+++ b/passes/sat/sim.cc
@@ -633,6 +633,7 @@ struct SimWorker : SimShared
SimInstance *top = nullptr;
std::ofstream vcdfile;
pool<IdString> clock, clockn, reset, resetn;
+ std::string timescale;
~SimWorker()
{
@@ -644,6 +645,15 @@ struct SimWorker : SimShared
if (!vcdfile.is_open())
return;
+ vcdfile << stringf("$version %s $end\n", yosys_version_str);
+ vcdfile << stringf("$date ");
+ std::time_t t = std::time(nullptr);
+ vcdfile << std::put_time(std::localtime(&t), "%c %Z");
+ vcdfile << stringf(" $end\n");
+
+ if (!timescale.empty())
+ vcdfile << stringf("$timescale %s $end\n", timescale.c_str());
+
int id = 1;
top->write_vcd_header(vcdfile, id);
@@ -783,6 +793,9 @@ struct SimPass : public Pass {
log(" -zinit\n");
log(" zero-initialize all uninitialized regs and memories\n");
log("\n");
+ log(" -timescale <string>\n");
+ log(" include the specified timescale declaration in the vcd\n");
+ log("\n");
log(" -n <integer>\n");
log(" number of cycles to simulate (default: 20)\n");
log("\n");
@@ -833,6 +846,10 @@ struct SimPass : public Pass {
worker.resetn.insert(RTLIL::escape_id(args[++argidx]));
continue;
}
+ if (args[argidx] == "-timescale" && argidx+1 < args.size()) {
+ worker.timescale = args[++argidx];
+ continue;
+ }
if (args[argidx] == "-a") {
worker.hide_internal = false;
continue;