> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atopile.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Crystal

## Parameters

<ParamField path="equivalent_series_resistance" type="ohm" />

<ParamField path="frequency" type="hertz" />

<ParamField path="frequency_ageing" type="ppm" />

<ParamField path="frequency_temperature_tolerance" type="ppm" />

<ParamField path="frequency_tolerance" type="ppm" />

<ParamField path="load_capacitance" type="farad" />

<ParamField path="shunt_capacitance" type="farad" />

## Interfaces

<ParamField path="gnd" type="Electrical" />

<ParamField path="unnamed[0]" type="Electrical" />

<ParamField path="unnamed[1]" type="Electrical" />

## Global Attributes

These attributes are available to all modules and interfaces in a design.

<ParamField path="lcsc_id" type="str">
  Assign the LCSC ID of the module.

  If set, this will tell the picker to select that part from LCSC for this block.
</ParamField>

<ParamField path="manufacturer" type="str">
  This module's manufacturer name, as a string.

  Only exact matches on the manufacturer's name will be found by the picker.
  It's recommended to fill this information based on what `ato create component`
  provides.
</ParamField>

<ParamField path="mpn" type="str">
  This module's manufacturer part number, as a string.

  For the picker to select the correct part from the manufacturer,
  this must be set.
</ParamField>

<ParamField path="package" type="str">
  The package of the module.

  This drives which components can be selected, and what footprint is used.

  Must exactly match a known package name.
</ParamField>

<ParamField path="exclude_from_bom" type="bool" />

<ParamField path="override_net_name" type="str">
  When set on an interface, this will override the net name of the interface.

  This is useful for renaming nets which are automatically generated.
</ParamField>

<ParamField path="required" type="bool">
  Only for ModuleInterfaces.
  If set to `True`, require that interface is connected to something outside
  of the module it's defined in.
</ParamField>

<RequestExample>
  ```ato Basic Usage theme={null}
  import Crystal, Capacitor

  crystal = new Crystal
  crystal.frequency = 16MHz +/- 20ppm
  crystal.frequency_tolerance = 20ppm
  crystal.load_capacitance = 18pF +/- 10%
  crystal.equivalent_series_resistance = 80ohm +/- 20%
  crystal.package = "HC49U"

  # Connect to microcontroller with load capacitors
  load_cap1 = new Capacitor
  load_cap2 = new Capacitor
  load_cap1.capacitance = 22pF +/- 5%
  load_cap2.capacitance = 22pF +/- 5%

  mcu.xtal1 ~ crystal.unnamed[0]
  mcu.xtal2 ~ crystal.unnamed[1]
  crystal.unnamed[0] ~> load_cap1 ~> crystal.gnd
  crystal.unnamed[1] ~> load_cap2 ~> crystal.gnd
  crystal.gnd ~ power_supply.lv
  ```
</RequestExample>
