package producteur_consommateur public with processors; thread Producteur features fe : requires data access black.Impl; properties Dispatch_Protocol => Periodic; Period => 10 ms; Deadline => 10 ms; Compute_Execution_Time => 1 ms .. 3 ms; Priority => 10 ; end Producteur; thread Consommateur features fe : requires data access black.Impl; properties Dispatch_Protocol => Periodic; Period => 10 ms; Deadline => 10 ms; Compute_Execution_Time => 1 ms .. 1 ms; Priority => 20 ; end Consommateur; thread implementation Producteur.Impl end Producteur.Impl; thread implementation Consommateur.Impl end Consommateur.Impl; process Application end Application; data black end black; data implementation black.Impl properties Concurrency_Control_Protocol => PCP; end black.Impl; process implementation Application.Impl subcomponents P1 : thread Producteur.Impl; P2 : thread Producteur.Impl; P3 : thread Producteur.Impl; C1 : thread Consommateur.Impl; C2 : thread Consommateur.Impl; B : data black.Impl; connections cx1 : data access B -> P1.fe; cx2 : data access B -> P2.fe; cx3 : data access B -> P3.fe; cx4 : data access B -> C1.fe; cx5 : data access B -> C2.fe; properties Deadline => 40 ms applies to P1; Period => 40 ms applies to P1; Compute_Execution_Time => 1 ms .. 5 ms applies to P1; Priority => 1 applies to P1; Deadline => 20 ms applies to P2; Period => 20 ms applies to P2; Compute_Execution_Time => 1 ms .. 1 ms applies to P2; Priority => 2 applies to P2; Deadline => 20 ms applies to P3; Period => 20 ms applies to P3; Compute_Execution_Time => 1 ms .. 2 ms applies to P3; Priority => 3 applies to P3; Deadline => 40 ms applies to C1; Period => 40 ms applies to C1; Compute_Execution_Time => 1 ms .. 3 ms applies to C1; Priority => 4 applies to C1; Deadline => 40 ms applies to C2; Period => 40 ms applies to C2; Compute_Execution_Time => 1 ms .. 2 ms applies to C2; Priority => 5 applies to C2; end Application.Impl; processor cpu extends processors::cpu_rm end cpu; system prodcons end prodcons; system implementation prodcons.Impl subcomponents process1 : process application.Impl; cpu1 : processor cpu; properties Actual_Processor_Binding => (reference(cpu1)) applies to process1; end prodcons.Impl; end producteur_consommateur;