Skip to content

Programmable ADC IP with Cadence PDK support, featuring behavioral models, comprehensive testbenches, and automated verification flows for mixed-signal design.

License

Notifications You must be signed in to change notification settings

vyges/programmable-adc

Repository files navigation

Vyges IP License: Apache-2.0 Build SystemVerilog Cadence PDK

Programmable ADC IP

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.

πŸš€ Quickstart

  1. Clone the Repository:

    git clone https://github.com/vyges/programmable-adc.git
    cd programmable-adc
  2. Setup Environment:

    # Install Vyges CLI (if not already installed)
    pip install vyges-cli
    
    # Initialize project with Vyges
    vyges init --interactive
  3. Run Simulation:

    # Run basic functional test
    vyges test --simulation
    
    # Run with Cadence PDK support
    vyges test --simulation --pdk cadence
  4. Generate Documentation:

    # Generate test harness report
    python scripts/generate_test_harness_report.py vyges-metadata.json
    
    # View comprehensive documentation
    open Developer_Guide.md
  5. 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

πŸ”§ Project Structure

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

πŸ§ͺ Verification & Testing

Supported Simulators

  • VCS (Synopsys) - Primary commercial simulator
  • Questa (Mentor/Siemens) - Advanced verification features
  • Verilator - Open-source simulation
  • Spectre (Cadence) - Analog simulation

Test Coverage

  • 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

PDK Support

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

πŸ“š Documentation

πŸ› οΈ Development Tools

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

πŸ“„ License

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.

🀝 Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

πŸ“ž Support

About

Programmable ADC IP with Cadence PDK support, featuring behavioral models, comprehensive testbenches, and automated verification flows for mixed-signal design.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published