Files
diodeinc__pcb/lib/std/generics/OperationalAmplifier.zen
Akhil Velagapudi 4e01cb2635 Bundle kicad lib assets into lib/std (#886)
* docs: simplify README

* Add third-party notices

* Bundle stdlib KiCad assets

* Remove implicit KiCad library resolution

* Remove stale KiCad alias fixtures

* Remove layout-time model embedding

* Remove global KiCad footprint lookup

* Add KiCad stdlib path aliases

* Clean up KiCad stdlib aliases

* Derive WorkspaceConfig default

* Clean up KiCad STEP generator typing

* Use bundled KiCad footprints in tests

* Simplify interface template tests

* Ignore bundled KiCad library dependencies

* Bundle KiCad connector compatibility assets

* Resolve KiCad FPIDs to bundled stdlib footprints

* Normalize legacy KiCad library dependencies

* Bundle Governor KiCad compatibility assets

* Restore changelog entries
2026-06-17 11:56:42 -04:00

66 lines
1.8 KiB
Python

load("../io.zen", "io")
load("../interfaces.zen", "Opamp", "Power")
load("../units.zen", "Frequency", "Resistance", "Voltage")
load("../utils.zen", "format_value")
warn("generics/OperationalAmplifier.zen is deprecated.", kind="deprecated")
Variant = enum("Single")
Package = enum("SOIC8")
variant = config(Variant, default=Variant("Single"), optional=True, help="Op-amp configuration")
package = config(Package, default=Package("SOIC8"), optional=True, help="Package size")
mpn = config(str, optional=True, help="Manufacturer Part Number")
manufacturer = config(str, optional=True, help="Manufacturer")
properties = {
"value": format_value(variant),
"package": package,
"variant": variant,
}
VP = io(Power)
VN = io(Power)
OPA1 = io(Opamp)
def _symbol(variant: Variant):
"""Returns the symbol for a specific variant."""
return {
Variant("Single"): "../kicad-symbols/Simulation_SPICE.kicad_symdir/OPAMP.kicad_sym",
}[variant]
def _footprint(package: Package):
return {
Package("SOIC8"): "../kicad-footprints/Package_SO.pretty/SOIC-8_7.5x5.85mm_P1.27mm.kicad_mod",
}[package]
Component(
name="U",
part=builtin.Part(mpn=mpn, manufacturer=manufacturer) if mpn and manufacturer else None,
symbol=Symbol(_symbol(variant)),
footprint=File(_footprint(package)),
prefix="OPA",
pins={
"+": OPA1.IN_P,
"-": OPA1.IN_N,
"V+": VP,
"V-": VN,
"5": OPA1.OUT,
},
spice_model=SpiceModel(
"../kicad-symbols/Simulation_SPICE.sp",
"kicad_builtin_opamp",
nets=[OPA1.IN_P, OPA1.IN_N, VP, VN, OPA1.OUT],
args={
"POLE": "20",
"GAIN": "20k",
"VOFF": "10m",
"ROUT": "10",
},
),
properties=properties,
type="opamp",
)