Diode.computer:AI 驱动的设计服务商(Design House)

描述

 Diode.computer 公司提供一套从设计到制造的全方位电子工程解决方案,旨在通过代码和人工智能技术,革新并加速传统的硬件开发流程。它本质上还是个 design house,但却把用到的大部分工具链都开源了,同时还提供了一个可以直接使用的模块电路库。

KiCAD

 

Diode.Computer 简介

这家 AI 驱动的设计公司刚从 Andreessen Horowitz 及 YC 获得了 1400 万美金的融资。

Diode.Computer 希望用代码和 AI 重塑硬件开发,告别缓慢低效的 EDA 时代。Diode.computer 的创立源于一个令人深思的矛盾:即使是能在台积电成功流片、包含了数十亿晶体管的复杂芯片都能一次点亮,但承载它的那块小小的 PCB 却可能因为漏连一根线或用错一个封装而失败。当今硬件创新的真正瓶颈并非摩尔定律,而是由传统EDA 软件造成的 “一个季度一块板” 的缓慢开发节奏。这种流程充满了孤立的设计、繁琐的文件导出和与工厂之间低效的邮件沟通,导致项目延期,并削弱了团队迭代创新的信心。

Diode.Computer 的解决方案是彻底重构整个硬件开发技术栈,使其对人类和机器都更加友好:

  • 以代码为核心: 摒弃了封闭的专有格式,采用开源、人类可读的 Pythonic 代码来定义电路。这不仅便于工程师审查,也使得大型语言模型(LLM)可以轻松理解、生成和优化设计。

  • 闪电般的验证速度: 强大的 Rust 核心能在毫秒级时间内完成整个设计的编译和验证,彻底改变了过去漫长的等待过程。

  • 为制造而生: 从设计之初就集成了来自具体工厂的、机器可读的制造约束,确保设计方案不仅优秀,而且能被高效、精准地生产出来,避免了后期因“可制造性问题”导致的返工。

看一下他们的已经完成的产品:

  • PI0004 - 集成 CAN 接口的 USB 3.0 集线器:

KiCAD
  • EL002 - STM32H747 飞行控制器

KiCAD
  • AM0001 - Jetson Orin 载板

KiCADDiode.Computer 的解决方案

Diode.computer 公司提供一套从设计到制造的全方位电子工程解决方案,旨在通过代码和人工智能技术,革新并加速传统的硬件开发流程。

在设计阶段,该公司实现了以代码驱动的硬件开发。他们自研了一款基于 Rust 语言的开源 PCB 编译器,能够将代码在毫秒级时间内编译成电路原理图。用户只需提供具体需求,其内置的智能模型便能在数小时内自动生成可供生产的完整设计。这套系统并非要取代现有的工具,而是与之兼容,所有设计成果都可以无缝导出至 KiCad、Altium 和 Cadence 等行业主流的 EDA 软件中。

在审核环节,diode.computer 巧妙地结合了机器智能与人类专家的双重优势。由于电路原理图由代码生成,大型语言模型(LLM)可以直接分析代码,深度搜寻潜在的错误和缺陷,并自动与元器件的数据手册进行交叉比对以确保准确性。在此基础上,每一份设计稿还会由经验丰富的电气工程师进行最终的人工验证,全方位确保设计的安全性、合规性以及实际生产的可行性。

最后,在生产制造阶段,该公司也实现了高度的自动化和透明化。其BOM(物料清单)编译器能够自动为设计中的每一个元器件匹配来自全球分销商和制造商的产品,并提供实时的价格与库存信息。用户因此可以为自己的定制设计即时获取精准的组装和元件成本报价。此外,其原生的可制造性设计(DFM)引擎会自动优化电路板的布线和布局,以保证信号完整性和散热性能,完成优化后便直接将生产任务推送到其合作的工厂网络中,极大地简化了从设计到成品的转化过程。

开源的工具链

Diode.computer 尝试用代码(starlark-rust)替代传统的可视化原理图,然后直接生成网表、PCB。工具链仓库在这里:

https://github.com/diodeinc/pcb

这么做最大的好处是可以用参数化的方式描述电路,通过配置的方式实现同类型电路的不同输出。比如下图中的 LDO,可以通过改变 R1 和 R2 来调整 Vout 输出。如果使用传统的模块电路方式,每种不一样的电压输出都需要有一个单独的模块(或者先做个通用的,然后再进行手动编辑),非常不变。如果使用可配置的代码方式,则没有这个问题,非常灵活。KiCAD我们看下 diode 的工具是怎么来描述原理图的:这是一个器件
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Component(    name = "U1",    type = "microcontroller",    footprint = "QFP-48",    pin_defs = {        "VDD""1",        "GND""2",        "PA0""3",        # ... more pins    },    pins = {        "VDD": vcc_3v3,        "GND": gnd,        "PA0": led_control,    })
网络的描述:
  •  
  •  
  •  
  •  
  •  
# Create named netspower_5v = Net("5V")ground = Net("GND")data_bus = Net("SPI_MOSI")# Nets are type-safe and tracked across the design

接口的描述:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# Define a power interfacePowerInterface = interface(    vcc = Net,    gnd = Net,)# Define an SPI interfaceSPIInterface = interface(    clk = Net,    mosi = Net,    miso = Net,    cs = Net,)

一个可复用的层次化设计:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# power_supply.zen# Configuration parametersinput_voltage = config("input_voltage"float, default = 12.0)output_voltage = config("output_voltage"float, default = 3.3)# IO interfacesinput = io("input", Power)output = io("output", Power)# Module implementationRegulator(    name = "REG1",    vin = input.vcc,    vout = output.vcc,    gnd = input.gnd,    # ... component configuration)# main.zenPowerSupply = Module("power_supply.zen")PowerSupply(    name = "PSU1",    input_voltage = 9.0,    output_voltage = 5.0,    input = system_power_in,    output = regulated_power,)

通过 config() 函数定义参数并调整模块:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# sensor_module.zen# Required configurationi2c_address = config("i2c_address", int)# Optional configuration with defaultssample_rate = config("sample_rate", int, default = 100)gain = config("gain", float, default = 1.0)# Configuration with type conversionthreshold = config("threshold", float, convert = lambda x: float(x))# Enum configurationPackage = enum("QFN""TQFP""BGA")package_type = config("package", Package, convert = Package)

将这些描述保存成 .zen 文件,然后直接用命令行(CLI)就可以直接生成 KiCad 格式的 PCB:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
pcb layout [OPTIONS] [PATHS...]Options:  -s, --select      Always prompt to choose a layout even when only one exists      --no-open     Skip opening the layout file after generation  -h, --help        Show help informationArguments:  [PATHS...]        One or more .zen files to process for layout generation                    When omitted, all .zen files in the current directory are processedExamples:  pcb layout                   # Generate layouts for all .zen files  pcb layout board.zen        # Generate layout for specific file  pcb layout --no-open         # Generate without opening in KiCad  pcb layout -s                # Force layout selection prompt

一个典型的 Zener 项目的结构是这个样子的:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
my-pcb-project/├── main.zen              # Main board definition├── components/            # Reusable components│   ├── mcu.zen│   ├── power.zen│   └── connectors.zen├── modules/               # Reusable modules│   ├── usb_interface.zen│   └── power_supply.zen├── libs/                  # External libraries│   └── stdlib.zen├── eda/                   # KiCad symbols and footprints│   ├── symbols/│   └── footprints/└── layout/                # Generated layouts    └── main.kicad_pcb

开源的模块电路库

Diode.computer 除了提供工具链之外,还提供了一系列开盒即用的模块电路,直接复制、黏贴到 KiCad 里即可直接使用。

尝试打开以下网址:

https://zener.diode.computer/

可以看到近百个可以直接配置、使用的模块电路:

KiCAD

左侧可以进行搜索,右侧会渲染出模块的内容。

直接点击图纸左上方的 Copy,打开 KiCad 原理图,可以直接将模块粘贴到 KiCad 中,还是很方便的:

KiCADKiCAD

您也可以在中间区域对模块进行配置,比如被动器件的封装尺寸,是否需要去耦电容,是否需要上拉,等等。

KiCAD

修改后模块也会进行相应的变更:

KiCAD

 

点击图纸上方的 “Code”,就可以查看模块完整的代码:

KiCAD

貌似代码是由 claude 生成,然后人工审核的:

KiCAD当然,有一点儿我很感兴趣的是: 现在的 llm 可以生成器件和连接关系,但究竟是否可以生成“美观”的、符合“人”审美标准的图纸(比如上面连接很漂亮的模块)?虽然代码最后的这段给了点提示,我还是没有找到想要的答案...
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# PCB placement hints# pcb:sch NT_A0.NT x=850.0 y=950.0 rot=0# pcb:sch VDD.1 x=1150.0 y=800.0 rot=0# pcb:sch NT_VOUT.NT x=1878.6000 y=443.5000 rot=0# pcb:sch A0_VCC.1 x=1045.4800 y=888.0000 rot=0# pcb:sch AD5692R x=951.5000 y=976.9000 rot=0# pcb:sch C_BULK.C x=664.4800 y=1040.4000 rot=0# pcb:sch C_OUT.C x=1337.5800 y=1116.6000 rot=0# pcb:sch C_REF.C x=1159.7800 y=1129.3000 rot=0# pcb:sch C_VDD.C x=562.8800 y=1040.4000 rot=0# pcb:sch C_VLOGIC.C x=1439.1800 y=1065.8000 rot=0# pcb:sch R_LDAC.R x=788.9400 y=1103.9000 rot=90# pcb:sch R_OUT.R x=1271.5400 y=1040.4000 rot=270# pcb:sch R_RESET.R x=776.2400 y=938.8000 rot=180# pcb:sch R_SCL.R x=903.2400 y=938.8000 rot=180# pcb:sch R_SDA.R x=839.7400 y=938.8000 rot=180# pcb:sch TP_VOUT.TP x=1210.5800 y=999.7600 rot=0# pcb:sch TP_VREF.TP x=1210.5800 y=910.8600 rot=0# pcb:sch GND.1 x=1040.4000 y=1243.6000 rot=0# pcb:sch VDD_VCC.1 x=1070.8800 y=888.0000 rot=0# pcb:sch VLOGIC_VCC.1 x=1045.4800 y=824.5000 rot=0# pcb:sch VREF_VCC.1 x=1172.4800 y=888.0000 rot=0
大胆地猜测一下:Claude 根据需求生成模块中的器件和连接关系,但 Web 中看到的渲染出来的效果,仍然是“人”加工而来的。但不可否认的是,这种代码表述模块(原理图)的方式,确实某种程度上简化了电路的设计,对于 CS 背景的小伙伴来说,会非常的直观且易于接受。也必须承认,用代码的方式更利于后续不同模块之间连接的推理,且更容易被大模型理解。假以时日,基于优质的模块,由大模型生成原理图将不再是梦想。

结束语

diode.computer 开源了一系列的工具及模块,但它的商业模式却是典型的 design house,通过设计服务收费:KiCAD这是否也从另一个侧面说明目前阶段 AI 全面替代工程师进行电路设计仍不成熟?AI 与人协同才是提高设计效率的最合理路径?

人工智能在编程世界掀起的波澜,正以不可阻挡之势涌向硬件设计的海滩。正如AI代码助手改变了软件开发的流程一样,它为电子设计带来的启发,预示着一个更智能、更高效时代的到来。想象一下,未来的原理图设计,或许只需用自然语言描述需求,AI 便能为你搭建出清晰、规范的电路框架;而在过去最耗费心力的 PCB 布局上,AI 将化身为一位经验丰富的“布局大师”,不仅能瞬间完成复杂的布线,更能从源头上优化性能、降低成本。

这不仅仅意味着工作效率的提升,更深远的意义在于,它降低了创新的门槛。过去需要多年经验积累才能掌握的设计技巧,未来可能通过 AI 的辅助,让更多有创意的想法得以快速实现。AI 的进化不会取代设计师的智慧,反而会成为其创造力的延伸。它将负责处理那些繁琐的、有固定规则可循的工作,而将最宝贵的探索和创新空间,留给充满灵感的人类大脑。这股由代码世界吹来的AI之风,必将让电子设计的未来图景更加激动人心。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分