← Back to team overview

kicad-developers team mailing list archive

Re: Signal integrity simulation within Kicad

 

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




Follow ups

References