advance multi-simulation concepts

38
ADVANCE Multi-simulation Concepts John Colley 10 th November 2011 Southampton 1

Upload: shubha

Post on 23-Feb-2016

46 views

Category:

Documents


0 download

DESCRIPTION

ADVANCE Multi-simulation Concepts. John Colley 10 th November 2011 Southampton. Introduction. Motivation Discrete Event Simulation Principles Single-thread/Multi-thread Implementations Co/Multi-simulation Principles Two Simulators More than Two Simulators - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ADVANCE Multi-simulation Concepts

1

ADVANCEMulti-simulation Concepts

John Colley10th November 2011

Southampton

Page 2: ADVANCE Multi-simulation Concepts

2

Introduction

• Motivation• Discrete Event Simulation Principles• Single-thread/Multi-thread Implementations• Co/Multi-simulation Principles– Two Simulators– More than Two Simulators

• Continuous Simulation Principles• Hybrid Continuous/Discrete Multi-simulation• Summary

Page 3: ADVANCE Multi-simulation Concepts

3

Discrete Event Simulation: Motivation

• Dominant Verification Technology for Synchronous Digital Hardware and Systems on Chip– $300 million per year Market– Mature Tools (30 years of development)– High Price Tools ($30k per seat + maintenance)

• Single Kernel, Multi-Language Tools for Model Re-use– VHDL– SystemVerilog– SystemC (C++)– C

Page 4: ADVANCE Multi-simulation Concepts

4

A

C

B

D

C1

C2

COMPONENT VIEW

Components: A, B, C, D (processes)

Connections: C1, C2 (unidirectional)

Ports: IN OUT

SIMULATOR API

GetValue(port)

HasChanged(port)

SetValue(OUT port, val, delay)

ScheduleEval(component, delay)

Discrete Event Simulation

Page 5: ADVANCE Multi-simulation Concepts

5

A

C

B

D

C1

C2

updatelist

evaluationlist

t = 0

The Two-list Simulation Algorithm

t = n

Page 6: ADVANCE Multi-simulation Concepts

6

A

C

B

D

C1

C2

updatelist

evaluationlist

t = 0

The Two-list Simulation Algorithm

t = n

Why not just have a single, time-ordered list?

Page 7: ADVANCE Multi-simulation Concepts

7

A

C

B

D

C1

C2

updatelist

evaluationlist

A B C D

t = 0

Time Zero Initialisation: Evaluate all Components

Page 8: ADVANCE Multi-simulation Concepts

8

A

C

B

D

C1

C2

updatelist

evaluationlist

t = 0

Component evaluations call SetValue, ScheduleEval

t = 20 C1

t = 30 C2t = 30 ED

t = 50 EC

Page 9: ADVANCE Multi-simulation Concepts

9

A

C

B

D

C1

C2

updatelist

evaluationlist

t = 0

Component evaluations call SetValue, ScheduleEval

t = 20 C1

t = 30 C2t = 30 ED

t = 50 EC

C: future eval

D: future eval

C: C2 new val

A: C1 new val

Page 10: ADVANCE Multi-simulation Concepts

10

A

C

B

D

C1

C2

updatelist

evaluationlist

t = 0

Global Time is Advanced to t = 20

t = 20 C1

t = 30 C2t = 30 ED

t = 50 EC

Page 11: ADVANCE Multi-simulation Concepts

11

A

C

B

D

C1

C2

updatelist

evaluationlist

t = 0

Add to eval list each component on C1 fanout

t = 20 C1

t = 30 C2t = 30 ED

t = 50 EC

B D

Page 12: ADVANCE Multi-simulation Concepts

12

A

C

B

D

C1

C2

updatelist

evaluationlist

B calls ScheduleEval with delay 40

t = 20 C1

t = 30 C2t = 30 ED

t = 50 EC

B D

t = 60 EB

Page 13: ADVANCE Multi-simulation Concepts

13

A

C

B

D

C1

C2

updatelist

evaluationlist

Time advances to t = 30: two updates

t = 20 C1

t = 30 C2t = 30 ED

t = 50 EC

t = 60 EB

Page 14: ADVANCE Multi-simulation Concepts

14

A

C

B

D

C1

C2

updatelist

evaluationlist

Time advances to t = 30: two updates, one eval

t = 30 C2t = 30 ED

t = 50 EC

t = 60 EB

D

Page 15: ADVANCE Multi-simulation Concepts

15

A

C

B

D

C1

C2

updatelist

evaluationlist

t = 30 C2t = 30 ED

t = 50 EC

t = 60 EB

Simple Algorithm, Complex Implementation forPerformance

Page 16: ADVANCE Multi-simulation Concepts

16

A

C

B

D

C1

C2

updatelist

evaluationlist

t = 30 C2t = 30 ED

t = 50 EC

t = 60 EB

Simple Algorithm, Complex Implementation forPerformance

Why not just have a single, time-ordered list?

RACE

Page 17: ADVANCE Multi-simulation Concepts

17

A

C

B

D

C1

C2update

list

evaluationlist

Simulating Models without Discrete Delays –Unit Delay

EB C1

Each evaluate/updatecycle advances time byone tick

Page 18: ADVANCE Multi-simulation Concepts

18

A

C

B

D

C1

C2

The Simulation Testbench

Primaryinputs

Primaryoutputs

Page 19: ADVANCE Multi-simulation Concepts

19

A

C

B

D

C1

C2

The Simulation Testbench

Primaryinputs

PrimaryoutputsIn principle, just another component using the API

In practice, a complex model of the design environment:Constrained Random Test Generation

Assertion CheckingFunctional Coverage Metrics

Page 20: ADVANCE Multi-simulation Concepts

20

A

C

B

D

C1

C2

Discrete Event Simulation Languages: Hierarchy

Page 21: ADVANCE Multi-simulation Concepts

21

A

C

B

D

C1

C2

Discrete Event Simulation Languages: Hierarchy

Hierarchy is flattened for simulation

Page 22: ADVANCE Multi-simulation Concepts

22

Discrete Event Simulation Languages: Function

• There must be an Entry Point to implement the Eval API call

• Eval call must execute to completion– Method call– Actor

• Languages with Embedded Wait– Eval call must resume at the Wait Point– Implement as Finite State Machine• Stored Current State represents the next Entry Point

Page 23: ADVANCE Multi-simulation Concepts

23

A

C

B

D

C1

C2

updatelist

evaluationlist

t = 0

A Concurrent Simulator Implementation?

t = n

Page 24: ADVANCE Multi-simulation Concepts

24

A

C

B

D

C1

C2

updatelist

evaluationlist

t = 0

A Concurrent Simulator Implementation

t = n

A B C D

EVAL Components in Parallel

Atomic Insertion

Page 25: ADVANCE Multi-simulation Concepts

25

A

C

B

D

C1

C2

updatelist

evaluationlist

t = 0

A Concurrent Simulator Implementation

t = n

A B C D

EVAL Components in Parallel

Atomic InsertionAmdahl’s Law Revisited for Single Chip Systems

Jo-Ann M. Paul and Brett H. Meyer, 2006

Page 26: ADVANCE Multi-simulation Concepts

26

Event-Driven vs Process-Driven

• Event-Driven– Single core, single process

• Process-Driven– Threads• OpenMP

– Portable– Optimised for multi-core

• Python Generators (coroutines)• Single core only (SimPy)

Page 27: ADVANCE Multi-simulation Concepts

27

A

C

B

D

C1

C2

updatelist

evaluationlist

t = 0

What if Component D does not have a native implementation?

t = n

A B C D

C3

Page 28: ADVANCE Multi-simulation Concepts

28

A

C

B

DExternalModel

C1

C2

updatelist

evaluationlist

t = 0

Component D is simulated with a different Simulator:Co-Simulation

t = n

A B C D

C3

Page 29: ADVANCE Multi-simulation Concepts

29

A

C

B

DExternalModel

C1

C2

Master/Slave Co-Simulation

Master Simulator

- Master Event Queue- Design Topology

- Components- Connectors

- Initiates the Slave and establishes Inter-Process Communication

Slave Simulator

- Slave Event Queue- Slave Component

C3

Page 30: ADVANCE Multi-simulation Concepts

30

A

C

B

DExternalModel

C1

C2

Master/Slave Co-Simulation

Co-Simulation

- Initialise Master Simulator- Initialise Slave Simulator- Get time Ts of next event

from Slave- Run Master until

- Time = Ts OR- D sees change on C1

or C2- Get time Tm of next event

from Master- Tell Slave to run until

- Time = Tm- B sees change on C3

C3

Page 31: ADVANCE Multi-simulation Concepts

31

A

C

BExternalModel

DExternalModel

C1

C2

What if B is represented by a 3rd Simulator?

Master Simulator

- Initialise Master Simulator- Initialise Slave Simulator- Get time Ts of next event

from Slave- Run Master until

- Time = Ts OR- D sees change on C1

or C2- Get time Tm of next event

from Master- Tell Slave to run until

- Time = Tm- B sees change on C3

C3

Page 32: ADVANCE Multi-simulation Concepts

32

A

C

BExternalModel

DExternalModel

C1

C2

What if B is represented by a 3rd Simulator?

Master Simulator

- Initialise Master Simulator- Initialise Slave Simulator- Get time Ts of next event

from Slave- Run Master until

- Time = Ts OR- D sees change on C1

or C2- Get time Tm of next event

from Master- Tell Slave to run until

- Time = Tm- B sees change on C3

C3Simulators run in

Lock-Step

Page 33: ADVANCE Multi-simulation Concepts

33

A

C

B

DExternalModel

C1

C2

Two Simulators, Slave Evaluates much more slowly than Master and Slave can Backtrack

Co-Simulation

- Initialise Master Simulator- Initialise Slave Simulator- Run Slave- Run Master until D sees a

change on C1 or C2 at time Tc

- If Slave time Ts < Tc- Continue running

Slave until Tc- Else

- Slave backtracks to Tc- Slave accepts new input

value

C3

Page 34: ADVANCE Multi-simulation Concepts

34

Continuous v Discrete Simulation

Continuous• Equation-basedmodel cont01 Real x, y, z;equation x + y + z = 5.000; der(y) = x + 1.365; y = der(z) – 1.875;end cont01;

Discrete• Assignment-basedalways @ (posedge clk)begin x <= x + 1 y <= x - 1end

Page 35: ADVANCE Multi-simulation Concepts

35

Hybrid Modeling

• Continuous-time + Discrete-time Modeling– Modelica “when”

model t03 Real x, y, z; equation x + y + z = 5; when sample(0, 1) then x = x + 1; y = delay(x – 1, 20); end when; end t03;

Page 36: ADVANCE Multi-simulation Concepts

36

A

C

BExternalModel

DExternalModel

C1

C2

What if B is represented by a Continuous Simulator?

Multi-Simulation

- A, C in Master multi-sim environment

- B in Continuous Simulator- Modelica- Simulink

- D in 3rd party Discrete Simulator

- IN/OUT interfaces to B must be Discrete

- Modelica when

C3

Page 37: ADVANCE Multi-simulation Concepts

37

A

Multi-sim Architecture

Rodin Platform

ProB Multi-Simulation Core

3rd

Partysim

3rd

Partysim

. . .

ADVANCE

Page 38: ADVANCE Multi-simulation Concepts

38

Summary

• Discrete Event Simulation– Two-List Algorithm for Deterministic Execution– “Event-driven” or “Process-driven”– Hardware/Software

• Continuous Simulation– Modelica, Matlab/Simulink

• Co-Simulation/Multi-Simulation– Optimisations for 2 Simulators– More than 2 Simulators must run in Lock-Step– Hybrid Continous/Discrete Simulation

• Discrete Interfaces