91 SST_ELI_REGISTER_COMPONENT(
92 coreTestClockerComponent,
94 "coreTestClockerComponent",
95 SST_ELI_ELEMENT_VERSION(1,0,0),
96 "Clock Benchmark Component",
97 COMPONENT_CATEGORY_UNCATEGORIZED
101 SST_ELI_DOCUMENT_PARAMS(
105 SST_ELI_DOCUMENT_STATISTICS(
108 SST_ELI_DOCUMENT_PORTS(
109 {
"left",
"Left port", {
"" } },
110 {
"right",
"Right port", {
"" } },
114 SST_ELI_DOCUMENT_SUBCOMPONENT_SLOTS(
117 coreTestClockerComponent(SST::ComponentId_t
id,
SST::Params& params);
120 void setup()
override;
123 ImplementSerializable(coreTestClockerComponent);
126 coreTestClockerComponent() =
default;
127 ~coreTestClockerComponent() =
default;
128 coreTestClockerComponent(
const coreTestClockerComponent&) =
delete;
129 coreTestClockerComponent& operator=(
const coreTestClockerComponent&) =
delete;
132 static constexpr int total_count = 3;
134 inline static const std::string master_period =
"5ns";
135 inline static const std::string test_period =
"1ns";
145 Link* left_ =
nullptr;
146 Link* right_ =
nullptr;
148 void handle_left(
Event* ev);
154 bool master_handler(Cycle_t cycle);
164 void inst_handler(
Event* ev);
241 bool new_style =
false;
256 std::vector<ClockInfo> clocks_;
261 enum class Op { nop, start, stop, term };
263 int ordered_var_test_ = -1;
264 bool ordered_handler_remove_ =
false;
273 inline static const std::vector<std::vector<OpBundle>> instructions = {
274 { { Op::start, 1 }, { Op::start, 5 }, { Op::start, 6 }, { Op::start, 7 }, { Op::start, 8 } },
275 { { Op::start, 0 }, { Op::stop, 6 } }, { { Op::start, 3 }, { Op::stop, 7 } },
276 { { Op::stop, 1 }, { Op::start, 6 } },
277 { { Op::start, 2 }, { Op::start, 4 } },
278 { { Op::stop, 3 }, { Op::start, 5 }, { Op::start, 6 }, { Op::start, 8 } },
279 { { Op::start, 1 }, { Op::start, 6 }, { Op::start, 5 }, { Op::start, 8 }, { Op::start, 7 } },
280 { { Op::start, 0 } }, { { Op::start, 3 } }, { { Op::stop, 1 } }, { { Op::start, 2 } }, { { Op::stop, 3 } },