 Okay. Well, hello. Thank you for coming. This talk is about FBAs also. Graphic design tools for open source FBAs, the Appio and ICES Studio projects. So I'm Jesús Arroyo. Well, a little presentation. I'm a husband and father of two little boys. I'm an engineer in software and also robotics and electronics. I'm the creator of Appio and ICES Studio projects, and now I'm working on Cartoon, that is an open source company of location intelligence in Madrid, Spain. Well, let's start with some state of the art. Open FBA boards, what an FBA is, it's a field program of data rate. You can change its own hardware in seconds. What is an open FBA? It's an FBA chip that you can use with open source tools. An open FBA board, it's an open source electronic boards that contains a chip. So there are a lot of different boards out there. For example, the I-Stick that you know from the previous talk. This is the first one. This is another one from the company Lattice. That is this one. We have also an isomalambra board, this board. I don't know if you know all these boards, but this is the black eye, for example, and the tiny FBA that is very tiny. Do you know who knows at least three of these boards, raise your hand. Okay, one, two, well, one, everyone. All the other boards, great. Perfect. Okay, open FBA tools. We have some open source tools like Icarus Berrylock and GTK Wave. The first one are only for simulation, so nothing to do with FBAs, but I include in this group. Then the I-Storm tools, that is the golden tool. You have uses for the logic synthesis, our Agni PNR for the blockchain route, and the I-Storm tools for the package and a bloat and things like that. So, well, thank you very much for Clifford for these amazing tools because I think this is something incredible. You can use these tools with typing these commands. For example, in this simulation, you can run a I-Berrylock, then a VVP to generate the simulation file, and then GTK Wave to visualize all the lines. For synthesis, you can execute Jossys, then Agni, I-Spark, and finally I-Spark to program. You need to type all that. So, we found some issues with that because first of all, you need to build all the tools yourself. It requires time, it requires knowledge, and also you need to have all the built environment in your computer. Then you need also to install the drivers. There are some boards with an FTDI chip, some with directly USB connection. There are also a lot of parameters for simulations and synthesis tools like you saw before. For example, this is for the FEA parameters and a lot of path and things like that. You can upload the ground bit stream that this is a little dangerous because the board is not verified. So, possible solutions, create a high-level multiplatform tool to manage every found issue. Instead of the red things, we can add a package manager and driver manager, simulation and synthesis manager, and then a blog manager. This is what Appio is. This is my implementation of the solution. Appio is a multiplatform CLI toolbox for open FPGAs. It is written in Python, so you can install it with FIP install Appio, and this is how it looks like. This is the documentation and this is the repository. So, the commands. For the package manager, you can just use Appio install and Appio uninstall. So, if you type Appio install, it downloads all the tools for any architecture. Linux, Mac, Windows, ARM, and 3264, everything. Then you can also use Appio drivers to enable FTDI or serial drivers, and these simple commands to verify, simulate, build, time clean, all the things that you need to do with the hardware design. Then you have also Appio upload that checks the platform, checks the USB, vendor and product IDs, checks the FTDI description, and also search the boards, and a lot of commands for examples and initialization, sorry. In future work, I want to improve the examples manager. I want to add a project manager in order to have a multi-director project and also support a lot of boards. All the boards I mentioned before are supported by this tool, all these ones. But if you don't like the terminal, you don't like typing, you can use also a graphic user interface for that, that is the Appio IDE. Appio is a natural plugin. It's a plugin for Atom. It contains also a very low Glinter and a very low hand PCF file syntax highlight. So you can write your code, and then instead of typing the commands, you can press the buttons, and it's easy. So let's do a quick demo about that. Well, now I'm going to use this board, that is the Dys2Malambra board. It's a board made in Spain. It has the same chip than Dys2, but also a lot of new interesting stuff. So first of all, we need to initialize our project. It creates a simple file with a board, that's it. Then you can, for example, Appio sim, and runs the simulation and runs GTK wave. This is cool because you can use the same commands for Windows, for Mac, and for every operating system that you want. Let's do, for example, build, execute this, Joss is a Ragnar NX pack, and now Appio upload. It finds the board, and just in two seconds, you'll have the bitstream here. Let's try another board, for example. I'm going to try the BlackEyes. That is a project from United Kingdom. Well, you can see the board again. So I can execute. Also, if I do Appio upload, it first builds all the stuff, and then uploads to the board. If I execute Appio build again, it keeps catching all the generative files, so it does not. In this case, we have all the LEDs on. Well, I can show you the code. This is just the code to put four wires to one. Well, this is the PCF file to specify the number of the board. But you don't need to know this. And finally, I'm going to switch to the ASTOOM Alamber again to show you Appio IDE. ID. You open the break. I don't know if, okay. You have here, for example, a simple program design. So instead of typing Appio upload, you can press this button, and you can see, well, I don't know if you can see it, but this is a counter. So you can change. You can change, press upload, and now we have working LED. So for example, I'm going to change the speed. And this is quite easy because you can focus on your design instead of all the tools. Also, you can run the simulation here. So you see, it's quite easy to use these kind of complicated devices. But, nice, this is nice. But I need to learn and write HDL code. So maybe I don't want to... Can I enjoy OpenFPAs in an easy way? So also, I have created some experimental tool called ICES Studio. It's a graphic editor for OpenFPAs. It's written in JavaScript and HTML. You can find also the documentation and the repository. And this is how it looks like. This is some kind of graphic very low. You have inputs, outputs, parameters, code, and other blocks. So let's go inside. It has a very easy setup. You can download the app image, the Windows installer, the MacOS DMG, and just install it. It contains SAPIO and all the required tools inside. So it's quite fast to install all the things. It has also driver configuration. So you press Drivers Enable, and you have a step-by-step guide. And you can create your own designs and blow to the board. There are basic blocks. Some basic blocks, IO blocks for input and output ports. Like this one, this one is an 8-bit output block. You have also constant blocks, these orange blocks from the top. You can type numbers or strings or whatever you want in order to add parameters to your designs. There are also code blocks, these ones. You can type a very low inside these blocks. And well, this one is red because it contains an error. So you can see also you can do some kind of debugging with these two. And information blocks, for example, this one. Information blocks, you can write a markdown or HTML in order to add documentation to your designs. But there are also custom blocks. It's a duality between project and block because each project can be a block. As studio designs are playing JSON with .ice extension. So you can create a project. And you can use this block as a block for other projects. For example, you can create this project. You can add some kind of the name, the description, and the image. And you can use this project as this block in other designs. We have also collections. Collections are a group of blocks and examples with translations that you can install in Asus Studio. So you can install a lot of collections in Asus Studio, but you can only select one of them. Because if you want to create a tutorial, for example, you need to have only specific blocks or examples. And these blocks are in different collections. Well, and a lot of more things. For example, multiple support, multi-language. You're going to export a lot of different files. Error detection, you can and you are redo for all the components. So it's quite easy to go back and all the things. And also, I want to add a lot of things to these two. Like, for example, memory and label blocks, parametric blocks, integrate simulation, and all that kind of stuff. So let's go to do the second demo. OK, let's connect the board. So let's create, for example, an input button. You can put output for the LED. For example, I'm going to select the SMA Lambda board. Well, you can connect and just upload this design to the board. So I don't know if you can see it, but if I press the button, the LED turns on. So I can add more interesting things to this design. For example, upper scalar. This is a custom block. So I need a constant, for example, 23 bits. I'm going to add a logic gate. And that's it, for example. So you can see when I press the button, the LED starts blinking. I can just change the bits for the divider. I'll upload again. One, two, three, go. And then I press the button, and I see the LED blinking faster. I'm going to add also an information block. This is code stuff. So I can put the block in whatever position to add information. I can add also links and images to this block to add information. So in the same picture, you can get all the information without extra windows, so things like that. And for example, I can enter in the blocks to see what is inside of the block. For example, if I double-click, I can see this is the inside of the unblock. It's just a one-line Verloch design. And also I can open the blocks as projects in order to change some kind of things. For example, I can add more ports to the code block. I'm adding one wire input and eight bus output. So I can create everything and then save. I can also update the parade information in order to add an image or whatever you want. And then I can save that and share with everybody. And well, a lot of stuff. Here you can have different collections. So when you select a collection, all the SS2 changes. So for example, if I select another collection, all these blocks change to adapt to the new collection and also the examples. And that's it. Quick demo. Well, we have created a little community in Spain called FPGA Words to share knowledge about open FPGAs. You can check the website. You can check the GitHub organization and also the list. We have around 500 members, but it's more in Spanish. So we want to create here in the FOSDM a new list for English people to, well, we want to create something new. We don't know yet what kind of group list forum or thing, but we want to share these projects with everyone. And also, we want your contributions and your ideas. And thank you very much. Well, if you want to see more ICS-Studio examples and very interesting things, I recommend you to stay to the next talk. So to enter in more detail in the designs. Yeah. OK. The design for the actual files, you may have already mentioned it. Please try to stay silent, guys. Please try to talk outside. This is a question and answer session. And it's also being recorded. Is that just strictly an HTML or just text file? The files? Oops. OK. The questions. What the files are? Or the files are plain JSON files with some kind of structure to represent all the diagrams and the connections. And then I have a compiler from this JSON to very low that is inside the ICS-Studio. So now the format is JSON. So that would be reasonable to use with? Yeah. Yeah. Maybe. Can you please repeat the question for the recorder? OK. Can we use the files for other tools or things like that? This is open source. And this is just the beginning. So we can do whatever we want with that. And we can create other formats or more standard formats for the files and for the blocks. So yeah. Is there a motivation for doing it? I mean, this is very cool stuff. Yeah. I'm doing this because I want to. OK. Sorry. Sorry. It's why I'm doing this, no? I'm doing this because I want to bring this cool technology called FPGA technology to everyone because it's quite difficult for all the people or kids or whatever student to enter in these tools, build all the systems, type all the commands, and then create something. With these kind of tools, you can create in one minute the environment. And then this allows you to share hardware and also to teach hardware designs to people that are not experts in these things. And also because I want to learn JavaScript, that this is a good moment to do it. Yeah. The question is about testing hardware with software? Or? You need to test with hardware. Yeah. Yeah. There is a cool stuff also from Clifford Wolf that is the one who created the project, a code formal verification. So you can add some kind of test in the hardware, like assert lines or things like that. I'm thinking how can we create some graphic tools to describe all the tests and then pass the test all for the designs? So we are thinking about that. But it's kind of difficult right now. Yeah. But there are many questions. They're so quick. OK. There are tools like Lava that can do hardware testing on a CI. And there's some talks around here somewhere if you search on the page for Lava. So I would recommend that. OK, thank you. Could the app here is based on platform I know? Yeah. Well, I create from scratch. Platform IO, it's the inspiration for that kind of tool because at the beginning we want to include all the FBA tools with platform IO. So we have also a platform IO package. But I took some ideas and I rewrite the whole thing to create that tool that is only for open FBAs. Well, thank you very much. And that's all.