A high-performance, programmable Analog-to-Digital Converter (ADC) IP core designed for mixed-signal SoC integration. Features include:
π§ Core Features: β’ Configurable resolution (12, 14, 16 bit) β’ Programmable sampling rates (1-5 MSPS) β’ Built-in PGA with gain control (1, 2, 3, 4) β’ SAR DAC with calibration β’ Advanced sample & hold circuit β’ Real-time performance monitoring β’ Multi-PDK Support: 40nm Ultra Low Power and Sky130 open-source PDK
π Design & Verification: β’ SystemVerilog RTL implementation β’ Multi-PDK Support:
- 40nm Ultra Low Power: Cadence PDK (Spectre, Virtuoso, Calibre)
- Sky130: Open-source PDK (Xschem, Magic, ngspice, Netgen) β’ Analog schematic entry (Xschem for Sky130, Virtuoso for Cadence) β’ Mixed-signal simulation (ngspice/Xyce for Sky130, Spectre/AMS Designer for Cadence) β’ Layout design (Magic for Sky130, Virtuoso/IC Compiler for Cadence) β’ DRC/LVS verification (Netgen for Sky130, Calibre for Cadence) β’ Comprehensive testbench suite
π Verification Tools: β’ UVM-compliant testbenches β’ Coverage-driven verification β’ Automated test harness reporting β’ Multi-simulator support (VCS, Questa, Verilator) β’ Open-source EDA tools (ngspice, Magic, Netgen) β’ Mixed-signal simulation and verification
π― Use Cases: β’ IoT sensor interfaces β’ Audio processing systems β’ Medical instrumentation β’ Industrial control systems β’ High-speed data acquisition
Built following Vyges IP development standards with automated documentation, verification flows, and integration examples.
-
Clone the Repository:
git clone https://github.com/vyges/programmable-adc.git cd programmable-adc -
Setup Environment:
# Install Vyges CLI (if not already installed) pip install vyges-cli # Initialize project with Vyges vyges init --interactive
-
Run Simulation:
# Run basic functional test vyges test --simulation # Run with Cadence PDK support vyges test --simulation --pdk cadence
-
Generate Documentation:
# Generate test harness report python scripts/generate_test_harness_report.py vyges-metadata.json # View comprehensive documentation open Developer_Guide.md
-
Next Steps:
- Review RTL implementation in
rtl/ - Explore testbenches in
tb/ - Check Cadence PDK integration in
rtl/cadence_pdk/ - Check Sky130 PDK integration in
analog/(Xschem, Magic, ngspice) - See Developer_Guide.md for advanced usage
- Review RTL implementation in
programmable-adc/
βββ rtl/ # SystemVerilog RTL implementation
β βββ programmable_adc.sv # Main ADC top-level module
β βββ programmable_adc_apb_interface.sv # APB slave interface
β βββ programmable_adc_pga_stage.sv # Programmable Gain Amplifier
β βββ programmable_adc_sar_controller.sv # SAR controller
β βββ programmable_adc_dac_array.sv # DAC array
β βββ programmable_adc_comparator.sv # High-speed comparator
β βββ programmable_adc_sample_hold.sv # Sample & Hold circuit
βββ analog/ # Analog design files (Efabless flow)
β βββ xschem/ # Schematic entry (Xschem)
β βββ magic/ # Layout database (Magic)
β βββ netlist/ # SPICE netlists
β βββ gds/ # Final GDS layout
β βββ lef/ # Abstract layout views
β βββ macros/ # Reusable analog components
βββ simulation/ # Mixed-signal simulation
β βββ configs/ # Simulation configurations
β βββ results/ # Simulation results
β βββ waveforms/ # Waveform files
βββ layout/ # Layout verification
β βββ constraints/ # Layout constraints
β βββ lvs/ # Layout vs Schematic
β βββ drc/ # Design Rule Checks
βββ tb/ # Testbenches and verification
β βββ sv_tb/ # SystemVerilog testbenches
β βββ cocotb/ # Python-based verification
β βββ Makefile # Test automation
βββ flow/ # EDA tool flows
β βββ openlane/ # Open-source ASIC flow (Sky130)
β βββ synth_report.md # Synthesis reports
βββ analog/ # Analog design files (Sky130 & Cadence)
β βββ xschem/ # Schematic entry (Xschem for Sky130)
β βββ magic/ # Layout database (Magic for Sky130)
β βββ netlist/ # SPICE netlists (ngspice for Sky130)
β βββ gds/ # Final GDS layout
β βββ lef/ # Abstract layout views
β βββ macros/ # Reusable analog components
βββ rtl/ # SystemVerilog RTL implementation
β βββ cadence_pdk/ # Cadence PDK-specific circuits
β βββ circuit_blocks/ # Generic circuit blocks
βββ scripts/ # Automation scripts
β βββ generate_test_harness_report.py
β βββ code_kpis.py
βββ docs/ # Documentation
βββ integration/ # Integration examples
βββ vyges-metadata.json # Vyges metadata specification
- VCS (Synopsys) - Primary commercial simulator
- Questa (Mentor/Siemens) - Advanced verification features
- Verilator - Open-source simulation
- Spectre (Cadence) - Analog simulation
- Functional Tests: Basic ADC operation and calibration
- Performance Tests: Speed, accuracy, and power measurements
- Corner Tests: Process, voltage, temperature variations
- Integration Tests: SoC-level integration scenarios
40nm Ultra Low Power (Cadence PDK):
- Behavioral Models: Realistic analog circuit modeling
- Spectre Netlists: Ready-to-simulate circuit descriptions
- Virtuoso Schematics: Layout-ready design files
- Calibre LVS: Layout vs. schematic verification
- Supply Voltage: 2.8V analog, 1.8V digital
Sky130 Open-Source PDK:
- Xschem Schematics: Open-source schematic capture
- Magic Layout: Open-source layout editor
- ngspice Simulation: Open-source circuit simulation
- Netgen LVS: Open-source layout vs. schematic verification
- Supply Voltage: 5.0V analog (high-voltage transistors), 1.8V digital
- Technology: 130nm SkyWater process
- Developer_Guide.md - Comprehensive development guide with AI-assisted workflows
- docs/architecture.md - Detailed ADC architecture and design decisions
- docs/waveforms.md - Simulation waveforms and timing analysis
- rtl/cadence_pdk/README.md - Cadence PDK integration guide
- analog/README.md - Sky130 PDK integration guide (Xschem, Magic, ngspice)
- vyges-metadata.json - Complete Vyges metadata specification
This IP is designed to work with the complete Vyges ecosystem:
- Vyges CLI - Command-line interface for IP development and automation
- Vyges Catalog - IP catalog and discovery platform
- Vyges IDE - Integrated development environment with mixed-signal support
- AI-assisted development - Comprehensive AI context and guidance for analog design
- Cadence Virtuoso - Layout and schematic design integration
- Spectre/Calibre - Analog simulation and verification tools
Apache-2.0 License - see LICENSE for details.
Important: The Apache-2.0 license applies to the hardware IP content (RTL, documentation, testbenches, etc.) that you create using this template. The template structure, build processes, tooling workflows, and AI context/processing engine are provided as-is for your use but are not themselves licensed under Apache-2.0.
For detailed licensing information, see LICENSE_SCOPE.md.
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Documentation: Developer_Guide.md
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Cadence PDK Support: flow/cadence/README.md