diff options
author | Jannis Harder <me@jix.one> | 2023-01-10 17:04:06 +0100 |
---|---|---|
committer | Jannis Harder <me@jix.one> | 2023-01-11 18:07:16 +0100 |
commit | 7ddec5093f09640db0f502dfa341c25e4028563f (patch) | |
tree | b37cd73756a4822ab403696de3333ea14eaea1cb /kernel | |
parent | 636b9f27052ef67192ee55a862c31e57a1ccad79 (diff) | |
download | yosys-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.cc | 2 | ||||
-rw-r--r-- | kernel/yw.h | 12 |
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 { |