aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/fstdata.cc
diff options
context:
space:
mode:
authorMiodrag Milanovic <mmicko@gmail.com>2022-01-31 10:52:47 +0100
committerMiodrag Milanovic <mmicko@gmail.com>2022-01-31 10:52:47 +0100
commit543feb75cb3765746ea865c11aa6ceccaf0adeac (patch)
tree4080c23526e8ff4e36388744f32b64af11ab3649 /kernel/fstdata.cc
parenta6959d30df067c27da75d12bc0bd5233eb91d3ca (diff)
downloadyosys-543feb75cb3765746ea865c11aa6ceccaf0adeac.tar.gz
yosys-543feb75cb3765746ea865c11aa6ceccaf0adeac.tar.bz2
yosys-543feb75cb3765746ea865c11aa6ceccaf0adeac.zip
Display simulation time data
Diffstat (limited to 'kernel/fstdata.cc')
-rw-r--r--kernel/fstdata.cc22
1 files changed, 21 insertions, 1 deletions
diff --git a/kernel/fstdata.cc b/kernel/fstdata.cc
index 5d6d85ed8..a7a2c80f7 100644
--- a/kernel/fstdata.cc
+++ b/kernel/fstdata.cc
@@ -21,10 +21,30 @@
USING_YOSYS_NAMESPACE
+
FstData::FstData(std::string filename) : ctx(nullptr)
{
+ const std::vector<std::string> g_units = { "s", "ms", "us", "ns", "ps", "fs", "as", "zs" };
ctx = (fstReaderContext *)fstReaderOpen(filename.c_str());
- timescale = pow(10.0, (int)fstReaderGetTimescale(ctx));
+ int scale = (int)fstReaderGetTimescale(ctx);
+ timescale = pow(10.0, scale);
+ timescale_str = "";
+ int unit = 0;
+ int zeros = 0;
+ if (scale > 0) {
+ zeros = scale;
+ } else {
+ if ((scale % 3) == 0) {
+ zeros = (-scale % 3);
+ unit = (-scale / 3);
+ } else {
+ zeros = 3 - (-scale % 3);
+ unit = (-scale / 3) + 1;
+ }
+ }
+ for (int i=0;i<zeros; i++) timescale_str += "0";
+ if (zeros>0)timescale_str += " ";
+ timescale_str += g_units[unit];
extractVarNames();
}