Los requisitos en experimentos de Big Science suelen demandar hardware específico y muy especializado, capaz de adquirir o generar datos a altas velocidades, además de muchas veces requerir operar a tiempo real. Una solución a estos problemas son las FPGAs, que permiten implementar aplicaciones muy especializadas con recursos lógicos, generando hardware específico para cada aplicación.
La familia de dispositivos RIO ofrece FPGAs con capacidades de entrada y salida en una gran variedad de factores de forma, lo que las convierte en una opción muy versátil. Otra de sus grandes ventajas es que pueden ser configuradas a través de LabVIEW FPGA, simplificando el desarrollo. Sin embargo, para interactuar con estas aplicaciones desde un host sigue siendo necesario conocer en profundidad la aplicación, ya que puede existir un número prácticamente infinito de diferentes implementaciones.
Para simplificar este problema, en 2015 se propusieron las IRIO Design Rules, un conjunto de normas a la hora de nombrar recursos y su división según su funcionalidad. Al establecer un conjunto de normas es posible crear una API más simplificada para interactuar con el host. Este es el caso de irioCore, una librería en C lanzada junto con las reglas de diseño. Sin embargo, se identificaron posibles problemas relacionados con la gestión de memoria y la seguridad. Además, su DevOps es muy básico, ofreciendo únicamente pruebas funcionales, las cuales requieren los dispositivos RIO, además de otro hardware adicional.
Para abordar estos problemas, se ha decidido reimplementar la librería en C++, aprovechando el paradigma OOP y otras características avanzadas propias de un lenguaje más moderno. También se añadirá soporte para la R Series, anteriormente no soportado. También se implementará un mecanismo de retrocompatibilidad en la forma de un C wrapper, para permitir que aplicaciones ya desarrolladas sigan funcionando con las nuevas ventajas.
Para mejorar la calidad del software y su desarrollo, se implementarán varias estrategias de DevOps, como la definición de diferentes pipelines, procesos para comprobar la calidad del código, así como la simplificación de futuras operaciones de mantenibilidad y expansión. Estas estrategias incluirán procesos CI/CD y pruebas automatizadas. Además, se utilizarán herramientas de análisis estático del código para obtener medidas detalladas de calidad del código. Con estos resultados, se comparará la biblioteca anterior con la nueva, buscando cuantificar las mejoras en términos de eficiencia, seguridad y mantenibilidad. De este modo, se garantizará que la nueva biblioteca no solo cumpla con los requisitos funcionales, sino que también ofrezca una mejora de calidad y facilite el trabajo al desarrollador.
ABSTRACT
Big Science experiments typically require highly specialized hardware capable of acquiring or generating data at high speeds and often need to operate in real-time. One solution to these challenges is FPGAs, which allow for the implementation of highly specialized applications with logical resources, creating hardware specific to each application.
The RIO family of devices offers FPGAs with input and output capabilities in a wide variety of form factors, making them a very versatile option. Another significant advantage is that they can be configured through LabVIEW FPGA, simplifying development. However, to interact with these applications from a host, it is still necessary to have an in-depth understanding of the application, as there can be virtually infinite different implementations.
To simplify this problem, the IRIO Design Rules were proposed in 2015, a set of norms for naming resources and dividing them according to their functionality. By establishing a set of rules, it is possible to create a more simplified API to interact with the host. This is the case of irioCore, a C library launched along with the design rules. However, potential issues related to memory management and security were identified. Moreover, its DevOps is very basic, offering only functional tests, requiring the actual RIO devices on top of additional hardware.
To address these issues, the decision has been made to reimplement the library in C++, taking advantage of the OOP paradigm and other advanced features of a more modern language. Support for the R Series, previously unsupported, will also be added. A mechanism for backward compatibility in the form of a C wrapper will be implemented to allow already developed applications to continue functioning with the new advantages.
To improve software quality and development, several DevOps strategies will be implemented, such as defining different pipelines and processes to check code quality, as well as simplifying future maintainability and expansion operations. These strategies will include CI/CD processes and automated tests. Additionally, static code analysis tools will be used to obtain detailed code quality metrics. With these results, the previous library will be compared with the new one, seeking to quantify improvements in terms of efficiency, security, and maintainability. In this way, it will be ensured that the new library not only meets functional requirements but also offers quality improvements and facilitates the developer’s work.
Los requisitos en experimentos de Big Science suelen demandar hardware específico y muy especializado, capaz de adquirir o generar datos a altas velocidades, además de muchas veces requerir operar a tiempo real. Una solución a estos problemas son las FPGAs, que permiten implementar aplicaciones muy especializadas con recursos lógicos, generando hardware específico para cada aplicación.
La familia de dispositivos RIO ofrece FPGAs con capacidades de entrada y salida en una gran variedad de factores de forma, lo que las convierte en una opción muy versátil. Otra de sus grandes ventajas es que pueden ser configuradas a través de LabVIEW FPGA, simplificando el desarrollo. Sin embargo, para interactuar con estas aplicaciones desde un host sigue siendo necesario conocer en profundidad la aplicación, ya que puede existir un número prácticamente infinito de diferentes implementaciones.
Para simplificar este problema, en 2015 se propusieron las IRIO Design Rules, un conjunto de normas a la hora de nombrar recursos y su división según su funcionalidad. Al establecer un conjunto de normas es posible crear una API más simplificada para interactuar con el host. Este es el caso de irioCore, una librería en C lanzada junto con las reglas de diseño. Sin embargo, se identificaron posibles problemas relacionados con la gestión de memoria y la seguridad. Además, su DevOps es muy básico, ofreciendo únicamente pruebas funcionales, las cuales requieren los dispositivos RIO, además de otro hardware adicional.
Para abordar estos problemas, se ha decidido reimplementar la librería en C++, aprovechando el paradigma OOP y otras características avanzadas propias de un lenguaje más moderno. También se añadirá soporte para la R Series, anteriormente no soportado. También se implementará un mecanismo de retrocompatibilidad en la forma de un C wrapper, para permitir que aplicaciones ya desarrolladas sigan funcionando con las nuevas ventajas.
Para mejorar la calidad del software y su desarrollo, se implementarán varias estrategias de DevOps, como la definición de diferentes pipelines, procesos para comprobar la calidad del código, así como la simplificación de futuras operaciones de mantenibilidad y expansión. Estas estrategias incluirán procesos CI/CD y pruebas automatizadas. Además, se utilizarán herramientas de análisis estático del código para obtener medidas detalladas de calidad del código. Con estos resultados, se comparará la biblioteca anterior con la nueva, buscando cuantificar las mejoras en términos de eficiencia, seguridad y mantenibilidad. De este modo, se garantizará que la nueva biblioteca no solo cumpla con los requisitos funcionales, sino que también ofrezca una mejora de calidad y facilite el trabajo al desarrollador.
ABSTRACT
Big Science experiments typically require highly specialized hardware capable of acquiring or generating data at high speeds and often need to operate in real-time. One solution to these challenges is FPGAs, which allow for the implementation of highly specialized applications with logical resources, creating hardware specific to each application.
The RIO family of devices offers FPGAs with input and output capabilities in a wide variety of form factors, making them a very versatile option. Another significant advantage is that they can be configured through LabVIEW FPGA, simplifying development. However, to interact with these applications from a host, it is still necessary to have an in-depth understanding of the application, as there can be virtually infinite different implementations.
To simplify this problem, the IRIO Design Rules were proposed in 2015, a set of norms for naming resources and dividing them according to their functionality. By establishing a set of rules, it is possible to create a more simplified API to interact with the host. This is the case of irioCore, a C library launched along with the design rules. However, potential issues related to memory management and security were identified. Moreover, its DevOps is very basic, offering only functional tests, requiring the actual RIO devices on top of additional hardware.
To address these issues, the decision has been made to reimplement the library in C++, taking advantage of the OOP paradigm and other advanced features of a more modern language. Support for the R Series, previously unsupported, will also be added. A mechanism for backward compatibility in the form of a C wrapper will be implemented to allow already developed applications to continue functioning with the new advantages.
To improve software quality and development, several DevOps strategies will be implemented, such as defining different pipelines and processes to check code quality, as well as simplifying future maintainability and expansion operations. These strategies will include CI/CD processes and automated tests. Additionally, static code analysis tools will be used to obtain detailed code quality metrics. With these results, the previous library will be compared with the new one, seeking to quantify improvements in terms of efficiency, security, and maintainability. In this way, it will be ensured that the new library not only meets functional requirements but also offers quality improvements and facilitates the developer’s work. Read More