Behavioral Modeling in HW/SW Co-design Using C++ Coroutines - Jeffrey Erickson, Sebastian Schoenberg

https://cppcon.org/ --- Behavioral Modeling in HW/SW Co-design Using C++ Coroutines - Jeffrey Erickson & Sebastian Schoenberg - CppCon 2023 https://github.com/CppCon/CppCon2023 Faced with the challenge of modeling a hardware IP that is controlled by a processor running C code, we developed two key methodologies that we want to share with the C++ community. The first is “Register Hooking”, where we use the preprocessor to alter the behavior of primitive data type interactions to allow for a model interaction without extensive code alteration. The second methodology is the use of coroutines to define side effects through behavioral models, which constitutes the majority of this talk. Coroutines have the advantage of representing the parallel nature of hardware in a syntactically friendly way. Using coroutines also avoids several potential synchronization problems that arise with multi-threaded approaches or extensive and nested use of async/future. Complex hardware interactions can be represented with relative ease using coroutines. --- Jeffrey Erickson Jeffrey E Erickson works in HW/SW Codesign Architecture in the Programmable Solutions Group at Intel Corporation. He holds a BS in Electrical and Computer Engineering from the University of Virginia and a doctorate from Rutgers University and UMDNJ. For 15 years he has worked in embedded systems development including FPGA-processor integration, secure firmware development, and systems modeling. He holds 3 patents in image processing and signal integrity. Sebastian Schoenberg Sebastian Schoenberg is a Principal Engineer at Intel Corporation and responsible for Intel’s FPGA and eAsic firmware software architecture. After completing his PhD in computer science at the University of Technology in Dresden, Germany, Sebastian joined Intel’s Research Labs where he applied his micro-kernel and real-time operating system background to develop modern hypervisor software architectures to help define Intel’s Virtualization Technology Hardware Architectures. During his time at Intel’s Internet of Things group, Sebastian was driving information-centric network and distributed IoT edge computing software architectures for next generation smart IoT applications and scalable IoT device onboarding capabilities. Sebastian holds 30+ patents in the area of virtualization, Internet of Things and Information Centric Networking. --- Work at Hudson River Trading (HRT): https://tinyurl.com/safxfctf --- Videos Filmed & Edited by Bash Films: http://www.BashFilms.com YouTube Channel Managed by Digital Medium Ltd: https://events.digital-medium.co.uk --- Registration for CppCon: https://cppcon.org/registration/ #cppcon #cppprogramming #cpp

When Nanoseconds Matter: Ultrafast Trading Systems in C++ - David Gross - CppCon 2024
▶︎

When Nanoseconds Matter: Ultrafast Trading Systems in C++ - David Gross - CppCon 2024

Creator of C++: Bell Labs, Negative Overhead Abstraction, Mistakes | Bjarne Stroustrup
▶︎

Creator of C++: Bell Labs, Negative Overhead Abstraction, Mistakes | Bjarne Stroustrup

Intro to Data Oriented Design for Games
▶︎

Intro to Data Oriented Design for Games

The Cost of Concurrency Coordination with Jon Gjengset
▶︎

The Cost of Concurrency Coordination with Jon Gjengset

What Nobody Tells You About Being a Quant
▶︎

What Nobody Tells You About Being a Quant

Appreciating C++ coroutines in forty minutes - Andrzej Krzemieński - code::dive 2023
▶︎

Appreciating C++ coroutines in forty minutes - Andrzej Krzemieński - code::dive 2023

Back to Basics: C++ Concurrency - David Olsen - CppCon 2023
▶︎

Back to Basics: C++ Concurrency - David Olsen - CppCon 2023

From Fragmentation to Foundation  Building Enterprise Ready Data Contracts That Scale
▶︎

From Fragmentation to Foundation Building Enterprise Ready Data Contracts That Scale

Implementing a C++ Coroutine Task from Scratch - Dietmar Kühl - ACCU 2023
▶︎

Implementing a C++ Coroutine Task from Scratch - Dietmar Kühl - ACCU 2023

Better Code: Contracts in C++ - Sean Parent & Dave Abrahams - CppCon 2023
▶︎

Better Code: Contracts in C++ - Sean Parent & Dave Abrahams - CppCon 2023

Deciphering C++ Coroutines - A Diagrammatic Coroutine Cheat Sheet - Andreas Weis - CppCon 2022
▶︎

Deciphering C++ Coroutines - A Diagrammatic Coroutine Cheat Sheet - Andreas Weis - CppCon 2022

Why The Best Software Engineers Focus On System Design
▶︎

Why The Best Software Engineers Focus On System Design

Full Walkthrough: Workflow for AI Coding — Matt Pocock
▶︎

Full Walkthrough: Workflow for AI Coding — Matt Pocock

Andrej Karpathy: From Vibe Coding to Agentic Engineering w/ Stephanie Zhan
▶︎

Andrej Karpathy: From Vibe Coding to Agentic Engineering w/ Stephanie Zhan

Casey Muratori – The Big OOPs: Anatomy of a Thirty-five-year Mistake – BSC 2025
▶︎

Casey Muratori – The Big OOPs: Anatomy of a Thirty-five-year Mistake – BSC 2025

C++ Design Patterns - The Most Common Misconceptions (2 of N) - Klaus Iglberger - CppCon 2024
▶︎

C++ Design Patterns - The Most Common Misconceptions (2 of N) - Klaus Iglberger - CppCon 2024

System Design Explained: APIs, Databases, Caching, CDNs, Load Balancing & Production Infra
▶︎

System Design Explained: APIs, Databases, Caching, CDNs, Load Balancing & Production Infra

Keynote: After the AI Hype – What’s Real, and What’s Next - Richard Campbell - 2026
▶︎

Keynote: After the AI Hype – What’s Real, and What’s Next - Richard Campbell - 2026

Co-Creator of Haskell: Functional Programming, Thinking in Types, Useless Languages | Simon Jones
▶︎

Co-Creator of Haskell: Functional Programming, Thinking in Types, Useless Languages | Simon Jones

The Strange Math That Predicts (Almost) Anything
▶︎

The Strange Math That Predicts (Almost) Anything