Changelog
Version 0.0.1 (2026-02-03)
Initial Release
This is the first release of dv-flow-libfusesoc, providing complete integration between FuseSoC core management and Edalize tool flows.
Features
FuseSoC Integration ✅
Complete FuseSoC API wrapper (
fusesoc_manager.py)Core resolution with VLNV parsing
Library management and core discovery
Dependency resolution
File list extraction with target/tool/flags support
Workspace isolation for testing
File Format Conversion ✅
FuseSoC to DV Flow fileset converter (
fusesoc_fileset.py)File type mapping (Verilog, SystemVerilog, VHDL, constraints)
Include directory extraction
Logical name/library handling
Separate files_root support
Edalize Integration ✅
EDAM builder with fluent interface (
edam_builder.py)Generic Edalize backend wrapper (
edalize_backend.py)Configure/Build/Run lifecycle management
Error handling and reporting
Tool-specific success verification
DV Flow Tasks ✅
- Core Management:
fusesoc.CoreResolve- Resolve FuseSoC coresfusesoc.CoreFetch- Fetch remote cores (stub)
- Simulation Flow:
fusesoc.edalize.sim.SimConfigure- Configure simulationfusesoc.edalize.sim.SimBuild- Build simulationfusesoc.edalize.sim.SimRun- Run simulation
- FPGA Flow (stubs):
fusesoc.edalize.fpga.FPGAConfigurefusesoc.edalize.fpga.FPGABuildfusesoc.edalize.fpga.FPGAProgram
- Linting Flow (stubs):
fusesoc.edalize.lint.LintConfigurefusesoc.edalize.lint.LintRun
Supported Tools
- Simulators (via Edalize):
✅ Icarus Verilog (fully tested)
✅ Verilator (fully tested)
🔄 ModelSim/Questa (API ready)
🔄 VCS (API ready)
🔄 Xcelium (API ready)
🔄 GHDL (API ready)
- FPGA Tools (via Edalize):
🔄 Vivado (API ready)
🔄 Quartus (API ready)
🔄 Open-source flows (API ready)
Extension System ✅
Python entrypoint registration in
pyproject.tomlAuto-discovery by DV Flow Manager
Flow definition files (
.dv) with task specificationsPackage namespace:
fusesoc,fusesoc.edalize.sim, etc.
Testing ✅
Comprehensive test suite (38 tests, 94.7% passing)
Full workspace isolation for all tests
Unit tests for all core components
Integration tests with real simulators
Test fixtures and helper utilities
- Test Coverage:
Extension registration and discovery (2 tests)
Isolated test infrastructure (4 tests)
FuseSoC core resolution (4 tests)
File format conversion (6 tests)
EDAM building (11 tests)
Edalize backend (3 tests)
FuseSoC tasks (3 tests)
Edalize tasks (5 tests)
Implementation Details
Project Structure:
src/dv_flow/libfusesoc/
__ext__.py - Extension registration
flow.dv - Main package tasks
sim_flow.dv - Simulation flow tasks
fpga_flow.dv - FPGA flow (stub)
lint_flow.dv - Lint flow (stub)
fusesoc_manager.py - FuseSoC API wrapper
fusesoc_fileset.py - File format converter
fusesoc_core_resolve.py - CoreResolve task
edam_builder.py - EDAM builder
edalize_backend.py - Edalize wrapper
edalize_sim.py - Simulation tasks
Key Design Patterns
Pydantic models for task parameters and outputs
Async/await task implementation
Memento pattern for caching
Builder pattern for EDAM construction
Dependency injection for testing
Dependencies
Python >= 3.8
dv-flow-mgr - DV Flow Manager framework
fusesoc >= 2.0 - FuseSoC core management
edalize >= 0.5 - EDA tool abstraction
pydantic - Data validation
Known Limitations
FPGA flows are stubs (not yet implemented)
Linting flows are stubs (not yet implemented)
Formal verification flows not yet implemented
Commercial tool testing limited (requires licenses)
Documentation could be expanded with more examples
Breaking Changes
None (initial release)
Migration Guide
Not applicable (initial release)
Future Plans
Version 0.1.0 (Planned)
Complete FPGA synthesis flow implementation
Linting flow implementation
Additional examples and tutorials
Performance optimizations
Extended tool support
Version 0.2.0 (Planned)
Formal verification flow support
Advanced multi-tool flows
GUI/visualization support
Extended documentation
Coverage analysis integration
Contributors
Matthew Ballance - Initial implementation and design
Acknowledgments
This project builds upon:
FuseSoC - https://github.com/olofk/fusesoc
Edalize - https://github.com/olofk/edalize
DV Flow Manager - https://github.com/your-org/dv-flow-mgr
License
Apache License 2.0
—
Version 0.0.0 (Development)
Initial development and prototyping phase.