51 stream <<
"DFT has BE distributions which are neither exponential nor constant failed/failsafe.";
59 for (
auto module1 = spareModules.begin(); module1 != spareModules.end(); ++module1) {
60 auto const& module1Elements = module1->getElements();
61 if (!module1Elements.empty()) {
63 size_t firstElement = *module1Elements.begin();
64 for (
auto module2 = std::next(module1); module2 != spareModules.end(); ++module2) {
65 auto const& module2Elements = module2->getElements();
66 if (std::find(module2Elements.begin(), module2Elements.end(), firstElement) != module2Elements.end()) {
67 stream <<
"Spare modules of '" << dft.
getElement(module1->getRepresentative())->name() <<
"' and '"
68 << dft.
getElement(module2->getRepresentative())->name() <<
"' should not overlap.";
76 std::vector<size_t> primaryModuleIds;
78 primaryModuleIds.push_back(dft.
getGate(spareId)->children()[0]->id());
81 for (
size_t primaryModuleId : primaryModuleIds) {
86 auto beConst = std::static_pointer_cast<storm::dft::storage::elements::BEConst<ValueType>
const>(be);
87 if (beConst->canFail()) {
88 stream <<
"Spare module of '" << dft.
getElement(primaryModuleId)->name() <<
"' contains a constant failed BE '" << beConst->name()
98 for (
auto module1It = primaryModuleIds.begin(); module1It != primaryModuleIds.end(); ++module1It) {
99 for (
auto module2It = std::next(module1It); module2It != primaryModuleIds.end(); ++module2It) {
100 if (*module1It == *module2It) {
101 stream <<
"Module of '" << dft.
getElement(*module1It)->name() <<
"' is shared primary module of multiple SPAREs.";
112 stream <<
"DFT has more than one constant failed BE.";
118 stream <<
"DFT has dependency with more than one dependent event.";