Icestudio 1.0 pre-release (propuesta)

1 view
Skip to first unread message

Carlos Venegas

unread,
8:30 PM (2 hours ago) 8:30 PM
to fpga-wars-explora...@googlegroups.com
ENGLISH BELOW

Hola a todos! 

He subido la nueva versión y generado los bundlers, esta primera subida podría tener fallos porque incluye muchos cambios, aunque va mínimamente probada, mi propueta es que sea la pre release 1.0 , testearla entre todos estas dos próximas semanas y lanzarla como estable para que Juan la pueda utilizar para la universidad y tengamos por fin una estable actualizada.

Primero vamos a ver si os gusta y os encaja todo lo que os he propuesto. 

Esta semana os iré lanzará algunos video-tutoriales para mostrar las nuevas funcionalidades y mejoras, pero de momento no he querido retrasar que tengáis ya esto disponible a flta de ejemplos. por esto, así que os hago un resumen rápido de estas "pequeñas - grandes" mejoras:

1) Mejora en el routing, minimización de lazos, errores en el render etc. hay deficiencias imposibles de solucionar en el motor actual, si saltan ya os diré si es una limitación o si es un bug que podamos solucionar, en si en uso funciona mucho mejor que lo anterior.

2) Navegación fluida, veréis que ahora podéis navegar bastante más rápido por el diseño y modificar bloques sin necesidad de tener que desbloquear el candado y que el sistema recargue el diseño. Solo aparecen candados en los bloques que pertenecen a colecciones instaladas para protegerlos de modificaciones. Esto es una gran mejora de usabilidad.

3) Guardar en cualquier punto, ya no hace falta cerrar el candado y volver atrás para guardar, podéis guardar en cualquier lugar y como el diseño se edita en cualquier punto, la mejora frente al usuario es muy importante.

4) Limpieza de opciones sin uso u obsoletas, se han eliminado opciones del menú que estaban obsoletas.

5) Gestor de colecciones, ahora tenemos un catálogo de colecciones, el usuario puede instalarlas a golpe de click, podemos añadir nuevas colecciones remotamente sin que el usuario tenga que reinstalarse icestudio, he añadido todas las colecciones de Juan, tanto para dar visibilidad a tan gran trabajo como para que ya se disponga de un core inicial, en el transcurso de estas próximas semanas de estabilización podemos ir añadiendo todas las colecciones que tengamos fichadas o incluso nuevas.

Espero que esta idea os guste , es solo el germen de algo grande. Este módulo ya os contaré esta semana , pero se va a ampliar para que los usuarios puedan compartir desde icestudio sus colecciones con la comunidad pero primero tentemos que testear que con un grupo controlado funciona la instalación inicial así como la actualización del catálogo. 

Mi idea es que si me pasáis colecciones a añadir, las actualizo en el catálogo remoto y comprobemos que se actualizan los icestudio instalados sin tener que reinstalarlos,

También se ampliará al concepto del iceHub con "diseños"  ya os contaré, esto me gustaría tenerlo pronto listo y que podamos meterlo en la versión.

En los ejemplos , están todos del tirón , todos juntos como un cajón desastre, esto es porque está enfocado para buscar ágil por el buscador (por ejemplo poner basys3 y si hubiera saldrían solo los ejmplos), al hacer un click, en el panel derecho sale a qué colección pertenece y su carpeta.

Si se quieren instalar los ejemplos se puede en la colección con el botón de installar los ejemplos , seleccionas un directorio y te los traslada todos juntos a una carpeta.

6) Gestor de documentación y tutoriales,  uno de los problemas que tenemos en la comunidad es la poca visibilidad y como se pierden todos los trabajos en el tiempo. Así que ahora queda todo centralizado en icestudio, tanto el propio foro de la comunidad como video tutoriales y referencias a proyectos web. Todo lo que he dado de alta a modo de ejemplo está multiidioma castellano/inglés para tags y descripciones de búsqueda.

La idea es que entre todos poblemos este área de trabajos y recursos que hagan que caulquier a golpe de buscador le sea muy fácil encontrar todo tipo de información que en google es muy complejo.

Y lo mismo que antes, este área se actualiza remotamente, podremos ir añadiendo videos, cursos, referencias proyectos, sin que los usuarios tengan que reinstalarse icestudio o andar perdidos en la red, el propio icestudio es el editor y el concentrador de información.a

7) Versión APIO actual + mejora de instalación y mantenimiento.  He mejorado como apio se instala y mantiene, es muy fácil pasar de stable a develop y estar al día en cualquiera de sus ramas, ya no hace falta preinstalar python ni git y los tiempos de descarga se han reducido dramáticamente.

El nuevo gestor muestra mucha más información y detalle, la idea es que el usuario no tenga ninguna pérdida y sepa en todo momento que está ocurriendo.

8) Wizard de inicio, En general un usuario nuevo entra en icestudio y no sabe como empezar, he añadido un wizard que guía al usuario en su primera configuración del entorno , instalación de la toolchain, conexión a la placa y flasheo de su primer programa.

Es solo un inicio de wizard que mejorará con el tiempo pero creo que era algo super necesario.

9) Apio shell, es una shell interactiva que permite desde icestudio manejar apio directamente así como todos los comandos de yosys. La shell hace un sandbox en el proyecto activo para no interferir en el sistema, lo bueno, un usuario novato no necesita configurar variables de entorno, python ni nada, simplemente peude probar comandos , desde un iceprog a una síntesis manual con yosys, la idea de esta shell va desde facilitar la vida a desarrolladores que pueden probar comandos personalizados directamente, a poder usar herramientas de yosys no integradas en icestudio como por ejemplo un iceprog.

10) Shell de salida interactiva, a partir de ahora el outuput no es una consola perdida con poca utilidad, tenemos acceso en cada síntesis a una consola, gestionable donde ver la salida poder copiarla, analizarla e incluso ante errores , recomienda al usuario ciertas configuraciones, de momento los hints son pocos pero según los vayamos detectando iré añadiendo reglas.

Esto nos ayudará a ante mejoras de la toolchain poder añadir parámetros personalizados en apio que no obliguen a tener que reescribir todos los bloques como ya ocurrió en antaño.

Esto también evita que ante un error la pantalla se llene de globos rojos ininteligibles y complicados de entender y leer.

10) Gestor de bloques, se ha mejorado, eliminado situaciones conflictivas que rompían el flujo o dejaban al gestor en una situación corrupta. 

Se ha añadido el buscador sugerido por Joaquim y mejorado el filtrado.

Está sincronizado con iceHub, cuando se instalan colecciones se sincroniza el indexado.

11) Se han actualizado y mejorado los sistemas de integración continua y los bundlers ahora se generarán automáticamente cada madrugada, acumulando los cambios que se hayan hecho commit en el día anterior.

12) Actualización al último motor nwjs

13) Solucionado la construcción para OSX (aunque fallará posiblemente en la nightly de esta noche, pero está controlado posiblemente cuando leais este correo ya esté solucionado).

14) Editor de tarjetas, para añadir tarjetas ya no es necesario editar nada a mano, además podemos partir de importar tarjetas desde apio y podemos integrar tarjetas solo en icestudio (para desarrollo o porque por el motivo que sea no encajan en apio) e incluso con esto se podría integrar vivado o cualquier otro sistema de síntesis (se clonaría la tarjeta X y se establecerían los comandos personalizados desde el editor para esa tarjeta).

Esta semana os subiré un video a modo de ejemplo integrando una tarjeta que está en apio y no en icestudio y otro video integrando una tarjeta que no está ni en apio ni en icestudio.

Este módulo tiene un alto grado de poder tener bugs os pido paciencia los primeros días mientras lo ponemos en marcha y se va probando.

15) Ahora hay un nuevo comando "Limpiar" esto es porque para no borrar modificaciones y personalizaciones de apio, testbenches, etc ahora en cada build ya no se borra el contenido de la carpeta íntegramente como antes (como sugirieron Luis Miguel y Joaquim, gracias!) por lo que ya es tarea del usuario decidir cuándo realizar esto.

16) Migración terminal serie y modernización, el terminal serie estaba obsoleta , era incompatible con  e l nuevo motor chrome en el que han eliminado el soporte webserial.

He aprovechado a modernizarla la interfaz al estilo del resto de plugins nuevos.

17) Muchas nuevas mejoras que ya estaban implementadas como importación de verilog etc.

18) Mejoras en los workflows de github, aparte de actualizarlos la más importante es que ahora se hará una versión automática cada noche con los cambios los haya o no acumulados durante el día.

En la nueva versión que viene,  he introducido el concepto de "proyecto" ya os lo explicaré todo en detalle pero nos va a dar mucha potencia y esto es parte de este futuro nuevo concepto.

En resumen esto es todo por el momento, como os digo es solo la punta del iceberg pero es lo mínimo que consideraba que debería estar en la 1.0 . Además el resto de funcionalidades ya no puedo portarlas porque requieren del nuevo motor que aunque visualmente he mantenido el render internamente está todo rehecho casi de cero.

Se han eliminado todas las funcionalidades rotas o que estaban a medias, en los próximos días actualizaré en github documentación sobre como colaborar a partir de ahora, el icestudio develop nunca debe quedar roto ya que mucha gente es la versión que usa para su día a día y estar a la última y en esta última etapa quedó roto hace meses por diversas funcionalidades, no quiero que se repita esta situación por lo que estableceré unos criterios de como colaborar /añadir fetures nuevas etc y os las propondré si os gustan bien y si no pues se sigue como hasta ahora y ya está.

Esta versión es en esencia el mismo icestudio que ya teníamos pero pulido y vitaminado, con muchas mejoras en el routing, gestión de placas,nuevo apio y mejoras en su integración, instalación de paquetes, perfilado de la interfaz etc.

Se incluyen cosas como que la carpeta build no borre su contenido para que los testbenches o personalizaciones se mantengan, etc.

Para añadir placas nuevas, solo tenéis que activar el check de development , esto al crear una placa nueva y guardarla o importarla de apio y guardarla, genera ya las carpetas y ficheros necsarios dentro de la distribución de icestudio por loq ue luego solo teneis que hacer en la consola los pertinentes git add, commit y push para el pr, ya no hay que editar nada a mano ni ejecutar scripts que solo llevaban a lio y errores.

como os he comentado estos días os subiré unos vídeos para ayudaros en los primeros pasos.

Voy a preparar unas plantillas y un tutorial para el que quiera hacer un vídeo lo pueda hacer y tenga el mismo formato. en los próximos días publicaré el como añadir vídeos de comunidad (cada uno se lo guisa y se lo come y hace lo que quiere pero icestudio lo aglutina) o quiere proponer un vídeo de forma oficial.

Como llevo todo el desarrollo en paralelo por diferentes motivos y para no retrasaros el tenerlo disponible he hecho una subida masiva del código en un único PR, así si no os gusta lo podéis eliminar de un plumazo sin mayor dolor y con un único changelog resumen de todo ello, os lo adjunto en este mail en inglés y castellano en el que aunqeu a modo de resumen está más o menos indicado todo el trabajo realizado., también los podréis  ver en "Notas de la versión" he cambiado el formato y reajustado a los nuevos estilos.

Luego he añadido la basys que añadió Juan, esto no puedo probarlo ya me diréis si todo va bien y si no ya tocaremos, en osx falta un script report_xilinx.py en la toolchain de osx que tengo que revisar, no he podido probarlo en linux ni en windows mañana lo haré, en cualquier caso esto ya es un tema d apio y toolchain en icestudio se generan bien los ficheros y se le pasa a apio todo correctamente.

Estos días haré algunos cambios menores más relacionados con información de la versión, documentación, etc pero mientras la vamos rodando.

A nivel de estilos esta semana haré una revisión en la versión "clara" porque he hecho todo en oscuro y puede que en blanca haya cosas que no se adapten bien, pero no he querido retrasar que pudierais trabajar por esto que tiene poca importancia.

Agradecimientos a Demócrito que me ha estado echando una gran mano en poder dejaros esta versión mínimamente probada y evitar un caos inicial por bugs de todo tipo.

También recordaros que ya subí las versiones de opencx7 nativas para Windows y OSX por lo que al usar esta versión de icestudio en linu y osx no tenéis que usar wsdl ni nada similar.

A por ello!



ENGLISH

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:

  1. 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.

  2. 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.

  3. 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.

  4. Cleanup of unused or obsolete options. Menu options that had become obsolete have been removed.

  5. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  2. 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.

  1. 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.

  1. 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.

  2. Updated to the latest NW.js engine.

  3. 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.

  4. 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.

  1. 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.

  2. 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.

  1. Many other new improvements that had already been implemented, such as Verilog import, etc.

  2. 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.

Let’s go for it! 
changelog.es.txt
changelog.txt
Reply all
Reply to author
Forward
0 new messages