Skill/references/schlib_parameters.md

7.4 KiB

Mandatory symbol parameters (.SchLib)

Vecmocon's Altium SOP (§5) requires every schematic-library symbol to carry a fixed set of parameters in its component properties (the panel shown in Altium: Properties → Parameters). This file defines that set, where each value comes from, and how the skill stamps them onto the .SchLib symbol.

How the parameters get in: the skill writes them directly into the .SchLib in pure Python via scripts/schlib_write.py — it rebuilds the OLE compound file around the enlarged component Data stream while preserving every other byte (all other streams, the directory tree, the Altium CLSIDs). It also removes the Ultra-Librarian default params Manufacturer_Name and Manufacturer_Part_Number, which just duplicate the SOP Manufacturer / Manufacturer Part. The output is a ready .SchLib. Because this writes Altium's own format from outside Altium, the script self-checks that the result re-opens as a valid OLE with the params present — but always open the result in Altium once to confirm it loads before relying on it. (An older path, scripts/altium_params.py, instead emits an Altium DXP script to stamp the same parameters from inside Altium; keep it as a fallback if a particular file doesn't round-trip.)

The parameter set

Use these exact Altium parameter names (they must match the symbol, per the SOP screenshot). The Comment field is set to the MPN (SOP §4), and the Description field is the strict string from references/description_format.md.

Parameter Source Notes
Value datasheet the component value only (no package), in shorthand — e.g. 1u, 12p, 100n, 10k
Manufacturer Part datasheet the MPN; also the Comment field
Manufacturer datasheet manufacturer name as printed, e.g. YAGEO
Manufacturer Part 2 leave blank (for now) second-source MPN — left empty by default; see optional note below
Manufacturer 2 leave blank (for now) second-source manufacturer — left empty by default
Process derived assembly process from package: SMD → Reflow, through-hole → Wave/Manual; confirm
Vecmocon Part Code engineer internal code (e.g. VECESC2421) — not on the datasheet; ask
Operating Temperature datasheet full range, e.g. -55 °C to +125 °C
Tolerance datasheet e.g. 1% (or ±1%)
Datasheet datasheet source URL or document reference (SOP marks this optional)
ROHS datasheet RoHS compliance, Yes/No

Read the datasheet-sourced values from the actual datasheet — don't echo whatever text was handed to you. Open the PDF, find each real value (Value, Manufacturer Part, Manufacturer, Operating Temperature, Tolerance, Datasheet, ROHS, and Process by inference from the package), and fill them verified. An honest blank beats a guess — the SOP hides blank parameters, so a gap just stays empty until someone fills it. Only one field is purely internal and must come from the engineer: Vecmocon Part Code — ask for it.

The second-source pair (Manufacturer 2 / Manufacturer Part 2) is left blank for now — don't populate it by default. It simply stays hidden in Altium until someone fills it later.

Optional: second-source cross-reference (currently off)

House preference right now is to leave Manufacturer 2 / Manufacturer Part 2 blank, so do not do this unless the engineer explicitly asks you to find a second source. It's documented here so it can be switched on later without redesigning anything.

If asked to find a second source, it is an equivalent part from a different manufacturer that could drop into the design unchanged:

  1. Pull the original's form-fit-function specs from the datasheet — capacitance, voltage, tolerance, dielectric/temp class, package (for a cap); resistance, power, tolerance, package (for a resistor); and so on per type.
  2. Search for an equivalent from a different manufacturer (distributor/parametric cross-reference, "equivalent to <MPN>", or another reputable maker's matching series). It must match every form-fit-function spec and be at least as good on tolerance / voltage / temperature — never worse.
  3. Fill Manufacturer 2 = its maker, Manufacturer Part 2 = its exact MPN.

Two hard rules if this is ever used: never invent an MPN (only a part number you verified exists; else leave blank), and always flag the chosen second source for the engineer to confirm with the specs you compared.

Building the parameter set

Collect the values into a params.json (same spirit as part.json). component is the symbol's Library Ref (from altium_refs.py); omit it to apply to every component in the lib.

{
  "component": "CC0402FRNPO9BN120",
  "comment": "CC0402FRNPO9BN120",
  "parameters": {
    "Value": "12pF_0402",
    "Manufacturer Part": "CC0402FRNPO9BN120",
    "Manufacturer": "YAGEO",
    "Manufacturer Part 2": "0402N120F500CT",
    "Manufacturer 2": "Walsin Tech Corp",
    "Process": "Reflow",
    "Vecmocon Part Code": "VECESC2421",
    "Operating Temperature": "-55 °C to +125 °C",
    "Tolerance": "1%",
    "Datasheet": "https://www.lcsc.com/datasheet/C326662.pdf",
    "ROHS": "Yes"
  }
}

The full parameter set (template + SOP)

Every .SchLib should carry the complete parameter set for its part: the typeid template's engineering columns (all columns of that typeid's template.xlsx sheet except the internal bookkeeping ones — the tag MPN_make_type, Skill Version, Template Version, and the four Library/Footprint Ref/Path columns) plus the mandatory SOP params above. So a CER (ceramic MLCC) symbol gets Capacitance(uF), Tolerance, Voltage(V), Dielectric(temp. Coefficient), Operating Temp(°C), Max operating temp(°C), Package, Description, Manufacturer from the template, alongside Value, Manufacturer Part, Process, Vecmocon Part Code, ROHS, Datasheet, and the second-source fields. Fill each from the datasheet; leave blank what the datasheet doesn't state.

Writing them into the symbol

Write the parameters straight into the .SchLib, producing a new file. Pass --typeid so the writer guarantees the whole template column set is present (blank where you didn't supply a value) — this is what keeps every symbol's parameter set complete and consistent:

python scripts/schlib_write.py --schlib <in>.SchLib --params params.json --out <out>.SchLib --typeid <TYPEID>

params.json carries your filled values (and may include a "remove" list — defaults to ["Manufacturer_Name", "Manufacturer_Part_Number"], the Ultra-Librarian duplicates that get stripped). The script targets the component named in "component" (its Library Ref / storage name), or every component if omitted, and self-checks the output re-opens as a valid OLE. It handles any parameter-set size — small sets stay in Altium's mini-stream, larger ones are written as a regular stream automatically. Deliver the resulting .SchLib; have the engineer open it in Altium once to confirm it loads, then Save to Server with a revision note per the SOP.

Fallback (apply from inside Altium):

python scripts/altium_params.py script --params params.json --out apply_params.pas

Then in Altium: open the .SchLib, DXP → Run Script… → ApplyParameters, review, Save to Server.