
John Demme engineered advanced hardware-software integration features in the llvm/circt repository, focusing on ESI runtime, type system, and cosimulation workflows. He developed robust runtime tracing, telemetry services, and flexible signaling protocols, leveraging C++ and Python to enhance observability and debugging. His work included end-to-end support for complex data types like Window and List, efficient DMA and MMIO communication paths, and cross-platform runtime stability improvements. By introducing type-safe wrappers, canonicalization passes, and automated Python bindings, John ensured maintainable, scalable pipelines from hardware description to Python APIs. The depth of his contributions reflects strong system design and cross-language expertise.
March 2026: ESI/runtime enhancements in llvm/circt focused on type safety, communication protocols, developer tooling, and debugging/observability. Delivered five key features: a header-only TypedPorts wrapper library for safe port connections, a fire-and-forget ValidOnly signaling protocol for ESI channels, a Copilot development skills file for ESI runtime, Cosim debugging improvements with optional waveform dumping and structured run artifacts, and PyCDE auto signal naming with a debug mode to preserve wires through optimization. No explicit major bug fixes tracked this month; stability improvements accompany feature work.
March 2026: ESI/runtime enhancements in llvm/circt focused on type safety, communication protocols, developer tooling, and debugging/observability. Delivered five key features: a header-only TypedPorts wrapper library for safe port connections, a fire-and-forget ValidOnly signaling protocol for ESI channels, a Copilot development skills file for ESI runtime, Cosim debugging improvements with optional waveform dumping and structured run artifacts, and PyCDE auto signal naming with a debug mode to preserve wires through optimization. No explicit major bug fixes tracked this month; stability improvements accompany feature work.
February 2026: Delivered major ESI runtime/type system enhancements and cross-language interop for Circt, improved build stability and test coverage, and advanced serial encoding support to enable bulk data workflows. Result: more reliable, scalable interop across Python/C++ workflows and faster delivery cycles.
February 2026: Delivered major ESI runtime/type system enhancements and cross-language interop for Circt, improved build stability and test coverage, and advanced serial encoding support to enable bulk data workflows. Result: more reliable, scalable interop across Python/C++ workflows and faster delivery cycles.
January 2026 performance highlights for llvm/circt: Implemented ESI Runtime Enhancements (new MMIO write callback mechanism, robust serialization across Pybind11 to Nanobind, plus tests; snoop on channels without unwrap fixed), extended SysInfo capabilities (cycle count and core clock frequency exposure; Cosim_CycleCount integration; updated RPC protocol and backends), PyCDE reliability improvements (SSA name preservation after LLVM bump; PyCDE frontend test race condition fix), memory management and stability improvements (Wrap Operations: removed problematic fold() usage and added canonicalization for unused ops; edge-case handling when there are no consumers), and build/runtime stability (Nanobind linked against static stdc++). Result: improved runtime reliability, observability, and developer productivity across ESI, PyCDE, and cosimulation workflows, enabling faster integration cycles and more robust Linux deployments.
January 2026 performance highlights for llvm/circt: Implemented ESI Runtime Enhancements (new MMIO write callback mechanism, robust serialization across Pybind11 to Nanobind, plus tests; snoop on channels without unwrap fixed), extended SysInfo capabilities (cycle count and core clock frequency exposure; Cosim_CycleCount integration; updated RPC protocol and backends), PyCDE reliability improvements (SSA name preservation after LLVM bump; PyCDE frontend test race condition fix), memory management and stability improvements (Wrap Operations: removed problematic fold() usage and added canonicalization for unused ops; edge-case handling when there are no consumers), and build/runtime stability (Nanobind linked against static stdc++). Result: improved runtime reliability, observability, and developer productivity across ESI, PyCDE, and cosimulation workflows, enabling faster integration cycles and more robust Linux deployments.
December 2025 monthly summary: Focused on enabling Window and List types end-to-end in the ESI path of CIRCT. Delivered foundational type system and runtime capabilities that improve hardware mapping, observability, and test coverage, accelerating PR gates and reducing integration risk. Key achievements include: 1) Implemented BitWidthTypeInterface for ESI types to enable statically computable bit widths and hardware bitcast compatibility (commit 6a4f3a20ab65c303eb0b8cf8d54a46f71b5ad64f). 2) Extended ESI type lowering to support nested Window types inside arrays/structs/unions/lists/type aliases (commit 024df057079325c786feccdfd7071c286832b098). 3) Added basic runtime support for Window and List types across the ESI runtime, dialect, manifest, and tests (commit 11670a46ab5685e41488989fcce43a40c980b312). 4) Implemented non-list Window type read translations and write translations to enable automatic reassembly and frame-splitting (commits 7cf49221177462aa7c751b1eb123e7c961f80f17 and 727d28e63e3a9ceeaa7bf86da0c2c730a84966cd). 5) Performance and encoding optimizations in the translation path, including precomputed translation metadata and parallel encoded list translation and bulk transfer encoding (commits 568e7e1502a7b684f7a682d8bdd25d8908b2260c, 56a72e7bd9c7aac5344adae3b9e6fcd3bf378145, 34796192c579dd18e8980c5641176746f37c177e).
December 2025 monthly summary: Focused on enabling Window and List types end-to-end in the ESI path of CIRCT. Delivered foundational type system and runtime capabilities that improve hardware mapping, observability, and test coverage, accelerating PR gates and reducing integration risk. Key achievements include: 1) Implemented BitWidthTypeInterface for ESI types to enable statically computable bit widths and hardware bitcast compatibility (commit 6a4f3a20ab65c303eb0b8cf8d54a46f71b5ad64f). 2) Extended ESI type lowering to support nested Window types inside arrays/structs/unions/lists/type aliases (commit 024df057079325c786feccdfd7071c286832b098). 3) Added basic runtime support for Window and List types across the ESI runtime, dialect, manifest, and tests (commit 11670a46ab5685e41488989fcce43a40c980b312). 4) Implemented non-list Window type read translations and write translations to enable automatic reassembly and frame-splitting (commits 7cf49221177462aa7c751b1eb123e7c961f80f17 and 727d28e63e3a9ceeaa7bf86da0c2c730a84966cd). 5) Performance and encoding optimizations in the translation path, including precomputed translation metadata and parallel encoded list translation and bulk transfer encoding (commits 568e7e1502a7b684f7a682d8bdd25d8908b2260c, 56a72e7bd9c7aac5344adae3b9e6fcd3bf378145, 34796192c579dd18e8980c5641176746f37c177e).
November 2025 saw substantial business value delivered in llvm/circt through performance-focused telemetry refactor, expanded ESI tooling, and broader Python bindings. Key outcomes include MMIO-based telemetry with improved scalability and a new demux path, expanded ESI tester modes for hardware validation, variable-length data windows support for ESI lists, and extensive PyCDE Python API/type-system enhancements. Observability and stability improvements were delivered via JSON output for esiquery telemetry and runtime service stability fixes.
November 2025 saw substantial business value delivered in llvm/circt through performance-focused telemetry refactor, expanded ESI tooling, and broader Python bindings. Key outcomes include MMIO-based telemetry with improved scalability and a new demux path, expanded ESI tester modes for hardware validation, variable-length data windows support for ESI lists, and extensive PyCDE Python API/type-system enhancements. Observability and stability improvements were delivered via JSON output for esiquery telemetry and runtime service stability fixes.
October 2025 (2025-10) monthly summary for llvm/circt. Focus areas this month were efficiency, configurability, and correctness. Key features delivered include ChannelMMIO Space Optimization, which reduces per-client MMIO space by adjusting the AddressMask and manifest-read handling to better fit registers within the allocated space, enhancing resource utilization. Another feature, Customizable Backend Plugin Discovery via the ESI_BACKENDS environment variable, enables users to specify custom search paths for backend plugins and updates the search order to prioritize these paths, improving configurability and deployment flexibility. Major bug fix: Mux Canonicalizers for Signed Integers in the Comb Dialect were corrected to stop assuming signless integers, with tests added to verify unsigned integer behavior and prevent regressions. Overall impact includes reduced resource waste, easier customization of plugin discovery, and strengthened correctness with targeted testing. Demonstrated technologies/skills include resource optimization techniques, environment-based configurability, and robust canonicalization testing.
October 2025 (2025-10) monthly summary for llvm/circt. Focus areas this month were efficiency, configurability, and correctness. Key features delivered include ChannelMMIO Space Optimization, which reduces per-client MMIO space by adjusting the AddressMask and manifest-read handling to better fit registers within the allocated space, enhancing resource utilization. Another feature, Customizable Backend Plugin Discovery via the ESI_BACKENDS environment variable, enables users to specify custom search paths for backend plugins and updates the search order to prioritize these paths, improving configurability and deployment flexibility. Major bug fix: Mux Canonicalizers for Signed Integers in the Comb Dialect were corrected to stop assuming signless integers, with tests added to verify unsigned integer behavior and prevent regressions. Overall impact includes reduced resource waste, easier customization of plugin discovery, and strengthened correctness with targeted testing. Demonstrated technologies/skills include resource optimization techniques, environment-based configurability, and robust canonicalization testing.
In 2025-09 for llvm/circt, delivered targeted Cosim improvements that boost determinism, debugging visibility, and waveform efficiency to accelerate hardware/software co-design. The work focused on stabilizing DPI-driven Cosim paths, enriching waveform tooling, and enabling interactive GUI-based debugging, delivering clearer diagnostics and faster iteration cycles for cosimulation workflows.
In 2025-09 for llvm/circt, delivered targeted Cosim improvements that boost determinism, debugging visibility, and waveform efficiency to accelerate hardware/software co-design. The work focused on stabilizing DPI-driven Cosim paths, enriching waveform tooling, and enabling interactive GUI-based debugging, delivering clearer diagnostics and faster iteration cycles for cosimulation workflows.
August 2025 monthly summary for llvm/circt: Delivered cross-platform runtime loading and path resolution improvements, addressing Windows DLL loading, MMIO path resolution from non-top-level locations, and Linux backend plugin loading robustness. These changes improved startup reliability, cross-OS compatibility, and runtime plugin management, contributing to stability and performance for downstream teams and users.
August 2025 monthly summary for llvm/circt: Delivered cross-platform runtime loading and path resolution improvements, addressing Windows DLL loading, MMIO path resolution from non-top-level locations, and Linux backend plugin loading robustness. These changes improved startup reliability, cross-OS compatibility, and runtime plugin management, contributing to stability and performance for downstream teams and users.
July 2025 monthly summary for llvm/circt: Delivered notable features and stability improvements across the codebase, with a focus on debugging, reliability, and developer productivity. Key decisions and outcomes include a stack-based location model for PyCDE frontend improved source traceability, and significant enhancements to the ESI dialect with new capabilities and better error handling. Built and runtime stability fixes addressed packaging and plugin loading, reducing triage time and runtime failures.
July 2025 monthly summary for llvm/circt: Delivered notable features and stability improvements across the codebase, with a focus on debugging, reliability, and developer productivity. Key decisions and outcomes include a stack-based location model for PyCDE frontend improved source traceability, and significant enhancements to the ESI dialect with new capabilities and better error handling. Built and runtime stability fixes addressed packaging and plugin loading, reducing triage time and runtime failures.
June 2025: Kanagawa dialect integration across PyCDE with MLIR import enhancements. Implemented a Kanagawa-specific CSE optimization pass, unified Python bindings, Kanagawa IR import, and a preprocessing hook for lowering with support for custom operation conversion. This work completes end-to-end Kanagawa workflow within the Circt ecosystem, enabling smoother pipelines from dialect to IR to Python binding.
June 2025: Kanagawa dialect integration across PyCDE with MLIR import enhancements. Implemented a Kanagawa-specific CSE optimization pass, unified Python bindings, Kanagawa IR import, and a preprocessing hook for lowering with support for custom operation conversion. This work completes end-to-end Kanagawa workflow within the Circt ecosystem, enabling smoother pipelines from dialect to IR to Python binding.
May 2025 monthly summary for llvm/circt focusing on ESI runtime, dialect, and build/debug improvements. Delivered observable enhancements and architectural refactors that improve runtime tracing, hardware module telemetry, signaling flexibility, and maintainability, while streamlining debugging and CI feedback loops. Business value centers on increased observability, faster issue triage, and easier maintenance for long-term performance and reliability.
May 2025 monthly summary for llvm/circt focusing on ESI runtime, dialect, and build/debug improvements. Delivered observable enhancements and architectural refactors that improve runtime tracing, hardware module telemetry, signaling flexibility, and maintainability, while streamlining debugging and CI feedback loops. Business value centers on increased observability, faster issue triage, and easier maintenance for long-term performance and reliability.
April 2025 monthly summary for llvm/circt: Delivered stability and build reliability improvements through two critical bug fixes. PyCDE integration tests: resolved command-line argument issue and removed a reference to an unavailable tool, ensuring tests run in the current environment (commit 27093babc4904cc0a1c703b292eefd2d3b6c4bc7). Verilator driver: fixed a tracing dependency by gating tracing code so the Verilator trace library is linked only when tracing is enabled, avoiding build/link errors in non-tracing configurations (commit 8e903ae03f68abecd0adb0fa19bd24d5f179e20a). These changes reduced CI flakiness and rebuild failures, improving overall developer productivity and downstream integration reliability.
April 2025 monthly summary for llvm/circt: Delivered stability and build reliability improvements through two critical bug fixes. PyCDE integration tests: resolved command-line argument issue and removed a reference to an unavailable tool, ensuring tests run in the current environment (commit 27093babc4904cc0a1c703b292eefd2d3b6c4bc7). Verilator driver: fixed a tracing dependency by gating tracing code so the Verilator trace library is linked only when tracing is enabled, avoiding build/link errors in non-tracing configurations (commit 8e903ae03f68abecd0adb0fa19bd24d5f179e20a). These changes reduced CI flakiness and rebuild failures, improving overall developer productivity and downstream integration reliability.
March 2025 focused on delivering measurable business value in the llvm/circt project by improving runtime usability, maintainability, and data movement efficiency. The team implemented CLI modernization, enhanced logging, simplified hardware lowering, and introduced a high-performance DMA path for host-to-device transfers, reinforcing Circt’s value in ESI workflows.
March 2025 focused on delivering measurable business value in the llvm/circt project by improving runtime usability, maintainability, and data movement efficiency. The team implemented CLI modernization, enhanced logging, simplified hardware lowering, and introduced a high-performance DMA path for host-to-device transfers, reinforcing Circt’s value in ESI workflows.
February 2025: Delivered a robust ESI runtime expansion with a pluggable engine framework, expanded MMIO capabilities, and targeted stability improvements. Key outcomes include enabling configurable channel engines with per-channel records, extending addressable space via MMIO indirection, and introducing a ToHost DMA engine. Channel demux refactor and BSP/IO improvements enhanced maintainability and reliability. Safety fixes (AppID indexing crash) and broader stability work (cosim disconnect logging, test cleanup) reduce risk and improve diagnostics, laying groundwork for scalable hardware emulation workflows and clearer developer insights.
February 2025: Delivered a robust ESI runtime expansion with a pluggable engine framework, expanded MMIO capabilities, and targeted stability improvements. Key outcomes include enabling configurable channel engines with per-channel records, extending addressable space via MMIO indirection, and introducing a ToHost DMA engine. Channel demux refactor and BSP/IO improvements enhanced maintainability and reliability. Safety fixes (AppID indexing crash) and broader stability work (cosim disconnect logging, test cleanup) reduce risk and improve diagnostics, laying groundwork for scalable hardware emulation workflows and clearer developer insights.
January 2025 (llvm/circt) focused on delivering end-to-end XRT integration enhancements and robust host memory pathways, complemented by API/data-model improvements and targeted stability work. Work spanned XRT interface modernization with ChannelMMIO, hostmem read/write enhancements, and validation/refactor efforts to improve maintainability and deployment readiness.
January 2025 (llvm/circt) focused on delivering end-to-end XRT integration enhancements and robust host memory pathways, complemented by API/data-model improvements and targeted stability work. Work spanned XRT interface modernization with ChannelMMIO, hostmem read/write enhancements, and validation/refactor efforts to improve maintainability and deployment readiness.
December 2024 (Month: 2024-12) focused on stabilizing core workflows in the DC dialect, expanding simulation and test capabilities, and improving developer experience. The month delivered targeted improvements to DC canonicalization, Cocotb-driven test flows, and ESI/IO signaling, while strengthening the PyCDE and HWArith lowering paths. These changes reduce regression risk, broaden tool support, and accelerate downstream development. Key features delivered: - DC Dialect canonicalization: added unused fork result elimination canonicalizer and adjusted tests to cover post-canonicalization IR correctness. - Cocotb driver enhancements: Questa simulator support and GUI mode; refactored simulator handling into separate classes for better organization. - ESI signaling and debugging: ValidReady signaling support in FIFO operations and a Verilator DEBUG_PERIOD option to slow down simulation for waveform debugging. - PyCDE improvements: Handshake and channel utilities for advanced data flow control; build system improvements with nanobind to streamline Windows DLL installation. - HWArith stabilization: Type alias handling fix in lowering to preserve robust type information. Major bugs fixed: - DC Dialect handshake to DC unpacking bug corrected to ensure proper data handling during synchronization, with a dedicated test. - DC lowering: Initial values are now preserved for buffers and correctly error out in DCToHW when unsupported at that stage. - Cocotb: Icarus Verilog 12 compatibility fixes addressing timescale and assertion support. - ESI: WrapValidReady verifier bug fixed to ensure outputs are used at most once and to tighten lowering error messages. - FIFO lowering: Depth handling and pointer arithmetic corrected to support all depths, with updated tests. - ESI runtime: Removed extraneous debug print to clean production output. Overall impact and accomplishments: - Increased correctness and stability of DC lowering and canonicalization, enabling more reliable DC workflows and improved IR correctness post-canonicalization. - Broadened simulation coverage through Questa support, GUI mode, Icarus 12 compatibility, and Verilator-based debugging aids, reducing integration risk and accelerating testing cycles. - Improved PyCDE and HWArith paths, reducing onboarding friction and improving cross-platform build reliability (notably Windows DLL handling via nanobind). Technologies and skills demonstrated: - Canonicalization and IR transformation techniques, plus rigorous test maintenance in the DC dialect. - Simulation tooling: Cocotb driver design, Verilator integration, and historical-Icarus compatibility work. - ESI protocol extensions: Valid/Ready signaling and FIFO semantics, plus waveform-focused debugging support. - Build and C-API integration: Nanobind-based PyCDE build improvements and cross-language interoperability. - Debugging and performance-oriented work: Debug period control and targeted test expansion for waveform tracing.
December 2024 (Month: 2024-12) focused on stabilizing core workflows in the DC dialect, expanding simulation and test capabilities, and improving developer experience. The month delivered targeted improvements to DC canonicalization, Cocotb-driven test flows, and ESI/IO signaling, while strengthening the PyCDE and HWArith lowering paths. These changes reduce regression risk, broaden tool support, and accelerate downstream development. Key features delivered: - DC Dialect canonicalization: added unused fork result elimination canonicalizer and adjusted tests to cover post-canonicalization IR correctness. - Cocotb driver enhancements: Questa simulator support and GUI mode; refactored simulator handling into separate classes for better organization. - ESI signaling and debugging: ValidReady signaling support in FIFO operations and a Verilator DEBUG_PERIOD option to slow down simulation for waveform debugging. - PyCDE improvements: Handshake and channel utilities for advanced data flow control; build system improvements with nanobind to streamline Windows DLL installation. - HWArith stabilization: Type alias handling fix in lowering to preserve robust type information. Major bugs fixed: - DC Dialect handshake to DC unpacking bug corrected to ensure proper data handling during synchronization, with a dedicated test. - DC lowering: Initial values are now preserved for buffers and correctly error out in DCToHW when unsupported at that stage. - Cocotb: Icarus Verilog 12 compatibility fixes addressing timescale and assertion support. - ESI: WrapValidReady verifier bug fixed to ensure outputs are used at most once and to tighten lowering error messages. - FIFO lowering: Depth handling and pointer arithmetic corrected to support all depths, with updated tests. - ESI runtime: Removed extraneous debug print to clean production output. Overall impact and accomplishments: - Increased correctness and stability of DC lowering and canonicalization, enabling more reliable DC workflows and improved IR correctness post-canonicalization. - Broadened simulation coverage through Questa support, GUI mode, Icarus 12 compatibility, and Verilator-based debugging aids, reducing integration risk and accelerating testing cycles. - Improved PyCDE and HWArith paths, reducing onboarding friction and improving cross-platform build reliability (notably Windows DLL handling via nanobind). Technologies and skills demonstrated: - Canonicalization and IR transformation techniques, plus rigorous test maintenance in the DC dialect. - Simulation tooling: Cocotb driver design, Verilator integration, and historical-Icarus compatibility work. - ESI protocol extensions: Valid/Ready signaling and FIFO semantics, plus waveform-focused debugging support. - Build and C-API integration: Nanobind-based PyCDE build improvements and cross-language interoperability. - Debugging and performance-oriented work: Debug period control and targeted test expansion for waveform tracing.
November 2024 (2024-11) monthly summary for llvm/circt focused on expanding ESI and Handshake workflows, stabilizing the build and test surface, and enabling richer Python bindings and DC lowering flows. Delivered new features across ESI, Seq, PyCDE, Handshake, HandshakeToDC, DC, and Kanagawa rename, with a strong emphasis on hardware design flows, automation, and reliability. Notable contributions include standard host memory service, basic hostmem reads, FIFO type flexibility, Python bindings, and multiple lowering/integration capabilities that accelerate design-to-silicon workflows.
November 2024 (2024-11) monthly summary for llvm/circt focused on expanding ESI and Handshake workflows, stabilizing the build and test surface, and enabling richer Python bindings and DC lowering flows. Delivered new features across ESI, Seq, PyCDE, Handshake, HandshakeToDC, DC, and Kanagawa rename, with a strong emphasis on hardware design flows, automation, and reliability. Notable contributions include standard host memory service, basic hostmem reads, FIFO type flexibility, Python bindings, and multiple lowering/integration capabilities that accelerate design-to-silicon workflows.

Overview of all repositories you've contributed to across your timeline