← Back to team overview

kicad-developers team mailing list archive

Re: Signal integrity simulation within Kicad

 

This may be a bit off-topic but it may be worth noting that this routine (or rather, D_PAD::TransformShapeWithClearanceToPolygon) produces slightly incorrect results for oval pads with positive aClearanceValue.

See https://bugs.launchpad.net/kicad/+bug/1665582.

On Wed, 29 Nov 2017, Tomasz Wlostowski wrote:

On 29/11/17 19:09, Andreas Buhr wrote:
Dear Kicad developers,

I'm new to Kicad development. Maybe you could give me some starting tips?

I am a 5th year PhD student at the university of Münster in Germany,
website:
https://www.uni-muenster.de/AMM/en/ohlberger/team/andreas_buhr.shtml

I am doing mathematical research targeted at developing solvers for 3D
Maxwell's equations in highly complex structures, such as PCBs. While
being in an early stage, the goal is to develop a signal integrity
solver which does a full-wave simulation of the electromagnetic fields
and calculates S-parameters within a very short time.

I would love to develop and test my algorithms within KiCad.

The input which my solver needs would be an array of polygons,
representing the copper-filled areas on each layer.
I then want to create a 2D triangle mesh and based on that a 3D prism
mesh for finite element analysis.

What would you recommend? How to I get polygons, representing the copper
filled areas of each layer?
I do have some experience developing C++.

thanks a lot in advance,
best regards,

Hi Andreas,

It's absolutely fantastic to hear you're working on an SI solver and
that you want to develop it within KiCad!

For the moment, there's no one-liner way to get the entire board
geometry represented as polygons - the closest is to for each BOARD_ITEM:


BOARD_ITEM::TransformShapeWithClearanceToPolygonoid
TransformShapeWithClearanceToPolygon( SHAPE_POLY_SET& aCornerBuffer,
                                     int aClearanceValue,
                                     int aCircleToSegmentsCount,
                                     double aCorrectionFactor ) const;

with aClearanceValue = 0 or 1 (= 1nm) - I'm not 100% sure if a value of
0 will be accepted and aCircleToSegments count large enough to
approximate arcs correctly.

aCornerBuffer is a SHAPE_POLY_SET object which represents a set of
polygons with holes, see qa/geometry for some example/test code.

Let me know if you need any help!

Best,
Tom



_______________________________________________
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

References