Kit de herramientas para electrónica y recursos de aprendizaje
Hace tiempo inicié un proyecto para crear una distribución GNU/Linux con algunas herramientas de electrónica que usaba frecuentemente. Así no tendría que estar instalando una a una. Estuve reflexionando sobre si usar una distro como base o usar directamente LFS para hacerla desde cero. Finalmente me decidí y comencé con el proyecto, reuniendo un buen pack de herramientas.
Por falta de tiempo, como tantos otros proyectos, finalmente quedaría abandonado. Ahora me he decidido a escribir este artículo, que me ocupa menos tiempo, con algunas de las herramientas que estaba reuniendo para esa distro y, también, algunos consejos para iniciarte en esta disciplina.
El día 14 de junio de 2018 comencé el proyecto de distribución GNU/Linux para electrónicos. eLinux, Ljnux, eLectrux, eTux o Electrux eran algunos de los nombres elegidos para su «bautizo». Unos meses después, por la carga de trabajo, lo dejaría en standby para continuar cuando contase con tiempo libre suficiente, pero eso no ha sucedido… Al menos podrás conocerlas, si no las conocías ya…
ÍNDICE:
¿Por qué es importante este kit de software de electrónica?
La industria de la electrónica está muy de actualidad. Es una de las industrias con más futuro y más importantes. Solo tienes que echar un vistazo a tu alrededor para ver que estás rodeado de electrónica: tu PC, el dispositivo móvil con el que estás leyendo este artículo, el router que te conecta con Internet, tu TV, tu vehículo, o la cafetera con la que te haces el café por la mañana…
Pero este sector ha cambiado mucho, y quizás aquellos gigantes de la industria estén perdiendo algo de fuerza, permitiendo que tú pudieras ser más protagonista en los futuros diseños. Ya no son imprescindibles para crear nuevos prototipos, prueba de ello es la floreciente comunidad maker, o por algunas pequeñas startups que sorprenden con innovaciones capaces de revolucionar el sector.
Ese cambio en el sector no solo se debe a esa comunidad, también están ocurriendo algunos sucesos internos muy interesantes. Desde el contagio de la filosofía del código abierto en el sector del hardware, hasta los problemas de la fabricación de chips, las dudas sobre la vigencia de la Ley de Moore, etc. Quizás por eso necesite abrirse para que entre aire fresco…
Todos eso se ha dejado notar con movimientos como:
- La importancia de los FPGA para acelerar tareas específicas, motivo que ha movido la compra de Xilinx por AMD o de Altera por Intel.
- El interés creciente por los DSA (Domain Specific Accelerator), para diseñar unidades a medida para acelerar las aplicaciones específicas para los que se van a usar. La posibilidad de personalizar el procesador que aporta RISC-V también está dando lugar a interesantes desarrollos de aceleradores usando esta ISA.
- La vita necesidad de eficiencia energética, especialmente en los centros de datos, con la miras puestas en los núcleos ARM. Prueba de este interés es la adquisición de Annapurna Labs por Amazon para sus Graviton.
- La importancia de arquitecturas abiertas, como RISC-V, por las oportunidades tan extraordinarias que ofrecen a todos los que quieren desarrollar una microarquitectura sin pagar regalías, reduciendo el riesgo e inversión, y permitiendo un mayor despliegue de la innovación sin tantos miedos.
- ARM y RISC-V, tendrán un protagonismo especialmente importante. Está relacionado con los techos de fabricación, ya que los núcleos compactos (con menor superficie) pueden paliar los problemas de yield en los manycore… RISC-V, además, al ser un conjunto mínimo de instrucciones con extensiones que se pueden ir agregando de forma modular, sin necesidad de complejos núcleos como los x86 y su enorme set o su retrocompatibilidad.
- Acelerar los tiempos de comercialización a través de la colaboración y reutilización de los núcleos IP de código abierto permitirán dar soluciones más inmediatas y reducir gastos de desarrollo. También permitirá a las pequeñas empresas lanzar antes sus diseños al mercado. Nuevamente, RISC-V y los proyectos de código abierto vuelve a ser clave aquí.
Si te fijas en la mayoría de los puntos, he referenciado a RISC-V, y no es casualidad. Como ya he comentado en otras ocasiones, al igual que Linux ha revolucionado la informática, RISC-V será el «Linux» del hardwarre. El silicio de código abierto es el futuro… ¿Quieres ser tú el próximo Linus Torvalds del silicio?
¿Cómo aprender?
Si te interesa aprender sobre electrónica, aquí te dejo algunos buenos recursos para comenzar:
- Curso de cero a ASIC de Matthew Venn: es un fantástico curso si quieres aprender a diseñar tus propios chips desde cero. En él aprenderás a diseñar y fabricar tu propio chip digital usando el kit de desarrollo de código abierto de Google y Skywater, así como algunas herramientas de código abierto de Efabless.
- Cursos de la Linux Foundation: sobre introducción a RISC-V y construcción de un núcleo RISC-V. Dos cursos vitales para aprender sobre la ISA y cómo construir una CPU basada en ella.
- Cursos y recursos MKElectrónica: una buena base para comenzar, con cursos en castellano sobre electrónica básica, microcontroladores PIC, robótica y Arduino.
- Laboratorio de Arquitectura de Ordenadores RISC-V: Juan González también ha hecho un fantástico laboratorio práctico, y en castellano, sobre RISC-V si quieres practicar.
¿Qué es PDK?
Antes de comenzar con el listado de herramientas, me gustaría introducir el concepto PDK (Process Design Kit), es decir, el conjunto de ficheros que se emplean en el diseño de los circuitos en el sector de los semiconductores por las herramientas de diseño usadas.
Un PDK puede ser adaptado según las necesidades de diseño de cada desarrollador de circuitos. Y se emplea tanto para diseñar, como para simular, editar y verificar los diseños antes de entregar el diseño a la fundición o fábrica de circuitos integrados.
Los datos del PDK son específicos para un nodo o proceso de fabricación de la foundry elegida para la fabricación del chip y se eligen al comienzo del proceso de diseño del circuito.
Un PDK típico puede contener:
- Bibliotecas de dispositivos primitivos (símbolos, parámetros, PCells).
- Verificación (reglas de comprobación de diseño, layout vs schematic, verificaciones físicas, extracción física).
- Datos sobre la tecnología (capas, nombres de capas, propósito, colores, rellenos, atributos de visualización, limitaciones del proceso, reglas eléctricas).
- Ficheros de reglas (LEF o Library Exchange Format como especificación para el layout físico de un CI en un formato ASCII, formatos de reglas dependientes de la herramienta).
- Modelos de simulación de dispositivos primitivos (SPICE o derivados para transistores, condensadores, resistencias, inductores,…).
- Manual de reglas de diseño (documentación sencilla para los requisitos del proceso).
- Otros: un PDK también puede incluir bibliotecas de células estándar de la foundry, de otro proveedor de bibliotecas, o desarrolladas internamente como las que usan algunos grandes diseñadores (formatos LEF/DEF, símbolos, .lib, y datos de diseño en GDSII).
Listado de herramientas y recursos para electrónica
Aquí puedes ver el listado de las herramientas para electrónica:
- Electrónica digital básica:
- Diseño y Simulación:
- SimulIDE: es un simple simulador de electrónica en tiempo real en el que crear tus propios circuitos sencillos y simular su funcionamiento. Tienes multitud de componentes en su biblioteca, como interruptores, generador de señal de reloj, GND, resistencias, transistores, LEDs, puertas lógicas, microcontroladores, etc. Ideal para probar tus circuitos antes de implementarlos físicamente.
- qucs-spice: otro simulador de circuitos electrónicos como alternativa a SimulIDE.
- Quite Universal Circuit Simulator: una herramienta de diseño automatizado para dispositivos electrónicos. Fácil de usar, con entorno gráfico, rápido, y capaz de simular tus diseños, generando multitud de gráficas y datos de información.
- tkgate: simulador de circuitos digitales con un sencillo editor gráfico basado en Tlc/Tk. Soporta un buen número de elementos de circuito.
- Gnucap: es un simulador de circuitos electrónicos de propósito general. Permite el análisis no lineal y de régimen transitorio, análisis de Fourier, y para CA. En este caso, es para su uso desde el CLI.
- Ngspice: simulador de circuitos eléctricos y electrónicos. Puede usarse para componentes para circuitos analógicos como para digitales, como transistores, elementos pasivos, líneas de transmisión, etc.
- gpsim: es un simulador con todas las funciones para microcontroladores Microchip PIC. También podrás usar el compilador sdcc para PIC.
- gLogic: un simulador de circuitos lógicos. Permite la simulación de puertas lógicas básicas y otros circuitos como flip-flops.
- Logisim: es una herramienta educativa para diseñar y simular circuitos lógicos digitales. Tiene una interfaz sencilla con la que crear los circuitos, desde los más elementales, hasta otros complejos como una CPU.
- QElectroTech: software basado en Qt simple para crear diagramas de circuitos eléctricos y electrónicos. Usa XML para los elementos y diagramas. Es una herramienta muy profesional y tiene gran cantidad de símbolos.
- Ksimus: otro simulador de circuitos digitales y analógicos.
- Arduino y microcontroladores:
- Arduino IDE: es un entorno de desarrollo integrado para crear tus sketchs y grabarlos en la memoria de las placas Arduino oficiales y otras compatibles.
- Ardublock: una forma de programar de forma gráfica mediante bloques. Una gran alternativa para que los niños comiencen a aprender a programar con Arduino.
- Fritzing: es un software libre para el diseño electrónico, ayudando a los diseñadores a crear sus propios esquemas y prototipos. Incluye multitud de elementos en su biblioteca, también placas de Arduino.
- S4A (Scratch for Arduino): es una modificación de Scratch para programar fácilmente en placas Arduino mediante bloques.
- Pinfigurator: es una herramienta muy práctica para localizar MCUs. Puedes buscar los microcontroladores que necesitas y poder ver la configuración de los pines.
- Análisis de señales:
- Gwave: visor de formas de onda para la salida de circuitos analógicos, como si fuese un osciloscopio.
- PicoScope: otro software para visualizar ondas de los circuitos y analizarlos como un osciloscopio. Además, también tienen controladores para Linux de los productos de Pico Technology (*Linux cuenta con otros controladores built-in en el kernel para otros osciloscopios USB).
- xoscope: otro osciloscopio digital para Linux, analizando señales de onda de fuentes como ALSA a través de la tarjeta de sonido (por lo que tiene sus limitaciones), ESD y COMEDI.
- GTKWave: otro práctico software basado en GTK para visualizar ondas. Soporta LXT, LXT2, VZT, FST y GHW, así como archivos estándar Verilog VCD / EVCD.
- Tauno Serial Plotter: trazador serie para placas Arduino y otros dispositivos embebidos.
- Girinoscope: un simple programa que sirve como osciloscopio para las señales de Arduino.
- LabPlot: otros visualizador de señales analógicas creado por KDE.
- Diseño y Simulación:
- Herramientas avanzadas:
- ASIC, SoC,…:
- Kit de eFabless y Skywater: está compuesto de herramientas muy interesantes para el diseño de ASICs y SoCs, como las de layout VLSI, esquema y captura, EDA, etc.
- FuseSoC y Edalize: además de la CPU RISC-V SERV, Olof Kindgren también tiene interesantes herramientas como esta para la construcción y administración de paquetes para HDL, o la biblioteca Python Edalize para interactuar con entornos EDA.
- EDA, layout, captura esquemática, netlisting, layout…:
- KiCAD: es un fantástico software EDA para edición y captura esquemática de tu circuito, PCB layout, y visualizador 3D.
- SnapEDA: es la primera biblioteca de diseño electrónico de Internet. Con multitud de elementos para facilitar la vida de los ingenieros y exportables a las principales proyectos como KiCAD.
- FreeCAD: te puede permitir realizar diseños en 2D y 3D de tu placa que pueden ser útiles para la construcción.
- OpenLANE: es un software que provee de un flujo automatizado de RTL a GDSII basado en varios componentes, incluidos OpenROAD, Yosys, Magic, Netgen, Fault, CVC, SPEF-Extractor, CU-GR, Klayout y una serie de scripts personalizados para la exploración y optimización del diseño. El flujo realiza todos los pasos de implementación de ASIC desde RTL hasta GDSII.
- GDS3D Viewer: un visualizador de archivos GDSII en 3D para poder navegar a través de las capas de sustrato, pozos semiconductores, capas metálicas, etc.
- EasyEDA: un interesante entorno de desarrollo integrado EDA para diseñar tus circuitos y con una versión gratuita. Podrás disponer de herramientas para captura esquemática, diseño del PCB, bibliotecas de diseño, etc.
- LibrePCB: otro EDA gratuito y multiplataforma especializado para placas de circuito impreso.
- KLayout: visor, editor, generador y analizador de máscaras de layout para circuitos integrados en este caso (GDSII).
- Yosys: una suite de código abierto para síntesis.
- DipTrace: otra herramienta EDA/CAD disponible para Linux, aunque no es de código abierto. Existe una versión freeware.
- LASI: está disponible para Windows, pero puedes usar WINE para usarlo en Linux. Es una herramienta de diseño y maquetación para circuitos integrados, discretos y PCBs. Es gratis y para uso académico. Incluye editor de dibujo y varias utilidades (enrutador, compilador para netlist, conversores para formatos GDS, CIF y DXF,…).
- PCBmodE: un software de diseño de placas de circuito impreso escrito en Python y que permite el uso de formas arbitrarias para cualquier elemento del tablero, lo que aporta mayor libertad frente a otras herramientas.
- xschem: herramienta de captura esquemática y netlisting para la creación de representaciones esquemáticas de circuitos. Se puede generar una netlist VHDL/Verilog/Spice a partir del esquema dibujado, lo que permite la simulación.
- Caneda: es un paquete EDA de código abierto y centrado en ofrecer un entorno de desarrollo simple de diseño completo (captura esquemática, simulación y layout del PCB. También permite simular otro tipo de circuitos para el análisis CA y CC, parámetro S, balance armónico, etc.
- gEDA: es un conjunto EDA para el diseño de circuitos PCB, captura esquemática, simulación, netlisting en diferentes formatos, BOM (Bill of Materials), creación de prototipos y producción.
- LibrePCB: otro entorno EDA para el diseño de placas de circuito impreso. Incluye un editor, captura esquemática, bibliotecas, etc. Todo lo que necesitas con una interfaz sencilla e intuitiva.
- PCB-rnd: simple y robusta aplicación para diseño compacto de PCBs. Es muy popular entre profesionales y académicos, además de ligera. Compatible con un gran número de distros GNU/Linux y BSD.
- GNU Electric: diseño de reglas y checking, simulación, generación, routing, compilación VHDL, LVS, etc. Una herramienta muy completa para el diseño de tus circuitos. Soporta formatos E/S CIF, E/S GDS, E/S EDIF, E/S DXF, entrada SUE, E/S VHDL, salida Verilog, Xilinx Vivado, EAGLE, PADS, salida ECAD, PostScript, HPGL, y salida PNG.
- Oregano: aplicación gráfica de captura esquemática y simulación de circuitos electrónicos. La simulación se realiza por motores como Ngspice, Gnucap o SPICE. Puede ser una buena alternativa a KTechlab o gEDA.
- XCircuit: sirve para dibujar diagramas esquemáticos de circuitos eléctricos y la producción de netlists a partir de la captura esquemática. Los componentes de su biblioteca son editables, es flexible y permite salida tanto en SPICE o en PostScript.
- Fizzim: es una herramienta de diseño FSM (Finite State Machine) o máquina de estado finito. De esa forma se puede estudiar el comportamiento de un circuito digital según las entradas y cómo cambian respecto al tiempo.
- Magic: herramienta para layout VSLI escrito en los 80s por John Ousterhout en Berkeley. Es ligera, y está muy bien mantenida.
- SmartSim: EDA muy rico en funciones para diseño de circuitos digitales lógicos y simulación. Los diseños los permite exportar a varios formatos de archivos de salida.
- Toped: editor de layout con soporte GDS, OASIS y CIF formats. Es de código abierto y está bajo licencia GPL.
- TCE (TTA-based Co-design Environment): conjunto de herramientas para el diseño y programación de procesadores, desde programas de lenguaje de alto nivel hasta procesadores sintetizables RTL (backends compatibles con VHDL y Verilog) y binarios de programas paralelos. Los puntos de personalización del procesador incluyen los archivos de registro, las unidades de función, las operaciones admitidas y la red de interconexiones.
- Netgen: comparación de netlists en circuitos analógicos o de señal mixta.
- FGR: Fairly Good Router es una herramienta de código abierto para el enrutamiento para circuitos digitales y similar a las usadas en la industria.
- Qrouter: es una herramienta para generar capas metálicas y vías para conectar físicamente una lista de redes en una tecnología de fabricación VLSI. Se trata de un enrutador laberíntico, también conocido como enrutador «over-the-cell» o enrutador «sea-of-gates».
- IRISM: es un switch-level originalmente escrito por Stanford.
- EDA Play Ground: en realidad se trata de un entorno EDA implementado como web app y que podrás usar desde un navegador web si no quieres instalar nada de forma local.
- HDL:
- Icarus Verilog: otra herramienta de simulación y síntesis para Verilog. Funciona como un compilador para tu código de descripción de hardware.
- GHDL: es un simulador para el lenguaje VHDL. Permite compilar y ejecutar código VHDL directamente en tu PC. Soporta varias revisiones del estándar de este lenguaje, puede usar GNU GCC o LLVM y es muy rápido.
- Karuta: compilador para este lenguaje HLS, para el diseño de circuitos lógicos y especialmente orientado a FPGAs.
- FreeHDL: un simulador para VHDL, con visor gráfico, depurador a nivel de fuente, y compatibilidad con VHDL-93.
- Verilator: es una herramienta que convierte Verilog en un modelo de comportamiento en C++ o SystemC. No se trata de un simulador completo, sino simplemente un traductor. Es muy conocido en los entornos empresariales profesionales. Un simulador para lenguaje de programación Verilog, con un alto rendimiento, de código abierto y muy usado por académicos y la comunidad de código abierto. Empresas como Intel, AMD u Oracle han empleado este EDA.
- ChipVault es un programa de desarrollo de chips usando VHDL y Verilog. Muestra los diseños de forma jerárquica y permite una rápida navegación por el diseño y el lanzamiento del editor. Proporciona herramientas RTL, de síntesis, generación de bloques, etc.
- Alliance: completo set de herramientas CAD gratuitas y bibliotecas portables para el diseño VLSI. Incluye un compilador y simulador VHDL, herramientas de síntesis lógica y herramientas de colocación y encaminamiento automático. Se proporciona un conjunto completo de bibliotecas CMOS, incluyendo un generador de RAM, un generador de ROM y un compilador de rutas de datos.
- Simulación de CPU, emulación,…:
- emulsiV: simulador visual con una implementación mínima de una CPU basada en la ISA RISC-V con la que aprender los conceptos básicos de la arquitectura.
- TinyEMU: sencillo emulador de RISC-V para poder realizar pruebas, depuración, ver cómo se ejecutan las instrucciones ASM, el estado de la memoria, registros, etc.
- EduMIPS64: es un simulador de CPU MIPS de 64-bit. Permitirá visualizar la pipeline, ciclos, estado de los registros, datos, instrucciones, etc. Todo en una sencilla interfaz.
- GNUSim8085: simulador de la CPU Intel 8085, con capacidad para mostrar código ensamblador para cargar programas y analizar el comportamiento, estado de registros, flags, etc.
- SimulAVR: simulador para arquitectura AVR de Atmel (ahora Microchip).
- VisUAL: herramienta para el aprendizaje de lenguaje ensamblador ARM, y simulación visual del contenido de los registros, memoria, etc.
- penguinTrace: te permite ver cómo se ejecuta el software a nivel de hardware, mostrando cómo el código fuente se asigna y permitiendo recorrer el programa.
- RISC-V Tools: repertorio de herramientas, como el simulador de la ISA RISC-V Spike, herramientas de testing, etc.
- Programación FPGA, MCU y EEPROM:
- Icestudio: editor visual para la programación de FPGAs. Una alternativa al uso de código de descripción de hardware.
- BOSSA: programador de microcontroladores de la familia Atmel SAM (basados en ARM).
- Ponyprog: es una herramienta para programar microcontroladores y también memorias tipo EEPROM. Soporta una gran cantidad de chips, entre ellos muchos AVR y PIC.
- MCU 8051 IDE: un IDE gráfico para los microcontroladores basados en el MCS-8051. Soporta C y ASM, así como un buen repertorio de modelos de MCU.
- µHOPE: para la programación de microcontroladores Atmel ATmega32.
- KTechlab: es un IDE similar al de Arduino, pero más genérico, para el diseño de circuitos y microcontroladores PIC. También permite simular diferentes componentes, depuración de MCU PIC, etc.
- Otros:
- LIKWID: pack de herramientas para Linux con los que comprender mejor el rendimiento de las arquitecturas (x86, ARM, Power) y poder desarrollar apps con mejor rendimiento para ellas, lo que puede ayudar en tus desarrollos iniciales.
- Gerbv: es un visor de archivos Gerber (RS-274X) para PCB, incluso puedes cargar varios archivos superpuestos, hacer mediciones, etc. También permite visualizar para archivos de de perforación Excellon y de ubicación (pick-place).
- GerbView: para visualizar y convertir archivos Gerber, ODB++, PDF, Excellon, DXF, DWF, RS-274X, TIFF, SVG y más.
- gds2pov: es un práctico programa capaz de crear imágenes 3D a partir de un layout de un circuito. Es decir, la entrada es un archivo layout GDSII y la salida una descripción de escena POV-Ray.
- ASIC, SoC,…:
También te animo a visitar este otro link si te interesa el tema de las herramientas EDA de código abierto…
Si conoces alguna herramienta más, puedes dejar tus comentarios…
¡Enhorabuena por tu interés en el fascinante mundo de la electrónica y el diseño de placas de circuito! Dentro de este emocionante viaje, necesitarás aliados confiables para transformar tus visiones en placas de circuito tangibles.