AgentSkillsCN

similarity-mcu

适用于进行微控制器相似性计算——比较微控制器的 MPN 编码、理解家族/系列/功能匹配,或运用微控制器特有的相似性逻辑时,可选用此技能。

SKILL.md
--- frontmatter
name: similarity-mcu
description: Use 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)

java
ComponentType.MICROCONTROLLER
ComponentType.MICROCONTROLLER_ATMEL
ComponentType.MICROCONTROLLER_INFINEON
ComponentType.MICROCONTROLLER_ST
ComponentType.MCU_ATMEL

Similarity Weights (MCUSimilarityCalculator)

java
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
java
// 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
java
// 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
java
// 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

java
// 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

java
// 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

code
ATMEGA 328 P -AU
│      │   │  │
│      │   │  └── Package (AU=TQFP)
│      │   └───── Variant (P=Picopower)
│      └───────── Series number
└──────────────── Family

STMicroelectronics STM32

code
STM32 F 103 C8 T6
│     │ │   │  │
│     │ │   │  └── Package (T6=LQFP48)
│     │ │   └───── Memory/pins
│     │ └───────── Series
│     └─────────── Type (F=Foundation)
└───────────────── Family

Microchip PIC

code
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 -->