35 uint32_t num_cores=1, uint64_t instruction_limit=0,
36 bool show_factories =
false);
48 void registerStatCalculationFcns_();
52 void buildTree_()
override;
55 void configureTree_()
override;
59 void bindTree_()
override;
62 void reportGenerationStarted_(
const uint64_t &);
63 bool report_generation_fired_ =
false;
66 std::unique_ptr<sparta::Baz> dispatch_baz_;
67 std::unique_ptr<sparta::Baz> fpu_baz_;
86 void customEatCallback_();
87 void customSleepCallback_();
91 std::string cpu_topology_;
94 const uint32_t num_cores_;
97 const uint64_t instruction_limit_;
99 std::vector<sparta::TreeNode*> tlb_nodes_;
104 std::unique_ptr<sparta::NotificationSource<uint64_t>> testing_notification_source_;
105 std::unique_ptr<sparta::trigger::ExpressionTrigger> random_number_trigger_;
106 void postRandomNumber_();
111 std::unique_ptr<sparta::SprintfNotificationSource> sprintf_test_notification_source_;
116 std::unique_ptr<sparta::NotificationSource<uint64_t>> toggle_trigger_notification_source_;
117 std::unique_ptr<sparta::trigger::ExpressionTrigger> toggle_notif_trigger_;
118 void postToToggleTrigger_();
124 std::unique_ptr<sparta::NotificationSource<uint64_t>> legacy_warmup_report_starter_;
125 std::vector<std::unique_ptr<sparta::trigger::ExpressionTrigger>> core_warmup_listeners_;
126 uint32_t num_cores_still_warming_up_ = 0;
127 void onLegacyWarmupNotification_();
132 void onTriggered_(
const std::string & msg);
133 bool on_triggered_notifier_registered_ =
false;
138 template <
typename ParamT>
141 const std::string& param_name,
142 const std::string& ext_name =
"");
147 template <
typename ExtensionT = sparta::TreeNode::ExtensionsBase>
148 ExtensionT* getExtension_(
150 const std::string& ext_name =
"");
155 void validateTreeNodeExtensions_();
166 bool show_factories_;
ExampleSimulator(const std::string &topology, sparta::Scheduler &scheduler, uint32_t num_cores=1, uint64_t instruction_limit=0, bool show_factories=false)
Construct ExampleSimulator.