Skip to content

Feat: integrate Vortex v2.2 into ESP#319

Open
ShinyMiraidon wants to merge 1 commit into
mainfrom
vortex-2.2-integration
Open

Feat: integrate Vortex v2.2 into ESP#319
ShinyMiraidon wants to merge 1 commit into
mainfrom
vortex-2.2-integration

Conversation

@ShinyMiraidon

Copy link
Copy Markdown
Contributor

Summary

This PR integrates Vortex v2.2 into ESP as a third-party accelerator and adds the ESP-side infrastructure needed to configure it, build it, simulate it, synthesize it, and run it through both baremetal and Linux flows.

The integration is split across two layers:

  • accelerators/third-party/GT_VORTEX contains the Vortex RTL, ESP wrapper logic, packaging metadata, and Vortex-side runtime/backend support
  • accelerators/rtl/gt_vortex_rtl acts as a lightweight ESP accelerator shim so Vortex can plug into ESP’s existing Linux driver and application flow

This split allows Vortex to reuse ESP’s normal software and staging infrastructure even though Vortex does not natively follow the standard ESP accelerator software structure.

In addition to the accelerator integration itself, this PR includes the ESP platform changes needed to support Vortex in-system, including initial AXI WSTRB handling for partial writes, GT_VORTEX-specific SoC generation/configuration plumbing, and new optional Vivado timing-closure controls for larger SoCs.

Primary Changes

  • Added GT_VORTEX as a third-party accelerator under accelerators/third-party, including:

    • ESP wrapper RTL
    • XML/socket metadata
    • Source lists and build hooks
    • Submodule hookup to the ESP Vortex fork
    • Ariane-targeted software/runtime packaging metadata
  • Added GT_VORTEX-specific SoC generation and configuration support:

    • New configuration knobs for NUM_CORES, NUM_WARPS, NUM_THREADS, L2, and L3
    • Automatic derivation of the Vortex AXI ID width from the selected hardware configuration
    • Filtering of valid GUI choices so generated configurations stay within ESP’s current third-party accelerator limits
    • Propagation of GT_VORTEX configuration defines into socket generation, simulation, synthesis, and software builds so hardware and software remain aligned
  • Added the ESP wrapper/control path for Vortex:

    • APB-programmable base-address and launch registers
    • DCR programming support for startup address and arguments
    • AXI memory interface wiring including m_axi_wstrb
    • Interrupt/completion handling through the ESP driver framework
  • Added Linux support for Vortex through gt_vortex_rtl:

    • A thin ESP-side kernel driver and ioctl ABI
    • Sysroot staging of libvortex.so, libvortex-esp.so, regression executables, kernel .vxbin files, and a vortex-regression launcher
    • Optional automatic kernel builds from the Vortex tree when the toolchain is available
  • Added Vortex software collateral and tests:

    • Baremetal smoke tests for Fibonacci, memory-pattern, floating-point, and write-strobe behavior
    • Linux reference apps for direct byte-array bring-up
    • Vortex-side ESP runtime backend support
    • Vortex-side regression coverage, including a custom systolic_transformer regression test
  • Added rudimentary AXI WSTRB support in ESP:

    • Memory writes are now staged before NoC emission
    • Partial non-DMA writes are split into naturally aligned sub-transactions
    • Partial non-coherent DMA writes are split into DMA packets with encoded size metadata
    • Partial coherent DMA writes fall back to read-modify-write
    • Downstream AXI/AHB bridges decode that size metadata to reconstruct the intended write size and byte enables
  • Added optional Vivado timing-closure controls for make vivado-syn:

    • A shared opt-in optimization profile for synthesis/implementation
    • Per-knob overrides for strategies, directives, job count, and reporting
    • GT_VORTEX_ENABLE_MARK_DEBUG so wrapper debug preservation is opt-in instead of always-on

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant