systemc: Add an sc_gen_unique_name namespace to processes as well.

The standard says that there are namespaces for each module, and
one global namespace. Accellera also has namespaces for each process,
which shows up in the test output.

Change-Id: I4c8c5cecd5fb685d7bab521d9ae131aef23a6ab4
Reviewed-on: https://gem5-review.googlesource.com/c/13291
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
This commit is contained in:
Gabe Black
2018-10-03 17:08:15 -07:00
parent 0686b85533
commit d371c9e0db
2 changed files with 11 additions and 2 deletions

View File

@@ -36,6 +36,7 @@
#include "base/fiber.hh"
#include "systemc/core/list.hh"
#include "systemc/core/module.hh"
#include "systemc/core/object.hh"
#include "systemc/core/sched_event.hh"
#include "systemc/core/sensitivity.hh"
@@ -131,6 +132,8 @@ class Process : public ::sc_core::sc_process_b, public ListNode
void waitCount(int count) { _waitCount = count; }
const char *uniqueName(const char *seed) { return nameGen.gen(seed); }
protected:
void timeout();
@@ -191,6 +194,8 @@ class Process : public ::sc_core::sc_process_b, public ListNode
std::unique_ptr<::sc_core::sc_report> _lastReport;
std::vector<::sc_core::sc_join *> joinWaiters;
UniqueNameGen nameGen;
};
} // namespace sc_gem5

View File

@@ -799,8 +799,12 @@ const char *
sc_gen_unique_name(const char *seed)
{
auto mod = sc_gem5::pickParentModule();
return mod ? mod->uniqueName(seed) :
::sc_gem5::nameGen.gen(seed);
if (mod)
return mod->uniqueName(seed);
sc_gem5::Process *p = sc_gem5::scheduler.current();
if (p)
return p->uniqueName(seed);
return ::sc_gem5::nameGen.gen(seed);
}
bool