Hi everyone!
I have uploaded the new version and generated the bundles. This first upload may contain issues because it includes many changes, although it has been minimally tested. My proposal is for this to be pre-release 1.0, for all of us to test it over the next two weeks, and then release it as stable so Juan can use it at the university and so we finally have an up-to-date stable version.
First, let’s see whether you like everything I have proposed and whether it fits your needs.
This week I will be publishing some video tutorials to show the new features and improvements. For now, however, I did not want to delay making this available to you just because examples are still missing. So here is a quick summary of these “small-but-big” improvements:
Improved routing, minimization of loops, rendering errors, etc. There are some shortcomings that are impossible to solve with the current engine. If they appear, I will let you know whether they are a limitation or a bug we can fix. In general use, it works much better than the previous version.
Smoother navigation. You will see that you can now move through the design much faster and modify blocks without having to unlock the padlock and make the system reload the design. Padlocks now only appear on blocks that belong to installed collections, in order to protect them from modifications. This is a major usability improvement.
Save from anywhere. You no longer need to close the padlock and go back in order to save. You can save from any point, and since the design can be edited from anywhere, this is a very important improvement for the user.
Cleanup of unused or obsolete options. Menu options that had become obsolete have been removed.
Collection manager. We now have a collection catalog. Users can install collections with a single click, and we can add new collections remotely without users having to reinstall Icestudio. I have added all of Juan’s collections, both to give visibility to such great work and to provide an initial core set. During these next weeks of stabilization, we can add all the collections we already know about, or even new ones.
I hope you like this idea. It is only the seed of something big. I will explain more about this module this week, but it will be expanded so users can share their collections with the community directly from Icestudio. First, however, we need to test with a controlled group that the initial installation and catalog updates work correctly.
My idea is that if you send me collections to add, I will update them in the remote catalog and we can check that installed Icestudio instances update without needing to be reinstalled.
This will also be expanded into the concept of iceHub with “designs”. I will tell you more about this. I would like to have it ready soon so we can include it in the version.
In the examples section, everything is currently shown all together, like a catch-all drawer. This is because it is designed for fast searching through the search box. For example, if you type “basys3”, only the matching examples would appear if there are any. When you click an example, the right-hand panel shows which collection it belongs to and its folder.
If users want to install the examples, they can do so from the collection using the “install examples” button. They select a directory and the examples are moved together into a folder.
Documentation and tutorial manager. One of the problems we have in the community is the lack of visibility, and how all the work gets lost over time. Now everything is centralized in Icestudio: the community forum itself, video tutorials, and references to web projects. Everything I have added as an example is multilingual, Spanish/English, for tags and search descriptions.
The idea is for all of us to populate this area with work and resources so that anyone can easily find all kinds of information through the search tool, something that is very difficult to do on Google.
As with the previous area, this section updates remotely. We will be able to add videos, courses, and project references without users needing to reinstall Icestudio or wander around the web. Icestudio itself becomes both the editor and the information hub.
Current APIO version, plus improved installation and maintenance. I have improved how APIO is installed and maintained. It is now very easy to switch from stable to develop and stay up to date on either branch. Python and Git no longer need to be preinstalled, and download times have been dramatically reduced.
The new manager shows much more information and detail. The idea is for users not to get lost and to know at all times what is happening.
Startup wizard. In general, a new user opens Icestudio and does not know how to begin. I have added a wizard that guides users through their first environment setup, toolchain installation, board connection, and flashing of their first program.
This is only the beginning of the wizard, and it will improve over time, but I think it was something very necessary.
APIO shell. This is an interactive shell that allows APIO to be managed directly from Icestudio, as well as all Yosys commands. The shell creates a sandbox in the active project so it does not interfere with the system. The good thing is that a beginner does not need to configure environment variables, Python, or anything else. They can simply try commands, from iceprog to manual synthesis with Yosys. The idea behind this shell ranges from making life easier for developers, who can test custom commands directly, to allowing the use of Yosys tools not integrated into Icestudio, such as iceprog.
Interactive output shell. From now on, the output is no longer a lost console with little practical use. For each synthesis run, we have access to a manageable console where we can view the output, copy it, analyze it, and even, when errors occur, receive recommended configurations. For now, there are only a few hints, but as we detect more cases, I will add rules.
This will help us, when the toolchain improves, to add custom APIO parameters without having to rewrite all the blocks, as happened in the past.
It also prevents the screen from filling up with unintelligible red balloons that are difficult to understand and read when an error occurs.
Block manager. This has been improved, and conflict situations that broke the flow or left the manager in a corrupted state have been removed.
The search feature suggested by Joaquim has been added, and filtering has been improved.
It is synchronized with iceHub, so when collections are installed, the indexing is synchronized.
The continuous integration systems and bundlers have been updated and improved. Bundles will now be generated automatically every night, accumulating the changes committed during the previous day.
Updated to the latest NW.js engine.
Fixed the build for OSX, although tonight’s nightly may still fail, but it is under control. It will probably already be fixed by the time you read this email.
Board editor. Adding boards no longer requires editing anything manually. We can also start by importing boards from APIO, and we can integrate boards only into Icestudio, either for development or because, for whatever reason, they do not fit into APIO. This could even allow Vivado or any other synthesis system to be integrated: the board would be cloned and custom commands would be defined for that board from the editor.
This week I will upload one video showing how to integrate a board that is in APIO but not in Icestudio, and another video showing how to integrate a board that is neither in APIO nor in Icestudio.
This module has a high chance of containing bugs, so I ask for your patience during the first few days while we get it up and running and test it.
There is now a new “Clean” command. This is because, in order not to delete APIO modifications and customizations, testbenches, etc., each build no longer deletes the entire contents of the folder as before. This follows the suggestion from Luis Miguel and Joaquim — thank you! It is now up to the user to decide when to perform this cleanup.
Serial terminal migration and modernization. The serial terminal was obsolete and incompatible with the new Chrome engine, where WebSerial support has been removed.
I took the opportunity to modernize the interface in the style of the rest of the new plugins.
Many other new improvements that had already been implemented, such as Verilog import, etc.
Improvements to the GitHub workflows. In addition to updating them, the most important change is that an automatic version will now be generated every night, whether or not changes have accumulated during the day.
In the upcoming new version, I have introduced the concept of “project”. I will explain everything in detail, but it will give us a lot of power, and this is part of that future concept.
In summary, that is all for now. As I said, this is only the tip of the iceberg, but it is the minimum I considered necessary for version 1.0. I can no longer port the remaining features because they require the new engine. Although I have visually kept the rendering, internally almost everything has been rebuilt nearly from scratch.
All broken or half-finished features have been removed. In the coming days, I will update the GitHub documentation on how to collaborate from now on. The Icestudio develop branch must never remain broken, since many people use that version in their day-to-day work to stay up to date. In this last phase it remained broken for months because of several features, and I do not want that situation to happen again. I will therefore define some criteria on how to collaborate, add new features, etc., and I will propose them to you. If you like them, great; if not, we can continue as before, and that is fine too.
This version is essentially the same Icestudio we already had, but polished and enhanced, with many improvements in routing, board management, the new APIO, improved APIO integration, package installation, interface profiling, etc.
It includes things such as preventing the build folder from deleting its contents, so testbenches or customizations are preserved, and so on.
To add new boards, you only need to enable the development checkbox. When creating a new board and saving it, or importing it from APIO and saving it, the necessary folders and files are generated inside the Icestudio distribution. After that, you only need to run the relevant git add, commit, and push commands from the console for the PR. There is no longer any need to edit anything manually or run scripts that only caused confusion and errors.
As I mentioned, over the next few days I will upload some videos to help you with the first steps.
I am going to prepare some templates and a tutorial so that anyone who wants to make a video can do so using the same format. In the coming days, I will publish instructions on how to add community videos — each person does their own thing as they wish, but Icestudio brings it all together — or how to propose an official video.
Because I have been carrying out all the development in parallel for different reasons, and because I did not want to delay making it available to you, I have made a massive code upload in a single PR. That way, if you do not like it, you can remove it all at once without much pain, with a single changelog summarizing everything. I am attaching that changelog to this email in English and Spanish. Although it is only a summary, it more or less indicates all the work carried out. You will also be able to see it in “Release Notes”; I have changed the format and adjusted it to the new styles.
I have also added the Basys board that Juan added. I cannot test this, so please let me know whether everything works correctly, and if not, we will adjust it. On OSX, a report_xilinx.py script is missing from the OSX toolchain, which I need to review. I have not been able to test it on Linux or Windows; I will do that tomorrow. In any case, this is now an APIO/toolchain issue. In Icestudio, the files are generated correctly and everything is passed to APIO properly.
These days I will make a few more minor changes related to version information, documentation, etc., while we start using and testing it.
In terms of styles, this week I will review the “light” version because I have done everything in dark mode, and there may be things in the white theme that do not adapt well. However, I did not want to delay your ability to work because of this, since it is of little importance.
Thanks to Demócrito, who has been giving me a great hand in making this version minimally tested and avoiding initial chaos caused by all kinds of bugs.
I would also like to remind you that I already uploaded the native OpenXC7 versions for Windows and OSX, so when using this version of Icestudio on Linux and OSX, you do not need to use WSL or anything similar.