| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -429,6 +429,28 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					//			
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								template <typename ValueType> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            void DftToGspnTransformator<ValueType>::drawPDEP(std::shared_ptr<storm::storage::DFTDependency<ValueType> const> dftDependency) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                double xcenter = mDft.getElementLayoutInfo(dftDependency->id()).x;; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                double ycenter = mDft.getElementLayoutInfo(dftDependency->id()).y;; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                uint64_t coinPlace = builder.addPlace(defaultCapacity, 1, dftDependency->name() + "_coin"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                uint64_t flipPlace = builder.addPlace(defaultCapacity, 1, dftDependency->name() + "_flip"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                uint64_t forwardPlace = builder.addPlace(defaultCapacity, 1, dftDependency->name() + "_forward"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                uint64_t t1 = builder.addImmediateTransition(defaultPriority, 0.0, dftDependency->name() + "_start_flip"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                builder.addInputArc(coinPlace, t1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                builder.addInputArc(failedNodes.at(dftDependency->triggerEvent()->id()), t1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                builder.addOutputArc(t1, failedNodes.at(dftDependency->triggerEvent()->id())); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                builder.addOutputArc(t1, flipPlace); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                uint64_t t2 = builder.addImmediateTransition(defaultPriority + 1, dftDependency->probability(), "_win_flip"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                builder.addInputArc(flipPlace, t2); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                builder.addOutputArc(t2, forwardPlace); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                if (dftDependency->probability() < 1.0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    uint64_t t3 = builder.addImmediateTransition(defaultPriority + 1, 1 - dftDependency->probability(), "_loose_flip"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    builder.addInputArc(flipPlace, t3); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                builder.setPlaceLayoutInfo(coinPlace, storm::gspn::LayoutInfo(xcenter-5.0, ycenter+2.0)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                builder.setPlaceLayoutInfo(flipPlace, storm::gspn::LayoutInfo(xcenter-2.0, ycenter+2.0)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                builder.setPlaceLayoutInfo(forwardPlace, storm::gspn::LayoutInfo(xcenter+1.0, ycenter+2.0)); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					             | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -443,7 +465,7 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    if (j>0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        builder.addOutputArc(tEnable, nextPlace); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    tEnable = builder.addImmediateTransition(defaultPriority, 0.0, dftSeq->name() + "_unblock_" +child->name() ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    tEnable = builder.addImmediateTransition(defaultPriority + 1, 0.0, dftSeq->name() + "_unblock_" +child->name() ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    builder.addInputArc(nextPlace, tEnable); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    builder.addInputArc(disabledNodes.at(child->id()), tEnable); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    if (j>0) { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |