 Salut tout le monde, je m'appelle Gamdel Berang et je vais vous parler de l'open source virtual prototyping pour le hardware et le design de software. Donc, d'abord, n'est-ce que quelqu'un dans cette salle a déjà entendu de virtual prototyping ? Ok, ok, donc, on commence. Donc, je suis désolé, je n'ai que 10 minutes. Donc, on commence. Donc, un virtual prototype est une application de software, une simulation. C'est un hardware bienveillant, il produit un radioclip pour exécuter l'environnement pour votre prochaine plateforme. Virtual prototype aimé pour le software use cases. Ok. C'est ok pour tout le monde ? Ok, on continue. Ok, donc, Internet software development, Internet software testing, il commence tout pour le hardware. Il est disponible et il peut aussi être utilisé pour l'utilisation plus tard, quand le hardware est disponible. C'est une alternative pour le prototyping sur les outils. Il explique le software développeurs et la productivité, pour les développer sur la plateforme de développement, mois avant le prototype hardware. Ok. Let's slow down. Ok. So, how do you design your product now ? So, you have an ID 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. And then you have the integration. The hardware team gives physical prototypes to the software team and 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 lose money. So, here is a new way to design your product. You still have ID, 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. It enables you to continue integration. Ok, great. So, just to slow down. So, virtual prototyping is a technology which is a software application simulating the hardware behavior. It provides a ready to execute environments for your next platforms. It allows you a fast virtual prototype for hardware and software co-simulation. Ok, so, how does it look like? Let's take an example, though. Here, it's just a simple Raspberry Pi. So, a Raspberry Pi is composed of a system on chip, the BCM2835 or 36 or 37, depending of the revision of the Raspberry Pi. Inside this system on chip, you have your CPU, your RAM, your UART, GPIO or control. They are all called IP inside your SOC, also called as peripherals. And we will model all this IP. The model will represent the behavior of your IP, which it will be like a 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 Bermeterra binary operating system like on your physical board. Ok, so, what does the model look like? So, and how do you build a model? So, we just take the data sheet, we extract the architecture behavior, so it is from the programmer view. And we describe, for example, here is for the PL011, we extract and we describe all registers and fields and the 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. Ok, cool, that's look amazing. But, this is what people feel when they want to start building Bermeterra prototypes. Why? First, models are hard to find. So, if you want to start now, you will have some issues to find some models on GitHub, on GitLab, or anywhere else. You have to... You need a new quest, development of models, many models are missing for your rights level abstractions depending on the accuracy you need. You have... There is an insufficient communication of efforts on models. There are too much components. You can't model all components, sorry, Instead, we should communalize the efforts and industrial efforts are not shared. Virtual prototypes involve easy deployment. Today, it's hard to start from scratch. There is a model interoperability issue, which doesn't mean easy reuse. Some people are inventing their own standard, degrazing the interoperability between models. And, of course, a non-promise framework deployment is currently missing. So, what's the motivation with virtual prototypes? So first, the key is interoperability. An open standard API is a 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. Reuseability. 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. 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. And you don't want to read a book with thousands of pages to know how to write a model. So that's why 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 answer of all those issues. So here, it's just a demo. As we have no time, so it's not really for real. It's a boot of Raspberry Pi for the quality. So we have a Linux kernel booting on a virtual prototype. So you can see it's really fast. It's run on a laptop. And you can directly interact with a virtual prototype as you can do on a real physical board. It's a low-force demo. 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 models. Continues 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. So we believe we can make hardware and software development more agile. So with more intuitive virtual component editor with open source virtual prototype readers with clever system simulator we would like to from the description of the virtual prototype we would like to be able to export initial build of materials and schematic. And this, of course, enable a more collaborative development open source hardware, community automation. So, sorry, time is over but we are currently opening a beta next week with including the virtual prototype of Raspberry Pi. 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 so if you want to try or to give us feedback with the Raspberry Pi we will be happy to your feedback. Thank you. Ok, so the question is about interoperability with system CATLM. Ok, yes, so I didn't really talk about system CATLM. System CATLM are industrial standards which is an open standard for interoperability between IPs but also for models. Ok, so currently we are directly supporting system C and TLM. System C, we mainly focus our development on TLM because TLM provides an interface with a higher level of abstraction for fast simulation and we mainly focus our development for software 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 world virtual prototype. Yes? It's actually two questions in one. It's about the simulation of the modules of the components. How do you know, for example how do you know it's well configured because most of the software development on hardware is trying to get these devices to work 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 like if there's some kind of code that runs to emulate the function of the components or how do you get your question? Is it about how, 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. How do you know it, you did the right thing? Oh ok, ok, I see. It's about the compliance of your model. Ok, I see. This is a good question. So the question is about how can we check if the model is right according to the hardware? Ok, this is a really good question. So we can say the model is totally right. 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 for IP open and so 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 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 RTL with the HDL or very low. Just talking three minutes. So somebody with a very urgent important question. Yes. How do you plan on getting manufacture data for their custom IP of their chips versus I had a USB hub for my previous board that I worked on. How do you know for sure that you have the correct parameter? Ok, so the question is about how can we get the data sheet from a private IP or private ok, 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 industry can share more maybe more models with the community to avoid to re-event the wheel maybe because the IP provider already have models they do models when they build their system on chip 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 Ok, thank you again Thanks Hi