kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #34051
Re: Improving Eagle Import netlist matching
-
To:
Russell Oliver <roliver8143@xxxxxxxxx>, Wayne Stambaugh <stambaughw@xxxxxxxxx>
-
From:
Maciej Sumiński <maciej.suminski@xxxxxxx>
-
Date:
Mon, 19 Feb 2018 16:05:27 +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;
-
Cc:
kicad-developers <kicad-developers@xxxxxxxxxxxxxxxxxxx>
-
In-reply-to:
<CAEKH5oU6ryo+y+6PBaC+Zdi=fTGYeEg-rYH97DmBuq2m8VZmZw@mail.gmail.com>
-
Spamdiagnosticmetadata:
NSPM
-
Spamdiagnosticoutput:
1:99
-
User-agent:
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2
Hi Russell,
I am grateful for your continuous support. I confirm your patch handles
local net labels and zones in the attached example (orphanzonetest.zip)
correctly, but I am still getting global labels with the Arduino project
mentioned by Wayne. Reverting "Fix netlist mapping for zones and vias"
is enough to get them back. I will have a look at it soon, but if you
see an obvious fix, do not hesitate to tell me.
There is at least one thing that needs to be fixed, but I can handle it.
One should not extend KIWAY_PLAYER interface with application specific
functions (FixEagleNets(), ListNets()), we use KiMail mechanism for
simple IPC. I see it had been accepted before, but probably as an
overlook. I have already fixed it for netlist read and generate methods
(9e80eff9), one more on my to-do list is ImportFile().
I also noticed that my two stage netlist update does not always update
timestamps in pcbnew, so there is one more thing I should fix.
To sum up: I am going to merge your patch and apply necessary
KIWAY_PLAYER interface fixes. There are still two issues to address:
- global labels in the Arduino test project
- unassigned timestamps in pcbnew (I think for multisheet schematics)
Regards,
Orson
On 02/19/2018 12:31 PM, Russell Oliver wrote:
> here are the patches again after the relevant sections being uncrustified.
>
> Kind Regards
> Russell
>
> On Mon, Feb 19, 2018 at 3:07 AM Wayne Stambaugh <stambaughw@xxxxxxxxx>
> wrote:
>
>> This looks a lot more reasonable to me although there may be some corner
>> cases that we haven't thought about but we can fix those as they pop up.
>> I'm sure user's reactions to the all global label solution will be
>> WTF. At least that was my reaction. The amount of work to go back and
>> fix this manually could put off users.
>>
>> Orson, what are your thoughts on this patch. I would like your input
>> before we merge this just in case you see something that I am missing.
>>
>> Russell, if we decide to merge this patch please fix you coding policy
>> violations. You are using K&R curly brace placement.
>>
>> On 02/18/2018 06:48 AM, Russell Oliver wrote:
>>> Attached are patches which implement the logic below and a test eagle
>>> project to demonstrate the problem.
>>>
>>> This patch set though includes a revert of Orsons patch to use only
>>> global labels.
>>> At this point before v5, I'm fine with just using global labels, but I
>>> think this patch set works well
>>>
>>>
>>> Kind Regards
>>> Russell
>>>
>>>
>>>
>>> On Sun, Feb 18, 2018 at 1:58 PM Russell Oliver <roliver8143@xxxxxxxxx
>>> <mailto:roliver8143@xxxxxxxxx>> wrote:
>>>
>>> Yes there should be a way to match them up.
>>>
>>> The logic for it is as follows, for the complex case:
>>>
>>> An eagle project with 2 nets (A and B) that are used for zones and
>>> stitching vias and each appears only on separate sheets, Y and Z
>>> respectively.
>>>
>>> During the import two subsheets are created.
>>>
>>> After import in kicad currently each net would be given the local
>>> net of /Y/A and /Z/B
>>>
>>> Pads on footprints are updated after the netlist and then propagate
>>> to tracks and standard vias.
>>>
>>> This leaves the zones and stitching vias on the orphaned nets, A and
>>> B. Therefore they are then set to the net with the matching local
>>> net with the suffix "/A" and "/B".
>>>
>>> The original logic detected a net that appears on two eagle sheet
>>> and used global labels, which would result in a global kicad net.
>>>
>>> For the case where only one eagle sheet exists a local label can and
>>> is used, resulting in a net local the root sheet. e.g. "/C".
>>> Therefore the suffix matching will also work.
>>>
>>> What I will require is an easy way to get the list of nets currently
>>> in the schematic inside of pcbnew . Which when I looked before
>>> didn't really exist, except for the pcb update code that uses the
>>> KiMail system. At the very least a string array of unique net names
>>> would be enough.
>>>
>>>
>>> Kind Regards
>>> Russell
>>>
>>>
>>>
>>>
>>>
>>>
>>> On 18 Feb 2018 11:38, "Wayne Stambaugh" <stambaughw@xxxxxxxxx
>>> <mailto:stambaughw@xxxxxxxxx>> wrote:
>>>
>>> I'm not too sure about our global label solution. The results
>> are
>>> rather heinous. Take a look at the Ardunino ATMega 2560
>>> board[1] that I
>>> demoed at FOSDEM imported using the new label semantics. I
>>> don't think
>>> users are going to be OK with this. Is there no way we can use
>>> normal
>>> labels properly in hierarchical Eagle schematics?
>>>
>>> [1]:
>>>
>> https://www.arduino.cc/en/uploads/Main/arduino-mega2560_R3-ref-design.zip
>>>
>>> On 02/17/2018 05:54 AM, Maciej Suminski wrote:
>>> > Hi Russell,
>>> >
>>> > No worries, the change was easy. I was mostly interested in
>>> your view
>>> > about the change, and you confirm the main concern is the
>>> appearance of
>>> > imported schematics.
>>> >
>>> > I am not sure if netlist updater is able to link a symbol and
>> its
>>> > corresponding footprint when sheetpath is not complete, but
>>> if that is
>>> > the case then your other idea could be a better solution here.
>>> >
>>> > Best regards,
>>> > Orson
>>> >
>>> > On 02/17/2018 12:18 AM, Russell Oliver wrote:
>>> >> Hi all,
>>> >>
>>> >> Sorry I didn't get to it sooner. Been busy at a new job.
>>> >>
>>> >> I was going to say that globals will work fine except for
>>> the visual
>>> >> aspect. Though I think just replacing the global net on the
>>> pcb with the
>>> >> net from the schematic with the matching end label (
>>> ignoring any sheet
>>> >> path) should work too, since it will be unique anyway if
>>> importing from an
>>> >> eagle schematic.
>>> >>
>>> >> Kind Regards
>>> >> Russell
>>> >>
>>> >>
>>> >> On 17 Feb 2018 10:06, "Maciej Suminski"
>>> <maciej.suminski@xxxxxxx <mailto:maciej.suminski@xxxxxxx>>
>> wrote:
>>> >>
>>> >> Alright, I switched the importer to use global net labels.
>>> Perhaps
>>> >> schematics are not always the prettiest ones, but at least
>>> they are
>>> >> equivalent to the original project.
>>> >>
>>> >> Cheers,
>>> >> Orson
>>> >>
>>> >> On 02/16/2018 02:59 PM, Wayne Stambaugh wrote:
>>> >>> If using global nets resolves the issue and doesn't cause
>>> any other
>>> >>> issues, it has my vote as well.
>>> >>>
>>> >>> On 02/16/2018 08:36 AM, Maciej Sumiński wrote:
>>> >>>> I vote for switching to global nets. I may handle this,
>>> just want to be
>>> >>>> sure Russell has not started already working on it, so
>>> there is no work
>>> >>>> duplication.
>>> >>>>
>>> >>>> Regards,
>>> >>>> Orson
>>> >>>>
>>> >>>> On 02/16/2018 02:17 PM, Wayne Stambaugh wrote:
>>> >>>>> Gentlemen,
>>> >>>>>
>>> >>>>> What is the status of this bug fix? I know there was
>>> some discussion
>>> >>>>> about this patch. Do we have path forward on this yet?
>>> I would like to
>>> >>>>> get this into rc1 if possible.
>>> >>>>>
>>> >>>>> Thanks,
>>> >>>>>
>>> >>>>> Wayne
>>> >>>>> On 02/14/2018 08:17 AM, Russell Oliver wrote:
>>> >>>>>> Please find the attached patch for this issue.
>>> >>>>>>
>>> >>>>>> On Tue, Feb 13, 2018 at 2:34 AM Maciej Sumiński <
>>> >> maciej.suminski@xxxxxxx <mailto:maciej.suminski@xxxxxxx>
>>> >>>>>> <mailto:maciej.suminski@xxxxxxx
>>> <mailto:maciej.suminski@xxxxxxx>>> wrote:
>>> >>>>>>
>>> >>>>>> Hi Russell,
>>> >>>>>>
>>> >>>>>> On 02/11/2018 05:41 AM, Russell Oliver wrote:
>>> >>>>>> > Hi All,
>>> >>>>>> >
>>> >>>>>> > I've discovered the cause of a problem when
>>> importing Eagle
>>> >>>>>> Projects and
>>> >>>>>> > getting the schematic and boards synced.
>>> >>>>>> >
>>> >>>>>> > Currently when importing an Eagle schematic,
>>> labels for nets that
>>> >>>>>> are only
>>> >>>>>> > found one Eagle sheet are imported as local KiCad
>>> labels. This
>>> >>>>>> preserves
>>> >>>>>> > the visual design of the schematic some what. For
>>> eagle
>>> >> schematics
>>> >>>>>> with
>>> >>>>>> > more than 1 sheet, where hierarchical sheets are
>>> created in
>>> >> Kicad,
>>> >>>>>> global
>>> >>>>>> > labels are created to tie the nets together across
>>> the sheets the
>>> >>>>>> same as
>>> >>>>>> > Eagle due to its lack of scopes for net names.
>>> >>>>>> >
>>> >>>>>> > The problem is that the imported PCB will have net
>>> names that are
>>> >>>>>> global
>>> >>>>>> > e.g "VBUS" while the imported schematic may end up
>>> with local
>>> >>>>>> netname for
>>> >>>>>> > the root sheet e.g "/VBUS". This will cause errors
>>> for boards
>>> >> with
>>> >>>>>> zones
>>> >>>>>> > and named vias with the original/global netname
>>> e.g."VBUS"
>>> >>>>>> >
>>> >>>>>> > My proposal to fix this is to create another pass
>>> in the netlist
>>> >>>>>> generation
>>> >>>>>> > code that would remove the forward slash '/' for
>>> unique local
>>> >> nets
>>> >>>>>> in the
>>> >>>>>> > root sheet provided it does not clash with an
>>> existing net name.
>>> >>>>>>
>>> >>>>>> Good catch. I would rather not modify the netlist
>>> generator code,
>>> >> but
>>> >>>>>> add another pass in the board importer. I suggest
>>> the following:
>>> >>>>>> - Move netlist generation from
>>> kicad/import_project.cpp to
>>> >>>>>> SCH_EDIT_FRAME::ImportFile().
>>> >>>>>> - Move netlist import from kicad/import_project.cpp
>> to
>>> >>>>>> PCB_EDIT_FRAME::ImportFile().
>>> >>>>>> - After importing a board and its netlist, go
>>> through the list of
>>> >> zones
>>> >>>>>> and try to assign '/' + zone->GetNetname(). If such
>>> netlist
>>> >> exists, then
>>> >>>>>> it means the assigned net is a local one and needs
>>> renaming. The
>>> >> only
>>> >>>>>> problem here is a potential conflict if there exist
>>> both 'netname'
>>> >>>>>> (local label) and '/netname' (global label). I guess
>>> such case
>>> >> deserves
>>> >>>>>> a huge warning, so the user needs to verify the
>>> import result.
>>> >>>>>>
>>> >>>>>> I suppose the last special case should be simply
>>> reported by the
>>> >> ERC
>>> >>>>>> even without importing a project, as it creates a
>>> connection
>>> >> between two
>>> >>>>>> seemingly not related nets.
>>> >>>>>>
>>> >>>>>> Thoughts?
>>> >>>>>>
>>> >>>>>> Regards,
>>> >>>>>> Orson
>>> >>>>>>
>>> >>>>>> > Kind Regards
>>> >>>>>> > Russell
>>> >>>>>> >
>>> >>>>>> >
>>> >>>>>> > P.S During debugging this issue, I discovered that
>>> a local label
>>> >>>>>> and global
>>> >>>>>> > label of the same name on the same sheet are
>>> connected regardless
>>> >>>>>> of any
>>> >>>>>> > wires. Which if there is a hierarchical sheet can
>>> lead to the
>>> >> same
>>> >>>>>> net for
>>> >>>>>> > 2 wire segments on separate sheets connected only
>>> to local
>>> >> labels,
>>> >>>>>> if the
>>> >>>>>> > identical global label is somewhere else on both
>>> sheets. Is this
>>> >> the
>>> >>>>>> > expected behaviour? or just a side effect?
>>> >>>>>> >
>>> >>>>>>
>>> >>>>>>
>>> >>>>>
>>> >>>>
>>> >>>>
>>> >>>
>>> >>
>>>
>>
>
Attachment:
signature.asc
Description: OpenPGP digital signature
Follow ups
References
-
Improving Eagle Import netlist matching
From: Russell Oliver, 2018-02-11
-
Re: Improving Eagle Import netlist matching
From: Maciej Sumiński, 2018-02-12
-
Re: Improving Eagle Import netlist matching
From: Russell Oliver, 2018-02-14
-
Re: Improving Eagle Import netlist matching
From: Wayne Stambaugh, 2018-02-16
-
Re: Improving Eagle Import netlist matching
From: Maciej Sumiński, 2018-02-16
-
Re: Improving Eagle Import netlist matching
From: Wayne Stambaugh, 2018-02-16
-
Re: Improving Eagle Import netlist matching
From: Maciej Suminski, 2018-02-16
-
Re: Improving Eagle Import netlist matching
From: Russell Oliver, 2018-02-16
-
Re: Improving Eagle Import netlist matching
From: Maciej Suminski, 2018-02-17
-
Re: Improving Eagle Import netlist matching
From: Wayne Stambaugh, 2018-02-18
-
Re: Improving Eagle Import netlist matching
From: Russell Oliver, 2018-02-18
-
Re: Improving Eagle Import netlist matching
From: Russell Oliver, 2018-02-18
-
Re: Improving Eagle Import netlist matching
From: Wayne Stambaugh, 2018-02-18
-
Re: Improving Eagle Import netlist matching
From: Russell Oliver, 2018-02-19