On Nov 22, 2019, at 1:44 PM, Brian Piccioni
<brian@xxxxxxxxxxxxxxxxxxxxx <mailto:brian@xxxxxxxxxxxxxxxxxxxxx>>
wrote:
Wayne
I thought I would weigh in as I am collaborating with Alexander.
If a designer manually re-annotates a board and schematics he would
follow a number of steps:
1. Ensure the schematics, PCB, and netlist are coherent and without
error (I.e. nothing in the schematics or PCB which is not in the
other, netlist corresponds to schematic and PCB);
2. Manually edit each component on the board and keep a record of
every change in a “change list”;
3. Manually edit the schematic in accordance with the “change list”;
4. Regenerate the netlist;
5. Update PCB from schematics;
6. Verify that the schematics and PCB are still coherent.
Manually editing the schematic would consist of going from component
to component, looking up the component ref des in the “change list”,
changing the ref des to the new value, and moving to the next
component. The final step would only be necessary due to the near
certainty that manual re-annotation would have introduced errors.
This is, more or less, what I do in my standalone application.
Unfortunately, I also run roughshod over timestamps, etc..
Nonetheless, the application has been well received and appears to
be used a fair bit.
If we were to write a demon (probably the wrong term) which
essentially did the same steps, would that address your concerns?
Of course, we would use Kiway to accomplish the transfers but the
approach would be pretty much identical to a manual re-annotation
except far less likely to introduce errors.
If that would not work, can you please explain why? Perhaps if we
understand why we can suggest solutions.
Brian
*From:*Wayne Stambaugh <mailto:stambaughw@xxxxxxxxx>
*Sent:*November 22, 2019 12:03 PM
*To:*Alexander Shuklin <mailto:jasuramme@xxxxxxxxx>
*Cc:*KiCad Developers <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
*Subject:*Re: [Kicad-developers] Back annotate references from PCB
I would prefer that you did ask questions rather than spending a lot of
development time on a solution that would not be accepted because it
breaks things. This is not a trivial problem although it may appear
that way. There are plenty of ways to implement back annotation that
will break things in unexpected ways. There are a very few ways to not
break things. This is why I'm telling you this. If you don't care
about the schematic and the board references being synchronized, then
back-annotation isn't really necessary. As soon as you attempt to
back-annotated the schematic from the board, all of the issues that I
have previously discussed come in to play and have to be addressed.
On 11/22/19 9:53 AM, Alexander Shuklin wrote:
> Excuse me for so much questions. There's plenty of ways how it can be
> done, and I'm quite new, maybe I don't see some simple way.
> I can back up data from pcbnew which is not up to date to schematics,
> after that I call update pcb dialog. Somebody will want to update pcb
> by references and after that I will have pcbnew old data which is not
> up to date either to schematics or layout anymore. I don't think there
> will be straight forward solution how to solve it.
> May I just open update pcb dialog and ask user to care about schematic
> and layout being up to date?
>
> On Fri, 22 Nov 2019 at 17:16, Wayne Stambaugh
<stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>> wrote:
>>
>> There is no need to create your own dialog. Just call the update
board
>> from schematic function before you back annotate. You will have
to make
>> a temporary copy of your board reference changes because updating
from
>> the schematic will clobber any reference changes in the board.
>>
>> On 11/22/19 9:13 AM, Alexander Shuklin wrote:
>>> Hi Wayne,
>>>
>>> I don't want to start PCB update from eeschema straight away,
because
>>> if you run back-annotation, you already changed some references in
>>> layout and you gonna lose it. And probably you can get some
footprints
>>> which are not connected to any of components in schematics as
there's
>>> possibility in pcbnew to create them. What I almost done is
reporting
>>> about all errors in dialog (I currently use annotation dialog in
>>> eeschema, but I can create my own if it necessary), and if
there's any
>>> errors, it will not allow you to back-annotate. It will ask you
to fix
>>> them first.
>>> But if you want, I can run "update pcb from schematic" dialog.
>>>
>>> On Fri, 22 Nov 2019 at 16:30, Wayne Stambaugh
<stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>> wrote:
>>>>
>>>> Hi Alexander,
>>>>
>>>> You must ensure that all of the reference paths are up to date
with the
>>>> schematic before you attempt to back annotate from the board.
Schematic
>>>> changes can result in the footprint paths in the board being
out of sync
>>>> so you have to perform and update board from schematic (this code
>>>> already exists) before you attempt to run the back annotation
process
>>>> from the board editor to ensure all of the paths are up to
date. This
>>>> will ensure when you back annotate that there is a one to one
>>>> correlation between board footprint sheet paths and schematic
symbol
>>>> sheet paths.
>>>>
>>>> Cheers,
>>>>
>>>> Wayne
>>>>
>>>> On 11/22/19 1:18 AM, Alexander Shuklin wrote:
>>>>> Hi Wayne,
>>>>> thanks for answer.
>>>>> Hopefully I will show you commit soon, so team could look,
check and
>>>>> suggest something about that. I'm aware about differences between
>>>>> PCBnew and eeschema and just now I'm writing algorithm that
will check
>>>>> it.
>>>>> Do you mean that some schematic file(.sch) can be used in more
than
>>>>> one projects? So, I don't plan to change the unique IDs and those
>>>>> components will still be linked to each other, but if
references will
>>>>> be changed it will make a mess in another project.
>>>>> I have 3 ideas how I can deal with that:
>>>>> 1) create a dialog, which will say something like "please make
sure,
>>>>> that your schematic files are not shared between different
projects"
>>>>> 2) I can go by recently opened projects, parse schematics in
each of
>>>>> them and look if any schematic uses sheet, which already in use in
>>>>> current project. I'm now sure, but I would presume, that it
will be
>>>>> quite slow.
>>>>> 3) To hold information in what project this particular
schematics was
>>>>> used. So that's should be saved in .sch file then. But I don't
think
>>>>> that information will be very valuable.
>>>>>
>>>>>
>>>>> On Thu, 21 Nov 2019 at 00:07, Wayne Stambaugh
<stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>> wrote:
>>>>>>
>>>>>> On 11/7/19 5:06 AM, Alexander Shuklin wrote:
>>>>>>> Hi,
>>>>>>> is it alright to answer anybody in one letter?
>>>>>>> First of all, don't take amiss if I keep silence for a day,
as I have
>>>>>>> 2 little children and at the best case I have couple of
hours a day on
>>>>>>> my own.
>>>>>>>
>>>>>>> On Wed, 6 Nov 2019 at 16:27, Wayne Stambaugh
<stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>> wrote:
>>>>>>>> Complex schematic hierarchies (using the same schematic
more than once in a design) always trips up new developers.
>>>>>>> Can you please explain a bit more? I know that you can use
>>>>>>> hierarchical sheets, so there will be more than one sch
files in the
>>>>>>> schematic. And there's also "multi-symbols" which have few
eeschema
>>>>>>> symbols but one footprint. I'm not quite understand what
means "using
>>>>>>> the same schematic more than once in a design", as every
symbol has
>>>>>>> unique ID. Is it something else I'm not aware of?
>>>>>>
>>>>>> Yes, every symbol has a unique path ID but that doesn't mean
that the
>>>>>> board and the schematic will always be in sync so this is
where issues
>>>>>> come into play. There also can be unique IDs from other projects
>>>>>> because schematics can be shared between projects so you have
to be
>>>>>> careful not to break all of these cases.
>>>>>>
>>>>>>>> You'll want to take a close look at KIWAY::ExpressMail()
and KIWAY_PLAYER::KiwayMailIn()
>>>>>>> Ok, I'll look at that. I think I've seen that in footprints
back annotation.
>>>>>>>> This is unfortunate. Being able to work directly with on
of the lead developers would have made this task a lot easier to
understand. You are always free to reach out for help on this
mailing list.
>>>>>>> Thanks for that. Actually now i think to join FOSDEM, but I
need visa
>>>>>>> and I'm not sure yet.
>>>>>>>> Asking first prevents you from working on something that
someone else may already be working on and writing code that would
be immediately rejected
>>>>>>> Actually I already made that mistake, when made board statistics
>>>>>>> dialog. It was accepted, but I felt myself really stupid.
>>>>>>>> Good luck and thank you for your interest in contributing
to KiCad.
>>>>>>> Thanks! I will try hard to match coding and git polices.
>>>>>>>
>>>>>>> On Wed, 6 Nov 2019 at 17:24, Jon Evans <jon@xxxxxxxxxxxxx
<mailto:jon@xxxxxxxxxxxxx>> wrote:
>>>>>>>> Eeschema now keeps its internal net state up to date
continuously, but I didn't work on any continuous syncing to
PcbNew. The way it works in Eeschema, the graphical schematic is
still the driving source of truth; the netlist does not drive the
schematic.
>>>>>>> Am I right in general idea: Eeschema creates netlist which
updates
>>>>>>> continuously. And PCB updates through eeschema by "uppdate
PCB from
>>>>>>> schematic" tool. It isn't planned to do that automatically and
>>>>>>> continuously, is it?
>>>>>>>
>>>>>>> On Wed, 6 Nov 2019 at 17:56, Brian Piccioni
<brian@xxxxxxxxxxxxxxxxxxxxx <mailto:brian@xxxxxxxxxxxxxxxxxxxxx>>
wrote:
>>>>>>>> My utility is up on GitHub as a standalone app. I learned
enough c++ and wxWidgets so porting it to Kicad should be useful.
>>>>>>> I've seen your app, and bug report. And actually I try to
jump in
>>>>>>> because I use geometrical renumber of components as well)))
>>>>>>>> Replacing my homebrew parsing of PCB, Schematic, and
netlist files to calls to internal Kicad functions/methods in the
respective apps;
>>>>>>>> Once this is done I’ll use Kiway to communicate the changes
between eeSchema and PCBNew.
>>>>>>> Have you already start to create communication between
eeschema and
>>>>>>> pcbnew? If not, don't you mind if I'll start with that
first? From my
>>>>>>> point of view, that's a worst part in this question today.
For example
>>>>>>> you can renumber modules in pcbnew even by python scripts,
but you
>>>>>>> have no any tool to change schematic after that. And by the
way it's
>>>>>>> not only about renumber of all components. Somebody would
like to
>>>>>>> change some references in pcbnew by hand at push that data
back to
>>>>>>> schematics.
>>>>>>>> In the final version, if I understand correctly, in V6
changes to the PCB will be back-annotated to the schematic in order
to support pin and gate swapping. So updating the PCB will
immediately incorporate the changes to the schematic. I haven’t seen
any discussions of how this will be done but clearly if the
prototype as described above works it will be trivial to support the
V6 common database.
>>>>>>> Hm... I haven't think about that... I'm not sure if pin
swapping will
>>>>>>> interact with back-annotation tool. I wouldn't say that, but if
>>>>>>> somebody has comments and thoughts about that, it would be
greatly
>>>>>>> appreciated.
>>>>>>>
>>>>>>> As far as I see now, It should be some tool a bit similar to
"Update
>>>>>>> PCB from schematic", which will utilize KiWay functions to
send data
>>>>>>> between PCBnew and eeschema..
>>>>>>>
>>>>
>>>> _______________________________________________
>>>> Mailing list:https://launchpad.net/~kicad-developers
>>>> Post to :kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto: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
<mailto: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
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
Unsubscribe :https://launchpad.net/~kicad-developers
More help :https://help.launchpad.net/ListHelp