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::NotificationSource<uint64_t>> toggle_trigger_notification_source_;
112 std::unique_ptr<sparta::trigger::ExpressionTrigger> toggle_notif_trigger_;
113 void postToToggleTrigger_();
119 std::unique_ptr<sparta::NotificationSource<uint64_t>> legacy_warmup_report_starter_;
120 std::vector<std::unique_ptr<sparta::trigger::ExpressionTrigger>> core_warmup_listeners_;
121 uint32_t num_cores_still_warming_up_ = 0;
122 void onLegacyWarmupNotification_();
127 void onTriggered_(
const std::string & msg);
128 bool on_triggered_notifier_registered_ =
false;
133 void validateTreeNodeExtensions_();
144 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.