> ## 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.

# JTAG

## Interfaces

<ParamField path="dbgrq" type="ElectricLogic" />

<ParamField path="n_reset" type="ElectricLogic" />

<ParamField path="n_trst" type="ElectricLogic" />

<ParamField path="tck" type="ElectricLogic" />

<ParamField path="tdi" type="ElectricLogic" />

<ParamField path="tdo" type="ElectricLogic" />

<ParamField path="tms" type="ElectricLogic" />

<ParamField path="vtref" type="ElectricPower" />

## 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 JTAG, ElectricPower, Resistor

  jtag = new JTAG

  # Connect voltage reference for all logic signals
  power_3v3 = new ElectricPower
  assert power_3v3.voltage within 3.3V +/- 5%
  jtag.vtref ~ power_3v3

  # All logic signals use same reference
  jtag.tdo.reference ~ power_3v3
  jtag.tdi.reference ~ power_3v3
  jtag.tms.reference ~ power_3v3
  jtag.tck.reference ~ power_3v3
  jtag.n_trst.reference ~ power_3v3
  jtag.n_reset.reference ~ power_3v3
  jtag.dbgrq.reference ~ power_3v3

  # Connect to microcontroller JTAG interface
  microcontroller.jtag_tdo ~ jtag.tdo.line
  microcontroller.jtag_tdi ~ jtag.tdi.line
  microcontroller.jtag_tms ~ jtag.tms.line
  microcontroller.jtag_tck ~ jtag.tck.line
  microcontroller.jtag_trst ~ jtag.n_trst.line
  microcontroller.reset_n ~ jtag.n_reset.line

  # Connect to JTAG debugger/programmer
  debugger.jtag ~ jtag

  # Pullup resistors for reset lines
  trst_pullup = new Resistor
  reset_pullup = new Resistor
  trst_pullup.resistance = 10kohm +/- 5%
  reset_pullup.resistance = 10kohm +/- 5%
  jtag.n_trst.line ~> trst_pullup ~> power_3v3.hv
  jtag.n_reset.line ~> reset_pullup ~> power_3v3.hv
  ```
</RequestExample>
