2 pontos por GN⁺ 2024-02-06 | 1 comentários | Compartilhar no WhatsApp
  • atopile é uma linguagem e toolchain open source para descrever circuitos eletrônicos como código, buscando tratar a expressão de requisitos de projetos de PCB, a reutilização de designs e a geração de artefatos como no desenvolvimento de software
  • O ponto de partida foi a percepção de que projetar hardware parecia criar software usando apenas assembly; é uma tentativa de aplicar também ao design de circuitos o fluxo de builds, testes e merges automáticos ao estilo GitHub
  • Sua linguagem própria, ato, permite dividir circuitos em módulos, componentes e interfaces, além de aninhá-los e conectá-los; há um exemplo de módulo Blinky que combina RP2040, LED, LDO de 3,3 V e conector USB-C
  • O compilador cria uma netlist que representa as conexões do circuito e seleciona componentes genéricos; no futuro, pretende reforçar a reutilização de layout, relações matemáticas entre valores e definições de circuitos semelhantes a traits do Rust
  • O objetivo atual é o projeto de PCBs de baixa a média complexidade, não o design de chips; o core é publicado sob Apache 2.0, e a monetização planejada é vender recursos empresariais

Uma tentativa de levar o design de hardware para um workflow de código

  • atopile é uma linguagem e uma toolchain open source para descrever circuitos eletrônicos em código
  • O fluxo rápido pode ser visto na demo rápida
  • O compilador está disponível no repositório do GitHub, e a documentação pode ser consultada em getting started
  • Um material que aborda em mais detalhes o processo de design de um módulo ESP32 está disponível em um vídeo deep dive
  • Os fundadores precisavam desenhar e exportar placas de circuito eletrônico manualmente em seus empregos anteriores e, ao observar o workflow automatizado baseado no GitHub de um amigo engenheiro de software, passaram a considerar se a mesma abordagem poderia ser aplicada ao hardware

A linguagem ato e o resultado da compilação

  • A linguagem ato permite decompor circuitos em módulos, componentes e interfaces, e aninhar esses blocos ou conectá-los entre si
  • O exemplo com RP2040 reúne os seguintes elementos em um módulo Blinky
    • RP2040Kit
    • LEDIndicatorBlue
    • LDOReg3V3
    • USBCConn
    • alimentação USB-C → entrada do regulador de tensão → alimentação do microcontrolador → conexão entre GPIO13 e entrada do LED
    • O valor do resistor do LED é especificado como 100ohm +/- 10%
  • O compilador cria uma netlist que descreve as conexões do circuito e também realiza a seleção de componentes genéricos

Escopo atual e direção de desenvolvimento

  • O próximo foco de desenvolvimento é reutilização de layout, relações matemáticas entre valores e recursos para definir circuitos de forma parecida com traits do Rust
  • Atualmente, atopile tem como alvo o design de todos os tipos de placas de circuito impresso (PCB) de baixa a média complexidade
    • A complexidade dos circuitos que o compilador consegue processar será aumentada gradualmente
    • Não é uma linguagem para design de chips, mas uma linguagem dedicada a PCBs
  • O core do atopile foi tornado open source sob Apache 2.0
  • A monetização está planejada como a venda de recursos voltados a empresas, de forma semelhante ao GitLab

1 comentários

 
GN⁺ 2024-02-06
Opiniões do Hacker News
  • Opinião sobre representar circuitos em código

    • Isso não é representar circuitos em código, mas em texto. Trata-se de representar uma netlist de forma não padronizada e adicionar metadados, o que é útil, mas características reais de separação ou tolerâncias não são especificadas.
    • É desejável definir funções geradoras de módulos para criar um módulo divisor com base na proporção desejada, tolerância de saída e corrente máxima de saída. Além disso, também é importante adicionar os componentes possíveis à BOM.
    • Essa abordagem reduz o trabalho repetitivo no projeto de circuitos e permite revisar arquivos de circuito como em uma revisão de código.
  • Opinião sobre ferramentas de componentes eletrônicos

    • O estado das ferramentas para componentes eletrônicos é muito ruim, e o estado atual da tecnologia é que a maioria dos projetistas copia de PDFs os capacitores, cristais, portas de programação etc. necessários ao adicionar reguladores ou microcontroladores ao esquemático.
    • É muito difícil para várias pessoas trabalharem no mesmo projeto e mesclarem alterações.
    • Se avançarmos para um mundo modularizado, o projeto ficará mais fácil, e essa é uma perspectiva muito interessante.
  • Opinião sobre compartilhamento de módulos

    • Compartilhar e transformar em biblioteca módulos como divisores de tensão é uma boa ideia.
    • Se as restrições de layout forem modularizadas, será possível gerar automaticamente o layout do projeto inteiro, o que permite um projeto mais eficiente.
  • Opinião sobre uma nova abordagem para projeto de PCB

    • Estabelecer a base de riqueza de dados e interoperabilidade para uma nova abordagem de projeto de PCB é uma ideia excelente.
    • Como esquemáticos elétricos são mais familiares para engenheiros eletricistas, é necessária a capacidade de alternar entre texto e esquemáticos visuais.
  • Sugestão de uso de Verilog

    • Sugere-se usar Verilog ou SystemVerilog para definir informações de componentes como parâmetros e, com isso, gerar o esquemático.
    • Também é possível fazer simulação analógica com Verilog-AMS.
  • Opinião sobre a diferença entre programas EDA e CAD mecânico

    • Há surpresa com a falta de "relações" nos programas EDA em comparação com CAD mecânico.
    • Ferramentas como KiCad oferecem netclasses para definir manualmente a largura das trilhas, mas são necessárias ferramentas mais eficientes.
  • Opinião sobre a sintaxe de importação de código

    • import Y from X deveria ser alterado para algo como import X.Y ou from X import Y, para que ferramentas de autocompletar possam ser usadas.
  • BFH - Saúde Sem Fronteiras

    • BFH, ou BorderFreeHealth, apoia o acesso universal a produtos de saúde, eliminando barreiras geográficas e oferecendo entrega global de diversos suprimentos médicos.
  • Entusiasmo por trabalhos de automação residencial

    • A pessoa faz muito trabalho de automação residencial e demonstra insatisfação com o tempo gasto usando protoboard ou projetando módulos de relé com IO personalizado.
    • Pergunta se existe alguma forma de contribuir com o projeto.