CoHDL
  1. Blog
  2. CoHDL 0.6.0

CoHDL 0.6.0: An EasyEDA Backend
and the STM32 Catalog

The compiler now writes EasyEDA / LCEDA Pro netlists — verified end to end with a real import — and the package registry gains device catalogs for the STM32 and ESP32 families, generated from pinned vendor sources.

CoHDL 0.6.0 is out — cohdl self-update if you have it, or:

curl -fsSL https://raw.githubusercontent.com/conol-ai/cohdl/main/install.sh | sh

A third netlist target: EasyEDA / LCEDA Pro

cohdl build --emit easyeda writes out/<name>.enet — the LCEDA Pro netlist (JSON v2.0.0) that File → Import → Netlist accepts. Every instance becomes a component with its designator, manufacturer part, and footprint binding; every connected pin binds its net by name; a multi-pad power pin flattens to one row per physical pad; a pin marked nc is guaranteed absent. The document is derived from the same functions that produce the KiCad .net, so the two netlists cannot disagree about the design — and like everything the compiler emits, the same source produces the same bytes.

Footprints come first: CoHDL already projects every footprint it knows into out/footprints/*.kicad_mod, and each projection carries its CoHDL name internally. Import those into your LCEDA library (File → Import → KiCad), then the netlist — the names bind exactly. We verified the whole loop against a real board: the SF32 miniboard example imported into LCEDA Pro with all 22 footprints resolving. The three --emit formats — the KiCad board, the IPC-2581 document, and now the EasyEDA netlist — compose in a single build.

The STM32 and ESP32 catalogs

The registry now carries a device catalog for the STM32 family (@st/stm32) and an expanded ESP32 lineage (@espressif/esp32). Both are generated, not transcribed: the catalogs are built from pinned vendor sources, joined against real order codes, and their generators’ outputs are locked by tests, so a regenerated catalog that drifts from the pinned sources fails the build rather than shipping a lie. Exact parts carry audited footprints; reusable package geometry stays owned by the geometry packages rather than being copied per vendor.

SiFli gets its own scope

The SF32LB52X package moved from the community tier to a proper manufacturer scope: @sifli/sf32. Its QFN68 land stays with the chip rather than joining the generic QFN package, deliberately — it is SiFli’s own qualified land, with a segmented exposed-pad stencil and sixteen thermal vias-in-pad from the official reference, and the library’s audit quarantines the generic land for qualified parts. The SF32 miniboard example also grew up: it now drives the OpenMicroKBD v2 AMOLED display over a 31-pin FPC, with the panel’s own buck-boost rail and power sequencing.

Smaller things

  • Mounting holes now take M designators instead of counting up the U series (misc 0.1.1).
  • The schematic explorer ships as a signed, notarized universal macOS app — drag the DMG to Applications, open it, pick a project.
  • Registry package pages can now serve API-documentation sidecars up to 200 MB, ready for catalog-sized packages.

Full source and design record: github.com/conol-ai/cohdl.