From 7ddec5093f09640db0f502dfa341c25e4028563f Mon Sep 17 00:00:00 2001 From: Jannis Harder Date: Tue, 10 Jan 2023 17:04:06 +0100 Subject: sim: Improvements and fixes for yw cosim * Fixed $cover handling * Improved sparse memory handling when writing traces * JSON summary output --- kernel/yw.cc | 2 +- kernel/yw.h | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'kernel') 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 void witness_hierarchy(RTLIL::Module *module, D data, T callback); +template static std::vector witness_path(T *obj) { + std::vector 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 { -- cgit v1.2.3