aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorJannis Harder <me@jix.one>2023-01-10 17:04:06 +0100
committerJannis Harder <me@jix.one>2023-01-11 18:07:16 +0100
commit7ddec5093f09640db0f502dfa341c25e4028563f (patch)
treeb37cd73756a4822ab403696de3333ea14eaea1cb /kernel
parent636b9f27052ef67192ee55a862c31e57a1ccad79 (diff)
downloadyosys-7ddec5093f09640db0f502dfa341c25e4028563f.tar.gz
yosys-7ddec5093f09640db0f502dfa341c25e4028563f.tar.bz2
yosys-7ddec5093f09640db0f502dfa341c25e4028563f.zip
sim: Improvements and fixes for yw cosim
* Fixed $cover handling * Improved sparse memory handling when writing traces * JSON summary output
Diffstat (limited to 'kernel')
-rw-r--r--kernel/yw.cc2
-rw-r--r--kernel/yw.h12
2 files changed, 13 insertions, 1 deletions
diff --git a/kernel/yw.cc b/kernel/yw.cc
index 4a6e37a13..73e7710db 100644
--- a/kernel/yw.cc
+++ b/kernel/yw.cc
@@ -161,7 +161,7 @@ ReadWitness::ReadWitness(const std::string &filename) :
signal.offset = signal_json["offset"].int_value();
if (signal.offset < 0)
log_error("Failed to parse `%s`: Invalid offset for signal `%s`\n", filename.c_str(), signal_json.dump().c_str());
- signal.init_only = json["init_only"].bool_value();
+ signal.init_only = signal_json["init_only"].bool_value();
signals.push_back(signal);
}
diff --git a/kernel/yw.h b/kernel/yw.h
index 8b651fd83..503319b1d 100644
--- a/kernel/yw.h
+++ b/kernel/yw.h
@@ -52,6 +52,18 @@ struct WitnessHierarchyItem {
template<typename D, typename T>
void witness_hierarchy(RTLIL::Module *module, D data, T callback);
+template<class T> static std::vector<std::string> witness_path(T *obj) {
+ std::vector<std::string> path;
+ if (obj->name.isPublic()) {
+ auto hdlname = obj->get_string_attribute(ID::hdlname);
+ for (auto token : split_tokens(hdlname))
+ path.push_back("\\" + token);
+ }
+ if (path.empty())
+ path.push_back(obj->name.str());
+ return path;
+}
+
struct ReadWitness
{
struct Clock {