kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #32269
Re: Signal integrity simulation within Kicad
-
To:
<kicad-developers@xxxxxxxxxxxxxxxxxxx>
-
From:
Maciej Sumiński <maciej.suminski@xxxxxxx>
-
Date:
Thu, 7 Dec 2017 09:02:45 +0100
-
Authentication-results:
spf=pass (sender IP is 188.184.36.48) smtp.mailfrom=cern.ch; lists.launchpad.net; dkim=none (message not signed) header.d=none;lists.launchpad.net; dmarc=bestguesspass action=none header.from=cern.ch;
-
In-reply-to:
<a3fea244-f511-80a2-b073-6781fcf18de3@andreasbuhr.de>
-
Spamdiagnosticmetadata:
NSPM
-
Spamdiagnosticoutput:
1:99
-
User-agent:
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0
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