onera.pmlanalyzer.views.interference.operators

Package containing the operators related to interference computation that can be used on a PML model. Examples are provided in views.interference.examples.simpleKeystone.SimpleKeystoneInterferenceGeneration

Attributes

See also:

Analyse.Ops provides the operators related to interference computation with Monosat https://github.com/sambayless/monosat

PostProcess.Ops provides the operators related to the post processing of the interference computation

Interfere.Ops provides the operators related to interference assumptions

Exclusive.Ops provides the operators related to exclusive assumptions (e.g., two pml.model.software.Application will not execute simultaneously)

Transparent.Ops proves the operators related to transparency assumptions (e.g., a pml.model.configuration.TransactionLibrary.Transaction is discarded)

Note:

This package should be imported in all pml models as so

import onera.pmlanalyzer.views.interference.operators._

Members list

Concise view

Type members

Classlikes

object Analyse

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
Analyse.type
object Equivalent

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
object Exclusive

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
object Interfere

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
object Transform

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Extensions

Inherited extensions

extension [T](l: T)
def exclusiveWith(r: T)(using ev: Exclusive[T]): Unit

Attributes

Inherited from:
Ops
extension [T](l: T)
def equivalent(r: T)(implicit ev: Equivalent[T]): Unit

Attributes

Inherited from:
Ops
extension [T](self: T)
def interferenceDiff(that: Platform)(using ev: PostProcess[T]): Seq[File]

Compare the interference results with another element and store the result in a dedicated file in the analysis folder

Compare the interference results with another element and store the result in a dedicated file in the analysis folder

Attributes

ev

the proof that any element of T is analysable

that

the other element

Returns:

the location of the result files

Inherited from:
Ops
def parseFreeScenarioFile(n: Int)(using ev: PostProcess[T]): Array[Seq[String]]

Try to find and parse the n-itf-free results for the considered element

Try to find and parse the n-itf-free results for the considered element

Attributes

ev

the proof that any element of T is analysable

n

the maximal size of transaction per itf scenario

Returns:

the set of set of scenario identifiers that are interference free scenarios

Inherited from:
Ops
def parseITFScenarioFile(n: Int)(using ev: PostProcess[T]): Array[Seq[String]]

Try to find and parse the n-itf results for the considered element

Try to find and parse the n-itf results for the considered element

Attributes

ev

the proof that any element of T is analysable

n

the maximal size of transaction per itf scenario

Returns:

the set of set of scenario identifiers that are interference scenarios

Inherited from:
Ops
def parseITFScenarioFile()(using ev: PostProcess[T]): Array[Seq[String]]

Try to find and parse itf results for the considered element

Try to find and parse itf results for the considered element

Attributes

ev

the proof that any element of T is analysable

Returns:

the set of set of scenario identifiers that are interference scenarios

Inherited from:
Ops
def sortMultiPathByITFImpact(max: Option[Int])(using ev: PostProcess[T]): Set[File]

Compute for each multi path transaction the number of itf scenario involving at least one of its branches The result is provided in a file of the analysis directory

Compute for each multi path transaction the number of itf scenario involving at least one of its branches The result is provided in a file of the analysis directory

Attributes

ev

the proof that any element of T is analysable

max

the optional maximal size of the considered itf

Returns:

the location of the result files

Inherited from:
Ops
def sortPLByITFImpact(max: Option[Int])(using ev: PostProcess[T]): Set[File]

Compute for each hardware component the number of itf scenario where the component is involved in the interference channel The result is provided in a file of the analysis directory

Compute for each hardware component the number of itf scenario where the component is involved in the interference channel The result is provided in a file of the analysis directory

Attributes

ev

the proof that any element of T is analysable

max

the optional maximal size of the considered itf

Returns:

the location of the result files

Inherited from:
Ops
extension [T <: Platform](self: T)
def computeAllInterference(timeout: Duration, ignoreExistingAnalysisFiles: Boolean, verboseResultFile: Boolean)(using ev: Analyse[T], p: Provided[T, Hardware]): Set[File]

Perform the interference analysis considering that all the initiators can execute a transaction

Perform the interference analysis considering that all the initiators can execute a transaction

Attributes

ev

the proof that the component is analysable

ignoreExistingAnalysisFiles

do the analysis only even if result files for the considered platform can be found in the analysis directory (false by default)

timeout

the maximal duration that is allowed to perform the interference computation.

verboseResultFile

add extra information on analysis files (false by default)

Returns:

the computation future

Inherited from:
Ops
def computeKInterference(maxSize: Int, timeout: Duration, ignoreExistingAnalysisFiles: Boolean, verboseResultFile: Boolean)(using ev: Analyse[T]): Set[File]

Perform the interference analysis

Perform the interference analysis

Attributes

ev

the proof that the component is analysable

ignoreExistingAnalysisFiles

do the analysis only even if result files for the considered platform can be found in the analysis directory (false by default)

maxSize

the maximal number of initiator that can execute a transaction, it should be less or equal to the total number of initiators in the platform.

timeout

the maximal duration that is allowed to perform the interference computation.

verboseResultFile

add extra information on analysis files (false by default)

Returns:

the computation future

Inherited from:
Ops
def computeKInterference(maxSize: Int, ignoreExistingAnalysisFiles: Boolean, verboseResultFile: Boolean)(using ev: Analyse[T]): Future[Set[File]]

Provide a computation future (computation is not executed yet) of all interference up to maxsize

Provide a computation future (computation is not executed yet) of all interference up to maxsize

Attributes

ev

the proof that the component is analysable

ignoreExistingAnalysisFiles

do the analysis only even if result files for the considered platform can be found in the analysis directory

maxSize

the maximal number of initiator that can execute a transaction, it should be less or equal to the total number of initiators in the platform.

verboseResultFile

add extra information on analysis files

Returns:

the computation future

Inherited from:
Ops
extension [L](self: L)
def interfereWith[R](that: Iterable[R])(using ev: Interfere[L, R]): Unit

Attributes

Inherited from:
Ops
def interfereWith[R](that: R)(using ev: Interfere[L, R]): Unit

Attributes

Inherited from:
Ops
def notInterfereWith[R](that: Iterable[R])(using ev: Interfere[L, R]): Unit

Attributes

Inherited from:
Ops
def notInterfereWith[R](that: R)(using ev: Interfere[L, R]): Unit

Attributes

Inherited from:
Ops
extension [T](x: T)
def isTransparent(using ev: Transparent[T]): Unit

The element x is discarded for interference analysis

The element x is discarded for interference analysis

Attributes

ev

proof that T can be discarded

Inherited from:
Ops