======================================================================== Release Notes for PCB snapshot 20050609 ======================================================================== - **** The GUI is now based on gtk2 instead of Xaw **** This represents a fairly major change. You will now need gtk-2.4 or higher installed along with any of its dependencies to build pcb. On linux distributions, it is probably the case that you already have this, but see the README-GTK_PORT file for a note on gtk versions. For *BSD, Solaris, and others, you may want to use NetBSD's pkgsrc to help install gtk2 and its dependencies. - Flags are stored symbolically in the .pcb file. This is the start of moving to support >8 layers. Please note that >8 layer support is not yet available in this snapshot. - Fixes for gcc-4 - As part of the switch to gtk2, the user customizable menu feature has been temporarily broken. Hopefully this will be fixed by the next snapshot. In addition, the loading of background images has also been temporarily broken. ======================================================================== Release Notes for PCB snapshot 20050315 ======================================================================== - Several footprint library fixes including TO-220 parse errors and incorrect drill holes on several componenets. - Fixed a crashing bug in the pinout window. - Allow the FAB author to be set via an Xresource to override what PCB might have gotten from the gecos information. - Added table of standard drill sizes to the manual. - Fixed a crashing bug when trying to use arrow keys to adjust the scale slider in the print dialog box. ======================================================================== Release Notes for PCB snapshot 20050127 ======================================================================== - Fix drill size for PLCC sockets in ~geda library. Fix drill size for LED3 and LED5 footprints in ~geda library. - Move the right-click popup menu to pcb-menu.res. - Add DisperseElements() action for spreading out elements in an initial layout. - Fix fab drawing output for the case where a very small number of drill sizes are used. - Various documentation improvements. - Remove many compiler warnings. - Added metric output to the cursor display - Fix . for toggling 45 degree mode. - Crosshair snap snaps to center of pads and also to the mark of the element. - Protect all strcmp() calls with a check for a NULL pointer. Fixes various crashes. - Fixed the mode buttons which were unresponsive in some versions of the X libraries. - Element names may be edited over the element. - Added --enable-efence for ElectricFence debugging. Off by default - Added --disable-rpath to avoid using rpath for the X libraries. - Added vendor resource file support. This allows lets you specify a set of allowed drill sizes and drc rules for a particular vendor. - Added -action command line option to allow executing an action on startup. - Date and time of compilation added to About dialog. - Fix a bug where the soldermask relief on a new element is 100x smaller than the default when "convert buffer to element" is used. - Fix a name_tree corruption bug when changing an element name. - Don't remove the formatted manual with a 'make clean' since they are part of the distfile. - Let automake handle the html and pdf conversion. This ends up using texi2pdf for the pdf output which seems to do a better job than ps2pdf. - Sort actions by modifier so that both Ctrlx and x work. - Fix a SelectByName bug. - Fix non-gcc compilation - Command history added to : - Fixed pinout window crash - Allow Ctrl-drag to copy objects in arrow mode. - Fixed a polygon clearance bug - Fix an arc bounding box calculation error. ======================================================================== Release Notes for PCB snapshot 20040903 ======================================================================== - enable -Wall when compiling with gcc. Many compiler warnings have been fixed. - add a short man page which refers the user to the real documentation - Added ExecuteFile(file) action which allows the execution of several actions contained in a text file. - Added -script flag which specifies a file containing actions to be executed upon startup. - Various documentation improvements - Protect some gcc extensions with tests for gcc. This allows compilation with the IRIX c compiler. - Add support for a background image in the drawing area which can help in importing a layout from a scanned image. - Updated the ~geda library 150 and 300 mil width SOIC packages to remove silk on pads and to more closely follow the IPC recommendations - Added support for menu accelerators. - segfault when breaking apart an element with no element selected bug fixed. - autorouter improvements - added more 400mil DIP packages to ~geda library - fix a trace optimizer bug which produced a segfault - other various bug fixes ======================================================================== Release Notes for PCB snapshot 20040530 ======================================================================== This has been an exciting 3 months for PCB. Many improvements have been made in the program as well as additions and improvements to the footprint library. Thanks to everyone who has provided feedback, patches, etc. ---------------------- Additions/Improvements ---------------------- - Expanded DRC checking - "Realtime" DRC checking - DRC settings are now stored in the board fle - Centroid (X-Y) and bill of materials output - Dynamic menus. Users can now customize the menus via a site-wide, per-user, or per-project menu resource file. - Significant improvements to autorouting of congested designs. - Autorouter can now use power planes. - Improved appearance in autorouter output. - Silk on pads/pins is clipped in RS-274-X output - Ordering is preserved when writing output files so that diff may be effectively used on pcb files. - The autoplace feature now actually works - Added ToggleVisibility action - Most of the database is now kept in rtrees which avoids linear searches. This speeds up operation significantly. - Added SetFlag, ClrFlag, ChangeFlag actions --------- Bug Fixes --------- - pin/pad bounding box calculation fixed. Components can now be placed closer to the edge of the board. - miter trace optimization bug. - Fix bug with pins which are enclosed by multiple polygons. - Shorts to unnamed elements and pins are handled correctly. - Various memory leaks fixed. - Fixed some bugs with a really high zoom. - Fixed default media selection in postscript print dialog - Fix some DRC bugs with square pins. ------------------ Footprint Library: ------------------ - Added SOJ footprint family (~geda library) - Added CTS series 742/3/4/5/6 resistor pack footprints (~cts library) - Added PKG_CONNECTOR_DIL macro to let the HEADER*_1 footprints work (~geda library) - Correct the SDIP footprints (~geda library) - Correct some Minicircuits footprints (~minicircuits library) - Correct some panasonic footprints (~panasonic library) - Change refdes silk size for sockets (~johnstech library) - Increase soldermask relief on some mounting holes (~johnstech library) - Convert the COMMON_SMT_DIL_MIL and COMMON_SMT_DIL_MM macros used by several other libraries to the hi-res format. - Correct pin count on 100 pin QFP packages (100 not 72) (~geda library) - Correct pin count on HEADER60_2 (60 not 50) (~geda library) ======================================================================== New Features for 2.0 (1) New library system. A directory tree is parsed and added to the library selector window. This directory is specified in the config.h file as PCBTREEDIR and should point to a directory where any pcb user that needs to create library elements has write privileges. The "-libtree X" switch will cause pcb to use directory X instead of the installed default for the new library directory. You should continue to be wary of the old library elements, many of them are not quite right. (Just check them carefully before fabing to be sure there are no surprises). My intent is to create a repository for new elements THAT PEOPLE HAVE FABRICATED SUCCESSFULLY in order to grow a reliable library. (2) Element files can now contain layers (line, arcs, polygons), vias and elements. The new library system reads from element files (no need to learn M4). The expanded capability of element files allows you to put useful sub-circuits into the library. For example, a QFP package with a break-out via pattern can be stored as a library element. Be careful with this as the layers are saved simply by their layer number and lose any association with a group (e.g. whether it is the component, or solder-side layer). (3) Improved fascilities for creating elements from drawn objects. Now you can put an element in the buffer, and break it into it's consitutent parts. Paste this to the layout, make changes, then put it back in the buffer to convert to an element. You can also save a buffer's contents to an element file (i.e. add it to the library). Of course element files are still just text files so you can edit them at will. Draw the element outline on the silk layer (lines and arcs, no polygons), use Vias to make pins or holes, and lines on the component and/or solder layers for SMD pads. Number the pins and pads with the name ("n" key) entry, then cut it all to the buffer and select "convert buffer to element". Saved elements always appear in the file in a component-side orientation (even if you save while viewing the solder side). (4) Support for elements with surface-mount pads on both sides of the board. e.g. edge connectors. This also allows creation of elements with multiple pins/pads having the same "number" string. This can be used, for example, to create a DIP footprint that has a pad on top and bottom coincident with each pin. This effectively makes the pins have elongated copper pads on the top and bottom - something several home-made board makers have requested. If you do create an element with multiple pins having the same number, and that number appears in the netlist, they MUST be connected before the board is considered routed. See the "14DIP_oval_pad" example in the "test" section of the library for an example. (5) Support for the strokes library. Compiling with strokes enabled (see config.h) binds the middle button to recognize strokes for the user interface. Zoom in, Zoom out, choose the line, arrow, or via tools, rotate an object, etc. can be done with simple strokes. Check the source code (FinishStroke() in action.c) to see what the strokes are. (6) Better fascilites for panning at high zoom: Shift-button3 down shows the whole layout - move the crosshair to where you want the display centered, then release the mouse button - the previous zoom level is restored, centered at the new location. You can do this while in the middle of drawing, moving, etc. You can also place the cursor in the panner area, and use the arrow keys on the keyboard to scroll half a window view per keypress. Of course you can still drag the screen with button1 with the panner tool (previously known as no tool). Auto-scrolling is also improved. If you want to use menus, buttons, the panner, placing the pointer over them stops auto-scroll. If you want to go to another window and not auto-scroll, pass the pointer over one of those things before heading to the other window. (7) Auto-router. The auto-router routes with the active line size, via size, and keep-away. It is a grid-less router, and will automatically avoid any existing traces, etc. that you've placed on the board. It uses all layers that are visible when invoked, so turn off any layers you don't want it to use. You can auto-route all rat lines, or selected rat lines. This was written by C. Scott Ananian (8) Fascilities to rip-up tracks and vias that were placed by the auto-router. You can rip-up all auto-routed tracks, or just those that are selected (and were auto-routed). (9) Auto-placement code. It's broken. Don't use it. (10) Many functions added to the menus that were previously accessible only through keys or typed commands. e.g. SetValue(Grid,1), DRC(). (11) You can turn on/off the requirement for unique element names. When unique names are required, they may be automatically generated when pasting. Turn on uniqueness for a single layout, turn off if placing several boards in a panel (or if you just want duplicate names). It's in the settings menu. (12) Support for metric grids. Coordinates are still always integer mils, but you can have the grid fall on a regular metric spacing to within +/- 1 mil. Selectable in the "Screen" menu and also with the "SetValue(Grid, x)" command; the value x is still in mils, but it's floating point now. Also the concept of "absolute" grid has been eliminated - just align it where you want. (13) Support for viewing the soldermask. The Screen menu has a selection for turning on/off the display of the solder mask. You can also change the size of mask holes when the mask is displayed by using the "ChangeClearSize(what, change)" function (k key). If the mask is not displayed, this function changes polygon clearances as before. For example you could elliminate all via soldermask holes by selecting everything (make sure vias are turned on), then typing the command: ":ChangeClearSize(SelectedVias, 0)" There is a special case for vias to change the mask diameter equal to the via diameter, by using +0 as the size change. (14) Support for creation/addition of netlist by drawing rat lines. Select "netlist" from the drawing layer, and use the line tool to add nets. Undo removes the rat, but not the created net. To delete a netlist entry, select the connection in the netlist window and hit the backspace key. The "netlist" layer must be the active layer to delete connections like this. This is NOT the recommended way to create a netlist, but a lot of people asked for it. (15) Support for snapping the crosshair to pins/pads even when they're not on grid. Selectable in the "Settings" menu. Thanks to Borges for this great idea. (16) Doesn't draw negative lines and arcs in print output unless necessary. It still does this for all pads though. Doesn't technically matter, but there are a lot of bogus gerber viewers out there and people that are easily confused by gerber files that completely meet the specification. (17) Added a "Lock" feature that lets you lock an object so it can't be selected, moved, or modified. Very handy for making a board-outline element (e.g. pc104 card) invisible to the Arrow tool. (18) lots of bug fixes (plus, no doubt, lots of newly introduced ones). (19) a tool (in the tools folder) for converting to/from ncap files for auto-routing with MUCS-PCB. I have not tried this myself. Written By Luis Claudio G. Lopes (20) a new build system based on the GNU automake and autoconf tools. This should make compiling on different systems easier than with the old imake based build system. (21) A program for quickly generating QFP elements. Its invoked from the old library (~generic/qfp menu, generic) (22) Increased resolution. The internal unit is now 0.01 mil as opposed to 1.0 mil which was the previous unit. Quick and dirty explanation of some as-yet undocumented features: Netlist window: double-click on a net-name to enable/disable it. A "*" appears next to the name when it is disabled. Disabled means rats nests will ignore the net. Click on a connection to select it (and center it) in the layout window. "Finding" a connection starting from a pin or pad will select it in the netlist window. The "j" key controls whether a line (arc) clears (plow through) polygons or touches them. Newly created lines and arcs follow the setting in the "settings" menu. Put the cursor over the line or arc you want to change, then hit the "j" (j for join) key. The "k" key controls the width of clearance around a line (arc) when it plows. "k" key increases clearance by 2, Shift-K decreases it by 2, also works for pins and vias piercing polygons. The initial value for new objects (but not element pins/pads which is in the element definition) is controlled by the "keepaway" setting, changeable in the "sizes" menu. When drawing lines, you can start a new anchor point without drawing from the previous point by either clicking button3, or Ctrl-button1. DON'T USE BUTTON2 - that would be wrong, even if it sort of works. The Arrow tool is for selecting/deselecting objects, and moving them. Shift-click to add to the existing selection. You can click-drag to draw boxes for box selection. If you click-drag on an already selected item, you will move the selection. If you click-drag on an un-selected item, you will move that item without selecting it. This last technique is the only way to move a point (e.g. end point of a line), and is also the only way to perform moves with rubber-banding (i.e. rubber-banding doesn't work with selections). Moving a selection actually cuts it to a special paste buffer, then pastes it at the new location. Always start a box selection by clicking in an empty region of the board. It may be desireable to turn off some visibility in order to simplify the box selection operation. You can also lock an object to make it invisible to the Arrow tool (so box selections can begin over the object). If you don't configure for strokes, the middle button is bound to the arrow tool. To move an element or silk text to the opposite side of the board, use the "b" key (b for backside) to send it to the opposite side. You can also cut an object to a buffer, switch viewing sides (tab), then paste it. The buffer can be used this way to flip layout traces to the other side too, although if layer groups are used, the precise layer they appear on may not have the color you want, but the connectivity should not change. Installation tip: BE SURE TO INSTALL THE NEW X11 RESOURCE FILE - run make install to do this. If you just want to test without installing, run the pcbtest.sh script in the src directory.