1 ========================================================================
2 Release Notes for PCB snapshot 20070208
3 ========================================================================
4 - Add polygon clipping code. This is a big change to how polygons are handled.
5 The new code now removes islands and correctly identifies open circuits caused
6 by a trace fully cutting through a polygon. In addition, the RS-274-X output
7 is now simpler and works with some board houses that use older non-conforming
8 sofware. Different styles for thermal reliefs are also now supported as part
9 of the polygon clipper code.
10 - Add support for plugins
11 - Many improvements to the autorouter.
12 - Various improvements to the trace optimizer.
13 - Add a fontmode for editing pcb fonts
14 - Add progress() hook to HID structure
15 - Fix a bug with non-functional windows on some window managers commonly
17 - Add support for controlling pcb via dbus
18 - Fix various bugs which would cause a crash
19 - Add --scale for postscript scaling
20 - Intercept window manager delete events with the GTK gui
21 - Scan the .pcb file for a FileVersion value. This is not written out yet
22 but will be in future versions.
23 - Warn if non-manhattan lines are trying to become pads.
24 - Allow no-solder paste pads to support fiducials
25 - Report in mm or mils as selected by user
26 - Allow reordering of layers
27 - add some more QFN packages
28 - fix building with sun studio c compiler
29 - Made a pcb installation be relocatable.
30 - Convert the m4 libraries to newlib libraries as part of building a distfile.
31 The m4 libraries are still considered the sources and as such are still
32 distributed but this eliminates the need for m4 at runtime for footprints.
33 - Got rid of the pcb wrapper script around pcb-bin.
34 - Remove some old footprints of questionable naming, accuracy, or usefulness.
35 - Get the autosave/backup code working on all GUI's
36 - Fix some drill size rounding in the reports
37 - Changed the backup file name to be derived from the .pcb file name
38 - Added a command line option for DrawGrid
39 - Fix logic for adding new ratlines
40 - Fix gtk grid when board is flipped
41 - Add "find" and "rip-up" buttons to the netlist window
42 - Draw plated holes when exporting
43 - Fix some bugs when converting selection to element
45 - Enhance the win32/build_pcb script used to generate a non-cygwin windows
47 - Make pcb work under non-cygwin windows
49 ========================================================================
50 Release Notes for PCB snapshot 20060822
51 ========================================================================
52 - various manual updates
53 - update the INSTALL documentation
54 - fix a bug where pins turned into pure holes when an element
56 - use locale-independent strtod and dtostr functions to avoid problems
57 loading files saved in some locales.
58 - fixed various bugs which caused pcb to crash
59 - update the gtk status line after save/save as
60 - make the gerber file names be compatible with pre-HID versions
61 - split plated and unplated drill output
62 - fix various typos in menus and comments
63 - add a batch mode HID.
64 - fix drawing of box around text in the buffer
65 - various fixes and improvements to the trace optimizer and the
67 - fix board flipping code
68 - fix rounding bug when creating list of drill sizes
69 - add support for > 8 copper layers
70 - avoid strict aliasing violations encountered with gcc4
71 - refactor code related to handling the filenames in the export
73 - fix layer group parsing code
74 - add the ability to user-configure mouse actions in the lesstif GUI.
75 - enable loaded netlists by default
76 - improve the positioning of the drill list in the postscript output
77 - various improvements to the configure script to improve robustness
78 and improve error messages when thing don't go well.
79 - add IPC style footprints for 01005 passives.
80 - added a Renumber() action which will renumber all reference designators
81 and produced an annotation file for backannotating to schematics.
82 - Draw via annulii on assembly drawings
83 - various other bug fixes and improvements.
85 ========================================================================
86 Release Notes for PCB snapshot 20060422
87 ========================================================================
88 - Several minor portability fixes for Solaris and the SunPRO compiler and
89 for Irix and the MIPSpro compiler.
91 - Added --psfade option for the postscript HID.
93 - Fixed a bug where the "load layout" and some other menu choices
96 - Added remaining actions to the actions reference section of the manual.
98 - Worked around X11 polluting the name space with some of the X header files.
100 - Fix route style "Save as default" bug.
102 - For the Gtk HID, add an alternate vertical window layout mode to
103 help on lower vertical resolution displays.
105 - Fix soldermask draw while TAB view from solder side.
107 - Change default PNG output scaling to be 100 dpi instead of fixing
108 the max dimension at 800 pixels.
110 - Added background image support for the GTK HID (lesstif one has it too).
112 - Fix missing window icons for the main GTK window and log window.
114 ========================================================================
115 Release Notes for PCB snapshot 20060414
116 ========================================================================
117 - This is the first snapshot of the new HID version of PCB. HID, which
118 stands for Human Interface Device is the abstraction created by
119 DJ Delorie which seperates the core PCB code from the graphical user
120 interface. In this release, two GUI HID's are supported, gtk and lesstif.
121 In addition, there are HID exporters for postscript and encapsulated
122 postscript, RS-274-X (gerber), bill of materials, centroid file, and
123 png/gif/jpeg. This represents a major restructuring of the code and
126 - PCB's actions (the commands which drive the core of the program and
127 may be directly accessed by the user) now have the documentation in-line
128 in the code and the actions reference section of the manual is
129 extracted from the in-line documentation. The goal it to provide more
130 complete and accurate documentation. As always the manual is still
131 a work in progress but it is getting more complete and up to date.
133 - Fixed a long standing segfault when saving connection data
137 - Fix some rounding issues when setting sizes. Hopefully this will address
138 the issue with 23.99 mil drills and related problems.
140 - The html manual is now in one file instead of many files
142 - The lesstif HID now supports loading of background images to help
143 recover a layout which may exist in hardcopy form only.
145 ========================================================================
146 Release Notes for PCB snapshot 20060321
147 ========================================================================
148 - Add internal support for more than 8 layers. By default PCB is still
149 compiled for 8 copper layers.
150 - Fixed several minor bugs in the GTK user interface including fixing
151 scrolling of the log window, fixed up some of the DRC reporting
153 - Fixed several key bindings.
154 - Updated refcard.tex to reflect the current set of key bindings.
155 - Fixed some minor bugs which caused compilation problems on some
157 - Converted the QFN footprints to hi-res.
158 - Added documentation to the manual for the centroid file format and
159 the algorithm used for finding the centroid and rotation.
160 - Fixed a bug so that the initial layer named 'component' is actually
161 on the component side of the board and 'solder' is actually on the
162 solder side of the board.
163 - Fixed the pin order in the bourns trim pots (~bourns library)
164 - Added actions and a script to allow command line printing.
165 - Added IPC-7351 recommended footprints for 0201, 0402, etc passives.
166 - Fixed SME5 package.
167 - Fixed a bug which prevented disabling nets from the ratsnest
168 - Fixed a bug where clearances could be set 1 below the spacing
169 - Fixed clearline flag so that arcs also have this property.
170 - Speed up rtree searches and other autorouter speedups.
171 - Fixed a bug in computation of the closest polygon point.
172 - Use rtrees for polygon handling for speed improvements.
173 - Add a ChangePinName() action.
174 - Fix a bug which caused duplicate rats names when manually adding
176 - Added DRC checks for minimum drill diameter and minimum annular ring.
177 - Add a minimal glossary to the manual
178 - Fix the author name in the fab drawing
179 - Cause the crosshair to snap to pad ends instead of center for rat
181 - Add "join" to SetFlag, ClrFlag and ChangeFlag.
182 - Added inline documentation for the pcb file syntax. The manual now
183 is up to date and correctly documents the file format. In addition
184 the inline documentation will make it much easier to maintain the
186 - Remove some broken m4lib footprints
187 - Put the correct setting for the gschem footprint= attribute in []
188 in the library window for the m4 libraries.
190 ========================================================================
191 Release Notes for PCB snapshot 20050609
192 ========================================================================
194 - **** The GUI is now based on gtk2 instead of Xaw **** This represents
195 a fairly major change. You will now need gtk-2.4 or higher installed
196 along with any of its dependencies to build pcb. On linux
197 distributions, it is probably the case that you already have this,
198 but see the README-GTK_PORT file for a note on gtk versions.
199 For *BSD, Solaris, and others, you may want to use NetBSD's pkgsrc
200 to help install gtk2 and its dependencies.
202 - Flags are stored symbolically in the .pcb file. This is the start
203 of moving to support >8 layers. Please note that >8 layer support
204 is not yet available in this snapshot.
208 - As part of the switch to gtk2, the user customizable menu feature has
209 been temporarily broken. Hopefully this will be fixed by the next
210 snapshot. In addition, the loading of background images has also been
213 ========================================================================
214 Release Notes for PCB snapshot 20050315
215 ========================================================================
217 - Several footprint library fixes including TO-220 parse errors and
218 incorrect drill holes on several componenets.
220 - Fixed a crashing bug in the pinout window.
222 - Allow the FAB author to be set via an Xresource to override what
223 PCB might have gotten from the gecos information.
225 - Added table of standard drill sizes to the manual.
227 - Fixed a crashing bug when trying to use arrow keys to adjust the scale
228 slider in the print dialog box.
230 ========================================================================
231 Release Notes for PCB snapshot 20050127
232 ========================================================================
234 - Fix drill size for PLCC sockets in ~geda library. Fix drill size for
235 LED3 and LED5 footprints in ~geda library.
237 - Move the right-click popup menu to pcb-menu.res.
239 - Add DisperseElements() action for spreading out elements in an initial
242 - Fix fab drawing output for the case where a very small number of
243 drill sizes are used.
245 - Various documentation improvements.
247 - Remove many compiler warnings.
249 - Added metric output to the cursor display
251 - Fix <Key>. for toggling 45 degree mode.
253 - Crosshair snap snaps to center of pads and also to the mark of the
256 - Protect all strcmp() calls with a check for a NULL pointer. Fixes
259 - Fixed the mode buttons which were unresponsive in some versions of
262 - Element names may be edited over the element.
264 - Added --enable-efence for ElectricFence debugging. Off by default
266 - Added --disable-rpath to avoid using rpath for the X libraries.
268 - Added vendor resource file support. This allows lets you specify
269 a set of allowed drill sizes and drc rules for a particular vendor.
271 - Added -action command line option to allow executing an action on
274 - Date and time of compilation added to About dialog.
276 - Fix a bug where the soldermask relief on a new element is 100x smaller
277 than the default when "convert buffer to element" is used.
279 - Fix a name_tree corruption bug when changing an element name.
281 - Don't remove the formatted manual with a 'make clean' since they are
282 part of the distfile.
284 - Let automake handle the html and pdf conversion. This ends up using
285 texi2pdf for the pdf output which seems to do a better job than ps2pdf.
287 - Sort actions by modifier so that both Ctrl<Key>x and <Key>x work.
289 - Fix a SelectByName bug.
291 - Fix non-gcc compilation
293 - Command history added to :
295 - Fixed pinout window crash
297 - Allow Ctrl-drag to copy objects in arrow mode.
299 - Fixed a polygon clearance bug
301 - Fix an arc bounding box calculation error.
303 ========================================================================
304 Release Notes for PCB snapshot 20040903
305 ========================================================================
307 - enable -Wall when compiling with gcc. Many compiler warnings have
310 - add a short man page which refers the user to the real documentation
312 - Added ExecuteFile(file) action which allows the execution of several
313 actions contained in a text file.
315 - Added -script <file> flag which specifies a file containing actions
316 to be executed upon startup.
318 - Various documentation improvements
320 - Protect some gcc extensions with tests for gcc. This allows
321 compilation with the IRIX c compiler.
323 - Add support for a background image in the drawing area which can
324 help in importing a layout from a scanned image.
326 - Updated the ~geda library 150 and 300 mil width SOIC packages
327 to remove silk on pads and to more closely follow the IPC
330 - Added support for menu accelerators.
332 - segfault when breaking apart an element with no element selected
335 - autorouter improvements
337 - added more 400mil DIP packages to ~geda library
339 - fix a trace optimizer bug which produced a segfault
341 - other various bug fixes
344 ========================================================================
345 Release Notes for PCB snapshot 20040530
346 ========================================================================
347 This has been an exciting 3 months for PCB. Many improvements have
348 been made in the program as well as additions and improvements to the
349 footprint library. Thanks to everyone who has provided feedback,
352 ----------------------
353 Additions/Improvements
354 ----------------------
355 - Expanded DRC checking
356 - "Realtime" DRC checking
357 - DRC settings are now stored in the board fle
358 - Centroid (X-Y) and bill of materials output
359 - Dynamic menus. Users can now customize the menus via a
360 site-wide, per-user, or per-project menu resource file.
361 - Significant improvements to autorouting of congested designs.
362 - Autorouter can now use power planes.
363 - Improved appearance in autorouter output.
364 - Silk on pads/pins is clipped in RS-274-X output
365 - Ordering is preserved when writing output files so that diff
366 may be effectively used on pcb files.
367 - The autoplace feature now actually works
368 - Added ToggleVisibility action
369 - Most of the database is now kept in rtrees which avoids linear
370 searches. This speeds up operation significantly.
371 - Added SetFlag, ClrFlag, ChangeFlag actions
376 - pin/pad bounding box calculation fixed. Components can
377 now be placed closer to the edge of the board.
378 - miter trace optimization bug.
379 - Fix bug with pins which are enclosed by multiple polygons.
380 - Shorts to unnamed elements and pins are handled correctly.
381 - Various memory leaks fixed.
382 - Fixed some bugs with a really high zoom.
383 - Fixed default media selection in postscript print dialog
384 - Fix some DRC bugs with square pins.
389 - Added SOJ footprint family (~geda library)
390 - Added CTS series 742/3/4/5/6 resistor pack footprints (~cts library)
391 - Added PKG_CONNECTOR_DIL macro to let the HEADER*_1 footprints work
393 - Correct the SDIP footprints (~geda library)
394 - Correct some Minicircuits footprints (~minicircuits library)
395 - Correct some panasonic footprints (~panasonic library)
396 - Change refdes silk size for sockets (~johnstech library)
397 - Increase soldermask relief on some mounting holes
399 - Convert the COMMON_SMT_DIL_MIL and COMMON_SMT_DIL_MM macros
400 used by several other libraries to the hi-res format.
401 - Correct pin count on 100 pin QFP packages (100 not 72)
403 - Correct pin count on HEADER60_2 (60 not 50) (~geda library)
405 ========================================================================
409 (1) New library system. A directory tree is parsed and added to the library
410 selector window. This directory is specified in the config.h file as
411 PCBTREEDIR and should point to a directory where any pcb user that needs to
412 create library elements has write privileges. The "-libtree X" switch will
413 cause pcb to use directory X instead of the installed default for the new
414 library directory. You should continue to be wary of the old library
415 elements, many of them are not quite right. (Just check them carefully before
416 fabing to be sure there are no surprises). My intent is to create a
417 repository for new elements THAT PEOPLE HAVE FABRICATED SUCCESSFULLY in order
418 to grow a reliable library.
420 (2) Element files can now contain layers (line, arcs, polygons), vias and
421 elements. The new library system reads from element files (no need to learn
422 M4). The expanded capability of element files allows you to put useful
423 sub-circuits into the library. For example, a QFP package with a break-out
424 via pattern can be stored as a library element. Be careful with this as the
425 layers are saved simply by their layer number and lose any association with a
426 group (e.g. whether it is the component, or solder-side layer).
428 (3) Improved fascilities for creating elements from drawn objects. Now you
429 can put an element in the buffer, and break it into it's consitutent parts.
430 Paste this to the layout, make changes, then put it back in the buffer to
431 convert to an element. You can also save a buffer's contents to an element
432 file (i.e. add it to the library). Of course element files are still just
433 text files so you can edit them at will. Draw the element outline on the silk
434 layer (lines and arcs, no polygons), use Vias to make pins or holes, and lines
435 on the component and/or solder layers for SMD pads. Number the pins and pads
436 with the name ("n" key) entry, then cut it all to the buffer and select
437 "convert buffer to element". Saved elements always appear in the file in a
438 component-side orientation (even if you save while viewing the solder side).
440 (4) Support for elements with surface-mount pads on both sides of the board.
441 e.g. edge connectors. This also allows creation of elements with multiple
442 pins/pads having the same "number" string. This can be used, for example,
443 to create a DIP footprint that has a pad on top and bottom coincident
444 with each pin. This effectively makes the pins have elongated copper pads
445 on the top and bottom - something several home-made board makers have
446 requested. If you do create an element with multiple pins having the
447 same number, and that number appears in the netlist, they MUST be connected
448 before the board is considered routed. See the "14DIP_oval_pad" example
449 in the "test" section of the library for an example.
451 (5) Support for the strokes library. Compiling with strokes enabled (see
452 config.h) binds the middle button to recognize strokes for the user
453 interface. Zoom in, Zoom out, choose the line, arrow, or via tools, rotate an
454 object, etc. can be done with simple strokes. Check the source code
455 (FinishStroke() in action.c) to see what the strokes are.
457 (6) Better fascilites for panning at high zoom: Shift-button3 down shows the
458 whole layout - move the crosshair to where you want the display centered,
459 then release the mouse button - the previous zoom level is restored, centered
460 at the new location. You can do this while in the middle of drawing, moving,
461 etc. You can also place the cursor in the panner area, and use the arrow keys
462 on the keyboard to scroll half a window view per keypress. Of course you can
463 still drag the screen with button1 with the panner tool (previously known
465 Auto-scrolling is also improved. If you want to use menus, buttons,
466 the panner, placing the pointer over them stops auto-scroll. If you
467 want to go to another window and not auto-scroll, pass the pointer
468 over one of those things before heading to the other window.
470 (7) Auto-router. The auto-router routes with the active line size, via size,
471 and keep-away. It is a grid-less router, and will automatically avoid any
472 existing traces, etc. that you've placed on the board. It uses all layers
473 that are visible when invoked, so turn off any layers you don't want it to
474 use. You can auto-route all rat lines, or selected rat lines. This was
475 written by C. Scott Ananian
477 (8) Fascilities to rip-up tracks and vias that were placed by the
478 auto-router. You can rip-up all auto-routed tracks, or just those that are
479 selected (and were auto-routed).
481 (9) Auto-placement code. It's broken. Don't use it.
483 (10) Many functions added to the menus that were previously accessible only
484 through keys or typed commands. e.g. SetValue(Grid,1), DRC().
486 (11) You can turn on/off the requirement for unique element names. When
487 unique names are required, they may be automatically generated when pasting.
488 Turn on uniqueness for a single layout, turn off if placing several boards in
489 a panel (or if you just want duplicate names). It's in the settings menu.
491 (12) Support for metric grids. Coordinates are still always integer mils,
492 but you can have the grid fall on a regular metric spacing to within
493 +/- 1 mil. Selectable in the "Screen" menu and also with the "SetValue(Grid, x)"
494 command; the value x is still in mils, but it's floating point now. Also
495 the concept of "absolute" grid has been eliminated - just align it where
498 (13) Support for viewing the soldermask. The Screen menu has a selection for
499 turning on/off the display of the solder mask. You can also change the
500 size of mask holes when the mask is displayed by using the
501 "ChangeClearSize(what, change)" function (k key). If the mask is not
502 displayed, this function changes polygon clearances as before. For example
503 you could elliminate all via soldermask holes by selecting everything
504 (make sure vias are turned on), then typing the command:
505 ":ChangeClearSize(SelectedVias, 0)" There is a special case for
506 vias to change the mask diameter equal to the via diameter, by using
507 +0 as the size change.
509 (14) Support for creation/addition of netlist by drawing rat lines.
510 Select "netlist" from the drawing layer, and use the line tool to
511 add nets. Undo removes the rat, but not the created net. To delete
512 a netlist entry, select the connection in the netlist window and
513 hit the backspace key. The "netlist" layer must be the active layer
514 to delete connections like this. This is NOT the recommended way
515 to create a netlist, but a lot of people asked for it.
517 (15) Support for snapping the crosshair to pins/pads even when they're not on
518 grid. Selectable in the "Settings" menu. Thanks to Borges for this
521 (16) Doesn't draw negative lines and arcs in print output unless
522 necessary. It still does this for all pads though. Doesn't technically
523 matter, but there are a lot of bogus gerber viewers out there and
524 people that are easily confused by gerber files that completely meet
527 (17) Added a "Lock" feature that lets you lock an object so it
528 can't be selected, moved, or modified. Very handy for making a
529 board-outline element (e.g. pc104 card) invisible to the Arrow
532 (18) lots of bug fixes (plus, no doubt, lots of newly introduced ones).
534 (19) a tool (in the tools folder) for converting to/from ncap files
535 for auto-routing with MUCS-PCB. I have not tried this myself. Written
536 By Luis Claudio G. Lopes
538 (20) a new build system based on the GNU automake and autoconf tools.
539 This should make compiling on different systems easier than with the
540 old imake based build system.
542 (21) A program for quickly generating QFP elements. Its invoked
543 from the old library (~generic/qfp menu, generic)
545 (22) Increased resolution. The internal unit is now 0.01 mil
546 as opposed to 1.0 mil which was the previous unit.
548 Quick and dirty explanation of some as-yet undocumented features:
550 Netlist window: double-click on a net-name to enable/disable it. A "*"
551 appears next to the name when it is disabled. Disabled means rats nests will
552 ignore the net. Click on a connection to select it (and center it) in the
553 layout window. "Finding" a connection starting from a pin or pad will
554 select it in the netlist window.
556 The "j" key controls whether a line (arc) clears (plow through) polygons or
557 touches them. Newly created lines and arcs follow the setting in the
558 "settings" menu. Put the cursor over the line or arc you want to change, then
559 hit the "j" (j for join) key.
561 The "k" key controls the width of clearance around a line (arc) when it
562 plows. "k" key increases clearance by 2, Shift-K decreases it by 2, also
563 works for pins and vias piercing polygons. The initial value for new objects
564 (but not element pins/pads which is in the element definition)
565 is controlled by the "keepaway" setting, changeable in the "sizes" menu.
567 When drawing lines, you can start a new anchor point without drawing from
568 the previous point by either clicking button3, or Ctrl-button1. DON'T
569 USE BUTTON2 - that would be wrong, even if it sort of works.
571 The Arrow tool is for selecting/deselecting objects, and moving them.
572 Shift-click to add to the existing selection. You can click-drag to draw
573 boxes for box selection. If you click-drag on an already selected item, you
574 will move the selection. If you click-drag on an un-selected item, you will
575 move that item without selecting it. This last technique is the only way to
576 move a point (e.g. end point of a line), and is also the only way to perform
577 moves with rubber-banding (i.e. rubber-banding doesn't work with selections).
578 Moving a selection actually cuts it to a special paste buffer, then pastes it
579 at the new location. Always start a box selection by clicking in an empty
580 region of the board. It may be desireable to turn off some visibility in
581 order to simplify the box selection operation. You can also lock
582 an object to make it invisible to the Arrow tool (so box selections can
583 begin over the object). If you don't configure for
584 strokes, the middle button is bound to the arrow tool.
586 To move an element or silk text to the opposite side of the board, use the
587 "b" key (b for backside) to send it to the opposite side. You can also cut an
588 object to a buffer, switch viewing sides (tab), then paste it. The buffer can
589 be used this way to flip layout traces to the other side too, although if
590 layer groups are used, the precise layer they appear on may not have the
591 color you want, but the connectivity should not change.
594 Installation tip: BE SURE TO INSTALL THE NEW X11 RESOURCE FILE - run
595 make install to do this. If you just want to test without installing,
596 run the pcbtest.sh script in the src directory.