← Back to team overview

kicad-developers team mailing list archive

Re: Signal integrity simulation within Kicad

 

Dear Kicad developers,

I am browsing the Kicad source code to get an idea how to integrate a
simulation tool.

I'd like the following:

1. The plugin should be informed whenever something changes. It would be
great to get a bounding box of the change.
2. The plugin should be able to draw on the canvas. I'd like to register
a new layer (for example to show the triangle mesh). The user should
then be able to enable/disable this layer.

These two requirements are in some sense similar to the requirements of
"ratsnest", so I followed "ratsnest" through the code.

Concerning (1):
I got the impression that it is not easy to be informed about all
changes in a BOARD. Is this correct?

Concerning (2):
And I got the impression that there is not one way to draw to the
canvas. I found two drawing methods for ratsnest, one in PCB_BASE_FRAME,
the other in RATSNEST_VIEWITEM::ViewDraw. Is it necessary to implement
two drawing methods for each feature?

And it seems that the layers are organized in an enum (GAL_LAYER_ID), so
adding a layer at runtime seems impossible without larger infrastructure
changes. Is this correct?

What would you propose? How can a plugin be informed about all changes
to the board? And how could a plugin draw on the canvas?

thanks a lot in advance,
Cheers,
Andreas


On 11/30/2017 12:18 AM, Wayne Stambaugh wrote:
> Hi Andreas,
> 
> Per our previous conversation, if you want to write your solver in C++,
> then I would prefer that you do it as part of a solver plugin rather
> than a command event handler in Pcbnew.  I image there would be other
> uses for a solver plugin object such as a thermal mapping solver which
> has been proposed in the past.  The other option would be to use the
> Python action object and write the entire solver in Python rather than
> C++.  That may make your life a bit easier.
> 
> Cheers,
> 
> Wayne
> 
> On 11/29/2017 01:09 PM, 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,
>>
>> Andreas
>>
>>
>>
>> _______________________________________________
>> 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
>>
> 
> _______________________________________________
> 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
> 


Attachment: signature.asc
Description: OpenPGP digital signature


Follow ups

References