Назад към всички

similarity-mcu

// Use when working with MCU/microcontroller similarity calculations - comparing microcontroller MPNs, understanding family/series/feature matching, or MCU-specific similarity logic.

$ git log --oneline --stat
stars:2
forks:0
updated:February 24, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
namesimilarity-mcu
descriptionUse when working with MCU/microcontroller similarity calculations - comparing microcontroller MPNs, understanding family/series/feature matching, or MCU-specific similarity logic.

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

GroupMembers
PICPIC16, PIC18, PIC24, PIC32
STMSTM8, STM32
ATMATMEGA, ATTINY, ATXMEGA
MSPMSP430, 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

CodeMeaning
FFlash memory
LLow power
UUSB capable
WWireless
RROM version
TExtended 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

ConditionScore
Same manufacturer, same series, same package1.0
Same manufacturer, same series, different package0.9
Official replacement parts0.8
Same series across manufacturers0.7
Both microcontrollers, different series0.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 ^([A-Z]+)\d+ extracts family prefix
  • 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 [A-Z]+$ extracts trailing letters

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
<!-- Add new learnings above this line -->