extends cxs_tlm test to support tracing
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:
6
.envrc
6
.envrc
@@ -1,4 +1,8 @@
|
|||||||
module load ./Modulefile
|
module load tools/utilities
|
||||||
|
module load tools/cmake/3.28
|
||||||
|
module load tools/clang/14.0
|
||||||
|
module load tools/vscode
|
||||||
|
|
||||||
distro=`/bin/lsb_release -i -s`
|
distro=`/bin/lsb_release -i -s`
|
||||||
if [ $distro == "CentOS" ]; then
|
if [ $distro == "CentOS" ]; then
|
||||||
. /opt/rh/devtoolset-8/enable
|
. /opt/rh/devtoolset-8/enable
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -48,3 +48,4 @@
|
|||||||
/.venv/
|
/.venv/
|
||||||
/.cache
|
/.cache
|
||||||
/CMakeUserPresets.json
|
/CMakeUserPresets.json
|
||||||
|
*.scview
|
||||||
|
56
.vscode/launch.json
vendored
56
.vscode/launch.json
vendored
@@ -1,22 +1,38 @@
|
|||||||
{
|
{
|
||||||
// Use IntelliSense to learn about possible attributes.
|
// Use IntelliSense to learn about possible attributes.
|
||||||
// Hover to view descriptions of existing attributes.
|
// Hover to view descriptions of existing attributes.
|
||||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
"version": "0.2.0",
|
"version": "0.2.0",
|
||||||
"configurations": [{
|
"configurations": [
|
||||||
"name": "cci_param_restricted",
|
{
|
||||||
"type": "gdb",
|
"name": "cci_param_restricted",
|
||||||
"request": "launch",
|
"type": "gdb",
|
||||||
"cwd": "${workspaceRoot}",
|
"request": "launch",
|
||||||
"program": "${workspaceRoot}/build/Debug/tests/cci_param_restricted/cci_param_restricted",
|
"cwd": "${workspaceRoot}",
|
||||||
"preLaunchTask": "CMake: build"
|
"program": "${workspaceRoot}/build/Debug/tests/cci_param_restricted/cci_param_restricted",
|
||||||
},{
|
"preLaunchTask": "CMake: build"
|
||||||
"name": "dmi_access",
|
},
|
||||||
"type": "gdb",
|
{
|
||||||
"request": "launch",
|
"name": "dmi_access",
|
||||||
"cwd": "${workspaceRoot}",
|
"type": "gdb",
|
||||||
"program": "${workspaceRoot}/build/Debug/tests/memory_subsys/memory_subsys",
|
"request": "launch",
|
||||||
"preLaunchTask": "CMake: build"
|
"cwd": "${workspaceRoot}",
|
||||||
}
|
"program": "${workspaceRoot}/build/Debug/tests/memory_subsys/memory_subsys",
|
||||||
]
|
"preLaunchTask": "CMake: build"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cxs_tlm",
|
||||||
|
"type": "gdb",
|
||||||
|
"request": "launch",
|
||||||
|
"cwd": "${workspaceRoot}",
|
||||||
|
"program": "${workspaceRoot}/build/Debug/tests/cxs_tlm/cxs_tlm",
|
||||||
|
"arguments": "-n single-packet",
|
||||||
|
"preLaunchTask": "CMake: build",
|
||||||
|
"environment": {
|
||||||
|
"SCC_TEST_TRACE": "1",
|
||||||
|
"SCC_TEST_VERBOSE": "1"
|
||||||
|
},
|
||||||
|
"openGdbConsole": true
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
12
.vscode/settings.json
vendored
12
.vscode/settings.json
vendored
@@ -11,8 +11,8 @@
|
|||||||
"--background-index",
|
"--background-index",
|
||||||
"--compile-commands-dir=${workspaceFolder}/build"
|
"--compile-commands-dir=${workspaceFolder}/build"
|
||||||
],
|
],
|
||||||
"cmake.buildDirectory" : "${workspaceRoot}/build/${buildType}",
|
"cmake.buildDirectory": "${workspaceRoot}/build/${buildType}",
|
||||||
"cmake.configureArgs": ["-B", "${workspaceRoot}/build/${buildType}"],
|
//"cmake.configureArgs": ["-B", "${workspaceRoot}/build/${buildType}"],
|
||||||
"cmake.configureOnOpen": false,
|
"cmake.configureOnOpen": false,
|
||||||
"cmake.configureOnEdit": true,
|
"cmake.configureOnEdit": true,
|
||||||
"cmake.autoSelectActiveFolder": true,
|
"cmake.autoSelectActiveFolder": true,
|
||||||
@@ -21,8 +21,12 @@
|
|||||||
"cmake.copyCompileCommands": "${workspaceFolder}/build/compile_commands.json",
|
"cmake.copyCompileCommands": "${workspaceFolder}/build/compile_commands.json",
|
||||||
"cmake.options.statusBarVisibility": "hidden",
|
"cmake.options.statusBarVisibility": "hidden",
|
||||||
"cmake.options.advanced": {
|
"cmake.options.advanced": {
|
||||||
"configure": {"projectStatusVisibility": "visible"},
|
"configure": {
|
||||||
"build": {"statusBarVisibility": "visible"}
|
"projectStatusVisibility": "visible"
|
||||||
|
},
|
||||||
|
"build": {
|
||||||
|
"statusBarVisibility": "visible"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"todo-tree.ripgrep.ripgrep": "/bin/rg",
|
"todo-tree.ripgrep.ripgrep": "/bin/rg",
|
||||||
"files.watcherExclude": {
|
"files.watcherExclude": {
|
||||||
|
17
Modulefile
17
Modulefile
@@ -1,17 +0,0 @@
|
|||||||
#%Module######################################################################
|
|
||||||
##
|
|
||||||
## Project Module
|
|
||||||
##
|
|
||||||
proc ModulesHelp { } {
|
|
||||||
puts stderr "\tThe SCC Tests Project Module\n"
|
|
||||||
puts stderr "\tThis module loads PATHs and variables for SCC tests."
|
|
||||||
}
|
|
||||||
|
|
||||||
set distro [exec /usr/bin/lsb_release -i -s]
|
|
||||||
if { $distro == "CentOS" && ![info exists ::env(PROJECT)] && ![info exists ::env(PCP_DIR)] } {
|
|
||||||
puts stderr "Don't forget to execute 'scl enable devtoolset-7 llvm-toolset-7 bash'"
|
|
||||||
}
|
|
||||||
|
|
||||||
module load tools/utilities
|
|
||||||
module load tools/cmake/3.28
|
|
||||||
module load tools/clang/14.0
|
|
2
scc
2
scc
Submodule scc updated: 50de0c564a...4429911c18
@@ -10,6 +10,7 @@
|
|||||||
#include <csetjmp>
|
#include <csetjmp>
|
||||||
#include <csignal>
|
#include <csignal>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
#include <scc/configurer.h>
|
||||||
#include <scc/report.h>
|
#include <scc/report.h>
|
||||||
#include <scc/trace.h>
|
#include <scc/trace.h>
|
||||||
#include <scc/tracer.h>
|
#include <scc/tracer.h>
|
||||||
@@ -27,10 +28,12 @@ int sc_main(int argc, char* argv[]) {
|
|||||||
auto level = getenv("SCC_TEST_VERBOSE");
|
auto level = getenv("SCC_TEST_VERBOSE");
|
||||||
auto log_lvl = level ? static_cast<scc::log>(std::min(strtoul(level, nullptr, 10) + 4, 7UL)) : log::FATAL;
|
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::init_logging(LogConfig().logLevel(log_lvl).logAsync(false).msgTypeFieldWidth(35));
|
||||||
|
scc::configurer cfg("");
|
||||||
// create tracer if environment variable SCC_TEST_TRACE is defined
|
// create tracer if environment variable SCC_TEST_TRACE is defined
|
||||||
std::unique_ptr<scc::tracer> tracer;
|
std::unique_ptr<scc::tracer> tracer;
|
||||||
if(auto* test_trace = getenv("SCC_TEST_TRACE")) {
|
if(auto* test_trace = getenv("SCC_TEST_TRACE")) {
|
||||||
tracer = std::make_unique<scc::tracer>(my_name, scc::tracer::ENABLE, scc::tracer::ENABLE);
|
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;
|
int result = -1;
|
||||||
if(setjmp(abrt) == 0) {
|
if(setjmp(abrt) == 0) {
|
||||||
|
@@ -5,7 +5,6 @@
|
|||||||
#undef CHECK
|
#undef CHECK
|
||||||
#include <catch2/catch_all.hpp>
|
#include <catch2/catch_all.hpp>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <unordered_map>
|
|
||||||
|
|
||||||
using namespace sc_core;
|
using namespace sc_core;
|
||||||
namespace cxs {
|
namespace cxs {
|
||||||
@@ -17,6 +16,7 @@ template <unsigned WIDTH, typename STATE> unsigned run_scenario(STATE& state, un
|
|||||||
auto& dut = factory::get<testbench<WIDTH>>();
|
auto& dut = factory::get<testbench<WIDTH>>();
|
||||||
if(burst_factor)
|
if(burst_factor)
|
||||||
dut.tx.burst_len.set_value(burst_factor);
|
dut.tx.burst_len.set_value(burst_factor);
|
||||||
|
dut.rx.max_credit.set_value(5);
|
||||||
dut.rst.write(true);
|
dut.rst.write(true);
|
||||||
sc_start(state.reset_cycles * dut.clk.period());
|
sc_start(state.reset_cycles * dut.clk.period());
|
||||||
dut.rst.write(false);
|
dut.rst.write(false);
|
||||||
|
@@ -2,12 +2,12 @@
|
|||||||
#define _TESTBENCH_H_
|
#define _TESTBENCH_H_
|
||||||
|
|
||||||
#include <cxs/cxs_tlm.h>
|
#include <cxs/cxs_tlm.h>
|
||||||
|
#include <cxs/scv/tlm_recording.h>
|
||||||
#include <scc/cci_util.h>
|
#include <scc/cci_util.h>
|
||||||
#include <scc/configurer.h>
|
#include <scc/configurer.h>
|
||||||
#include <scc/observer.h>
|
#include <scc/observer.h>
|
||||||
#include <scc/sc_variable.h>
|
#include <scc/sc_variable.h>
|
||||||
#include <scc/tracer.h>
|
#include <scc/tracer.h>
|
||||||
#include <string>
|
|
||||||
#include <systemc>
|
#include <systemc>
|
||||||
#include <tlm/nw/initiator_mixin.h>
|
#include <tlm/nw/initiator_mixin.h>
|
||||||
#include <tlm/nw/target_mixin.h>
|
#include <tlm/nw/target_mixin.h>
|
||||||
@@ -27,7 +27,9 @@ template <unsigned PHIT_WIDTH> struct testbench : public sc_core::sc_module {
|
|||||||
sc_core::sc_signal<bool> rst{"rst"};
|
sc_core::sc_signal<bool> rst{"rst"};
|
||||||
tlm::nw::initiator_mixin<cxs_pkt_initiator_socket<>, cxs_packet_types> isck{"isck"};
|
tlm::nw::initiator_mixin<cxs_pkt_initiator_socket<>, cxs_packet_types> isck{"isck"};
|
||||||
cxs_transmitter<PHIT_WIDTH> tx{"tx"};
|
cxs_transmitter<PHIT_WIDTH> tx{"tx"};
|
||||||
|
tlm::nw::scv::tlm_recorder_module<CXS_CMD, PHIT_WIDTH, cxs_flit_types> tx_rec{"tx_rec"};
|
||||||
cxs_channel<PHIT_WIDTH> cxs_chan{"cxs_chan"};
|
cxs_channel<PHIT_WIDTH> cxs_chan{"cxs_chan"};
|
||||||
|
tlm::nw::scv::tlm_recorder_module<CXS_CMD, PHIT_WIDTH, cxs_flit_types> rx_rec{"rx_rec"};
|
||||||
cxs_receiver<PHIT_WIDTH> rx{"rx"};
|
cxs_receiver<PHIT_WIDTH> rx{"rx"};
|
||||||
tlm::nw::target_mixin<cxs_pkt_target_socket<>, false, cxs_packet_types> tsck{"tsck"};
|
tlm::nw::target_mixin<cxs_pkt_target_socket<>, false, cxs_packet_types> tsck{"tsck"};
|
||||||
|
|
||||||
@@ -43,12 +45,25 @@ template <unsigned PHIT_WIDTH> struct testbench : public sc_core::sc_module {
|
|||||||
isck(tx.tsck);
|
isck(tx.tsck);
|
||||||
tx.clk_i(clk);
|
tx.clk_i(clk);
|
||||||
tx.rst_i(rst);
|
tx.rst_i(rst);
|
||||||
|
cxs_chan.tx_clk_i(clk);
|
||||||
|
cxs_chan.rx_clk_i(clk);
|
||||||
|
#if 0
|
||||||
tx.isck(cxs_chan.tsck);
|
tx.isck(cxs_chan.tsck);
|
||||||
cxs_chan.isck(rx.tsck);
|
cxs_chan.isck(rx.tsck);
|
||||||
|
#else
|
||||||
|
tx.isck(tx_rec.ts);
|
||||||
|
tx_rec.is(cxs_chan.tsck);
|
||||||
|
cxs_chan.isck(rx_rec.ts);
|
||||||
|
rx_rec.is(rx.tsck);
|
||||||
|
#endif
|
||||||
rx.clk_i(clk);
|
rx.clk_i(clk);
|
||||||
rx.rst_i(rst);
|
rx.rst_i(rst);
|
||||||
rx.isck(tsck);
|
rx.isck(tsck);
|
||||||
|
tx.clock_period.set_value(1_ns);
|
||||||
|
cxs_chan.tx_clock_period.set_value(1_ns);
|
||||||
cxs_chan.channel_delay.set_value(100_ns);
|
cxs_chan.channel_delay.set_value(100_ns);
|
||||||
|
cxs_chan.rx_clock_period.set_value(1_ns);
|
||||||
|
rx.clock_period.set_value(1_ns);
|
||||||
rx.max_credit.set_value(15);
|
rx.max_credit.set_value(15);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user