46
An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor Lange Turbo [email protected] 1

An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations

Adam LangeEngineering contractor

Lange Turbo

[email protected]

1

Page 2: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

2

Page 3: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

3

Page 4: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

sensors4

Page 5: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

sensors

controller

5

Page 6: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

actuators

sensors

controller

6

Page 7: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

actuators

sensors

controller

7

Page 8: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

OpenModelica

Initial System Model

actuators

sensors

controller

8

Page 9: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

OpenModelica

Initial System Model

actuators

sensors

controller

Step 1: System design and feasibility study

Creativity

Equations

Design iterations

9

Page 10: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

OpenModelica

Initial System Model

Physical Prototype

actuators

sensors

controller

10

Page 11: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

OpenModelica

Initial System Model

Physical Prototype

actuators

sensors

controller

(with a FPGA !)

11

Page 12: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

OpenModelica

Initial System Model

Physical Prototype

actuators

sensors

controller

12

Page 13: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

OpenModelica

Initial System Model

Physical Prototype

actuators

sensors

controller

borrow

actuators

3D print

13

Page 14: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

OpenModelica

Initial System Model

Physical Prototype

actuators

sensors

controller

borrow

actuators

3D print

(with a FPGA !)

14

Page 15: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Main Control Algoritm

SensorInterface

∙ Polls the sensors∙ Produces outputs at any time

outputinterface

datareadyvalid

datareadyvalid

sensorinterface

timer

trigger

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

booleanoutputs

sensor

sensorinterface

trigger

datareadyvalid

sensor

15

Page 16: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

RegisterTransferLevelAbstraction

MainControlAlgorithm.v

SensorInterface.v

Controller.v

sensorinterface

datareadyvalid

sensor16

Page 17: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

RegisterTransfer

AbstractionSensorInterface.v

Controller.v

17

Page 18: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

RegisterTransfer

AbstractionSensorInterface.v

Controller.v

C-to-verilog

High Level Synthesis

C-to-verilog

High Level

Synthesis

18

Page 19: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

RegisterTransfer

AbstractionSensorInterface.v

Controller.v

Modelica-to-RTL

High Level Synthesis??

Modelica-to-RTL

High Level

Synthesis??

19

Page 20: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

RegisterTransferLevelAbstraction

MainControlAlgorithm.v

SensorInterface.v

Controller.v

sensorinterface

datareadyvalid

sensor20

Page 21: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

MainControlAlgorithm.v

Controller

Vendor Tools~5-10 min

FPGA

21

Page 22: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Main Control Algoritm

SensorInterface

RegisterTransferLevelAbstraction

∙ Polls the sensors∙ Produces outputs at any time

MainControlAlgorithm.v

SensorInterface.v

Controller.v

Controller

Vendor Tools~5-10 min

FPGA

C-to-verilog

High Level Synthesis

C-to-verilog

High Level

Synthesis

outputinterface

datareadyvalid

datareadyvalid

sensorinterface

timer

trigger

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

booleanoutputs

sensor

sensorinterface

trigger

datareadyvalid

sensor

22

Page 23: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Main Control Algoritm

SensorInterface

∙ Polls the sensors∙ Produces outputs at any time

C-to-verilog

High Level

Synthesis

outputinterface

datareadyvalid

datareadyvalid

sensorinterface

timer

trigger

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

booleanoutputs

sensor

sensorinterface

trigger

datareadyvalid

sensor

23

Page 24: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Main Control Algoritm

SensorInterface

∙ Polls the sensors∙ Produces outputs at any time

C-to-verilog

High Level

Synthesis

outputinterface

datareadyvalid

datareadyvalid

sensorinterface

timer

trigger

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

booleanoutputs

sensor

sensorinterface

trigger

datareadyvalid

sensor

dataacquisition

dataacquisition

dataacquisition

dataacquisition

24

Page 25: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Main Control Algoritm

SensorInterface

∙ Polls the sensors∙ Produces outputs at any time

C-to-verilog

High Level

Synthesis

outputinterface

datareadyvalid

datareadyvalid

sensorinterface

timer

trigger

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

booleanoutputs

sensor

sensorinterface

trigger

datareadyvalid

sensor

probe

dataacquisition

dataacquisition

dataacquisition

dataacquisition

25

Page 26: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Main Control Algoritm

SensorInterface

RegisterTransferLevelAbstraction

∙ Polls the sensors∙ Produces outputs at any time

MainControlAlgorithm.v

SensorInterface.v

Controller.v

Controller

Vendor Tools~5-10 min

FPGA

C-to-verilog

High Level Synthesis

C-to-verilog

High Level

Synthesis

outputinterface

datareadyvalid

datareadyvalid

sensorinterface

timer

trigger

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

booleanoutputs

sensor

sensorinterface

trigger

datareadyvalid

sensor

probe

dataacquisition

dataacquisition

dataacquisition

dataacquisition

26

Page 27: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

actuators

sensors

controller

27

Page 28: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Main Control Algoritm

SensorInterface

RegisterTransferLevelAbstraction

∙ Polls the sensors∙ Produces outputs at any time

MainControlAlgorithm.v

SensorInterface.v

Controller.v

Controller

Vendor Tools~5-10 min

FPGA

C-to-verilog

High Level Synthesis

C-to-verilog

High Level

Synthesis

outputinterface

datareadyvalid

datareadyvalid

sensorinterface

timer

trigger

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

booleanoutputs

sensor

sensorinterface

trigger

datareadyvalid

sensor

probe

dataacquisition

dataacquisition

dataacquisition

dataacquisition

28

Page 29: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Main Control Algoritm

SensorInterface

RegisterTransferLevelAbstraction

∙ Polls the sensors∙ Produces outputs at any time

MainControlAlgorithm.v

testbench.v

Assumedideal

outputinterface

datareadyvalid

datareadyvalid

sensorinterface

timer

trigger

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

datareadyvalid

booleanoutputs

sensor

sensorinterface

trigger

datareadyvalid

sensor

probe

dataacquisition

dataacquisition

dataacquisition

dataacquisition

29

Page 30: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

run controller simulation until controllerneeds to read a sensor

Earth time →

Run OpenModelica for Δt1 seconds of simulation time

Events are re-created using whenevents

Δt0

When the controllersimulation runs, events are stored.

Δt1

Controller simulation time →

physics simulation time →

OpenModelica

Icarus Verilog and Cocotb

tsim = ta

Controller sensor reading

Controller output event

← send event queue

← send Δt0

sen

d se

nso

r valu

es →

tsim = ta

30

Page 31: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

run controller simulation until controllerneeds to read a sensor

Earth time →

Δt0

Controller simulation time →

Icarus Verilog and Cocotb

tsim = ta← send event queue

← send Δt0

d sen

sor va

lues →

31

Page 32: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

run controller simulation until controllerneeds to read a sensor

Δt0

Controller simulation time →

Icarus Verilog and Cocotb

tsim = ta

Event occured!Store event time andvalue of the controler outputs.

store event!

store event!

t = t1t = t2

t = t3

32

Page 33: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

run controller simulation until controllerneeds to read a sensor

Δt0

Controller simulation time →

Icarus Verilog and Cocotb

tsim = ta

Event occured!Store event time andvalue of the controler outputs.

store event!

store event!

t = t1t = t2

t = t3

33

Page 34: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

run controller simulation until controllerneeds to read a sensor

Δt0

tsim = ta

Event occured!Store event time andvalue of the controler outputs.

store event!

store event! Controller requeststhat the sensors arepolled

t = t1t = t2

t = t3

A blocking functionsends event info tomodelica.

34

Page 35: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

run controller simulation until controllerneeds to read a sensor

Δt0

When the controllersimulation runs, events are stored.

e controler outputs.

store event!

store event! Controller requeststhat the sensors arepolled

t = t3

A blocking functionsends event info tomodelica.

35

Page 36: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

← send event queue

← send Δt0

sen

d se

nso

r valu

es →

36

Page 37: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Run OpenModelica for Δt1 seconds of simulation time

sen

d se

nso

r valu

es →

sim = ta Modelica when eventis triggered at t = t1

and controller output values are set

when event for outputwhen event for output

t = t2t = t8

when event triggersan impure function callat Δt1 , where controllerrequested to poll sensors

modelica execution is blockby the function

37

Page 38: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Run OpenModelica for Δt of simulation time

ics simulation time →

sim = ta Modelica when eventis triggered at t = t1

and controller output values are set

when event for outputt = t2

38

Page 39: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Run OpenModelica for Δt of simulation time

sim = ta Modelica when eventis triggered at t = t1

and controller output values are set

when event for outputwhen event for output

t = t2t = t

39

Page 40: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Run OpenModelica for Δt1 seconds of simulation time

when event for outputwhen event for output

t = t8

when event triggersan impure function callat Δt1 , where controllerrequested to poll sensors

40

Page 41: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

OpenModelica for Δt1 seconds Events are re-created usinevents

when event triggersan impure function callat Δt1 , where controllerrequested to poll sensors

modelica execution is blockedby the function

41

Page 42: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

run controller simulation until controllerneeds to read a sensor

Run OpenModelica for Δt1 seconds of simulation time

Events are re-created using whenevents

Δt0

When the controllersimulation runs, events are stored.

Δt1

simulation time →

mulation time →

rilog and Cocotb

Controller sensor rea

Controller output eve

← send event queue

← send Δt0

sen

d se

nso

r valu

es →

42

Page 43: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

run controller simulation until controllerneeds to read a sensor

Earth time →

Run OpenModelica for Δt1 seconds of simulation time

Events are re-created using whenevents

Δt0

When the controllersimulation runs, events are stored.

Δt1

Controller simulation time →

physics simulation time →

OpenModelica

Icarus Verilog and Cocotb

tsim = ta

Controller sensor reading

Controller output event

← send event queue

← send Δt0

sen

d se

nso

r valu

es →

tsim = ta

43

Page 44: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Event occured!Store event time andvalue of the controler outputs.

store event!

store event! Controller requeststhat the sensors arepolled

t = t1t = t2

t = t3

A blocking functionsends event info tomodelica.

OpenModelicaPython script

web socket

generatedc library

generatedmodelicamodel

Icarus Verilogsimulator

generatedpython module

input file(JSON format)

code generator

CocotbSystemmodel

44

Page 45: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

Event occured!Store event time andvalue of the controler outputs.

store event!

store event! Controller requeststhat the sensors arepolled

t = t1t = t2

t = t3

A blocking functionsends event info tomodelica.

Python script

web socket

Icarus Verilogsimulator

generatedpython module

input file(JSON format)

Cocotb

MainControlAlgorithm.v

testbench.v

45

Page 46: An Open Source Tool for Performing Coupled OpenModelica ...€¦ · An Open Source Tool for Performing Coupled OpenModelica – FPGA Simulations Adam Lange Engineering contractor

https://github.com/adamLange/hdlModelicaInterfaceGen