Reverse engineering depicts the sequence of operation of reconstructing a complete project database. For successful reconstruction all parts used in the imported board should be defined in EDWinXP part library. From BOM that contains list of all used parts, we can find whether needed parts are already defined and what missing parts have to be added
Let us reconstruct a project with the following source files:
Import of each ODB++ job steps consists of three automatically following phases. Three phases are as follows.
The program finds out the components used on the board and footprints and silkscreen of the required (traces and via holes)
packages during PCB layout import. The result is as follows:
Exports the net list from the project in order to obtain a template for BOM. During ODB++ import, EDWinXP creates dummy parts that are named as packages. For full part description we need schematic symbol of part (for schematic view) and the package (PCB layout view).The Net list obtained is as follows:
(PATH,Board1 - ODB++ Import(MAINHIER)
(9 Y1,3 U1,4 )
(23 R33,2 )
(22 U1,7 R33,1 R34,2 )
(5 U1,1 R9,2 )
(4 U1,20 R2,2 R5,2 )
(21 U1,9 R18,2 )
(3 FR1,4 Q2,2 R26,1 )
(2 U1,2 U2,2 U2,1 R9,1 R31,1 )
(20 L1,2 C11,1 Q2,1 C10,1 )
(19 C6,1 R1,2 )
(15 Q3,2 R18,1 C11,2 R19,2 )
(18 SW1,2 U1,17 R4,2 SW2,3 )
(13 FR1,2 C1,1 Y1,2 U1,18 U1,16 U1,15 U1,14 U1,13 U1,12 U1,11 U1,10 Q3,3 C6,2 U1,19 C16,2 C12,2 R2,1 R1,1 R31,2 R17,2 R7,2 R19,1 C13,2 R34,1 )
(17 C1,2 U1,6 U1,5 Q1,3 R4,1 )
(12 Q3,1 Q1,1 C14,2 C14,1 L2,2 L2,1 C15,2 C15,1 R3,1 C13,1 )
(27 U1,8 )
(11 FR1,3 )
(10 FR1,1 )
(32 SW2,2 )
(31 SW2,5 )
(30 SW2,1 )
(29 SW2,4 )
(7 C12,1 Q2,3 C10,2 R17,1 )
(16 R25,2 )
(26 L1,1 C16,1 R25,1 R26,2 )
(25 R6,2 R7,1 )
(24 Q1,2 R6,1 R3,2 )
(6 R5,1 )
(28 SW1,1 SW2,6 )
(8 Y1,1 U1,3 ) (1 ) (33 ) )
0,1376,0,2022 (BOARDVERTEX X,Y,ID
),Board1 -ODB++ Import
Invoking Library Explorer:
From EDWinXP Main: System -> Library -> Explorer
From Library Explorer: File -> New -> Package Library And using Copy and Paste copy all
imported packages to the newly created private package library SCANCAD.package.
Create empty private libraries for part descriptions – SCANCAD.Part and schematic symbols – SCANCAD.Symbol.
Assume components with C and R name prefixes respectively capacitors and resistors
Use existing part as template and just replace referenced package:
For example –select part CC1210 as template and open Library Editor
Replace current package with suitable package from SCANCAD.Package library:
And save the updated part description in SCANCAD.PART library
Create remaining parts for the project.
Change pin assignments for transistors because pin numbers used in EDWinXP differs from those in imported packages:
To use private libraries for this project put on top of the search sequence to ensure that when library
elements will be searched for, they will be found first in those libraries and not in system libraries.
(Use dialog invoked from Library Explorer by: View -- >Search Sequence):
PATH,Board1 - ODB++(MAINHIER)
Import ODB++ with a script assigning library parts to the imported components. Since all recreated parts have references both to PCB packages and corresponding schematic symbols, this import produces complete,editable EDWinXP project. Using script is optional.
After import, reconstructed schematic components are placed on top of each other at the center of main page. To make a readable
schematic use auto-placer and auto-router from Schematics Editor. These routines have many features which enable fine tuning of results.
Before components are placed they have to be removed from the page to locations outside that we call BINS.
This function produces following results
Now set up placement rules
And subsequently set up placement parameters:
Before placement can start, at least one “strategic” component has to be placed manually on the page at desired position. We call such component as “hub” component because remaining components will be moved from bins and placed in relation to the hub:
Placement is invoked by selecting tool Autoplace all components with option Autoplace starting from selected hub component and by clicking on component at the center of the board.
Next step after placement would be routing of wires. In the same menu, select function Reroute connections and click option Autoconnect wires.
This shows the result of auto-placement and auto-routing:
Remove all traces and other copper imported from ODB++ leaving only components:
Using Gerber Viewer import artworks for top and bottom layers:
From drill file import holes – though some are missing – probably because on the picture they are filled with solder:
Gerber Viewer allows passing imported graphics to EDWinXP. Fabrication Manager
In this module we have a suite of tools for editing imported graphics and preparing them for PCB reconstruction. Imported graphics are
categorized. This is necessary since Gerber data are ambiguous. For example a line may be a trace segment but may also be a SMD pad.
Import process tries to categorize data as much as it can. For example graphics created with flashed apertures (D03*) are assumed to be pads.
Nevertheless some editing and manual categorization of data is in most cases necessary:
For reconstruction of vias use category Via positions as a template. Since drill file was incomplete (missing holes)
some of via pad positions were categorized as SMD pad positions. Using category to category transfer functions of Graphics
Import Editor in Fabrication Manager create a template for all vias in Via Positions category.
Next Reconstruct from Graphics in Fabrication Manager and reconstruct vias using automatic function.
Vias have to be reconstructed before traces.
Next reconstruct traces. This is also an automatic function in Reconstruct from graphics toolbar.
Adjust pad sizes and hole diameters for 3 different via pad stacks (in Layout Editor)to get a reconstructed = reverse engineered board: