Lib-electronic-components similarity-mcu
Use when working with MCU/microcontroller similarity calculations - comparing microcontroller MPNs, understanding family/series/feature matching, or MCU-specific similarity logic.
install
source · Clone the upstream repo
git clone https://github.com/Cantara/lib-electronic-components
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Cantara/lib-electronic-components "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/similarity-mcu" ~/.claude/skills/cantara-lib-electronic-components-similarity-mcu && rm -rf "$T"
manifest:
.claude/skills/similarity-mcu/SKILL.mdsource content
MCU Similarity Calculator Skill
Guidance for working with MCU similarity calculators in the lib-electronic-components library.
For metadata-driven similarity architecture, see
/similarity-metadata:
- SpecImportance levels (CRITICAL, HIGH, MEDIUM, LOW, OPTIONAL)
- ToleranceRule types (exactMatch, percentageTolerance, minimumRequired, etc.)
- SimilarityProfile contexts (DESIGN_PHASE, REPLACEMENT, COST_OPTIMIZATION, etc.)
- Calculator integration patterns and gotchas
Overview
There are two MCU-related calculators:
MCUSimilarityCalculator (Simple Interface)
- Implements
SimilarityCalculator - Uses pattern matching for family/series/features
- No PatternRegistry required
MicrocontrollerSimilarityCalculator (Component Interface)
- Implements
ComponentSimilarityCalculator - Uses manufacturer handlers for extraction
- Requires PatternRegistry
Applicable Types (MicrocontrollerSimilarityCalculator)
ComponentType.MICROCONTROLLER ComponentType.MICROCONTROLLER_ATMEL ComponentType.MICROCONTROLLER_INFINEON ComponentType.MICROCONTROLLER_ST ComponentType.MCU_ATMEL
Similarity Weights (MCUSimilarityCalculator)
familySimilarity * 0.5 // Family is most important seriesSimilarity * 0.3 // Series number featureSimilarity * 0.2 // Feature codes (F, L, U, etc.)
MCU Families
Family Groups
| Group | Members |
|---|---|
| PIC | PIC16, PIC18, PIC24, PIC32 |
| STM | STM8, STM32 |
| ATM | ATMEGA, ATTINY, ATXMEGA |
| MSP | MSP430, MSP432 |
// Same family = 1.0 family similarity calculator.calculateSimilarity("STM32F103", "STM32F407"); // High similarity (same STM32 family) // Related family = 0.8 family similarity calculator.calculateSimilarity("PIC16F877", "PIC18F4550"); // Good similarity (both PIC family)
Feature Codes
| Code | Meaning |
|---|---|
| F | Flash memory |
| L | Low power |
| U | USB capable |
| W | Wireless |
| R | ROM version |
| T | Extended temperature |
// Same feature codes contribute to similarity calculator.calculateSimilarity("STM32F103", "STM32F407"); // Both have F (Flash) feature
Series Similarity
Series numbers are compared numerically:
- Same series = 1.0
- Close numbers (within 100) = partial similarity
- Far numbers = lower similarity
// Same series calculator.calculateSimilarity("ATMEGA328", "ATMEGA328P"); // Very high similarity // Close series calculator.calculateSimilarity("ATMEGA328", "ATMEGA329"); // High similarity // Far series calculator.calculateSimilarity("ATMEGA328", "ATMEGA2560"); // Lower similarity
MicrocontrollerSimilarityCalculator Scoring
| Condition | Score |
|---|---|
| Same manufacturer, same series, same package | 1.0 |
| Same manufacturer, same series, different package | 0.9 |
| Official replacement parts | 0.8 |
| Same series across manufacturers | 0.7 |
| Both microcontrollers, different series | 0.5 |
Test Examples
MCUSimilarityCalculator
// Identical MCU calculator.calculateSimilarity("ATMEGA328P", "ATMEGA328P"); // Returns 1.0 // Same family, different series calculator.calculateSimilarity("STM32F103", "STM32F407"); // Returns > 0.5 // Different families calculator.calculateSimilarity("STM32F103", "ATMEGA328"); // Returns lower similarity
MicrocontrollerSimilarityCalculator
// Same part, different package calculator.calculateSimilarity("ATMEGA328P-AU", "ATMEGA328P-PU", registry); // Returns >= 0.5 // Different MCUs calculator.calculateSimilarity("ATMEGA328P", "STM32F103C8T6", registry); // Returns 0.5 (base MCU similarity)
Common MCU Patterns
Atmel/Microchip AVR
ATMEGA 328 P -AU │ │ │ │ │ │ │ └── Package (AU=TQFP) │ │ └───── Variant (P=Picopower) │ └───────── Series number └──────────────── Family
STMicroelectronics STM32
STM32 F 103 C8 T6 │ │ │ │ │ │ │ │ │ └── Package (T6=LQFP48) │ │ │ └───── Memory/pins │ │ └───────── Series │ └─────────── Type (F=Foundation) └───────────────── Family
Microchip PIC
PIC16 F 877 A │ │ │ │ │ │ │ └── Variant │ │ └────── Series │ └──────── Memory type (F=Flash) └────────────── Family
Learnings & Quirks
Family Detection
- Regex
extracts family prefix^([A-Z]+)\d+ - Empty family = 0.0 family similarity
Series Number Extraction
- Extracts first numeric sequence
- Compared as integers for proximity
Feature Code Position
- Usually at end of part number
- Regex
extracts trailing letters[A-Z]+$
Package Codes
- Vary significantly by manufacturer
- Don't affect core part equivalence
- Same MCU in different package = HIGH similarity
Cross-Family Comparison
- Different families get Levenshtein similarity
- Never returns > 0.8 for different families