|  | @ -17,12 +17,14 @@ namespace storm { | 
		
	
		
			
				|  |  |             } |  |  |             } | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |             template<typename ValueType> |  |  |             template<typename ValueType> | 
		
	
		
			
				|  |  |             void DftToGspnTransformator<ValueType>::transform(std::map<uint64_t, uint64_t> const &priorities, std::set<uint64_t> const &dontCareElements, bool smart, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |             void DftToGspnTransformator<ValueType>::transform(std::map<uint64_t, uint64_t> const &priorities, | 
		
	
		
			
				|  |  |  |  |  |                                                               std::set<uint64_t> const &dontCareElements, bool smart, | 
		
	
		
			
				|  |  |                                                               bool mergeDCFailed) { |  |  |                                                               bool mergeDCFailed) { | 
		
	
		
			
				|  |  |                 this->priorities = priorities; |  |  |                 this->priorities = priorities; | 
		
	
		
			
				|  |  |                 this->dontCareElements = dontCareElements; |  |  |                 this->dontCareElements = dontCareElements; | 
		
	
		
			
				|  |  |                 this->smart = smart; |  |  |                 this->smart = smart; | 
		
	
		
			
				|  |  |                 this->mergedDCFailed = false;//mergeDCFailed;
 |  |  |                 this->mergedDCFailed = false;//mergeDCFailed;
 | 
		
	
		
			
				|  |  |  |  |  |                 this->dontCarePriority = 1; | 
		
	
		
			
				|  |  |                 builder.setGspnName("DftToGspnTransformation"); |  |  |                 builder.setGspnName("DftToGspnTransformation"); | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |                 // Translate all GSPN elements
 |  |  |                 // Translate all GSPN elements
 | 
		
	
	
		
			
				|  | @ -37,7 +39,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                 std::map<uint64_t, uint64_t> priorities; |  |  |                 std::map<uint64_t, uint64_t> priorities; | 
		
	
		
			
				|  |  |                 for (std::size_t i = 0; i < mDft.nrElements(); i++) { |  |  |                 for (std::size_t i = 0; i < mDft.nrElements(); i++) { | 
		
	
		
			
				|  |  |                     // Give all elements the same priority
 |  |  |                     // Give all elements the same priority
 | 
		
	
		
			
				|  |  |                     priorities[i] = 1; |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     priorities[i] = 2; | 
		
	
		
			
				|  |  |                 } |  |  |                 } | 
		
	
		
			
				|  |  |                 return priorities; |  |  |                 return priorities; | 
		
	
		
			
				|  |  |             } |  |  |             } | 
		
	
	
		
			
				|  | @ -45,7 +47,8 @@ namespace storm { | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |             template<typename ValueType> |  |  |             template<typename ValueType> | 
		
	
		
			
				|  |  |             uint64_t DftToGspnTransformator<ValueType>::toplevelFailedPlaceId() { |  |  |             uint64_t DftToGspnTransformator<ValueType>::toplevelFailedPlaceId() { | 
		
	
		
			
				|  |  |                 STORM_LOG_ASSERT(failedPlaces.size() > mDft.getTopLevelIndex(), "Failed place for top level element does not exist."); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                 STORM_LOG_ASSERT(failedPlaces.size() > mDft.getTopLevelIndex(), | 
		
	
		
			
				|  |  |  |  |  |                                  "Failed place for top level element does not exist."); | 
		
	
		
			
				|  |  |                 return failedPlaces.at(mDft.getTopLevelIndex()); |  |  |                 return failedPlaces.at(mDft.getTopLevelIndex()); | 
		
	
		
			
				|  |  |             } |  |  |             } | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
	
		
			
				|  | @ -123,7 +126,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                 activePlaces.emplace(dftBE->id(), activePlace); |  |  |                 activePlaces.emplace(dftBE->id(), activePlace); | 
		
	
		
			
				|  |  |                 builder.setPlaceLayoutInfo(activePlace, storm::gspn::LayoutInfo(xcenter - 3.0, ycenter)); |  |  |                 builder.setPlaceLayoutInfo(activePlace, storm::gspn::LayoutInfo(xcenter - 3.0, ycenter)); | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |                 uint64_t tActive = builder.addTimedTransition(defaultPriority, dftBE->activeFailureRate(), |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                 uint64_t tActive = builder.addTimedTransition(getFailPriority(dftBE), dftBE->activeFailureRate(), | 
		
	
		
			
				|  |  |                                                               dftBE->name() + "_activeFailing"); |  |  |                                                               dftBE->name() + "_activeFailing"); | 
		
	
		
			
				|  |  |                 builder.setTransitionLayoutInfo(tActive, storm::gspn::LayoutInfo(xcenter, ycenter + 3.0)); |  |  |                 builder.setTransitionLayoutInfo(tActive, storm::gspn::LayoutInfo(xcenter, ycenter + 3.0)); | 
		
	
		
			
				|  |  |                 builder.addInputArc(activePlace, tActive); |  |  |                 builder.addInputArc(activePlace, tActive); | 
		
	
	
		
			
				|  | @ -131,7 +134,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                 builder.addOutputArc(tActive, activePlace); |  |  |                 builder.addOutputArc(tActive, activePlace); | 
		
	
		
			
				|  |  |                 builder.addOutputArc(tActive, failedPlace); |  |  |                 builder.addOutputArc(tActive, failedPlace); | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |                 uint64_t tPassive = builder.addTimedTransition(defaultPriority, dftBE->passiveFailureRate(), |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                 uint64_t tPassive = builder.addTimedTransition(getFailPriority(dftBE), dftBE->passiveFailureRate(), | 
		
	
		
			
				|  |  |                                                                dftBE->name() + "_passiveFailing"); |  |  |                                                                dftBE->name() + "_passiveFailing"); | 
		
	
		
			
				|  |  |                 builder.setTransitionLayoutInfo(tPassive, storm::gspn::LayoutInfo(xcenter, ycenter - 3.0)); |  |  |                 builder.setTransitionLayoutInfo(tPassive, storm::gspn::LayoutInfo(xcenter, ycenter - 3.0)); | 
		
	
		
			
				|  |  |                 builder.addInhibitionArc(activePlace, tPassive); |  |  |                 builder.addInhibitionArc(activePlace, tPassive); | 
		
	
	
		
			
				|  | @ -142,7 +145,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                     u_int64_t tDontCare = addDontcareTransition(dftBE, |  |  |                     u_int64_t tDontCare = addDontcareTransition(dftBE, | 
		
	
		
			
				|  |  |                                                                 storm::gspn::LayoutInfo(xcenter + 12.0, ycenter)); |  |  |                                                                 storm::gspn::LayoutInfo(xcenter + 12.0, ycenter)); | 
		
	
		
			
				|  |  |                     if (!mergedDCFailed) { |  |  |                     if (!mergedDCFailed) { | 
		
	
		
			
				|  |  |                         uint64_t dontCarePlace = builder.addPlace(defaultPriority, 0, dftBE->name() + STR_DONTCARE); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                         uint64_t dontCarePlace = builder.addPlace(1, 0, dftBE->name() + STR_DONTCARE); | 
		
	
		
			
				|  |  |                         builder.setPlaceLayoutInfo(dontCarePlace, |  |  |                         builder.setPlaceLayoutInfo(dontCarePlace, | 
		
	
		
			
				|  |  |                                                    storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 5.0)); |  |  |                                                    storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 5.0)); | 
		
	
		
			
				|  |  |                         builder.addInhibitionArc(dontCarePlace, tDontCare); |  |  |                         builder.addInhibitionArc(dontCarePlace, tDontCare); | 
		
	
	
		
			
				|  | @ -153,12 +156,12 @@ namespace storm { | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |                         //Propagation for dependencies
 |  |  |                         //Propagation for dependencies
 | 
		
	
		
			
				|  |  |                         if (!smart || dftBE->hasIngoingDependencies()) { |  |  |                         if (!smart || dftBE->hasIngoingDependencies()) { | 
		
	
		
			
				|  |  |                             uint64_t dependencyPropagationPlace = builder.addPlace(defaultPriority, 0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t dependencyPropagationPlace = builder.addPlace(1, 0, | 
		
	
		
			
				|  |  |                                                                                    dftBE->name() + "_dependency_prop"); |  |  |                                                                                    dftBE->name() + "_dependency_prop"); | 
		
	
		
			
				|  |  |                             dependencyPropagationPlaces.emplace(dftBE->id(), dependencyPropagationPlace); |  |  |                             dependencyPropagationPlaces.emplace(dftBE->id(), dependencyPropagationPlace); | 
		
	
		
			
				|  |  |                             builder.setPlaceLayoutInfo(dependencyPropagationPlace, |  |  |                             builder.setPlaceLayoutInfo(dependencyPropagationPlace, | 
		
	
		
			
				|  |  |                                                        storm::gspn::LayoutInfo(xcenter + 10.0, ycenter - 5.0)); |  |  |                                                        storm::gspn::LayoutInfo(xcenter + 10.0, ycenter - 5.0)); | 
		
	
		
			
				|  |  |                             uint64_t tPropagationFailed = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                          dftBE->name() + "_prop_fail"); |  |  |                                                                                          dftBE->name() + "_prop_fail"); | 
		
	
		
			
				|  |  |                             builder.setTransitionLayoutInfo(tPropagationFailed, |  |  |                             builder.setTransitionLayoutInfo(tPropagationFailed, | 
		
	
		
			
				|  |  |                                                             storm::gspn::LayoutInfo(xcenter + 8.0, ycenter)); |  |  |                                                             storm::gspn::LayoutInfo(xcenter + 8.0, ycenter)); | 
		
	
	
		
			
				|  | @ -166,7 +169,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                             builder.addInputArc(failedPlace, tPropagationFailed); |  |  |                             builder.addInputArc(failedPlace, tPropagationFailed); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tPropagationFailed, failedPlace); |  |  |                             builder.addOutputArc(tPropagationFailed, failedPlace); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tPropagationFailed, dependencyPropagationPlace); |  |  |                             builder.addOutputArc(tPropagationFailed, dependencyPropagationPlace); | 
		
	
		
			
				|  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                            dftBE->name() + |  |  |                                                                                            dftBE->name() + | 
		
	
		
			
				|  |  |                                                                                            "_prop_dontCare"); |  |  |                                                                                            "_prop_dontCare"); | 
		
	
		
			
				|  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, |  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, | 
		
	
	
		
			
				|  | @ -250,17 +253,16 @@ namespace storm { | 
		
	
		
			
				|  |  |                         u_int64_t tDontCare = addDontcareTransition(dftAnd, |  |  |                         u_int64_t tDontCare = addDontcareTransition(dftAnd, | 
		
	
		
			
				|  |  |                                                                     storm::gspn::LayoutInfo(xcenter + 16.0, ycenter)); |  |  |                                                                     storm::gspn::LayoutInfo(xcenter + 16.0, ycenter)); | 
		
	
		
			
				|  |  |                         if (!mergedDCFailed) { |  |  |                         if (!mergedDCFailed) { | 
		
	
		
			
				|  |  |                             uint64_t dontCarePlace = builder.addPlace(defaultPriority, 0, |  |  |  | 
		
	
		
			
				|  |  |                                                                       dftAnd->name() + STR_DONTCARE); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t dontCarePlace = builder.addPlace(1, 0, dftAnd->name() + STR_DONTCARE); | 
		
	
		
			
				|  |  |                             builder.setPlaceLayoutInfo(dontCarePlace, |  |  |                             builder.setPlaceLayoutInfo(dontCarePlace, | 
		
	
		
			
				|  |  |                                                        storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); |  |  |                                                        storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); | 
		
	
		
			
				|  |  |                             builder.addInhibitionArc(dontCarePlace, tDontCare); |  |  |                             builder.addInhibitionArc(dontCarePlace, tDontCare); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tDontCare, dontCarePlace); |  |  |                             builder.addOutputArc(tDontCare, dontCarePlace); | 
		
	
		
			
				|  |  |                             //Propagation
 |  |  |                             //Propagation
 | 
		
	
		
			
				|  |  |                             uint64_t propagationPlace = builder.addPlace(defaultPriority, 0, dftAnd->name() + "_prop"); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t propagationPlace = builder.addPlace(1, 0, dftAnd->name() + "_prop"); | 
		
	
		
			
				|  |  |                             builder.setPlaceLayoutInfo(propagationPlace, |  |  |                             builder.setPlaceLayoutInfo(propagationPlace, | 
		
	
		
			
				|  |  |                                                        storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); |  |  |                                                        storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
		
	
		
			
				|  |  |                             uint64_t tPropagationFailed = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                          dftAnd->name() + "_prop_fail"); |  |  |                                                                                          dftAnd->name() + "_prop_fail"); | 
		
	
		
			
				|  |  |                             builder.setTransitionLayoutInfo(tPropagationFailed, |  |  |                             builder.setTransitionLayoutInfo(tPropagationFailed, | 
		
	
		
			
				|  |  |                                                             storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); |  |  |                                                             storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
		
	
	
		
			
				|  | @ -268,7 +270,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                             builder.addInputArc(failedPlace, tPropagationFailed); |  |  |                             builder.addInputArc(failedPlace, tPropagationFailed); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tPropagationFailed, failedPlace); |  |  |                             builder.addOutputArc(tPropagationFailed, failedPlace); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tPropagationFailed, propagationPlace); |  |  |                             builder.addOutputArc(tPropagationFailed, propagationPlace); | 
		
	
		
			
				|  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                            dftAnd->name() + |  |  |                                                                                            dftAnd->name() + | 
		
	
		
			
				|  |  |                                                                                            "_prop_dontCare"); |  |  |                                                                                            "_prop_dontCare"); | 
		
	
		
			
				|  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, |  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, | 
		
	
	
		
			
				|  | @ -332,16 +334,16 @@ namespace storm { | 
		
	
		
			
				|  |  |                         u_int64_t tDontCare = addDontcareTransition(dftOr, |  |  |                         u_int64_t tDontCare = addDontcareTransition(dftOr, | 
		
	
		
			
				|  |  |                                                                     storm::gspn::LayoutInfo(xcenter + 16.0, ycenter)); |  |  |                                                                     storm::gspn::LayoutInfo(xcenter + 16.0, ycenter)); | 
		
	
		
			
				|  |  |                         if (!mergedDCFailed) { |  |  |                         if (!mergedDCFailed) { | 
		
	
		
			
				|  |  |                             uint64_t dontCarePlace = builder.addPlace(defaultPriority, 0, dftOr->name() + STR_DONTCARE); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t dontCarePlace = builder.addPlace(1, 0, dftOr->name() + STR_DONTCARE); | 
		
	
		
			
				|  |  |                             builder.setPlaceLayoutInfo(dontCarePlace, |  |  |                             builder.setPlaceLayoutInfo(dontCarePlace, | 
		
	
		
			
				|  |  |                                                        storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); |  |  |                                                        storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); | 
		
	
		
			
				|  |  |                             builder.addInhibitionArc(dontCarePlace, tDontCare); |  |  |                             builder.addInhibitionArc(dontCarePlace, tDontCare); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tDontCare, dontCarePlace); |  |  |                             builder.addOutputArc(tDontCare, dontCarePlace); | 
		
	
		
			
				|  |  |                             //Propagation
 |  |  |                             //Propagation
 | 
		
	
		
			
				|  |  |                             uint64_t propagationPlace = builder.addPlace(defaultPriority, 0, dftOr->name() + "_prop"); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t propagationPlace = builder.addPlace(1, 0, dftOr->name() + "_prop"); | 
		
	
		
			
				|  |  |                             builder.setPlaceLayoutInfo(propagationPlace, |  |  |                             builder.setPlaceLayoutInfo(propagationPlace, | 
		
	
		
			
				|  |  |                                                        storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); |  |  |                                                        storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
		
	
		
			
				|  |  |                             uint64_t tPropagationFailed = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                          dftOr->name() + "_prop_fail"); |  |  |                                                                                          dftOr->name() + "_prop_fail"); | 
		
	
		
			
				|  |  |                             builder.setTransitionLayoutInfo(tPropagationFailed, |  |  |                             builder.setTransitionLayoutInfo(tPropagationFailed, | 
		
	
		
			
				|  |  |                                                             storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); |  |  |                                                             storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
		
	
	
		
			
				|  | @ -349,7 +351,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                             builder.addInputArc(failedPlace, tPropagationFailed); |  |  |                             builder.addInputArc(failedPlace, tPropagationFailed); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tPropagationFailed, failedPlace); |  |  |                             builder.addOutputArc(tPropagationFailed, failedPlace); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tPropagationFailed, propagationPlace); |  |  |                             builder.addOutputArc(tPropagationFailed, propagationPlace); | 
		
	
		
			
				|  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                            dftOr->name() + |  |  |                                                                                            dftOr->name() + | 
		
	
		
			
				|  |  |                                                                                            "_prop_dontCare"); |  |  |                                                                                            "_prop_dontCare"); | 
		
	
		
			
				|  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, |  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, | 
		
	
	
		
			
				|  | @ -455,17 +457,16 @@ namespace storm { | 
		
	
		
			
				|  |  |                         u_int64_t tDontCare = addDontcareTransition(dftVot, |  |  |                         u_int64_t tDontCare = addDontcareTransition(dftVot, | 
		
	
		
			
				|  |  |                                                                     storm::gspn::LayoutInfo(xcenter + 16.0, ycenter)); |  |  |                                                                     storm::gspn::LayoutInfo(xcenter + 16.0, ycenter)); | 
		
	
		
			
				|  |  |                         if (!mergedDCFailed) { |  |  |                         if (!mergedDCFailed) { | 
		
	
		
			
				|  |  |                             uint64_t dontCarePlace = builder.addPlace(defaultPriority, 0, |  |  |  | 
		
	
		
			
				|  |  |                                                                       dftVot->name() + STR_DONTCARE); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t dontCarePlace = builder.addPlace(1, 0, dftVot->name() + STR_DONTCARE); | 
		
	
		
			
				|  |  |                             builder.setPlaceLayoutInfo(dontCarePlace, |  |  |                             builder.setPlaceLayoutInfo(dontCarePlace, | 
		
	
		
			
				|  |  |                                                        storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); |  |  |                                                        storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); | 
		
	
		
			
				|  |  |                             builder.addInhibitionArc(dontCarePlace, tDontCare); |  |  |                             builder.addInhibitionArc(dontCarePlace, tDontCare); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tDontCare, dontCarePlace); |  |  |                             builder.addOutputArc(tDontCare, dontCarePlace); | 
		
	
		
			
				|  |  |                             //Propagation
 |  |  |                             //Propagation
 | 
		
	
		
			
				|  |  |                             uint64_t propagationPlace = builder.addPlace(defaultPriority, 0, dftVot->name() + "_prop"); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t propagationPlace = builder.addPlace(1, 0, dftVot->name() + "_prop"); | 
		
	
		
			
				|  |  |                             builder.setPlaceLayoutInfo(propagationPlace, |  |  |                             builder.setPlaceLayoutInfo(propagationPlace, | 
		
	
		
			
				|  |  |                                                        storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); |  |  |                                                        storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
		
	
		
			
				|  |  |                             uint64_t tPropagationFailed = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                          dftVot->name() + "_prop_fail"); |  |  |                                                                                          dftVot->name() + "_prop_fail"); | 
		
	
		
			
				|  |  |                             builder.setTransitionLayoutInfo(tPropagationFailed, |  |  |                             builder.setTransitionLayoutInfo(tPropagationFailed, | 
		
	
		
			
				|  |  |                                                             storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); |  |  |                                                             storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
		
	
	
		
			
				|  | @ -473,7 +474,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                             builder.addInputArc(failedPlace, tPropagationFailed); |  |  |                             builder.addInputArc(failedPlace, tPropagationFailed); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tPropagationFailed, failedPlace); |  |  |                             builder.addOutputArc(tPropagationFailed, failedPlace); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tPropagationFailed, propagationPlace); |  |  |                             builder.addOutputArc(tPropagationFailed, propagationPlace); | 
		
	
		
			
				|  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                            dftVot->name() + |  |  |                                                                                            dftVot->name() + | 
		
	
		
			
				|  |  |                                                                                            "_prop_dontCare"); |  |  |                                                                                            "_prop_dontCare"); | 
		
	
		
			
				|  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, |  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, | 
		
	
	
		
			
				|  | @ -522,7 +523,9 @@ namespace storm { | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |                 uint64_t failedPlace = addFailedPlace(dftPand, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter - 3.0)); |  |  |                 uint64_t failedPlace = addFailedPlace(dftPand, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter - 3.0)); | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |                 uint64_t tFailed = builder.addImmediateTransition(getFailPriority(dftPand), 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                 // Set priority lower if the PAND is exclusive
 | 
		
	
		
			
				|  |  |  |  |  |                 uint64_t tFailed = builder.addImmediateTransition( | 
		
	
		
			
				|  |  |  |  |  |                         inclusive ? getFailPriority(dftPand) : getFailPriority(dftPand) - 1, 0.0, | 
		
	
		
			
				|  |  |                         dftPand->name() + STR_FAILING); |  |  |                         dftPand->name() + STR_FAILING); | 
		
	
		
			
				|  |  |                 builder.setTransitionLayoutInfo(tFailed, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter + 3.0)); |  |  |                 builder.setTransitionLayoutInfo(tFailed, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter + 3.0)); | 
		
	
		
			
				|  |  |                 builder.addInhibitionArc(failedPlace, tFailed); |  |  |                 builder.addInhibitionArc(failedPlace, tFailed); | 
		
	
	
		
			
				|  | @ -566,8 +569,8 @@ namespace storm { | 
		
	
		
			
				|  |  |                                                                dftPand->name() + "_delay_" + previousChild->name()); |  |  |                                                                dftPand->name() + "_delay_" + previousChild->name()); | 
		
	
		
			
				|  |  |                         builder.setPlaceLayoutInfo(delayPlace, storm::gspn::LayoutInfo(xcenter - 5.0 + (i - 1) * 3.0, |  |  |                         builder.setPlaceLayoutInfo(delayPlace, storm::gspn::LayoutInfo(xcenter - 5.0 + (i - 1) * 3.0, | 
		
	
		
			
				|  |  |                                                                                        ycenter + 5.0)); |  |  |                                                                                        ycenter + 5.0)); | 
		
	
		
			
				|  |  |                         //TODO check if priority is set correctly
 |  |  |  | 
		
	
		
			
				|  |  |                         uint64_t tDelay = builder.addImmediateTransition(getFailPriority(dftPand) + 1, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                         // Priority of delayTransitions needs to be lower than for failsafeTransitions
 | 
		
	
		
			
				|  |  |  |  |  |                         uint64_t tDelay = builder.addImmediateTransition(getFailPriority(dftPand) - 1, 0.0, | 
		
	
		
			
				|  |  |                                                                          child->name() + "_" + dftPand->name() + |  |  |                                                                          child->name() + "_" + dftPand->name() + | 
		
	
		
			
				|  |  |                                                                          "_delayTransition"); |  |  |                                                                          "_delayTransition"); | 
		
	
		
			
				|  |  |                         builder.setTransitionLayoutInfo(tDelay, |  |  |                         builder.setTransitionLayoutInfo(tDelay, | 
		
	
	
		
			
				|  | @ -588,14 +591,14 @@ namespace storm { | 
		
	
		
			
				|  |  |                 // Dont Care
 |  |  |                 // Dont Care
 | 
		
	
		
			
				|  |  |                 if (dontCareElements.count(dftPand->id())) { |  |  |                 if (dontCareElements.count(dftPand->id())) { | 
		
	
		
			
				|  |  |                     //Propagation
 |  |  |                     //Propagation
 | 
		
	
		
			
				|  |  |                     uint64_t propagationPlace = builder.addPlace(defaultPriority, 0, dftPand->name() + "_prop"); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     uint64_t propagationPlace = builder.addPlace(1, 0, dftPand->name() + "_prop"); | 
		
	
		
			
				|  |  |                     builder.setPlaceLayoutInfo(propagationPlace, |  |  |                     builder.setPlaceLayoutInfo(propagationPlace, | 
		
	
		
			
				|  |  |                                                storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); |  |  |                                                storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
		
	
		
			
				|  |  |                     uint64_t tPropagationFailed = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                  dftPand->name() + "_prop_fail"); |  |  |                                                                                  dftPand->name() + "_prop_fail"); | 
		
	
		
			
				|  |  |                     builder.setTransitionLayoutInfo(tPropagationFailed, |  |  |                     builder.setTransitionLayoutInfo(tPropagationFailed, | 
		
	
		
			
				|  |  |                                                     storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); |  |  |                                                     storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
		
	
		
			
				|  |  |                     uint64_t tPropagationFailsafe = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     uint64_t tPropagationFailsafe = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                    dftPand->name() + "_prop_failsafe"); |  |  |                                                                                    dftPand->name() + "_prop_failsafe"); | 
		
	
		
			
				|  |  |                     builder.setTransitionLayoutInfo(tPropagationFailsafe, |  |  |                     builder.setTransitionLayoutInfo(tPropagationFailsafe, | 
		
	
		
			
				|  |  |                                                     storm::gspn::LayoutInfo(xcenter + 8.0, ycenter + 6.0)); |  |  |                                                     storm::gspn::LayoutInfo(xcenter + 8.0, ycenter + 6.0)); | 
		
	
	
		
			
				|  | @ -622,13 +625,13 @@ namespace storm { | 
		
	
		
			
				|  |  |                         u_int64_t tDontCare = addDontcareTransition(dftPand, |  |  |                         u_int64_t tDontCare = addDontcareTransition(dftPand, | 
		
	
		
			
				|  |  |                                                                     storm::gspn::LayoutInfo(xcenter + 16.0, ycenter)); |  |  |                                                                     storm::gspn::LayoutInfo(xcenter + 16.0, ycenter)); | 
		
	
		
			
				|  |  |                         if (!mergedDCFailed) { |  |  |                         if (!mergedDCFailed) { | 
		
	
		
			
				|  |  |                             uint64_t dontCarePlace = builder.addPlace(defaultPriority, 0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t dontCarePlace = builder.addPlace(1, 0, | 
		
	
		
			
				|  |  |                                                                       dftPand->name() + STR_DONTCARE); |  |  |                                                                       dftPand->name() + STR_DONTCARE); | 
		
	
		
			
				|  |  |                             builder.setPlaceLayoutInfo(dontCarePlace, |  |  |                             builder.setPlaceLayoutInfo(dontCarePlace, | 
		
	
		
			
				|  |  |                                                        storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); |  |  |                                                        storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); | 
		
	
		
			
				|  |  |                             builder.addInhibitionArc(dontCarePlace, tDontCare); |  |  |                             builder.addInhibitionArc(dontCarePlace, tDontCare); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tDontCare, dontCarePlace); |  |  |                             builder.addOutputArc(tDontCare, dontCarePlace); | 
		
	
		
			
				|  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                            dftPand->name() + |  |  |                                                                                            dftPand->name() + | 
		
	
		
			
				|  |  |                                                                                            "_prop_dontCare"); |  |  |                                                                                            "_prop_dontCare"); | 
		
	
		
			
				|  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, |  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, | 
		
	
	
		
			
				|  | @ -657,7 +660,9 @@ namespace storm { | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |                 uint64_t failedPlace = addFailedPlace(dftPor, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter - 3.0)); |  |  |                 uint64_t failedPlace = addFailedPlace(dftPor, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter - 3.0)); | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |                 uint64_t tFailed = builder.addImmediateTransition(getFailPriority(dftPor), 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                 // Set priority lower if the POR is exclusive
 | 
		
	
		
			
				|  |  |  |  |  |                 uint64_t tFailed = builder.addImmediateTransition( | 
		
	
		
			
				|  |  |  |  |  |                         inclusive ? getFailPriority(dftPor) : getFailPriority(dftPor) - 1, 0.0, | 
		
	
		
			
				|  |  |                         dftPor->name() + STR_FAILING); |  |  |                         dftPor->name() + STR_FAILING); | 
		
	
		
			
				|  |  |                 builder.setTransitionLayoutInfo(tFailed, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter + 3.0)); |  |  |                 builder.setTransitionLayoutInfo(tFailed, storm::gspn::LayoutInfo(xcenter + 3.0, ycenter + 3.0)); | 
		
	
		
			
				|  |  |                 builder.addOutputArc(tFailed, failedPlace); |  |  |                 builder.addOutputArc(tFailed, failedPlace); | 
		
	
	
		
			
				|  | @ -683,8 +688,9 @@ namespace storm { | 
		
	
		
			
				|  |  |                     delayPlace = builder.addPlace(1, 0, dftPor->name() + "_delay"); |  |  |                     delayPlace = builder.addPlace(1, 0, dftPor->name() + "_delay"); | 
		
	
		
			
				|  |  |                     builder.setPlaceLayoutInfo(delayPlace, storm::gspn::LayoutInfo(xcenter - 5.0, |  |  |                     builder.setPlaceLayoutInfo(delayPlace, storm::gspn::LayoutInfo(xcenter - 5.0, | 
		
	
		
			
				|  |  |                                                                                    ycenter + 5.0)); |  |  |                                                                                    ycenter + 5.0)); | 
		
	
		
			
				|  |  |                     //TODO check if priority is set correctly
 |  |  |  | 
		
	
		
			
				|  |  |                     uint64_t tDelay = builder.addImmediateTransition(getFailPriority(dftPor) + 1, 0.0, dftPor->name() + |  |  |  | 
		
	
		
			
				|  |  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |  |                     // priority of delayTransition has to be lower than other priorities
 | 
		
	
		
			
				|  |  |  |  |  |                     uint64_t tDelay = builder.addImmediateTransition(getFailPriority(dftPor) - 1, 0.0, dftPor->name() + | 
		
	
		
			
				|  |  |                                                                                                        "_delayTransition"); |  |  |                                                                                                        "_delayTransition"); | 
		
	
		
			
				|  |  |                     builder.setTransitionLayoutInfo(tDelay, |  |  |                     builder.setTransitionLayoutInfo(tDelay, | 
		
	
		
			
				|  |  |                                                     storm::gspn::LayoutInfo(xcenter - 5.0, |  |  |                                                     storm::gspn::LayoutInfo(xcenter - 5.0, | 
		
	
	
		
			
				|  | @ -719,14 +725,14 @@ namespace storm { | 
		
	
		
			
				|  |  |                 // Dont Care
 |  |  |                 // Dont Care
 | 
		
	
		
			
				|  |  |                 if (dontCareElements.count(dftPor->id())) { |  |  |                 if (dontCareElements.count(dftPor->id())) { | 
		
	
		
			
				|  |  |                     //Propagation
 |  |  |                     //Propagation
 | 
		
	
		
			
				|  |  |                     uint64_t propagationPlace = builder.addPlace(defaultPriority, 0, dftPor->name() + "_prop"); |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     uint64_t propagationPlace = builder.addPlace(1, 0, dftPor->name() + "_prop"); | 
		
	
		
			
				|  |  |                     builder.setPlaceLayoutInfo(propagationPlace, |  |  |                     builder.setPlaceLayoutInfo(propagationPlace, | 
		
	
		
			
				|  |  |                                                storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); |  |  |                                                storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
		
	
		
			
				|  |  |                     uint64_t tPropagationFailed = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                  dftPor->name() + "_prop_fail"); |  |  |                                                                                  dftPor->name() + "_prop_fail"); | 
		
	
		
			
				|  |  |                     builder.setTransitionLayoutInfo(tPropagationFailed, |  |  |                     builder.setTransitionLayoutInfo(tPropagationFailed, | 
		
	
		
			
				|  |  |                                                     storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); |  |  |                                                     storm::gspn::LayoutInfo(xcenter + 10.0, ycenter + 6.0)); | 
		
	
		
			
				|  |  |                     uint64_t tPropagationFailsafe = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     uint64_t tPropagationFailsafe = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                    dftPor->name() + "_prop_failsafe"); |  |  |                                                                                    dftPor->name() + "_prop_failsafe"); | 
		
	
		
			
				|  |  |                     builder.setTransitionLayoutInfo(tPropagationFailsafe, |  |  |                     builder.setTransitionLayoutInfo(tPropagationFailsafe, | 
		
	
		
			
				|  |  |                                                     storm::gspn::LayoutInfo(xcenter + 8.0, ycenter + 6.0)); |  |  |                                                     storm::gspn::LayoutInfo(xcenter + 8.0, ycenter + 6.0)); | 
		
	
	
		
			
				|  | @ -753,13 +759,13 @@ namespace storm { | 
		
	
		
			
				|  |  |                         u_int64_t tDontCare = addDontcareTransition(dftPor, |  |  |                         u_int64_t tDontCare = addDontcareTransition(dftPor, | 
		
	
		
			
				|  |  |                                                                     storm::gspn::LayoutInfo(xcenter + 16.0, ycenter)); |  |  |                                                                     storm::gspn::LayoutInfo(xcenter + 16.0, ycenter)); | 
		
	
		
			
				|  |  |                         if (!mergedDCFailed) { |  |  |                         if (!mergedDCFailed) { | 
		
	
		
			
				|  |  |                             uint64_t dontCarePlace = builder.addPlace(defaultPriority, 0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t dontCarePlace = builder.addPlace(1, 0, | 
		
	
		
			
				|  |  |                                                                       dftPor->name() + STR_DONTCARE); |  |  |                                                                       dftPor->name() + STR_DONTCARE); | 
		
	
		
			
				|  |  |                             builder.setPlaceLayoutInfo(dontCarePlace, |  |  |                             builder.setPlaceLayoutInfo(dontCarePlace, | 
		
	
		
			
				|  |  |                                                        storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); |  |  |                                                        storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); | 
		
	
		
			
				|  |  |                             builder.addInhibitionArc(dontCarePlace, tDontCare); |  |  |                             builder.addInhibitionArc(dontCarePlace, tDontCare); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tDontCare, dontCarePlace); |  |  |                             builder.addOutputArc(tDontCare, dontCarePlace); | 
		
	
		
			
				|  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                            dftPor->name() + |  |  |                                                                                            dftPor->name() + | 
		
	
		
			
				|  |  |                                                                                            "_prop_dontCare"); |  |  |                                                                                            "_prop_dontCare"); | 
		
	
		
			
				|  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, |  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, | 
		
	
	
		
			
				|  | @ -854,7 +860,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                     // Activate all elements in spare module
 |  |  |                     // Activate all elements in spare module
 | 
		
	
		
			
				|  |  |                     uint64_t l = 0; |  |  |                     uint64_t l = 0; | 
		
	
		
			
				|  |  |                     for (uint64_t k : mDft.module(child->id())) { |  |  |                     for (uint64_t k : mDft.module(child->id())) { | 
		
	
		
			
				|  |  |                         uint64_t tActivate = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                         uint64_t tActivate = builder.addImmediateTransition(getFailPriority(dftSpare), 0.0, | 
		
	
		
			
				|  |  |                                                                             dftSpare->name() + "_activate_" + |  |  |                                                                             dftSpare->name() + "_activate_" + | 
		
	
		
			
				|  |  |                                                                             std::to_string(i) + "_" + |  |  |                                                                             std::to_string(i) + "_" + | 
		
	
		
			
				|  |  |                                                                             std::to_string(k)); |  |  |                                                                             std::to_string(k)); | 
		
	
	
		
			
				|  | @ -880,18 +886,18 @@ namespace storm { | 
		
	
		
			
				|  |  |                         u_int64_t tDontCare = addDontcareTransition(dftSpare, |  |  |                         u_int64_t tDontCare = addDontcareTransition(dftSpare, | 
		
	
		
			
				|  |  |                                                                     storm::gspn::LayoutInfo(xcenter + 16.0, ycenter)); |  |  |                                                                     storm::gspn::LayoutInfo(xcenter + 16.0, ycenter)); | 
		
	
		
			
				|  |  |                         if (!mergedDCFailed) { |  |  |                         if (!mergedDCFailed) { | 
		
	
		
			
				|  |  |                             uint64_t dontCarePlace = builder.addPlace(defaultPriority, 0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t dontCarePlace = builder.addPlace(1, 0, | 
		
	
		
			
				|  |  |                                                                       dftSpare->name() + STR_DONTCARE); |  |  |                                                                       dftSpare->name() + STR_DONTCARE); | 
		
	
		
			
				|  |  |                             builder.setPlaceLayoutInfo(dontCarePlace, |  |  |                             builder.setPlaceLayoutInfo(dontCarePlace, | 
		
	
		
			
				|  |  |                                                        storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); |  |  |                                                        storm::gspn::LayoutInfo(xcenter + 16.0, ycenter + 4.0)); | 
		
	
		
			
				|  |  |                             builder.addInhibitionArc(dontCarePlace, tDontCare); |  |  |                             builder.addInhibitionArc(dontCarePlace, tDontCare); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tDontCare, dontCarePlace); |  |  |                             builder.addOutputArc(tDontCare, dontCarePlace); | 
		
	
		
			
				|  |  |                             //Propagation
 |  |  |                             //Propagation
 | 
		
	
		
			
				|  |  |                             uint64_t propagationPlace = builder.addPlace(defaultPriority, 0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t propagationPlace = builder.addPlace(1, 0, | 
		
	
		
			
				|  |  |                                                                          dftSpare->name() + "_prop"); |  |  |                                                                          dftSpare->name() + "_prop"); | 
		
	
		
			
				|  |  |                             builder.setPlaceLayoutInfo(propagationPlace, |  |  |                             builder.setPlaceLayoutInfo(propagationPlace, | 
		
	
		
			
				|  |  |                                                        storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); |  |  |                                                        storm::gspn::LayoutInfo(xcenter + 12.0, ycenter + 8.0)); | 
		
	
		
			
				|  |  |                             uint64_t tPropagationFailed = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t tPropagationFailed = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                          dftSpare->name() + |  |  |                                                                                          dftSpare->name() + | 
		
	
		
			
				|  |  |                                                                                          "_prop_fail"); |  |  |                                                                                          "_prop_fail"); | 
		
	
		
			
				|  |  |                             builder.setTransitionLayoutInfo(tPropagationFailed, |  |  |                             builder.setTransitionLayoutInfo(tPropagationFailed, | 
		
	
	
		
			
				|  | @ -900,7 +906,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                             builder.addInputArc(failedPlace, tPropagationFailed); |  |  |                             builder.addInputArc(failedPlace, tPropagationFailed); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tPropagationFailed, failedPlace); |  |  |                             builder.addOutputArc(tPropagationFailed, failedPlace); | 
		
	
		
			
				|  |  |                             builder.addOutputArc(tPropagationFailed, propagationPlace); |  |  |                             builder.addOutputArc(tPropagationFailed, propagationPlace); | 
		
	
		
			
				|  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                             uint64_t tPropagationDontCare = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                                            dftSpare->name() + |  |  |                                                                                            dftSpare->name() + | 
		
	
		
			
				|  |  |                                                                                            "_prop_dontCare"); |  |  |                                                                                            "_prop_dontCare"); | 
		
	
		
			
				|  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, |  |  |                             builder.setTransitionLayoutInfo(tPropagationDontCare, | 
		
	
	
		
			
				|  | @ -966,7 +972,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                     uint64_t coinPlace = builder.addPlace(defaultCapacity, 1, dftDependency->name() + "_coin"); |  |  |                     uint64_t coinPlace = builder.addPlace(defaultCapacity, 1, dftDependency->name() + "_coin"); | 
		
	
		
			
				|  |  |                     builder.setPlaceLayoutInfo(coinPlace, storm::gspn::LayoutInfo(xcenter - 5.0, ycenter + 2.0)); |  |  |                     builder.setPlaceLayoutInfo(coinPlace, storm::gspn::LayoutInfo(xcenter - 5.0, ycenter + 2.0)); | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |                     uint64_t tStartFlip = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     uint64_t tStartFlip = builder.addImmediateTransition(getFailPriority(dftDependency), 0.0, | 
		
	
		
			
				|  |  |                                                                          dftDependency->name() + "_start_flip"); |  |  |                                                                          dftDependency->name() + "_start_flip"); | 
		
	
		
			
				|  |  |                     builder.addInputArc(coinPlace, tStartFlip); |  |  |                     builder.addInputArc(coinPlace, tStartFlip); | 
		
	
		
			
				|  |  |                     builder.addInputArc(getFailedPlace(dftDependency->triggerEvent()), tStartFlip); |  |  |                     builder.addInputArc(getFailedPlace(dftDependency->triggerEvent()), tStartFlip); | 
		
	
	
		
			
				|  | @ -976,12 +982,13 @@ namespace storm { | 
		
	
		
			
				|  |  |                     builder.setPlaceLayoutInfo(flipPlace, storm::gspn::LayoutInfo(xcenter - 2.0, ycenter + 2.0)); |  |  |                     builder.setPlaceLayoutInfo(flipPlace, storm::gspn::LayoutInfo(xcenter - 2.0, ycenter + 2.0)); | 
		
	
		
			
				|  |  |                     builder.addOutputArc(tStartFlip, flipPlace); |  |  |                     builder.addOutputArc(tStartFlip, flipPlace); | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |                     uint64_t tWinFlip = builder.addImmediateTransition(defaultPriority, dftDependency->probability(), |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     uint64_t tWinFlip = builder.addImmediateTransition(getFailPriority(dftDependency) + 1, | 
		
	
		
			
				|  |  |  |  |  |                                                                        dftDependency->probability(), | 
		
	
		
			
				|  |  |                                                                        "_win_flip"); |  |  |                                                                        "_win_flip"); | 
		
	
		
			
				|  |  |                     builder.addInputArc(flipPlace, tWinFlip); |  |  |                     builder.addInputArc(flipPlace, tWinFlip); | 
		
	
		
			
				|  |  |                     builder.addOutputArc(tWinFlip, forwardPlace); |  |  |                     builder.addOutputArc(tWinFlip, forwardPlace); | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |                     uint64_t tLooseFlip = builder.addImmediateTransition(defaultPriority, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     uint64_t tLooseFlip = builder.addImmediateTransition(getFailPriority(dftDependency) + 1, | 
		
	
		
			
				|  |  |                                                                          storm::utility::one<ValueType>() - |  |  |                                                                          storm::utility::one<ValueType>() - | 
		
	
		
			
				|  |  |                                                                          dftDependency->probability(), "_loose_flip"); |  |  |                                                                          dftDependency->probability(), "_loose_flip"); | 
		
	
		
			
				|  |  |                     builder.addInputArc(flipPlace, tLooseFlip); |  |  |                     builder.addInputArc(flipPlace, tLooseFlip); | 
		
	
	
		
			
				|  | @ -991,7 +998,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                 } |  |  |                 } | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  |                 for (auto const &child : dftDependency->dependentEvents()) { |  |  |                 for (auto const &child : dftDependency->dependentEvents()) { | 
		
	
		
			
				|  |  |                     uint64_t tForwardFailure = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     uint64_t tForwardFailure = builder.addImmediateTransition(getFailPriority(dftDependency), 0.0, | 
		
	
		
			
				|  |  |                                                                               dftDependency->name() + "_propagate_" + |  |  |                                                                               dftDependency->name() + "_propagate_" + | 
		
	
		
			
				|  |  |                                                                               child->name()); |  |  |                                                                               child->name()); | 
		
	
		
			
				|  |  |                     builder.addInputArc(forwardPlace, tForwardFailure); |  |  |                     builder.addInputArc(forwardPlace, tForwardFailure); | 
		
	
	
		
			
				|  | @ -1011,7 +1018,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                     u_int64_t tDontCare = addDontcareTransition(dftDependency, |  |  |                     u_int64_t tDontCare = addDontcareTransition(dftDependency, | 
		
	
		
			
				|  |  |                                                                 storm::gspn::LayoutInfo(xcenter + 3.0, ycenter)); |  |  |                                                                 storm::gspn::LayoutInfo(xcenter + 3.0, ycenter)); | 
		
	
		
			
				|  |  |                     if (!mergedDCFailed) { |  |  |                     if (!mergedDCFailed) { | 
		
	
		
			
				|  |  |                         u_int64_t dontCarePlace = builder.addPlace(defaultPriority, 0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                         u_int64_t dontCarePlace = builder.addPlace(1, 0, | 
		
	
		
			
				|  |  |                                                                    dftDependency->name() + STR_DONTCARE); |  |  |                                                                    dftDependency->name() + STR_DONTCARE); | 
		
	
		
			
				|  |  |                         builder.setPlaceLayoutInfo(dontCarePlace, storm::gspn::LayoutInfo(xcenter + 4.0, ycenter)); |  |  |                         builder.setPlaceLayoutInfo(dontCarePlace, storm::gspn::LayoutInfo(xcenter + 4.0, ycenter)); | 
		
	
		
			
				|  |  |                         builder.addInhibitionArc(dontCarePlace, tDontCare); |  |  |                         builder.addInhibitionArc(dontCarePlace, tDontCare); | 
		
	
	
		
			
				|  | @ -1080,7 +1087,7 @@ namespace storm { | 
		
	
		
			
				|  |  |                     if (i > 0) { |  |  |                     if (i > 0) { | 
		
	
		
			
				|  |  |                         builder.addOutputArc(tEnable, nextPlace); |  |  |                         builder.addOutputArc(tEnable, nextPlace); | 
		
	
		
			
				|  |  |                     } |  |  |                     } | 
		
	
		
			
				|  |  |                     tEnable = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                     tEnable = builder.addImmediateTransition(getFailPriority(dftSeq), 0.0, | 
		
	
		
			
				|  |  |                                                              dftSeq->name() + "_unblock_" + child->name()); |  |  |                                                              dftSeq->name() + "_unblock_" + child->name()); | 
		
	
		
			
				|  |  |                     builder.setTransitionLayoutInfo(tEnable, |  |  |                     builder.setTransitionLayoutInfo(tEnable, | 
		
	
		
			
				|  |  |                                                     storm::gspn::LayoutInfo(xcenter - 5.0 + i * 3.0, ycenter + 3.0)); |  |  |                                                     storm::gspn::LayoutInfo(xcenter - 5.0 + i * 3.0, ycenter + 3.0)); | 
		
	
	
		
			
				|  | @ -1136,7 +1143,7 @@ namespace storm { | 
		
	
		
			
				|  |  |             DftToGspnTransformator<ValueType>::addDontcareTransition( |  |  |             DftToGspnTransformator<ValueType>::addDontcareTransition( | 
		
	
		
			
				|  |  |                     std::shared_ptr<const storm::storage::DFTElement<ValueType> > dftElement, |  |  |                     std::shared_ptr<const storm::storage::DFTElement<ValueType> > dftElement, | 
		
	
		
			
				|  |  |                     storm::gspn::LayoutInfo const &layoutInfo) { |  |  |                     storm::gspn::LayoutInfo const &layoutInfo) { | 
		
	
		
			
				|  |  |                 uint64_t dontcareTransition = builder.addImmediateTransition(defaultPriority, 0.0, |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                 uint64_t dontcareTransition = builder.addImmediateTransition(dontCarePriority, 0.0, | 
		
	
		
			
				|  |  |                                                                              dftElement->name() + STR_DONTCARE + |  |  |                                                                              dftElement->name() + STR_DONTCARE + | 
		
	
		
			
				|  |  |                                                                              "_transition"); |  |  |                                                                              "_transition"); | 
		
	
		
			
				|  |  |                 dontcareTransitions.emplace(dftElement->id(), dontcareTransition); |  |  |                 dontcareTransitions.emplace(dftElement->id(), dontcareTransition); | 
		
	
	
		
			
				|  | @ -1154,9 +1161,8 @@ namespace storm { | 
		
	
		
			
				|  |  |             template<typename ValueType> |  |  |             template<typename ValueType> | 
		
	
		
			
				|  |  |             uint64_t DftToGspnTransformator<ValueType>::getFailPriority( |  |  |             uint64_t DftToGspnTransformator<ValueType>::getFailPriority( | 
		
	
		
			
				|  |  |                     std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement) { |  |  |                     std::shared_ptr<storm::storage::DFTElement<ValueType> const> dftElement) { | 
		
	
		
			
				|  |  |                 // Temporariliy use one priority for all
 |  |  |  | 
		
	
		
			
				|  |  |                 return defaultPriority; |  |  |  | 
		
	
		
			
				|  |  |                 //return mDft.maxRank() - dftElement->rank() + 2;
 |  |  |  | 
		
	
		
			
				|  |  |  |  |  |                 // Return the value given in the field
 | 
		
	
		
			
				|  |  |  |  |  |                 return priorities.at(dftElement->id()); | 
		
	
		
			
				|  |  |             } |  |  |             } | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
		
			
				|  |  | 
 |  |  | 
 | 
		
	
	
		
			
				|  | 
 |