mirror of https://github.com/YosysHQ/yosys.git
VCD reader support by using external tool
This commit is contained in:
parent
ec4af6af2f
commit
8be09b5b24
|
@ -22,8 +22,25 @@
|
||||||
USING_YOSYS_NAMESPACE
|
USING_YOSYS_NAMESPACE
|
||||||
|
|
||||||
|
|
||||||
|
static std::string file_base_name(std::string const & path)
|
||||||
|
{
|
||||||
|
return path.substr(path.find_last_of("/\\") + 1);
|
||||||
|
}
|
||||||
|
|
||||||
FstData::FstData(std::string filename) : ctx(nullptr)
|
FstData::FstData(std::string filename) : ctx(nullptr)
|
||||||
{
|
{
|
||||||
|
#if !defined(YOSYS_DISABLE_SPAWN)
|
||||||
|
std::string filename_trim = file_base_name(filename);
|
||||||
|
if (filename_trim.size() > 4 && filename_trim.compare(filename_trim.size()-4, std::string::npos, ".vcd") == 0) {
|
||||||
|
filename_trim.erase(filename_trim.size()-4);
|
||||||
|
tmp_file = stringf("/tmp/converted_%s.fst", filename_trim.c_str());
|
||||||
|
std::string cmd = stringf("vcd2fst %s %s", filename.c_str(), tmp_file.c_str());
|
||||||
|
log("Exec: %s\n", cmd.c_str());
|
||||||
|
if (run_command(cmd) != 0)
|
||||||
|
log_cmd_error("Shell command failed!\n");
|
||||||
|
filename = tmp_file;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
const std::vector<std::string> g_units = { "s", "ms", "us", "ns", "ps", "fs", "as", "zs" };
|
const std::vector<std::string> g_units = { "s", "ms", "us", "ns", "ps", "fs", "as", "zs" };
|
||||||
ctx = (fstReaderContext *)fstReaderOpen(filename.c_str());
|
ctx = (fstReaderContext *)fstReaderOpen(filename.c_str());
|
||||||
if (!ctx)
|
if (!ctx)
|
||||||
|
@ -53,6 +70,8 @@ FstData::~FstData()
|
||||||
{
|
{
|
||||||
if (ctx)
|
if (ctx)
|
||||||
fstReaderClose(ctx);
|
fstReaderClose(ctx);
|
||||||
|
if (!tmp_file.empty())
|
||||||
|
remove(tmp_file.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t FstData::getStartTime() { return fstReaderGetStartTime(ctx); }
|
uint64_t FstData::getStartTime() { return fstReaderGetStartTime(ctx); }
|
||||||
|
|
|
@ -74,6 +74,7 @@ private:
|
||||||
CallbackFunction callback;
|
CallbackFunction callback;
|
||||||
std::vector<fstHandle> clk_signals;
|
std::vector<fstHandle> clk_signals;
|
||||||
bool all_samples;
|
bool all_samples;
|
||||||
|
std::string tmp_file;
|
||||||
};
|
};
|
||||||
|
|
||||||
YOSYS_NAMESPACE_END
|
YOSYS_NAMESPACE_END
|
||||||
|
|
|
@ -1160,6 +1160,7 @@ struct SimWorker : SimShared
|
||||||
pool<Module*> wbmods;
|
pool<Module*> wbmods;
|
||||||
top->writeback(wbmods);
|
top->writeback(wbmods);
|
||||||
}
|
}
|
||||||
|
delete fst;
|
||||||
}
|
}
|
||||||
|
|
||||||
void run_cosim_witness(Module *topmod)
|
void run_cosim_witness(Module *topmod)
|
||||||
|
|
Loading…
Reference in New Issue