Index: trunk/doc-rnd/devlog/20150830b_back_ann.html =================================================================== --- trunk/doc-rnd/devlog/20150830b_back_ann.html (revision 909) +++ trunk/doc-rnd/devlog/20150830b_back_ann.html (revision 910) @@ -37,9 +37,9 @@ netlist in pcb from whatever gnetlist produced" approach would not work.

An alternative is to keep the netlist as-is, and maintain a separate list of -changes. The form proposed hereby is a table of "operation,net,pinID" or -"operation,net". Operation is one of "del_conn", "add_conn", "del_net" and -"add_net". The table is called the netlist patch. +changes. The form proposed hereby is a table of "operation,pinID,net" or +"operation,args...". Netlist operation is one of "del_conn", "add_conn" and "net_info". The table is called the netlist patch.

For example assume two components with pins A1, A2 and B1, B2, with connections n1=A1-B1 and n2=A2-B2. While routing the designer decides changing them to @@ -46,11 +46,11 @@ n1=A1-B2 and n2=A2-B1 would be easier and is acceptable by the design. The table of changes would contain this: -
op net pinID -
del_conn n1 B1 -
del_conn n2 B2 -
add_conn n1 B2 -
add_conn n2 B1 +
op pinID net +
del_conn B1 n1 +
del_conn B2 n2 +
add_conn B2 n1 +
add_conn B1 n2
The first two lines would remove pins B1 and B2 from n1 and n2. The last two would put them back, swapped. New nets could be created or unused nets @@ -63,17 +63,17 @@

The table would be normalized after operations. For example: -
op net pinID -
del_conn n1 B1 -
add_conn n2 B1 -
add_conn n3 B1 -
del_conn n2 B1 +
op pinID net +
del_conn B1 n1 +
add_conn B1 n2 +
add_conn B1 n3 +
del_conn B1 n2
would be reduced to -
op net pinID -
del_conn n1 B1 -
add_conn n3 B1 +
op pinID net +
del_conn B1 n1 +
add_conn B1 n3
Simple linear crawls on the table seems sufficient: it is expected that pcb designers will make netlist modifications rarely and they will back @@ -93,6 +93,9 @@ case the first row of the table is deleted, as B1 is already removed from n1, but pcb-rnd has no chance to decide if netlist adding B1 to n3 should affect the table adding B1 to n2, so that rule is kept. +

+net_info is used to describe the original members of a net, in +the state they were before any change on the netlist occured.

Support in pcb-rnd: GUI

A trivial idea is to extend the netlist window so that pins can be moved in @@ -107,9 +110,9 @@ Using the above example (n1=A1-B1 and n2=A2-B2 changed to n1=A1-B2 and n2=A2-B1), I believe the user would: -
action screenshot -
  • look at initial rats
-
  • first connect A1 to B1
+
action screenshot patch list after the actions +
  • look at initial rats
(empty) +
  • first connect A1 to B1
(empty)
  • then realize it's very hard to connect A2 to B2 while the previous connection is there @@ -117,6 +120,7 @@
  • and connect A1 to B2
  • which would cause shorts
+ (empty)
  • then he would use the "approve netlist change" hotkey/action on the network; @@ -125,6 +129,13 @@ of the new connection there'd be a rat between A1 and A2 or B1 and B2 too (all 4 pins connected together on the patched netlist at the moment!)
+ +
+net_info n1 A1 B1
+net_info n2 A2 B2
+del_conn B1 n1
+add_conn B1 n2
+
  • the user would then use an action (maybe the same one?) on the rat line @@ -132,11 +143,31 @@ would add a patch to remove the A1-B1 connection
  • the same thing would need to happen to the A2-B2 rat
+ +
+net_info n1 A1 B1
+net_info n2 A2 B2
+del_conn B1 n1
+add_conn B1 n2
+del_conn B2 n2
+
+ +
  • the user then would connect A2 to B1, which again is a short
  • the user would approve it as a new connection
  • we have exactly 2 del_conn and 2 add_conn patches.
+ +
+net_info n1 A1 B1
+net_info n2 A2 B2
+del_conn B1 n1
+add_conn B1 n2
+del_conn B2 n2
+add_conn B2 n1
+
+
An experienced user may think a few steps in advance and chose to first remove the A1-B1 and A2-B2 rats and then create the A1-B2 @@ -234,8 +265,8 @@ done in pcb-rnd as described above.
  • The netlist patch generated for this single change by pcb-rnd would be:
    -		del_conn netname1 U1-1
    -		add_conn netname2 U1-1
    +del_conn netname1 U1-1
    +add_conn netname2 U1-1
     	
  • the user may need to load the netlist patch in ghscem
  • In gschem there would be an indication that highlights any U1-1 pin or @@ -258,7 +289,7 @@ more appropriate. He does the change in pcb-rnd.
  • pcb-rnd emits the following netlist patch for this:
    -		change_attrib U1 footprint=DIP(8) footprint=SO(8)
    +change_attrib U1 footprint=DIP(8) footprint=SO(8)
     	

    (or it could be a del_attrib and add_attrib pair, like with connections)