Skip to content

feat: implement UTDFN-4-EP(1x1) footprint#573

Open
sungdark wants to merge 1 commit intotscircuit:mainfrom
sungdark:feat/utdfn-4-ep-1x1
Open

feat: implement UTDFN-4-EP(1x1) footprint#573
sungdark wants to merge 1 commit intotscircuit:mainfrom
sungdark:feat/utdfn-4-ep-1x1

Conversation

@sungdark
Copy link
Copy Markdown

@sungdark sungdark commented Apr 4, 2026

Description

Implements the UTDFN-4-EP(1x1) (Ultra-Thin Dual Flat No-Lead with Exposed Pad, 4-pin, 1x1mm) footprint for the footprinter library.

This footprint supports:

  • 4 pins total (2 on each side)
  • Body size: 1.0mm x 1.0mm
  • Pitch: 0.5mm (default), configurable
  • Exposed pad (thermal pad) at the bottom center
  • DFN-style silkscreen with pin 1 marker

Bounty

Payment address: ETH 0x5a134107516ecccc83232711efa50eb4e87602c7

Closes #183

Comment on lines +90 to +94
if (parameters.ep) {
const epw = 0.55 // exposed pad width
const eph = 0.35 // exposed pad height
pads.push(rectpad(["thermalpad"], 0, 0, epw, eph))
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The exposed pad dimensions are hardcoded and ignore user-provided values. The schema allows ep to be either true or { x: string, y: string }, but when a user provides custom dimensions via the object form, they are completely ignored.

// Current code always uses hardcoded values:
if (parameters.ep) {
  const epw = 0.55
  const eph = 0.35
  pads.push(rectpad(["thermalpad"], 0, 0, epw, eph))
}

// Should handle both cases:
if (parameters.ep) {
  let epw: number, eph: number
  if (typeof parameters.ep === 'object') {
    epw = length.parse(parameters.ep.x)
    eph = length.parse(parameters.ep.y)
  } else {
    epw = 0.55
    eph = 0.35
  }
  pads.push(rectpad(["thermalpad"], 0, 0, epw, eph))
}

This will cause incorrect pad dimensions when users specify custom exposed pad sizes, leading to manufacturing defects.

Suggested change
if (parameters.ep) {
const epw = 0.55 // exposed pad width
const eph = 0.35 // exposed pad height
pads.push(rectpad(["thermalpad"], 0, 0, epw, eph))
}
if (parameters.ep) {
let epw, eph
if (typeof parameters.ep === 'object') {
epw = length.parse(parameters.ep.x)
eph = length.parse(parameters.ep.y)
} else {
epw = 0.55 // exposed pad width
eph = 0.35 // exposed pad height
}
pads.push(rectpad(["thermalpad"], 0, 0, epw, eph))
}

Spotted by Graphite

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement UTDFN-4-EP(1x1)

1 participant