adds initial files for mt test
Some checks failed
SCC Test/pipeline/head There was a failure building this commit
Some checks failed
SCC Test/pipeline/head There was a failure building this commit
This commit is contained in:
30
.vscode/launch.json
vendored
30
.vscode/launch.json
vendored
@@ -4,6 +4,36 @@
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "gdb",
|
||||
"request": "launch",
|
||||
"name": "quantum_keeper_mt",
|
||||
"program": "${workspaceFolder}/build/Debug/tests/quantum_keeper_mt/quantum_keeper_mt"
|
||||
},
|
||||
{
|
||||
"name": "cppdbg quantum_keeper_mt",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"program": "${workspaceRoot}/build/Debug/tests/quantum_keeper_mt/quantum_keeper_mt",
|
||||
"args": [],
|
||||
"stopAtEntry": false,
|
||||
"cwd": "${fileDirname}",
|
||||
"environment": [],
|
||||
"externalConsole": false,
|
||||
"MIMode": "gdb",
|
||||
"setupCommands": [
|
||||
{
|
||||
"description": "Enable pretty-printing for gdb",
|
||||
"text": "-enable-pretty-printing",
|
||||
"ignoreFailures": true
|
||||
},
|
||||
{
|
||||
"description": "Set Disassembly Flavor to Intel",
|
||||
"text": "-gdb-set disassembly-flavor intel",
|
||||
"ignoreFailures": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "cci_param_restricted",
|
||||
"type": "gdb",
|
||||
|
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
@@ -6,6 +6,7 @@
|
||||
}
|
||||
],
|
||||
"editor.formatOnSave": true,
|
||||
"editor.hover.delay": 1500,
|
||||
"clangd.arguments": [
|
||||
"--pretty",
|
||||
"--background-index",
|
||||
|
@@ -35,7 +35,7 @@ class Pkg(ConanFile):
|
||||
}
|
||||
|
||||
def requirements(self):
|
||||
self.requires("systemc/2.3.4")
|
||||
self.requires("systemc/3.0.1")
|
||||
self.requires("fmt/8.0.1")
|
||||
self.requires("spdlog/1.9.2")
|
||||
self.requires("boost/1.85.0")
|
||||
@@ -44,9 +44,6 @@ class Pkg(ConanFile):
|
||||
self.requires("yaml-cpp/0.7.0")
|
||||
self.requires("jsoncpp/1.9.5")
|
||||
self.requires("zlib/1.2.12")
|
||||
self.requires("rapidjson/cci.20230929")
|
||||
if os.path.isdir("tgc-iss/dbt-rise-plugins"):
|
||||
self.requires("lua/5.4.3")
|
||||
|
||||
def build_requirements(self):
|
||||
pass
|
||||
|
2
scc
2
scc
Submodule scc updated: 6c25b65dc9...0330180d7b
@@ -11,6 +11,7 @@ add_subdirectory(sc_fixed_tracing)
|
||||
add_subdirectory(cxs_tlm)
|
||||
add_subdirectory(tlm_memory)
|
||||
add_subdirectory(memory_subsys)
|
||||
add_subdirectory(quantum_keeper_mt)
|
||||
add_subdirectory(sim_speed)
|
||||
if(FULL_TEST_SUITE)
|
||||
add_subdirectory(sim_performance)
|
||||
|
5
tests/quantum_keeper_mt/CMakeLists.txt
Normal file
5
tests/quantum_keeper_mt/CMakeLists.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
add_executable (quantum_keeper_mt
|
||||
sc_main.cpp
|
||||
)
|
||||
target_link_libraries (quantum_keeper_mt LINK_PUBLIC scc-sysc)
|
||||
add_test(NAME quantum_keeper_mt COMMAND quantum_keeper_mt)
|
38
tests/quantum_keeper_mt/sc_main.cpp
Normal file
38
tests/quantum_keeper_mt/sc_main.cpp
Normal file
@@ -0,0 +1,38 @@
|
||||
#include "top_module.h"
|
||||
#include <csetjmp>
|
||||
#include <csignal>
|
||||
#include <cstdlib>
|
||||
#include <scc/configurer.h>
|
||||
#include <scc/report.h>
|
||||
#include <scc/trace.h>
|
||||
#include <scc/tracer.h>
|
||||
#include <util/ities.h>
|
||||
|
||||
using namespace scc;
|
||||
using namespace sc_core;
|
||||
|
||||
jmp_buf abrt;
|
||||
void ABRThandler(int sig) { longjmp(abrt, 1); }
|
||||
|
||||
int sc_main(int argc, char* argv[]) {
|
||||
signal(SIGABRT, ABRThandler);
|
||||
auto my_name = util::split(argv[0], '/').back();
|
||||
auto level = "7"; // getenv("SCC_TEST_VERBOSE");
|
||||
auto log_lvl = level ? static_cast<scc::log>(std::min(strtoul(level, nullptr, 10) + 4, 7UL)) : log::FATAL;
|
||||
scc::init_logging(LogConfig().logLevel(log_lvl).logAsync(false).msgTypeFieldWidth(35));
|
||||
scc::configurer cfg("");
|
||||
// create tracer if environment variable SCC_TEST_TRACE is defined
|
||||
std::unique_ptr<scc::tracer> tracer;
|
||||
if(auto* test_trace = getenv("SCC_TEST_TRACE")) {
|
||||
tracer = std::make_unique<scc::tracer>(my_name, scc::tracer::ENABLE, scc::tracer::ENABLE);
|
||||
cfg.set_value("scc_tracer.default_trace_enable", true);
|
||||
}
|
||||
int result = -1;
|
||||
if(setjmp(abrt) == 0) {
|
||||
// instantiate design(s)
|
||||
top_module top_mod("top_module_inst");
|
||||
// Start the simulation
|
||||
sc_core::sc_start(1140, sc_core::SC_NS);
|
||||
}
|
||||
return result;
|
||||
}
|
44
tests/quantum_keeper_mt/top_module.h
Normal file
44
tests/quantum_keeper_mt/top_module.h
Normal file
@@ -0,0 +1,44 @@
|
||||
#ifndef _TOP_MODULE_H_
|
||||
#define _TOP_MODULE_H_
|
||||
|
||||
#include <atomic>
|
||||
#include <scc/async_queue.h>
|
||||
#include <scc/async_thread.h>
|
||||
#include <scc/report.h>
|
||||
#include <sysc/kernel/sc_initializer_function.h>
|
||||
#include <tlm/scc/quantum_keeper.h>
|
||||
#include <tlm>
|
||||
|
||||
struct top_module : ::sc_core ::sc_module {
|
||||
top_module(sc_core::sc_module_name nm)
|
||||
: sc_core::sc_module(nm) {
|
||||
SC_THREAD(run);
|
||||
}
|
||||
|
||||
~top_module() {}
|
||||
|
||||
private:
|
||||
void run() {
|
||||
wait(sc_core::SC_ZERO_TIME); // separate from elaboration phase
|
||||
do {
|
||||
quantum_keeper.reset();
|
||||
core_executor.start([this]() { thread_exec(); });
|
||||
wait(core_executor.thread_finish_event());
|
||||
} while(!finish.load(std::memory_order_relaxed));
|
||||
sc_core::sc_stop();
|
||||
}
|
||||
|
||||
void thread_exec() {
|
||||
for(auto i = 0u; i < 16; ++i) {
|
||||
SCCINFO(SCMOD) << "[" << __PRETTY_FUNCTION__ << "]" << " local time " << quantum_keeper.get_local_absolute_time();
|
||||
quantum_keeper.check_and_sync(1_us);
|
||||
}
|
||||
finish.store(true, std::memory_order_release);
|
||||
}
|
||||
tlm::scc::quantumkeeper_mt quantum_keeper;
|
||||
std::atomic_bool finish{false};
|
||||
scc::async_thread core_executor;
|
||||
};
|
||||
// top_module
|
||||
|
||||
#endif // _TOP_MODULE_H_
|
Reference in New Issue
Block a user