← Back to team overview

kicad-developers team mailing list archive

Re: Signal integrity simulation within Kicad

 

Hi Andreas,

I am sorry for late response, I must have lost your e-mail. Still, the
answers may help you in the future.

On 12/05/2017 03:42 PM, Andreas Buhr wrote:
> 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?

Unfortunately you are right. Most of the changes go through BOARD_COMMIT
class that takes care of creating undo entries, refreshing the view,
connectivity, etc. Recently Miles has been asking for a subscription
based observer model, perhaps BOARD_COMMIT would be a good spot to send
notifications to the observers.

Regards,
Orson

> 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
>>
> 
> 
> 
> 
> _______________________________________________
> 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


References