Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add QFN generator #99

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft

Add QFN generator #99

wants to merge 2 commits into from

Conversation

Uks2
Copy link

@Uks2 Uks2 commented Feb 18, 2023

I've written a generator for QFN packages, largely by copying and changing the on for QFPs.

Reasons why this is a draft:

  • Are the < 200µm between pad warnings really false positives or am I being thick somehow (I'm using librepcb 0.1.7)
  • At the moment, VQFNs and WQFNs are separate packages despite having exactly the same footprint, just different heights. Should they be merged and have the height information deleted from the description? Should they be done as package variants somehow?
  • I haven't written any tests yet.
  • Code formatting :-)

Uks2 added 2 commits February 18, 2023 16:28
It tests the generation of QFPs, not QFNs.
Largely copied from generate_qfp.py

The relevant standard is JEDEC MO-220.  Each variation is put into a
config class object and realised similarly to the QFPs.  The main
difference is that getting the pin positions is now a function of the
config class and it can handle non-square packages.

The maximum dimensions for pad sizes from JEDEC MO-220 are what's used.
Sometimes this doesn't leave 200µm between pads in which case, the
length of the edge pads and the width and height of the centre pad is
reduced equally until there's space.  *** Sometimes librepcb still
complains about there being >200µm between corner pads, e.g VEEE,
VHHE-1, VFFD-1, VHHD-2.  I think, this is a false positive; if you get
the ruler tool and measure the distance between corners, it's fine.
You do only get errors in footprints have had to be tweaked though so,
I don't know. ***

The silkscreen is little right angles on each corner, positioned just
outside the package outline, minus that line that would go down to pin
1.  Configs have a function for getting how far along the side their
pins go for this purpose.  If there's not enough space to draw a line
at least `line_width' down the side, the silkscreen is pushed out a bit
further.

Naming!  Packages are named with their IPC name plus their JEDEC MO-220
variation name, e.g VQFN50P900X900X100-64-VMMD-3.  This is because, some
variations have the same pitch, dimensions and pin number and would
overwrite each other if we just used IPC naming.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

1 participant