code generating vdm for embedded devices
play

Code-generating VDM for Embedded Devices Victor Bandur Peter W. V. - PowerPoint PPT Presentation

Code-generating VDM for Embedded Devices Victor Bandur Peter W. V. Tran-Jrgensen Miran Hasanagi c Kenneth Lausdahl 15th Overture workshop Newcastle, UK September 15 Introduction Translation Conclusion and future plans Agenda


  1. Code-generating VDM for Embedded Devices Victor Bandur Peter W. V. Tran-Jørgensen Miran Hasanagi´ c Kenneth Lausdahl 15th Overture workshop Newcastle, UK – September 15

  2. Introduction Translation Conclusion and future plans Agenda Introduction Translation Conclusion and future plans 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [2/13]

  3. Introduction Translation Conclusion and future plans Agenda Introduction Translation Conclusion and future plans 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [3/13]

  4. Introduction Translation Conclusion and future plans Why another code-generator? • Existing VDM code-generators • Suitable for resource-rich hardware platforms • Target Java, C#, Smalltalk and C++ etc. • Resource-constrained microcontrollers • Limited processing power and memory • Often only have C compilers available 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [4/13]

  5. Introduction Translation Conclusion and future plans Why another code-generator? • Existing VDM code-generators • Suitable for resource-rich hardware platforms • Target Java, C#, Smalltalk and C++ etc. • Resource-constrained microcontrollers • Limited processing power and memory • Often only have C compilers available 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [4/13]

  6. Introduction Translation Conclusion and future plans VDM2C context • Developed in INTO-CPS to support: • Implementation of VDM-RT models in C • FMI-based co-simulation of VDM-RT models • Translation assesment • Validated through comprehensive testing • Industrial INTO-CPS pilot/case studies 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [5/13]

  7. Introduction Translation Conclusion and future plans VDM2C context • Developed in INTO-CPS to support: • Implementation of VDM-RT models in C • FMI-based co-simulation of VDM-RT models • Translation assesment • Validated through comprehensive testing • Industrial INTO-CPS pilot/case studies 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [5/13]

  8. Introduction Translation Conclusion and future plans Agenda Introduction Translation Conclusion and future plans 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [6/13]

  9. Introduction Translation Conclusion and future plans Translating VDM to C • VDM2C feature highlights • Runtime implements VDM types/operators • TVP stores type information • User-guided garbage collection • VdmModelFeatures.h to limit runtime size • OO features handled using VTables • Supports distribution (VDM-RT) • Limitations • No pattern matching • Limited support for concurrency 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [7/13]

  10. Introduction Translation Conclusion and future plans Translating VDM to C • VDM2C feature highlights • Runtime implements VDM types/operators • TVP stores type information • User-guided garbage collection • VdmModelFeatures.h to limit runtime size • OO features handled using VTables • Supports distribution (VDM-RT) • Limitations • No pattern matching • Limited support for concurrency 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [7/13]

  11. Introduction Translation Conclusion and future plans Translating VDM to C • VDM2C feature highlights • Runtime implements VDM types/operators • TVP stores type information • User-guided garbage collection • VdmModelFeatures.h to limit runtime size • OO features handled using VTables • Supports distribution (VDM-RT) • Limitations • No pattern matching • Limited support for concurrency 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [7/13]

  12. Introduction Translation Conclusion and future plans Translation example ✞ class A operations op: nat | char ==> bool op (x) == if is_nat(x) then g() else h(); ... end A ✝ ✆ ✡ 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [8/13]

  13. Introduction Translation Conclusion and future plans Translation example ✞ class A operations op: nat | char ==> bool op (x) == if is_nat(x) then g() else h(); ... end A ✝ ✆ ✡ 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [8/13]

  14. Introduction Translation Conclusion and future plans Translation example ✞ class A operations op: nat | char ==> bool op (x) == if is_nat(x) then g() else h(); ... end A ✝ ✆ ✡ 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [8/13]

  15. Introduction Translation Conclusion and future plans Translation example ✞ class A static TVP _Z2opE2XCN(ACLASS this, TVP x){ if ( toBool(isNat(x)) ) operations return CALL_FUNC_PTR(A, A, this, CLASS_A__Z1gEV); op: nat | char ==> bool else op (x) == return CALL_FUNC_PTR(A, A, this, if is_nat(x) CLASS_A__Z1hEV); then } g() else h(); ... end A ✝ ✆ ✡ 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [8/13]

  16. Introduction Translation Conclusion and future plans Translation example ✞ class A static TVP _Z2opE2XCN(ACLASS this, TVP x){ if ( toBool(isNat(x)) ) operations return CALL_FUNC_PTR(A, A, this, CLASS_A__Z1gEV); op: nat | char ==> bool else op (x) == return CALL_FUNC_PTR(A, A, this, if is_nat(x) CLASS_A__Z1hEV); then } g() else h(); ... end A ✝ ✆ ✡ 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [8/13]

  17. Introduction Translation Conclusion and future plans Translation example ✞ class A static TVP _Z2opE2XCN(ACLASS this, TVP x){ if ( toBool(isNat(x)) ) operations return CALL_FUNC_PTR(A, A, this, CLASS_A__Z1gEV); op: nat | char ==> bool else op (x) == return CALL_FUNC_PTR(A, A, this, if is_nat(x) CLASS_A__Z1hEV); then } g() else h(); ... end A ✝ ✆ ✡ 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [8/13]

  18. Introduction Translation Conclusion and future plans Translation example ✞ class A static TVP _Z2opE2XCN(ACLASS this, TVP x){ if ( toBool(isNat(x)) ) operations return CALL_FUNC_PTR(A, A, this, CLASS_A__Z1gEV); op: nat | char ==> bool else op (x) == return CALL_FUNC_PTR(A, A, this, if is_nat(x) CLASS_A__Z1hEV); then } g() else h(); ... end A ✝ ✆ ✡ 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [8/13]

  19. Introduction Translation Conclusion and future plans Translation example ✞ class A static TVP _Z2opE2XCN(ACLASS this, TVP x){ if ( toBool(isNat(x)) ) operations return CALL_FUNC_PTR(A, A, this, CLASS_A__Z1gEV); op: nat | char ==> bool else op (x) == return CALL_FUNC_PTR(A, A, this, if is_nat(x) CLASS_A__Z1hEV); then } g() else h(); TVP a_instance = _Z1AEV( NULL ); ... TVP arg = newInt(42) end A TVP res = CALL_FUNC(A, A, a_instance, ✝ ✆ ✡ CLASS_A__Z2opE2XCN, arg) 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [8/13]

  20. Introduction Translation Conclusion and future plans Translation example ✞ class A static TVP _Z2opE2XCN(ACLASS this, TVP x){ if ( toBool(isNat(x)) ) operations return CALL_FUNC_PTR(A, A, this, CLASS_A__Z1gEV); op: nat | char ==> bool else op (x) == return CALL_FUNC_PTR(A, A, this, if is_nat(x) CLASS_A__Z1hEV); then } g() else h(); TVP a_instance = _Z1AEV( NULL ); ... TVP arg = newInt(42) end A TVP res = CALL_FUNC(A, A, a_instance, ✝ ✆ ✡ CLASS_A__Z2opE2XCN, arg) 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [8/13]

  21. Introduction Translation Conclusion and future plans Translation example ✞ class A static TVP _Z2opE2XCN(ACLASS this, TVP x){ if ( toBool(isNat(x)) ) operations return CALL_FUNC_PTR(A, A, this, CLASS_A__Z1gEV); op: nat | char ==> bool else op (x) == return CALL_FUNC_PTR(A, A, this, if is_nat(x) CLASS_A__Z1hEV); then } g() else h(); TVP a_instance = _Z1AEV( NULL ); ... TVP arg = newInt(42) end A TVP res = CALL_FUNC(A, A, a_instance, ✝ ✆ ✡ CLASS_A__Z2opE2XCN, arg) 15th Overture Workshop, September 15, 2017 Victor Bandur, Peter W. V. Tran-Jørgensen , Miran Hasanagi´ c, Kenneth Lausdahl [8/13]

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend