Open source virtual prototyping for faster hardware and software co-design
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Title of Series | ||
Number of Parts | 561 | |
Author | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/44456 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
Computer hardwareSoftwareOpen sourceOpen sourceComputer hardwareSoftwareType theoryVirtualizationComputer animation
00:21
Virtual realityPrototypeSoftwareComputer hardwareComputing platformIntegrated development environmentPersonal digital assistantSoftware testingWhiteboardSoftware developerDataflowProduct (business)Component-based software engineeringBinary fileMenu (computing)Computer simulationOpen setStandard deviationOpen sourceBuildingAbstractionSharewareWhiteboardCodeComputer hardwarePrototypeKey (cryptography)VirtualizationCartesian coordinate systemGoodness of fitIntegrated development environmentSoftwareComputing platformLevel (video gaming)Web pageOpen sourcePhysical systemBinary codeImage resolutionFormal languageCASE <Informatik>Computer simulationExterior algebraBootingReal numberProduct (business)Kernel (computing)Software developerStandard deviationTelecommunicationLaptopComputer programComputer architectureSoftware testingView (database)Game controllerInterrupt <Informatik>Revision controlField (computer science)System on a chipContinuous integrationOperating systemIP addressSoftware frameworkPoint (geometry)Entire functionComponent-based software engineeringResultantMereologyGame theoryTouch typingSimulationBefehlsprozessorINTEGRALCore dumpMusical ensemblePeripheralMixed realityPhysicalismMultiplication signComputer programmingInstallation artFrequencyLattice (order)Traffic reportingAbstractionOperator (mathematics)Right angleSharewareRemote procedure callExecution unitOpen setMetreLogic gateConvex hullBitComputer animation
07:01
Computer hardwareSoftwarePhysical systemSimulationSystem programmingVirtual realityBeta functionOpen sourcePrototypePrototypeInternet service providerSystems integratorWhiteboardSoftwarePhysical systemBitComputer hardwareFeedbackSoftware developerAbstractionSystem programmingVirtual machineMultiplication signFunction (mathematics)SimulationBeta functionStandard deviationComputer simulationComponent-based software engineeringDescriptive statisticsFunctional (mathematics)Source codeCodeInterface (computing)Reverse engineeringLevel (video gaming)Materialization (paranormal)MereologyOpen sourceVirtualizationContinuous integrationSystem on a chipGraphic designCollaborationismOpen setSoftware testingComplex (psychology)Real numberPeripheralPhysicalismCoefficientTable (information)Mixed realityError messageRegulator geneDirectory serviceDifferent (Kate Ryan album)WaveVideoconferencingText editorComputing platformWritingType theoryInteractive televisionComputer animation
13:40
Computer animation
Transcript: English(auto-generated)
00:05
Hi everyone, I'm Guillaume Delbergh and I will talk to you about open source virtual prototyping for faster hardware and software co-design. So first, does anyone in this room already heard about virtual prototyping? Okay, okay, so let's start.
00:21
So, sorry, I only have just 10 minutes, so let's start. So, a virtual prototype is a software application simulation. This is how the hardware behaves. It provides a ready to execute environment for your next platform. Virtual prototype aims to solve various use cases. Okay, it's okay for everyone? Okay, let's continue. Okay, so it enables software development and software testing to begin before the real hardware is available
00:44
and it can also be used for later use when the hardware is available. It is an alternative to prototyping on real boards. It expands the software developer's productivity allowing them to develop on their development platform months before the real hardware prototype. Okay, let's slow down. Okay, so how do you design your product now?
01:03
So, you have an idea and you ask to your software developers and your hardware developers to build their parts, so application and the physical prototypes. During the development, you don't really have communication between both teams, between the hardware team and your software team.
01:21
And then you have the integration. So, the hardware team gives a physical prototype to the software team and the software team can begin to run the application on it. Most of the time, it doesn't work. So, you have to go back and to try again. And, finally, you have your product, but you spend time, you lose your time, and you spend, you lose money.
01:44
So, here is a new way to design your product. You still have idea, of course, but instead of building a physical prototype and waiting for it, you design a virtual product. So, using a virtual prototype. So, people from software can directly run their software without having to wait for the physical board in their hands.
02:07
It enables you to do continuous integration. Okay, great. So, just to slow down. So, virtual prototyping is a technology which is a software application simulating the hardware behavior.
02:22
It provides a ready-to-execute environment for your next platforms. It allows you a fast virtual prototype for hardware and software co-simulation. Okay, so how does it look like? Let's take an example. Here is just a simple Raspberry Pi. So, a Raspberry Pi is composed of a system on chip, the BCM28, 35, or 36, or 37, depending on the version of the Raspberry Pi.
02:48
Inside this system on chip, you have your CPU, your RAM, your UART, GPIO, or control. They are all called IP inside your sock, also called as peripherals, and we will model all these IPs.
03:04
The model will represent the behavior of your IP, which it will be like your software application. And we will model the entire system on chip. The result is a binary, a software application, where you can run your original bare-metal binary operating system like on your physical board.
03:24
Okay, so what does a model look like? And how do you build a model? So, we just take a data sheet. We extract the architecture behavior, so it is from the programmer view. And we describe, for example, here is for the PL011.
03:41
We extract and we describe all registers and fields and their behavior. For example, when you write on a specific register, here it's for clearing the interrupts. Then we update the interrupt status to propagate the value. Okay, cool. That looks amazing.
04:00
But this is what people feel when they want to start building virtual prototypes. Why? First, models are hard to find. So, if you want to start now, you will have some issue to find some models on GitHub, on GitLab, or anywhere else.
04:21
You have to, you need Hanukkah to develop a lot of models. Many models are missing for your write level abstractions, depending on the accuracy you need. You have, there is an insufficient commonization of efforts on models. There are too much components.
04:41
You can't model all components. Instead, we should commonize the efforts, and the industrial efforts are not shared. Virtual prototypes involve every deployment. Today, it's hard to start from scratch.
05:02
There is a model interoperability issue, which doesn't mean it's easy to use. Some people are inventing their own standard, decreasing the interoperability between models. And, of course, an unpromised framework deployment is currently missing.
05:22
Okay, so what's the magic point of with virtual prototypes? So, first, the key is the interoperability. An open standard API is the key. If you want to build models, it's okay. But, if you want people to reuse your models, you need interoperability. You would like to interconnect all models you can find on GitHub or GitLab really easy using open standard.
05:47
The reusability, you don't want to reinvent the wheel. You would like to take advantage of the community. So, you would like to improve and contribute to existing models instead of duplicating the code.
06:02
You don't want to spend a month to start, for example, a Raspberry Pi. So, you need good documentation and easy tutorials. And, finally, you want something easy to build. You don't want to read a book with thousands of pages to know how to write a model.
06:22
So, that's why we are working on, we are considering higher level language to describe IP models. And, for us, the key is clearly the open source. The open source is the onslaught of all those issues. So, here is just a demo.
06:43
As we have no time, so it's not really for real. It's a boot of Raspberry Pi, sorry, for the quality. So, we have a Linux kernel booting on a virtual prototype. So, you can see it's really fast. It runs on a laptop.
07:01
And, you can directly interact with a virtual prototype as you can do on a real physical board. It elevates them. And, we are currently working on intuitive tools for design. So, we would like to provide a place to share what we call virtual components.
07:22
A continuous integration so people can directly test their software on their hardware to decrease regression. A graphical designer to assemble different models. And, of course, community support.
07:41
So, we believe we can make hardware and software development more agile. So, with more intuitive virtual component editor, with open source virtual prototype users, with clever system simulator, we would like to, from the description of the virtual prototype, we would like to be able to export initial bit of materials and schematic.
08:02
And, this, of course, enable more collaborative development, open source software, community, and functional system integration test automation. So, sorry, time is over. But, we are currently opening a beta next week with including the virtual prototype of Raspberry Pi.
08:23
So, if you want to try, so, just join the beta. We will, of course, then after the beta, open everything to the community on our GitHub, on github.com dash iventive. So, if you want to try or to give us feedback with the Raspberry Pi,
08:42
we will be happy to hear your feedback. Thank you. Questions? The system C and TLM, these are established standards in the industry.
09:03
Okay, so the question is about interoperability with system C and TLM. Okay, yes, so I didn't really talk about system C and TLM. System C and TLM are industrial standard, which is an open standard, used for interoperability between IPs, but also for models.
09:21
Okay, so currently we are directly supporting system C and TLM. System C, we mainly focus our developments on TLM, because TLM provides an interface with a higher level of abstraction for fast simulation. And we mainly focus our development for software.
09:41
So, we would like fast virtual prototype, so fast virtual platforms. So, currently we mainly support TLM interface. But, of course, you can integrate existing system C model, which may be with a lower abstraction level, like RTL. So, you can mix all of them in a virtual prototype.
10:05
Yes? Actually, two questions in one. It's about the simulation of the modules, of the components. How do we know, for example, if you use a complex I2C chip, how do we know it's well configured? Because most of the software development on hardware is trying to get these devices to work.
10:23
And so, if you put the wrong registers, the wrong bits in the registers, then it won't work. The software will run, but it won't work. How do you plan on getting the output of your components? Is there some kind of code that runs to emulate the function of the components?
10:41
Or how do you see that? Sorry, I got your question. Is it about the behavior of the register when you write on it? Yes. For example, a radio chip will start emitting or transmitting something.
11:01
Of course. How do you know it? You did the right thing. Oh, okay, okay. I see. It's about the compliance of your model. Okay, I see. This is a good question. So, the question is about how can we check the model, if it is right, according to the hardware, according to the real hardware. Okay, this is a really good question. So, we can say the model is totally right.
11:24
We are only following the data sheet. But we believe with open hardware, we can have accurate models because we have all the source code. And we hope we will have more IP open
11:43
and some more accurate models. But there is another answer. People today, many people today begin to develop the hardware with low-level like RTL. But you can do the reverse. You can begin with your model,
12:01
and your model will drive, then your development. Your model can be used from the software and then for the hardware to write low-level part like the RTL with the RTL or the relog. I'm talking three minutes. Very urgent, important question.
12:23
Yes? How do you plan on getting manufacturer data for their custom IP of their chips? For instance, I had a USB hub on my previous board that I worked on. How do you know for sure that you have the correct parameter? Okay, so the question is about how can we get the data sheet
12:41
from a private IP or private peripherals? Okay, this is a good question. So, we can spend our night to do reverse engineering, but we don't have time. We need to sleep. Now, currently we are trying to discuss with manufacturer and IP provider to see how industrial can share more,
13:06
maybe more models with the community to avoid to revolve on the wheel. Maybe because IP provider already have models. They do models when they build their system on chip.
13:21
So, if we convince them to share models to the community, I hope it will be great. But currently with private IP, we don't really have an answer. Thank you, Guillaume, again. Thank you.
13:42
Hi.