2 puntos por GN⁺ 2024-02-06 | 1 comentarios | Compartir por WhatsApp
  • atopile es un lenguaje y toolchain open source para describir circuitos electrónicos con código, y busca tratar la expresión de requisitos de diseño de PCB, la reutilización de diseños y la generación de entregables como si fuera desarrollo de software
  • El punto de partida fue la idea de que el diseño de hardware se sentía como hacer software solo con ensamblador, y es un intento de aplicar también al diseño de circuitos el flujo de compilación, pruebas y merge automáticos al estilo GitHub
  • Su lenguaje propio, ato, permite dividir circuitos en módulos, componentes e interfaces, y anidarlos o conectarlos entre sí; hay un ejemplo de un módulo Blinky que combina un RP2040, un LED, un LDO de 3.3 V y un conector USB-C
  • El compilador genera una netlist que representa las conexiones del circuito y selecciona componentes genéricos; a futuro quieren reforzar la reutilización de layout, las relaciones matemáticas entre valores y una definición de circuitos similar a los traits de Rust
  • Actualmente el objetivo son los diseños de PCB de complejidad baja a media, no el diseño de chips; el núcleo se publica bajo Apache 2.0 y planean monetizar vendiendo funciones enterprise

Un intento de llevar el diseño de hardware a un flujo de trabajo basado en código

  • atopile es un lenguaje open source y un toolchain para describir circuitos electrónicos con código
  • Se puede ver un recorrido rápido en la demo rápida
  • El compilador está publicado en el repositorio de GitHub, y la documentación se puede consultar en getting started
  • Hay material que cubre con más detalle el proceso de diseño de un módulo ESP32 en el video deep dive
  • Los fundadores, en su trabajo anterior, tenían que dibujar y exportar directamente placas de circuito electrónico, y al ver el flujo de automatización basado en GitHub de un amigo ingeniero de software, se preguntaron si podían aplicar el mismo enfoque al hardware

El lenguaje ato y el resultado de la compilación

  • El lenguaje ato permite descomponer circuitos en módulos, componentes e interfaces, y anidar o conectar estos bloques entre sí
  • El ejemplo con RP2040 toma los siguientes elementos y los agrupa en un módulo Blinky
    • RP2040Kit
    • LEDIndicatorBlue
    • LDOReg3V3
    • USBCConn
    • alimentación USB-C → entrada del regulador de voltaje → alimentación del microcontrolador → conexión entre GPIO13 y la entrada del LED
    • el valor de la resistencia del LED se especifica como 100ohm +/- 10%
  • El compilador genera una netlist que describe las conexiones del circuito y también realiza la selección de componentes genéricos

Alcance actual y dirección del desarrollo

  • Los próximos focos de desarrollo son la reutilización de layout, las relaciones matemáticas entre valores y funciones para definir circuitos de una forma parecida a los traits de Rust
  • Actualmente atopile apunta a todo tipo de diseños de placas de circuito impreso (PCB) de complejidad baja a media
    • planean aumentar gradualmente la complejidad de los circuitos que el compilador puede manejar
    • no es para diseño de chips, sino un lenguaje exclusivo para PCB
  • El núcleo de atopile es open source bajo Apache 2.0
  • La monetización está planeada de forma similar a GitLab, vendiendo funciones orientadas a empresas

1 comentarios

 
GN⁺ 2024-02-06
Opiniones de Hacker News
  • Opinión sobre expresar circuitos como código

    • Esto no es expresar circuitos como código, sino expresarlos como texto. Representa una netlist de forma no estándar y añade metadatos, lo cual es útil, pero no especifica características reales de partición ni tolerancias.
    • Sería deseable definir funciones generadoras de módulos para crear módulos divisores con base en la proporción deseada, la tolerancia de salida y la corriente máxima de salida. Además, también es importante agregar posibles componentes al BOM.
    • Este enfoque reduce el trabajo repetitivo del diseño de circuitos y permite revisar archivos de circuitos como si fueran revisiones de código.
  • Opinión sobre las herramientas de componentes electrónicos

    • El estado de las herramientas para componentes electrónicos es muy malo, y el estado actual de la técnica es que la mayoría de los diseñadores copian de PDFs los capacitores, cristales, puertos de programación, etc., necesarios al agregar un regulador o un microcontrolador al esquemático.
    • Es muy difícil que varias personas trabajen en el mismo diseño y luego fusionen los cambios.
    • Si se avanza hacia un mundo modular, el diseño será más fácil, y eso es una perspectiva muy interesante.
  • Opinión sobre compartir módulos

    • Compartir y convertir en biblioteca módulos como divisores de voltaje es una buena idea.
    • Si se modularizan las restricciones de layout, se podría generar automáticamente el layout de todo el proyecto, lo que permitiría un diseño eficiente.
  • Opinión sobre un nuevo enfoque para el diseño de PCB

    • Sentar las bases de riqueza de datos e interoperabilidad para un nuevo enfoque del diseño de PCB es una idea genial.
    • Como los esquemáticos eléctricos son más familiares para los ingenieros eléctricos, se necesita la capacidad de alternar entre texto y esquemáticos visuales.
  • Sugerencia de usar Verilog

    • Se propone usar Verilog o SystemVerilog para definir la información de los componentes como parámetros y, a partir de eso, generar el esquemático.
    • También sería posible la simulación analógica usando Verilog-AMS.
  • Opinión sobre la diferencia entre los programas EDA y el CAD mecánico

    • Sorprende la falta de "relaciones" en los programas EDA en comparación con el CAD mecánico.
    • Herramientas como KiCad ofrecen "netclasses" para establecer manualmente el ancho de las pistas, pero se necesitan herramientas más eficientes.
  • Opinión sobre la sintaxis de importación de código

    • import Y from X debería cambiarse por algo como import X.Y o from X import Y para que se puedan usar herramientas de autocompletado.
  • BFH - Health Without Borders

    • BFH, es decir, BorderFreeHealth, apoya el acceso universal a productos de salud eliminando barreras geográficas y ofreciendo envíos globales de diversos suministros médicos.
  • Entusiasmo por trabajos de automatización del hogar

    • Hace mucho trabajo de automatización del hogar y expresa frustración por pasar mucho tiempo usando protoboards o diseñando módulos de relé con IO personalizado.
    • Pregunta si hay alguna forma de contribuir al proyecto.