diff options
author | Miodrag Milanovic <mmicko@gmail.com> | 2022-06-04 08:39:50 +0200 |
---|---|---|
committer | Miodrag Milanovic <mmicko@gmail.com> | 2022-06-04 08:39:50 +0200 |
commit | e35a1663532d36c4dc0decda68846d22c9900876 (patch) | |
tree | ce0cb8419cf59eb7d76ebc5d16c2179fb229f4f9 /frontends/verific | |
parent | 8d0f71b25640be359c06456e524f9e513f4340d4 (diff) | |
download | yosys-e35a1663532d36c4dc0decda68846d22c9900876.tar.gz yosys-e35a1663532d36c4dc0decda68846d22c9900876.tar.bz2 yosys-e35a1663532d36c4dc0decda68846d22c9900876.zip |
verific: proper file location for readmem commands
Diffstat (limited to 'frontends/verific')
-rw-r--r-- | frontends/verific/verific.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/frontends/verific/verific.cc b/frontends/verific/verific.cc index 328593099..a9adb5a17 100644 --- a/frontends/verific/verific.cc +++ b/frontends/verific/verific.cc @@ -53,6 +53,9 @@ USING_YOSYS_NAMESPACE #include "VhdlUnits.h" #endif +#include "VerificStream.h" +#include "FileSystem.h" + #ifdef YOSYSHQ_VERIFIC_EXTENSIONS #include "InitialAssertions.h" #endif @@ -118,6 +121,34 @@ string get_full_netlist_name(Netlist *nl) return nl->CellBaseName(); } +class YosysStreamCallBackHandler : public VerificStreamCallBackHandler +{ +public: + YosysStreamCallBackHandler() : VerificStreamCallBackHandler() { } + virtual ~YosysStreamCallBackHandler() { } + + virtual verific_stream *GetSysCallStream(const char *file_path) + { + if (!file_path) return nullptr; + + linefile_type src_loc = GetFromLocation(); + + char *this_file_name = nullptr; + if (src_loc && !FileSystem::IsAbsolutePath(file_path)) { + const char *src_file_name = LineFile::GetFileName(src_loc); + char *dir_name = FileSystem::DirectoryPath(src_file_name); + if (dir_name) { + this_file_name = Strings::save(dir_name, "/", file_path); + Strings::free(dir_name); + file_path = this_file_name; + } + } + verific_stream *strm = new verific_ifstream(file_path); + Strings::free(this_file_name); + return strm; + } +}; + // ================================================================== VerificImporter::VerificImporter(bool mode_gates, bool mode_keep, bool mode_nosva, bool mode_names, bool mode_verific, bool mode_autocover, bool mode_fullinit) : @@ -2648,6 +2679,8 @@ struct VerificPass : public Pass { int argidx = 1; std::string work = "work"; + YosysStreamCallBackHandler cb; + veri_file::RegisterCallBackVerificStream(&cb); if (GetSize(args) > argidx && (args[argidx] == "-set-error" || args[argidx] == "-set-warning" || args[argidx] == "-set-info" || args[argidx] == "-set-ignore")) |