Skill/references/description_format.md

357 lines
19 KiB
Markdown

# Description format (Vecmocon Altium Library SOP)
This is the authoritative rule for the **Description** field the skill writes into a part's
workbook. It has two layers:
1. The **four formats derived from the SOP** — Resistor, Capacitor, Zener, TVS — from
*Engineering Data Management — SOP: Component Naming, Mandatory Parameters, and Design Item
ID Format* (§6). Follow these **parameter orders** strictly. The **prefix**, however, is the
house `Class_TYPEID` form (see below), which supersedes the SOP's own prefix tokens.
2. A **house extension** that carries the *same basis* to every other type in the library
(all 125 type-IDs / 18 classes), so no component is left without a Description convention.
These are built on the SOP pattern and are the working standard; when a specific part
doesn't fit cleanly, follow the pattern and confirm the token order with the engineer rather
than inventing something off-pattern.
## The basis (applies to every component)
The Description is **not** a free-form sentence. It is a single string of `_`-joined tokens in
this shape:
```
Class_TYPEID_param1_param2_..._Package_[AECQ-XXX]
```
- **Class_TYPEID** — the **mandatory opening two tokens** of every Description, always. This
replaces the old technology prefixes (`CHIP_RES`, `ELE_CAP`, `TANT_CAP`, `NMOS`, …) — those
are **retired and must not be used**. Examples: `Diode_TVS_…`, `Capacitor_TAN_…`,
`Resistor_FIX_…`, `Transistor_MOS_…`.
- **Class** — spelled exactly as the library-repo folder name, so a Description's first token
always matches the folder the part lives in. Take it from `CLASS_FOLDER` in
`scripts/common.py` (the authoritative map) — e.g. `Diode`, `Capacitor`, `Resistor`,
`Transistor`, `IC`, `Protection`, `Inductor_Magnetics`, `Relay_Contactor`, `Switch_Button`,
`Antenna_RF`, `Crystal_Oscillator`, `Battery_Cell`, `Audible_Indicator`, `Display_HMI`,
`Sensor`, `Thermal_Cooling`, `Connector`. Mixed case as written — do **not** upper-case it.
Note `Inductor_Magnetics` and friends already contain an `_`; that is expected and correct.
The one Class whose folder name contains spaces, `Power Conversion Module`, is written
`Power_Conversion_Module` in a Description.
- **TYPEID** — the Type ID from `references/taxonomy.md`, **always upper-case**, exactly as
the template sheet names it (`TVS`, `TAN`, `CER`, `FIX`, `MOS`, `SCH`, `LDO`, …). This is
the same typeid used in the part tag `MPN_make_typeid`, so the three agree.
- Get both from the taxonomy for the typeid you classified the part to in step 2 — never
invent or abbreviate either token.
- **params** — the part's defining ratings, in the **fixed order** given for that class. Read
them off the datasheet. If the datasheet is silent on a required token, leave it out and flag
it — an honest gap beats a guessed value.
- **Package** — the IPC/industry package or case code, near the end (`0402`, `SOD-323`,
`SOIC-8`, `LQFP-48`, `SMD,D6.3xL5.8mm`, …).
- **AECQ-XXX** — only when the datasheet states automotive qualification (`AECQ-200`,
`AECQ-101`, `AECQ-100`); it is always the **last** token. Omit entirely if not stated —
never assume qualification.
Description ≠ Design Item ID ≠ Comment — three different fields that share notation but not
content: **Description** is the strict string here (SOP §6); **Design Item ID** (SOP §2) is a
shorter procurement id (`RES_36kΩ_±0.1%_0402`) that keeps its **own** SOP notation and does
**not** take the `Class_TYPEID` prefix — use it only as a guide to token vocabulary,
never put it in the Description column; **Comment** (SOP §4) is always the exact MPN.
## Notation conventions (from the SOP examples)
- **Value / unit** with SOP casing: `36kΩ`, `2.2uF`, `600Ω`, `48MHz`, `10uH`. Use `Ω` for ohms;
`uF`/`nF`/`pF`, `uH`/`nH`/`mH`, `Hz`/`kHz`/`MHz`, `F` for farads (supercaps). A **range** uses
`~` (`3.5V~28V`, `5.2V~5.6V`).
- **Power** `62.2mW`, `500mW`, `344W`; **voltage** `100v`, `25V`; **current** `0.25A`, `250mA`.
- **Tolerance** signed percent `±0.1%`, `±10%`.
- **Temperature coefficient** (ceramics) lower-case dielectric class: `x7r`, `c0g`, `x5r`.
- Keep tokens in the same style throughout so descriptions sort and read consistently.
---
# Layer 1 — the four SOP-derived formats (parameter order is strict)
The **parameter orders** below are the SOP's and are not up for reinterpretation. The
**prefix** is the house `Class_TYPEID` form, which replaces the SOP §6 prefix tokens.
**Resistor**
```
Resistor_TYPEID_Value_Wattage_Tolerance_Package_AECQ-XXX(optional)
```
Example: `Resistor_FIX_36kΩ_62.2mW_±0.1%_0402` (was `CHIP_RES_36kΩ_62.2mW_±0.1%_0402`)
**Capacitor**
```
Capacitor_TYPEID_Value_Voltage_Tolerance_Package_TemperatureCoefficient_AECQ-XXX(optional)
```
Example: `Capacitor_CER_2.2uF_100v_±10%_1210_x7r` (was `CHIP_CAP_2.2uF_100v_±10%_1210_x7r`)
**Zener diode**
```
Diode_ZEN_VoltageZener(Vz)_Power_Package_AECQ-XXX(optional)
```
**TVS diode**
```
Diode_TVS_VoltageBreakdown(Vbr)_VoltageClamping(Vc)_Current(Ip)_Package_AECQ-XXX(optional)
```
**House prefix note:** SOP §6 wrote the diodes as `DIO-Z` / `DIO-T` and the R/C formats with
technology prefixes (`CHIP_RES`, `CHIP_CAP`). Vecmocon has standardised on `Class_TYPEID` for
**every** component, so all four of these now open with `Resistor_` / `Capacitor_` / `Diode_`
plus the typeid. This is a deliberate house override of SOP §6's prefix; the parameter order
(Vz+Power for Zener; Vbr+Vc+Ip for TVS; etc.) remains exactly the SOP's.
---
# Layer 2 — house extension, every other type (same basis)
Each class below gives its **parameter order** (the tokens between prefix and package) and the
**per-type prefix**. Package is always the second-to-last token; optional `AECQ-XXX` is last.
## Resistor (RES family) — `Resistor_TYPEID_Value_Power_Tolerance_Package_[AECQ]`
| Type | Prefix | Notes |
|------|--------|-------|
| FIX Thick-film chip| `Resistor_FIX` | SOP example; the strict format above |
| TFR Thin-film chip| `Resistor_TFR` | precision/low-tempco; may append tempco (ppm) |
| MFR Metal-film| `Resistor_MFR` | |
| CFR Carbon-film| `Resistor_CFR` | |
| MOR Metal-oxide| `Resistor_MOR` | high-power leaded |
| WWR Wirewound| `Resistor_WWR` | low-ohm/high-power |
| SHT Current-sense/shunt| `Resistor_SHT` | value in mΩ (e.g. `2mΩ`), power token is the sense power |
| ARR Array/network| `Resistor_ARR` | add element count/config, e.g. `4x`, before value |
| POT Potentiometer/trimmer| `Resistor_POT` | `Resistor_POT_Value_Taper_Power_Package` (taper `LIN`/`LOG`) |
| FSR Fusible/safety| `Resistor_FSR` | |
| NTC thermistor| `Resistor_NTC` | `Resistor_NTC_R25_Beta_Tolerance_Package` (R25 e.g. `10kΩ`, Beta e.g. `B3950`) |
| PTC thermistor| `Resistor_PTC` | `Resistor_PTC_R25_Package` (or trip current/temp if that's the rated spec) |
Example: `Resistor_SHT_2mΩ_1W_±1%_2512` · `Resistor_NTC_10kΩ_B3950_±1%_0402`
## Capacitor (CAP family) — `Capacitor_TYPEID_Value_Voltage_Tolerance_Package_[Dielectric]_[AECQ]`
| Type | Prefix | Notes |
|------|--------|-------|
| CER Ceramic MLCC| `Capacitor_CER` | SOP; dielectric token (`x7r`/`c0g`…) required |
| ELE Aluminium electrolytic| `Capacitor_ELE` | tolerance often omitted; case like `SMD,D6.3xL5.8mm` |
| TAN Tantalum| `Capacitor_TAN` | |
| PLY Aluminium-polymer| `Capacitor_PLY` | low-ESR; ESR may follow voltage |
| FLM Film (MKT/MKP)| `Capacitor_FLM` | |
| SFY Safety Class-X/Y| `Capacitor_SFY` | add safety class token (`X2`/`Y1`) after value |
| SUP Supercapacitor/EDLC| `Capacitor_SUP` | value in farads, e.g. `1F`; add ESR if rated |
Example: `Capacitor_ELE_33uF_25V_SMD,D6.3xL5.8mm` · `Capacitor_SUP_1F_5.5V_RADIAL`
## Inductor / Magnetics — `Inductor_Magnetics_TYPEID_Value_Current_[DCR]_Package_[AECQ]`
| Type | Prefix | Format detail |
|------|--------|---------------|
| PWR Power inductor| `Inductor_Magnetics_PWR` | `Inductor_Magnetics_PWR_L_Isat_DCR_Package` (L e.g. `10uH`, Isat `3A`) |
| FBD Ferrite bead| `Inductor_Magnetics_FBD` | `Inductor_Magnetics_FBD_Impedance@freq_Current_Package` (e.g. `Inductor_Magnetics_FBD_600Ω@100MHz_2A_0603`) |
| CMC Common-mode choke| `Inductor_Magnetics_CMC` | `Inductor_Magnetics_CMC_Impedance@freq_Current_Package` |
| RFI RFI choke| `Inductor_Magnetics_RFI` | `Inductor_Magnetics_RFI_L_Current_Package` |
| XFM Transformer| `Inductor_Magnetics_XFM` | `Inductor_Magnetics_XFM_Ratio_Power_Package` (ratio e.g. `1:1`) |
| CTX Current transformer| `Inductor_Magnetics_CTX` | `Inductor_Magnetics_CTX_Ratio_Package` (e.g. `1000:1`) |
| CPL Coupled inductor| `Inductor_Magnetics_CPL` | `Inductor_Magnetics_CPL_L_Current_Package` |
## Diode — reverse-voltage / current ratings, then package
The prefix is the **generic diode type code (the typeid itself)**`REC`, `FRD`, `SCH`, `SIC`,
`ZEN`, `TVS`, `ESD`, `SWI`, `BRG`, `LED` — not a `DIO-x` form.
| Type | Prefix | Format |
|------|--------|--------|
| REC Rectifier| `Diode_REC` | `Diode_REC_Vrrm_Io_Package` |
| FRD Fast-recovery| `Diode_FRD` | `Diode_FRD_Vrrm_Io_trr_Package` |
| SCH Schottky| `Diode_SCH` | `Diode_SCH_Vr_Io_Package` |
| SIC SiC Schottky| `Diode_SIC` | `Diode_SIC_Vr_Io_Package` |
| ZEN Zener| `Diode_ZEN` | `Diode_ZEN_Vz_Power_Package` |
| TVS TVS| `Diode_TVS` | `Diode_TVS_Vbr_Vc_Ip_Package` |
| ESD ESD protection| `Diode_ESD` | `Diode_ESD_Vrwm_Vc_Channels_Package` |
| SWI Switching/small-signal| `Diode_SWI` | `Diode_SWI_Vr_Io_trr_Package` |
| BRG Bridge rectifier| `Diode_BRG` | `Diode_BRG_Vrrm_Io_Package` |
| LED Indicator LED| `Diode_LED` | `Diode_LED_Color_Vf_If_Package` (color e.g. `RED`) |
Example (Schottky BAT46WJ, 100 V / 250 mA): `Diode_SCH_100V_0.25A_SOD-323F`
## Transistor — `Transistor_TYPEID_[Polarity]_Voltage_Current_[Rds(on)]_Package_[AECQ]`
Since the prefix is now `Transistor_TYPEID`, the polarity/channel can no longer ride in the
prefix (the old `NMOS`/`PMOS`/`BJT_NPN` tokens are retired). It is carried as **its own token
immediately after the prefix**: `N`/`P` for FETs, `NPN`/`PNP` for BJTs and digital transistors.
Types with no polarity variant (GaN, IGBT) omit the token entirely.
| Type | Prefix | Format |
|------|--------|--------|
| BJT BJT | `Transistor_BJT` | `Transistor_BJT_Polarity_Vceo_Ic_Package` (polarity `NPN`/`PNP`) |
| MOS MOSFET (Si) | `Transistor_MOS` | `Transistor_MOS_Channel_Vds_Id_Rdson_Package` (channel `N`/`P`) |
| SCM SiC MOSFET | `Transistor_SCM` | `Transistor_SCM_Channel_Vds_Id_Rdson_Package` |
| GAN GaN FET | `Transistor_GAN` | `Transistor_GAN_Vds_Id_Rdson_Package` |
| IGBT IGBT | `Transistor_IGBT` | `Transistor_IGBT_Vces_Ic_Package` |
| JFET JFET | `Transistor_JFET` | `Transistor_JFET_Channel_Vds_Idss_Package` |
| DIG Digital/bias-R transistor | `Transistor_DIG` | `Transistor_DIG_Polarity_Vceo_R1/R2_Package` |
Example: `Transistor_MOS_N_20V_6A_15mΩ_SOT-23` · `Transistor_BJT_NPN_50V_0.1A_SOT-416FL`
## Integrated Circuit (IC) — one line per subtype; package always last (before AECQ)
| Type | Prefix | Format |
|------|--------|--------|
| MCU Microcontroller| `IC_MCU` | `IC_MCU_Core_Flash_Package` (e.g. `IC_MCU_M0+_128Kb_LQFP-48`) |
| LDO LDO regulator| `IC_LDO` | `IC_LDO_Vout_Iout_Package` (`ADJ` if adjustable) |
| DCD DC-DC IC| `IC_DCD` | `IC_DCD_Topology_Vin_Iout_Package` (topology `BUCK`/`BOOST`/`BUCKBOOST`) |
| PMU PMIC| `IC_PMU` | `IC_PMU_Rails_Package` |
| BMS BMS AFE| `IC_BMS` | `IC_BMS_Cells_Package` (e.g. `16S`) |
| DRV Gate/motor driver| `IC_DRV` | `IC_DRV_Type_Voltage_Current_Package` (type `GATE`/`MOTOR`/`HB`) |
| AMP Amplifier/op-amp| `IC_AMP` | `IC_AMP_GBW_Channels_Package` |
| CMP Comparator| `IC_CMP` | `IC_CMP_Channels_Package` |
| VRF Voltage reference| `IC_VRF` | `IC_VRF_Voltage_Tolerance_Package` |
| ADC ADC| `IC_ADC` | `IC_ADC_Bits_Rate_Package` |
| DAC DAC| `IC_DAC` | `IC_DAC_Bits_Channels_Package` |
| ISO Isolator/optocoupler| `IC_ISO` | `IC_ISO_Channels_IsolationV_Package` |
| XCV Transceiver| `IC_XCV` | `IC_XCV_Bus_Speed_Package` (bus `CAN`/`RS485`; e.g. `IC_XCV_CAN_5Mbps_SOIC-8`) |
| AFE Analog front end| `IC_AFE` | `IC_AFE_Function_Package` |
| MEM Memory| `IC_MEM` | `IC_MEM_Type_Size_Interface_Package` (e.g. `IC_MEM_FLASH_128Mb_SPI_SOIC-8`) |
| LOG Logic gate| `IC_LOG` | `IC_LOG_Function_Package` (e.g. `AND2`, `BUF`) |
| SEN Sensor IC| `IC_SEN` | `IC_SEN_Type_Package` |
| IFC Interface/expander| `IC_IFC` | `IC_IFC_Function_Package` |
| CLK Clock/RTC| `IC_CLK` | `IC_CLK_Freq_Package` (or `RTC_Package`) |
| SVR Supervisor/reset| `IC_SVR` | `IC_SVR_Threshold_Package` |
| MTR Energy metering| `IC_MTR` | `IC_MTR_Phases_Package` |
## Protection Device — `Protection_TYPEID_ratings_Package`
| Type | Prefix | Format |
|------|--------|--------|
| FUS Fuse| `Protection_FUS` | `Protection_FUS_Current_Voltage_Package` (speed `F`/`T` may precede current) |
| RSF Resettable/PPTC| `Protection_RSF` | `Protection_RSF_Ihold_Voltage_Package` |
| VAR Varistor/MOV| `Protection_VAR` | `Protection_VAR_Vrms_Energy_Package` |
| GDT Gas-discharge tube| `Protection_GDT` | `Protection_GDT_Vspark_Package` |
| CBK Circuit breaker| `Protection_CBK` | `Protection_CBK_Current_Poles_Package` |
## Power Conversion Module — `Power_Conversion_Module_TYPEID_Vin_Vout_Power_Package`
| Type | Prefix | Notes |
|------|--------|-------|
| DCM DC-DC module| `Power_Conversion_Module_DCM` | non-isolated PoL |
| IDC Isolated DC-DC| `Power_Conversion_Module_IDC` | isolated brick |
| INV Inverter (DC-AC)| `Power_Conversion_Module_INV` | `Power_Conversion_Module_INV_Power_Voltage_Package` |
| OBC On-board charger| `Power_Conversion_Module_OBC` | `Power_Conversion_Module_OBC_Power_Voltage_Package` |
| CHG Charger module| `Power_Conversion_Module_CHG` | `Power_Conversion_Module_CHG_Power_Voltage_Package` |
| PSU AC-DC SMPS| `Power_Conversion_Module_PSU` | `Power_Conversion_Module_PSU_Power_Vout_Package` |
| RCM Rectifier module| `Power_Conversion_Module_RCM` | `Power_Conversion_Module_RCM_Current_Voltage_Package` |
## Relay / Contactor — `Relay_Contactor_TYPEID_CoilVoltage_ContactRating_Package`
| Type | Prefix | Notes |
|------|--------|-------|
| RLS Signal relay| `Relay_Contactor_RLS` | contact rating e.g. `2A/30V` |
| RLP Power relay| `Relay_Contactor_RLP` | |
| SSR Solid-state relay| `Relay_Contactor_SSR` | `Relay_Contactor_SSR_ControlV_LoadRating_Package` |
| RLR Reed relay| `Relay_Contactor_RLR` | |
| CTC Contactor| `Relay_Contactor_CTC` | HV/HC contact rating |
## Switch / Button — `Switch_Button_TYPEID_[Positions]_Rating_Package`
| Type | Prefix | Notes |
|------|--------|-------|
| SWT Tactile| `Switch_Button_SWT` | rating e.g. `50mA/12V` |
| PBT Push button| `Switch_Button_PBT` | |
| DSW DIP/slide| `Switch_Button_DSW` | positions e.g. `4P` |
| RSW Rocker/toggle| `Switch_Button_RSW` | |
| RSY Rotary| `Switch_Button_RSY` | positions e.g. `12POS` |
## Connector — `Connector_TYPEID_Positions_Pitch_Package`
| Type | Prefix | Notes |
|------|--------|-------|
| CWB Wire-to-board| `Connector_CWB` | e.g. `Connector_CWB_2x2_P2.0` |
| CBB Board-to-board| `Connector_CBB` | |
| HDR Header/socket| `Connector_HDR` | pitch e.g. `2.54mm` |
| FFC FFC/FPC| `Connector_FFC` | |
| USB USB/data| `Connector_USB` | add USB type (`C`, `MICRO`) |
| PWC Power/high-current| `Connector_PWC` | add current rating |
| TBK Terminal block| `Connector_TBK` | |
## Antenna / RF — `Antenna_RF_TYPEID_Band_Package`
| Type | Prefix | Notes |
|------|--------|-------|
| ANC Chip antenna| `Antenna_RF_ANC` | band e.g. `2.4GHz` |
| ANP PCB/trace antenna| `Antenna_RF_ANP` | |
| ANE External/whip| `Antenna_RF_ANE` | add connector token |
| SAW SAW filter| `Antenna_RF_SAW` | `Antenna_RF_SAW_Freq_Package` |
| RFM RF/wireless module| `Antenna_RF_RFM` | protocol e.g. `BLE`, `WIFI`, `LTE` |
## Crystal / Oscillator / Timing — `Crystal_Oscillator_TYPEID_Freq_[Load]_Package`
| Type | Prefix | Notes |
|------|--------|-------|
| XTL Crystal| `Crystal_Oscillator_XTL` | `Crystal_Oscillator_XTL_Freq_LoadCap_Package` (e.g. `Crystal_Oscillator_XTL_48MHz_18pF_SMD2016-4P`) |
| OSC Crystal oscillator| `Crystal_Oscillator_OSC` | `Crystal_Oscillator_OSC_Freq_Package` |
| MMO MEMS oscillator| `Crystal_Oscillator_MMO` | |
| RSN Ceramic resonator| `Crystal_Oscillator_RSN` | `Crystal_Oscillator_RSN_Freq_Package` |
## Battery / Cell — `Battery_Cell_TYPEID_Capacity_Voltage_Format`
| Type | Prefix | Notes |
|------|--------|-------|
| CLI Li-ion cell| `Battery_Cell_CLI` | format e.g. `18650`; capacity `2600mAh` |
| CLF LiFePO4 cell| `Battery_Cell_CLF` | |
| CCO Coin/button| `Battery_Cell_CCO` | add chemistry (`CR`/`LIR`) + size (`2032`) |
| CNI NiMH| `Battery_Cell_CNI` | |
| BPK Battery pack| `Battery_Cell_BPK` | `Battery_Cell_BPK_Voltage_Capacity` (e.g. `48V_20Ah`) |
| CHL Cell holder| `Battery_Cell_CHL` | `Battery_Cell_CHL_CellType_Package` |
## Audible / Indicator
| Type | Prefix | Format |
|------|--------|--------|
| BUZ Magnetic buzzer| `Audible_Indicator_BUZ` | `Audible_Indicator_BUZ_Voltage_Freq_Package` |
| PBZ Piezo buzzer| `Audible_Indicator_PBZ` | `Audible_Indicator_PBZ_Voltage_Freq_Package` |
| SPK Speaker| `Audible_Indicator_SPK` | `Audible_Indicator_SPK_Power_Impedance_Package` |
| IND Indicator lamp| `Audible_Indicator_IND` | `Audible_Indicator_IND_Color_Voltage_Package` |
## Display / HMI — `Display_HMI_TYPEID_Resolution/Digits_Size_Interface`
| Type | Prefix | Notes |
|------|--------|-------|
| DSG 7-segment| `Display_HMI_DSG` | `Display_HMI_DSG_Digits_Color_Package` |
| OLE OLED| `Display_HMI_OLE` | resolution e.g. `128x64`, size `0.96in` |
| LCD LCD| `Display_HMI_LCD` | char (`16x2`) or graphic resolution |
| TFT TFT| `Display_HMI_TFT` | resolution + size + interface (`SPI`/`RGB`) |
## Sensor (discrete / module) — `Sensor_TYPEID_Range_[Interface]_Package`
| Type | Prefix | Notes |
|------|--------|-------|
| STE Temperature| `Sensor_STE` | range + interface (`I2C`/`ANALOG`) |
| SCU Current (Hall)| `Sensor_SCU` | range e.g. `±50A` |
| SVO Voltage/isolated| `Sensor_SVO` | |
| SHA Hall/position| `Sensor_SHA` | type (`LATCH`/`LINEAR`) |
| SIM IMU/accel| `Sensor_SIM` | axes (`6AXIS`) + interface |
| SPR Pressure| `Sensor_SPR` | range + interface |
## Thermal / Cooling
| Type | Prefix | Format |
|------|--------|--------|
| FAN Fan| `Thermal_Cooling_FAN` | `Thermal_Cooling_FAN_Size_Voltage_Airflow` (size e.g. `40x40mm`) |
| HSK Heatsink| `Thermal_Cooling_HSK` | `Thermal_Cooling_HSK_Dimensions_ThermalResistance` |
| TPD Thermal pad/TIM| `Thermal_Cooling_TPD` | `Thermal_Cooling_TPD_Conductivity_Thickness` |
---
## When a part doesn't fit
The Layer-2 formats are the working house standard, but real datasheets vary. If a part is
missing a token the format asks for, leave it out and flag it. If it has a defining rating the
format doesn't capture, add it in the sensible position and **tell the engineer** what you
added so the convention can be updated deliberately. Never silently bend a format — an
inconsistent Description is worse than one confirmed question. The Layer-1 (SOP) formats are
fixed and are not up for reinterpretation.