kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #22916
Re: Slow performance in pcbnew (PNS/GAL only) on high-fanout nets
-
To:
Andrew Zonenberg <azonenberg@xxxxxxxxxxxxxxx>, Kicad Developers <kicad-developers@xxxxxxxxxxxxxxxxxxx>
-
From:
Maciej Sumiński <maciej.suminski@xxxxxxx>
-
Date:
Tue, 2 Feb 2016 10:14:50 +0100
-
Authentication-results:
spf=pass (sender IP is 188.184.36.50) 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:
<56AFA4EB.4060505@drawersteak.com>
-
Spamdiagnosticmetadata:
NSPM
-
Spamdiagnosticoutput:
1:23
-
User-agent:
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1
Thank you Andrew, that was a good catch!
Regards,
Orson
On 02/01/2016 07:33 PM, Andrew Zonenberg wrote:
> Pads on the same net overlapping should not necessarily be a DRC
> error, consider the case of someone trying to make a D-shaped pad by
> putting a round one on top of a rectangle. Maybe if they're not part
> of the same component?
>
> Here's some quick performance numbers for the ground net on my board.
>
> processPads took 0.266 sec
> Update took 0.377 sec
> processPads took 0.275 sec
> Update took 0.383 sec
> processPads took 0.293 sec
> Update took 0.403 sec
> processPads took 0.305 sec
> Update took 0.413 sec
>
> So looks like processPads is about 3/4 of the total run time of
> Update(). Will look into that a little bit and see if there's any
> obvious speedups.
>
> On 01/02/16 06:24, Maciej Sumi?ski wrote:
>> Apparently the most expensive part is RN_DATA::processPads() that
>> does collision checks for pads. It handles cases when tracks do not
>> end in the middle of a pad, or when pads overlap (IMHO this should
>> be caught by DRC as an error instead, as pointed out at FOSDEM).
>
>> If you do not care about mini ratsnest lines when a track ending
>> and a pad center have different coordinates, then you should be
>> safe commenting it out (ratsnest_data.cpp:417). There is an idea to
>> improve speed here, but it requires more changes and has to be well
>> planned first.
>
>> Regards, Orson
>
>> On 01/31/2016 09:27 PM, Andrew Zonenberg wrote:
>>> When working on a board with a lot of pads, terminating a trace
>>> on a high-fanout net results in a significant (a second or more)
>>> hang of the entire UI. I haven't yet attempted to figure out what
>>> part of the code this hang is in.
>>>
>>> Steps to reproduce:
>>>
>>> 1) Open a large board file in pcbnew (I'm testing with
>>> http://thanatos.virtual.drawersteak.com/unlisted/marblewalrus-switch.
> kic
>>>
>>>
> ad_pcb)
>>> in GAL mode. The hang does not appear to be reproducible in
>>> legacy.
>>>
>>> 2) Start drawing a track on a high-fanout net (GND is a good
>>> example)
>>>
>>> 3) Performance should be normal when the track is started and
>>> during drawing, but when you click on a pad to terminate the
>>> track pcbnew hangs .
>>>
>>> Anybody with PNS experience (Orson, Tomasz, etc) care to
>>> investigate thi s?
>>>
>>> _______________________________________________ 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