← Back to team overview

kicad-developers team mailing list archive

Re: [RFC] Comments for a Layer Stack Manager in Pcbnew

 

A few comments from the peanut gallery using Simon's "497" build...

Some things Seth suggested that I support and don't see:
- Units could be shown once at the top of the panel or in each column
header instead of each cell of the table. That would reduce clutter a bit
and shorten the string that needs to go into each cell.
- Moving the right-side stuff (impedance control and board finish) into a
separate panel of the dialog would allow the table to be wider. It's
awfully cramped right now.
- Alternating a color across each row would make the table easier to
visually parse.

And some suggestions from me, as a knucklehead who has ran into many issues
with stackup:
1. In the left pane of the dialog, there is a mix of "Stack-up" and
"Stackup".
2. Dielectric layers are the only items in the Name column that do not
start with a capital letter.
3. This panel and the popups use a mix of sentence capitalization, camel
case, and capitalizing every word. While it doesn't impair understanding
the panel's purpose, it doesn't look polished.
4. The "X" column is not salient. It is the only column header with a
popup, and that's required because the function is opaque. Along with the
comment above about expanding the table, using a more verbose term (or an
icon?) for this column would be nice.
5. There are tables in the Defaults > Text & Graphics and Design Rules >
Net Classes panels. Having column dividers makes the table much easier to
read. Adhering to that style, I suspect, would improve readability of the
stackup table.
6. I don't see the value of the "Board thickness" textbox at the top left.
It changes the dielectric layer thicknesses when clicking the Set
Dielectric Thickness button, but it sets the thickness of all dielectric
layers equal. I have rarely seen this done in practice and never for an
impedance-controlled board. This button seems to be mainly of value for
simple boards with low layer counts. For a 2- or 4-layer board it's not
much of a burden for the user to set the dielectric thickness manually to
whatever they want, or leave it alone as the user probably doesn't care,
and I can't imagine a high layer count board using controlled impedances
having all dieletric layers with the same thickness. So this button doesn't
seem useful to me. It's likely I'm daft and just don't get it.
7. One use for this is to specify the materials to be used by the board
vendor. Picking a dielectric material type not in the list means keying in
the parameters manually, probably after selecting "FR4". This can get
tedious. It would be nice to have a list of materials, perhaps from an
external file which could be shared company-wide, with approved materials
(NanYa NP-175FR, ITEQ IT-180A, etc.). Selecting one of these materials
would import the proper parameters. Perhaps an entire stackup, and just the
stackup, could be imported from a file or existing board.
8. Along with the above, allowing a custom name for the dielectric layer
lets the user better communicate design intent to the board vendor. And if
a custom material can be named once, perhaps it could appear as a
selectable material in the list so other dielectric layers could use the
same material with just a click. I get that keeping things in sync would
then be a pain but I'm trying to imagine ways to avoid manually typing in
the same info many times.
9. Another equally important use for this table is to select track width
for single-ended and diff pair tracks (and in both broadside- and
edge-coupled DPs). This table is a logical place to report all three
impedances in new columns so the user can select the stackup, and then
design constraints, before routing begins. While I can understand this
being a later piece of the puzzle, I mention it in case there's anything
that makes sense to do now.
10. It would be convenient if the copper thickness could be selected in
ounces, even if that was converted to a mm thickness after selecting a
value from the pulldown list. Selecting copper thicknesses (with custom
names) and board finishes is another obvious set of selections that could
be included in a company configuration as mentioned above.
11. Additionally, selecting the thickness on outer layers does not capture
if the thickness is fully copper or copper plated up to the specified
thickness. While it doesn't necessarily affect board thickness or
impedance, this is an open area that can lead to getting boards NOT as
intended which I understand is the whole point of adding this table so far.
12. In order to get the exact stackup I want, often coupled with material
availability, I have sometimes used multiple dielectric layers between
conductor layers. Currently only a single dielectric layer between
conductor pairs is supported.
13. Especially when dealing with board vendors who speak another language,
a graphic is a powerful communication tool. Creating a drawing like
https://img.taodabai.com/upload/4e/78/4e789a33d80a15c0aa480e11699e1b48.jpg,
which captures the materials and shows a proportional drawing of the board
cross-section, is a very powerful tool. I wouldn't expect this to be
implemented right away because the current features are nice, but having
the hooks to make a Python plugin that can generate a board cross-section
in the board fab drawing from the stackup table would be very nice.

This is awesome and a huge benefit; designing a board doesn't matter if
it's not built as desired. Folks making advanced boards with KiCad should
appreciate this new feature very much. Please take the above as
enthusiastic suggestions and not condemnation.

Thanks JP!

On Mon, Sep 2, 2019 at 2:28 AM jp charras <jp.charras@xxxxxxxxxx> wrote:

> I just finished the version of board stack manager that should fix all
> issues and remarks previously made, and has some tests to avoid
> incorrect parameters.
> The patch is against latest master branch version (5.99.0-48)
>
> The stackup settings is now in the board settings dialog.
>
> Note also the board settings dialog has a flaw:
> All panels are working on the current board settings instead of a "local
> copy" of these settings.
> If when validating settings in panels a veto is generated by a panel
> (due to a incorrect parameter) all changes made by previous panels are
> already committed, and if canceling the changes, some are committed, and
> some others not.
> My patch does not fix this issue, that is specific to the dialog, not
> the stack manager.
>
> Please test and comment.
> I want to commit this feature soon.
>
> --
> Jean-Pierre CHARRAS
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
>

Follow ups

References