Skip to content

fix: add vson footprint#431

Open
joncherry wants to merge 11 commits intotscircuit:mainfrom
joncherry:vson
Open

fix: add vson footprint#431
joncherry wants to merge 11 commits intotscircuit:mainfrom
joncherry:vson

Conversation

@joncherry
Copy link
Contributor

@joncherry joncherry commented Nov 23, 2025

/closes #182

Summary

Add vson for various pin and pad configurations based on search results for search term "vson" in kicad viewer.
added as tests:

HOT TIP: clicking "source" next to the title in kicad viewer will show exact numbers which is more precise than taking measurements with the "d" hotkey.

(<-click to expand) AI overview of some vson meaning: The term VSON-10-1EP_3x3mm_P0.5mm_EP1.65x2.4mm is a specific footprint name used in printed circuit board (PCB) design software (like KiCad or Altium) to define the physical layout and dimensions for a specific electronic component package. Here's a breakdown of what each part of the name means:
VSON: Stands for Very Thin Small Outline No-lead package. This is a type of surface-mount technology (SMT) component that has contact pads on the bottom periphery and no leads extending from the sides, offering a low profile.
10: Indicates that the package has 10 pins (or contact pads) for electrical connection to the PCB.
1EP: Signifies one Exposed Pad (EP). This is a large, central thermal pad on the bottom of the component, which is soldered to a corresponding pad on the PCB to help dissipate heat from the integrated circuit.
3x3mm: Specifies the overall body size of the component package, which is 3mm by 3mm.
P0.5mm: Refers to the pitch of the peripheral pins, meaning the center-to-center distance between adjacent pins is 0.5 millimeters. This is a fine pitch requiring precision manufacturing and assembly.
EP1.65x2.4mm: Provides the specific dimensions of the central Exposed Pad, which is 1.65mm by 2.4mm. 

In summary, this footprint name is a precise instruction for the PCB design software to create a land pattern (the copper pads on the PCB) that matches the physical specifications of a 10-pin VSON component with a central thermal pad, ensuring the component can be correctly placed and soldered onto the board.
For more information on specific packages, you can often find detailed package drawings and land pattern recommendations in the datasheets provided by component manufacturers like Texas Instruments or Onsemi.

@joncherry joncherry marked this pull request as ready for review November 24, 2025 21:53
Copy link
Member

@techmannih techmannih left a comment

Choose a reason for hiding this comment

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

Footprints looks good can you please add kicad parity to varify all of them.

@joncherry
Copy link
Contributor Author

joncherry commented Nov 25, 2025

Footprints looks good can you please add kicad parity to varify all of them.

I am running into the problem that the parity tests expect json from kicad but all of the kicad footprints I have are "*.kicad_mod" instead of json. https://kicad-mod-cache.tscircuit.com/Package_SON.pretty/VSON-8-1EP_3x3mm_P0.65mm_EP1.65x2.4mm.kicad_mod
do we have a means of coverting those into json for the parity test? if not I would need to build a converter to json to be able to add parity tests.

Edit: figured out that I just need to change the file extension on the url.

Copy link
Contributor Author

@joncherry joncherry Nov 25, 2025

Choose a reason for hiding this comment

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

This discrepancy with kicad appears to be happening because of a difference between these 2 files

in the kicad mod, there are pins with both 1.44 and -1.44, but in the circuit json there is only -1.44

both have the same 0.385 x offset for the central exposed pad which can be identified in the json by its dimensions of width 1.9 and height 2.45

@joncherry joncherry requested a review from techmannih November 30, 2025 01:45
src/fn/vson.ts Outdated
Comment on lines 19 to 23
grid: dim2d,
ep: dim2d.default("0x0mm"),
epx: length.default("0mm"),
pinw: length,
pinh: length,
Copy link
Member

Choose a reason for hiding this comment

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

please describe them.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

pinw is pin width and pinh is pin height. This allows the pin squares to match the numbers in kicad viewer.
I can add a code comment saying that if that would be a good thing to do.

Copy link
Member

Choose a reason for hiding this comment

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

@joncherry I understand, but we’ve never used these before your PR. It would help a lot if you could describe the EO and EPX more clearly, and also explain what the fgrid is used for.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I have added code comments to describe them.

chore: add code-comments to vson_def params
b3475dc

tests/kicad-parity/vson5_kicad_parity.test.ts shows a decent example of them getting used.

The name VSON-8_3.3x3.3mm_P0.65mm_NexFET is what is shown in kicad viewer.

from the kicad name we get the first part of the test VSON8_grid3.3x3.3mm_P0.65mm but to make the footprint match we need the rest of the numbers from the kicad source file so it uses addition functions/params _ep1.9x2.45mm_epx0.385mm_w2.88mm_pinw0.63mm_pinh0.5mm

Copy link
Contributor Author

@joncherry joncherry Dec 8, 2025

Choose a reason for hiding this comment

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

I suppose that the reason these extra functions/params are needed is because the vson.ts file is used for multiple footprints instead of using individual files for each footprint (for example vson8_3.3x3.3mm_p0.65mm_nexfet.ts) with hardcoded values for the extra data that is not in the name from kicad viewer.

Comment on lines 12 to 20
const svgContent = convertCircuitJsonToPcbSvg(combinedFootprintElements)
expect(svgContent).toMatchSvgSnapshot(
import.meta.path,
"Texas_VSON-HR-8_1.5x2mm_P0.5mm",
)
expect(booleanDifferenceSvg).toMatchSvgSnapshot(
import.meta.path,
"Texas_VSON-HR-8_1.5x2mm_P0.5mm_boolean_difference",
)
Copy link
Member

Choose a reason for hiding this comment

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

please remove it. we never use company name

Copy link
Contributor Author

@joncherry joncherry Dec 4, 2025

Choose a reason for hiding this comment

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

done. I removed the test (vson3 test) and renamed the test files (vson 4,5,6 -> 3,4,5) so that they still follow a numerical sequence so that the graphite review bot will stay happy.

chore: remove texas vson test
8e3a79d

@joncherry joncherry requested a review from techmannih December 13, 2025 19:49
src/fn/vson.ts Outdated
Comment on lines 19 to 24
grid: dim2d, // width and height of the border of the footprint (used for silkscreen lines)
ep: dim2d.default("0x0mm"), // width and height of the central exposed thermal pad
epx: length.default("0mm"), // x offset of the center of the central exposed thermal pad
pinw: length, // width of the pin pads
pinh: length, // height of the pin pads
})
Copy link
Member

Choose a reason for hiding this comment

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

please use .describe() instead of comments

@joncherry
Copy link
Contributor Author

Dang. Only meant to re-request review from techmannih

@joncherry
Copy link
Contributor Author

@techmannih I have moved on to other projects, so I won't be working on this anymore. Anyone can feel free to take over or borrow from this PR. I hope the work I have done is useful to someone.

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 VSON-8-EP(3x3)

3 participants