# $RCSfile: WHATSNEW,v $ (InternetCad.com,Inc.) # $Date: 2004/05/24 04:14:16 $ Version 2.0.0 pre33 ======================================================================== * Fixed typo which prevented drawing of ports in the translator when viewing in itools design mode. * Added overlap_algorithm parameter to the parameter file. This allows the user to control the overlap algorithm selection. The choices are best_fit and ordered. The ordered algorithm is necessary for the ECO flow. The best_fit algorithm was the original algorithm and it was intended for the gate_array design style. The default algorithm is best_fit for gate_array and ordered for standard cell design styles. The algorithm is only executed when rigidly fixed cells exist in the design. * Added the -append, -nocons, and the -fixed_xxx options to the icwrite_ic and icwrite_con commands. This allows scripts to filter output fixed constraints. * Added IO constraints processing to the icconstraints namespace in the translator. * Fixed a possible infinite loop in the generation of rows. Added support for vertical pedestals. Now we tell user when core-macro-rows option of icgenrows is in a state which would generate an unexpected row topology. Now icgenrows numrows command acts more sanely. * Rewrote compact_ports parameter to the track suffix so the spacing resembles the detail routing syntax which is easier to comprehend. * Improved the switch (options) placement algorithm when unconnected nets are present. * Fixed problem with instantiating griddless routing in the gridded router when a grid overflows with more than 3 nets at a grid. * Fixed problem with the generation of the path geometries in the contour router. Removes some minor notches. * Fixed problem with global router outputting pin groups which overlap. This creates unnecessary congestion. Now we automatically detect wired-or nets. The user has the option to allow or disallow the presence of cycles in these nets. * Fixed problem displaying solid ports and the mst connections in the itranslate design drawing program. * Added the -portwidth and -portheight options to the icportcells command in the translator. This now allows the user to control both the cell and port size of the automatically generated I/O cells. * Added right margins to some messages for prettier output. * Fixed Bugzilla #26 by rewriting directory structure of the floorplanners. In addition, fixed a major problem with the floorplanners. Both floorplanners ignored the output of the global router. Now both read the results of global routing properly. * Added initial support for reading CCT session files. Very rudimentary. * Added support for CORE_TO_PADSPACE and MINPADSPACE to the itranslate ::icconstraints module. * Added the ::icplacepads::reroute command so the user can reroute just the IO pads if desired. * Fixed problems with log files winding up in strange places due to conflicts in the user path. Paths that include "place" in the name were causing the log file to be put in an unexpected place. * Fixed problems with iclayers pitch command which was incorrectly using pattern vias in the simple pitch calculation. * Fixed problems with iclayers pitch command which was incorrectly using pattern vias in the simple pitch calculation. * When in ECO mode don't due H-tree net buffering unless requested. * Added the icmodel routing_partition command so we can mark the routing center for virtual routing and abstract generation. * The icremote_server command has been updated to register the output errmsgs so we can redirect them to the socket. * Fixed problems with updating hot keys when editing commands with more than one word. * Fixed problem with PRIORITY nets in the global routers. They were being processed in the incorrect order. * Fixed problem with unlap algorithm moving cells a long distance when rigidly placed cells are present. * Added ROUTING_PARTITION keyword to the model syntax so we know the routing abstraction partition line. Using this we can generate better abstractions. * Now we detect and warn the user when an icwait loop would be problematic. If no interpreter or remote server is available, we skip over the icwait command. * Fixed problem in global router when a COVER cell had pins far outside the bounding box of all other data. * Major enhancement to the global router to reduce number of tracks when rigidly placed feedthrus exist. If you have any rigidly placed cells in the row-based core, this version will give great advantage. * Added icposition screen command so we can implement the icpointer::warpto command. Added the icpointer namespace so that user can warp pointer to desired positions on screen. * Now support fake H-trees as a way to do balanced routing. Error checking is suppressed when a skew constraint of -1 is supplied. * Added icconstraints::extract_cover_cell_neighborhoods in order to generate neighborhood constraints. Added new icgeometry bloat and merge operations to support this Tcl. We also added a -minsize argument to control the size of the smallest neighborhood. * Fixed problems with icrow density function. * Added the INSULATOR and _ICGENERATE_ keywords to the .lib file syntax so we can support options better. Switches which are normally closed can be modeled as an INSULATOR which allow the router to connect to the proper terminals and still allows LVS to work properly. The _ICGENERATE_ keyword allows ports to be generated as routing in the output file. * Increased the number of possible defined vias between any two routing layers to 16 from 8. * Added icresistance_route_costs which convert resistance properties of vias and metal to costs. This necessitated the addition of the iclayers resistance and icvia resistance commands. * Added substition lists to icwrite_placement, icwrite_gds2, and icwrite_skil_placement functions to allow replacement of models in these routines. * Added the -mcr_include_origin option to the icgds_define BOUNDARY command so the MCR calculation is unambiguous. * Fixed problem with hierarchical placer entering into an infinite loop. This was caused by no clusterable cells in the netlist. Now the syntax program detects this possibility upstream so that the appropriate control is performed. * Restored copy up feature of the .pl1 file to the itoolsdata directory. This was made inoperable when the directory structure was change in pre30. * Now icdaemon commits suicide when the file icdaemon_suicide is present rather than when icdaemon is not present so we don't have trouble when NFS acts up. * Improved the error messages when a layer is out of bounds, that is, when a user supplied layer is invalid. * Added support to handle undersized pins once again in the gridless router. In addition, we now use a more thorough algorithm to check for undersized pins. * Fixed problem with placement annealing schedule when using hierarchical algorithm. Temperature schedule was getting set incorrectly for large designs. Added a feature for advanced uses to control the exact value of the timefactor. If timefactor is specified as a negative number it will be treated as an absolute number and directly modify the timing cost. Otherwise, the user supplied time factor is used as a scaling factor based on accumulated statistics as our paper states many years ago. * Fixed problem with the ladmin -sq command crashing on some machines. This was due to a coding mistake in the RPC code. Unfortunately, this bug is being circulated in the latest tirpc versions on the net. * Fixed problems with idle task update of the graphics when moving and picking cells. Now you can even scroll the screen during a cell move. * Added simple cell alignment tool to the idetailer GUI. * Added icdraw instance_detail so that user can control look of instance separators in the detail router. * Fixed crashes when SKEW constraints are present in the floorplanner's netlist. * Fixed problems with truncation of routes when using abstraction methodology. Now by default all nets are truncated. Previously, global nets were not truncated and this was causing shorts. * Fixed crash in global routers when feed resources are scarce during feed reassignment. * Added FEED_PERCENTAGE, PAD_TO_ROW_SPACING, and ROW_TILE_MAXIMIZE constraint options. * Added Ignore Global Routing check button for convenience to the Visual LVS checker. * Fixed problem with exact pads being moved in the detail router. Added the -override_exact switch so we can move exact pads if we like but the default is to maintain the position given. * Now iplacesc does not stop executing on error messages. It now tries to do as best as it can. * Now we support the ROW option to compact_ports so we can place option cells away from the rows. * Added output file support to itranslate GDS support. Fixed problems with dumping cells with dollar signs in their name (pcells). * Improved the icnet isolated command in the detail router so that all sets of pins are returned when the isolated pin is a set of pins. * Fixed design rule problem with diffnet spacing rules in the detail router. Bug # 20. * Fixed problems with routing going outside of the routing region. Bug #27. * Fixed problems with the icrestore -keepouts command. This command did not process fat wire rules properly. * Fixed problems with added a via placement in the GDS2. We were incorrectly adding an offset to the coordinates of the via placement. * Fixed problem with connecting to the correct position of a freeway during feed assignment in global router. * Now we report naming problems when performing special trunk routing of clock grids. Bug #15. * Fixed problems with placing vertical rows. This problem exists when option cells exist and/or only vertical rows exist. * Added support for RIGID_NEIGHBORHOOD constraints. These constraints require the instance to remain in the neighborhood and every effort is made to achieve the constraint. * Now properly restore net bounding boxes upon a restore in the detailer router. This was preventing some nets from being routed. * Reworked code to mininize fat wire rule design rule errors. More fixes will be applied to version pre34. * Rewrote SDF output code so that user has more output options to control the output. See icwrite_sdf_routes for info. * Fixed problems with output filtering of equivalent nets in the detail router. Previously, it was duplicating the output unnecessarily. * Improved the code for pin connection points when pins are undersized. Version 2.0.0 pre32 ======================================================================== * Fixed problem with notchfilling when using the gridded router (only the gridded router). Initialization problem was creating donuts. * Fixed problem with improperly displaying the program options of iroute. The -d and -do are two different switches and it was confusing to users. * Now we support a prerouting constraint file which contains the exact order of the prerouting pin locations. This is very useful in customizing the pin placement used in prerouting. If an entry is not found for a model, then prerouting reverts to original algorithm. * Fixed a problem with initialization of certain types of obstacles during detail routing. This problem could lead to design rule errors. * Fixed a problem with too many open file descriptors during translation. This was especially bad for CCT translation. Added a user controllable limit to the number of messages when nets cannot be bound. Version 2.0.0 pre31 ======================================================================== * Major rewrite of the detail router redraw code in order to speed up redraw times. Now manual editing of large designs is much less painful. * Fixed major placement problem for very large clock synthesized designs with timing constraints. Due to an off by one problem, the last stage result was being ignored and the initial state was being restored resulting in suboptimal placement. * Now we check to make sure spacing tables and wide wire spacing rules given by the user are consistent in the detail router. First attempt had some problems and now it is rectified. * Improved the EZ gds2 interface so one can read in a gds2 map file. * Improved EZ grand.do script generation. Updated for new tablelist version. * Added the -libname and -no_defs options to icwrite_gds2 for more output control of the GDS2 (itranslate program). In addition, we added the -only_referenced option so that only referenced cells are output into the GDS2. * Added the icboundary stdcell command for handling the core in mixed stdcell macro blocks in the detail router. * Improve redraw times for zoom functions. Now zoom functions respond immediately. * Fixed problems with crash of placer when no nets are given. * Fixed major problem with prerouting cells. Ports that spanned multiple columns were not being handled properly. Now such cells are prerouted correctly. * Added clock grid for paranoid clock tree distribution. This method has extremely low clock skew at the cost of a bit more routing. The placer now outputs the itools.ckt file whenever clock trees are present as it should. * Fixed problem with translator using tremendously large amounts of memory when reading in a routing. * Added core abstraction for final step of routing to ease time and memory requirements. * Added trunk routing support to the gridded router. In addition, the contour router now supports both trunk and trunk only options. * Fixed parsing problem with icread_cct command. It didn't understand rotated vias in the image file. * Fixed problem with contour router outputting a unconnected net. The router did later connect the net but with a minimum area mistake due to the underlying path generation problem. * Added paranoid via processing to make cleaner routing in the contour router when "fat" wire rules are present. * Added abut attribute to begin support of pins which are routed by abutment. * Added support for PEDESTAL constraints in the row definitions so users can define alignment positions. Also updated row_adaption to handle rows aligned by offset properly. * Now report when 0 nets are present in the design. * Fixed overflow problem in the placer when design is immense. * Fixed problems with ripup and reroute in the gridless router. The algorithm was not effective as it should have been because of a typo. * Fixed problem with routeability analysis in that some nets were marked unrouteable even though they were routeable. * Fixed problem with global router not correctly connecting abutting pins properly when macro cells are present. * Fixed crash in visual design rule checker when notchfill rule is violated with an obstacle. * Began work on a verification option in the iroute control program so we can verify routed designs in the detail router. * Fixed crash in icread_cct command when keepouts occur in the structure section. * Fixed problem in the command icgds enumerate routine which was erroneously returning the wrong data. * Updated syntax program to output class offset info into the .stat file so that we can support pedestals properly. * Fixed problem with the icfile_build only option in iroute. Now when it appears in the .rdo file, the input files for the detail router will be built without executing the router itself. * Now feedthrus are drawn orange so we can see DRC violations better. * Fixed problem with virtual keepins which in some cases generates DRC violations in the row routing. * Added the -e switch to iflow so that errors can be display in graphics even if -nographics was issued. * Added more options to the itranslate command "icreorigin" so it is more flexible. * Fixed CCT translation problems with via constraints in image files. * Improved the row exception capability in the floorplanner. In addition, we now properly construct row configurations when given a target number of rows and macros are present. * Fixed problem with wide wire spacing rules when unconnected pins are wide wires. Now we process unconnected pins so that they make wide wire keepouts. * Now when require vias is off in the parameter file, via errors are reported as warnings so that we don't prematurely kill a placement only run. * Improved the visual DRC checker so we can turn of highlight display. * Improved wide wire processing and added the "icrouter fat_wire" command to control the wide wire processing. In addition, we now align vias over pins so that we can avoid creating notches. * Added missing run time stats to the detail routing control program and now always give the runtime stats in the detail router at the end of execution. Version 2.0.0 pre30 ======================================================================== * Fixed problem with variable pad placement when core is offset from zero. Previously, code assumed zero and this is a problem when the core is not zero. * Fixed problems with -multi_cell_row mode at the entire step. The detail router was not adding the proper pins to the database resulting in unconnected routes. * Fixed problem with cutting out geometries with the icgrid punchout command. Now the command no longer processes global signal pins, ie. power/ground ports. * Fixed problems with assigning the synthesized flag when reading in the routing (.rte) file. Now all added spare cells are marked as synthesized if they weren't originally in the netlist. This was necessary to fix a problem when writing out the Skil placement code. Version 2.0.0 pre30 ======================================================================== * Fixed problem with translate omitting required covered cells. * Now the icconstraints module automatically sets the global pin type from the global net definitions. * Model the core cell macro in floorplanning much more accurately when the user knows how many rows of stdcells that they want. * Added the "iccompact_channel -simplify" to save memory during gridded region routing. * Fixed crash in translator when pin attributes were present in prerouting. We added the icpin attributes command which is used in the preroute.tcl module. Also fixed a crash when models are freed. Improved error reporting in the translator. * Fixed problem with the 64 bit version of the license server which was crashing in translating the network address. * Improved ripup and reroute code for both gridded and non gridded routers. Fixed problems with determining virtual grid when row height was uneven. * Fixed problems with multiple global pin definitions mapped to the same global name. Previously, we were only matching the first one found. This caused problems when performing power and ground routing. The detail router was reporting shorts where there wasn't a problem. * Now iroute can use the miscellaneous Tcl library. It is useful to grid the instances. Now iroute can grid the results if a grid is defined using the icgrid command. * Fixed problems with the flow.onlyroute1 flow. Now global router reads a top level .pl1 file if is supplied. This flow was broken by the new directory structure. * Added more messages to the iclicense -dv option. Now the license server tells which license file it is reading. * Added COREAREA and NUMROWS processing to iccons_options module. * Fixed offset problem with extracting prerouting in the translator. * Added the optional _ICSYNTH_ statement to the MODEL syntax so to be consistent with instance data and to allow recognition of itools created models. * Added ROW info to the .rte file so we can translate row position properly when the -multi_cell_rows option is in effect. * Added the -sorted option to icwrite_placement translator command so output will be sorted by row then left to right. * Fixed problem with misalignment of rows in the output of the detail router by now explicitly outputting ROW statements in the .rte file. * Fixed problem with poor placement results for large designs (10k objects or better). This problem was accidently introduced in version 2.0.0 pre 29 when buffer code was modified. * Added new feature in the global router to add spare cells to the design when equalizing row lengths. * Added adaptive row spacing to the global router for completeness. It is recommended to do adaptive row spacing in the placer but this allows flexibility. Version 2.0.0 pre29 ======================================================================== * Added ability to flatten and edit gds text labels. More options will be added over time so one can modify any aspect of the GDS2. In addition, we added the filter and id options to the icgds find command. * Added the icmodel pinattribute command so we can modify pin attributes in the translator. * Fixed problem with install pager directions which was introduced in version 2.0.0 pre27. * Fixed two long standing problems in the second generation global router igrouter. First was error reporting path is outside region. Second was the router could not find its targets. * Fixed crash in detail router due to bug in the ripup and reroute code. This was occuring in a very deep ripup in the gridless router. * Added SPLIT_ROW constraints and the icexcept command to the floorplanners to make row blockages easier to enter. * Now prerouting extraction doesn't add a conflicting fixed constraint but uses the one supplied by the user. * Now the icfix_instance get command returns the proper form. * Fixed crash in global router due to mistake in except process code. * Added parallel remote start daemons so parallel execution does not suffer from startup delays associated with rsh/ssh connections. * Fixed problem with multiple redraws during resizing of window. Now we redraw design only once. * Fixed problem with translating gds2 with extended polygon figures. The memory was not allocated properly. * Now we add vias to the output gds2 as placements rather than flag geometry by default. You can still add it flat if you desire with the -flatten_vias option to icwrite_gds2. In addition, you can also specify that vias are created in the gds2 from the definition in the parameter file by using the -create_vias option. * Rewrote width verification code so it uses less memory and uses a faster algorithm. * Added the -strict option to the icvirtual_keepin command of the detail router. This switch insures that region division is exact and no pin cutouts are performed except for vertical pins inside the region demarcation. * Fixed problems with reading macro spacing rules in LEF. * Fixed problems with sequential timing data failing with scalar setup times in the floorplanner. * Fixed short and wide wire spacing design rules in detail router. Some wide wire errors may still occur in the gridless router and will be fixed in next rev. * Fixed problem with duplicate menu command in igp.tcl. * Fixed ictell_tile function in idetailer. Now it returns the proper tile when draw contours is enabled. * Fixed problem with crash in placer when net exceeds 32K pins. In addition, we added the large_net_threshold option to the parameter file so we can control large net processing. * Added the icgrid instances function to the detail router to in order to insure that regions are gridded. Version 2.0.0 pre28 ======================================================================== * Implemented a new idetailer Tcl command "icnet type" which returns one of {signal power ground special} so we can improve the row strapping command. * Major rewrite of the floorplanners to handle mixed macro/standard cell cases better. Floorplanner global router will expand soft pins into real pins which can be routed. * Fix of a major problem in the second generation floorplanner igp. Cells were jumping out of the core area due to a logic mistake. Now we get much better floorplanning results. * Improved the speed of the contour maze router also known as the gridless router. * Improved the ripup and reroute capability of the detail router by relaxing via constraints. The relative via costs are preserved but the absolute value of the cost is relaxed in order to complete the routing. The new algorithm can be turned off using iccost relax off if desired. * Fixed iroute's compactor so that it properly recognizes the macros of a mixed macro/standard cell design. This program is now also more tolerant of bad density data. * Improved the parallel processing code for the iroute program. * Added the icroute_cleanup Tcl procedure for convenience. * Fixed a problem with the gridded detail router which was causing design rule violation in the top level including the mult_test test case. * Modified the buffer synthesize to fix problems with building H-trees when macro cells are present. Version 2.0.0 pre27 ======================================================================== * Fixed initialization problem with instances which was causing errors in translation related to fixed cells. * Fixed problems with selecting cells for editing in the placer. * Now we put "bad_net" output messages under user control so we can limit them. * Fixed problem with DEFAULT vias with multiple cuts being translated into a PATTERN via. * Now prerouting in DEF file is assumed as FIXED rather than CAN_BE_RIPPED_UP. We added the -routed_as_ripup and -routed_as_fixed switches. In addition, fixed problems with itools language always choosing CAN_BE_RIPPED_UP. * Added the -squareplus option to interpret DEF routing as centerline square plus (GDS2) instead of the default square flush interpretation. Added initial support for ctgen file parsing. * Now detail router tells when it is entering a wait loop. This helps when user has misconfigured the Tcl. * Fixed problems with parallel routing going into an infinite loop. In addition, we fixed a problem with the 1 license for any number of processors. This problem was in the license server so if you want to use parallel routing using only one license, you will need to restart the license server so to use this version and new servers. In addition, we added Expect support to the parallel algorithm so you can even use telnet to log onto remote nodes. This allows total customization of the parallel process. * Now prevent an infinite loop in detail router. * Changed flows and floorplanner programs so that the floorplanners call the simplify program internally in order to complete the versioning ability of all programs. * Fixed problems with icrow spacing command. Now if expansion would intersect the keepins, the keepins are deleted instead of wiping out the instance data. * Fixed problem with EZ search. Previously, EZ search did not work properly with 2 word searchs. In fact, EZ search was not implemented correctly and only one of its four modes was even implemented when Gordon wrote it. Now all four modes are implemented and exact has been renamed to glob-like to be more informative. * Fixed problems with alert boxes in the graphics programs. For example, iplacesc would not respond to reporting its version due to an initialization problem. * Fixed problems with scaling parameters if the RULES section occured in the .lib rather than the .par file. First noticed in igp where core was scaled improperly. * Fixed problem with adaptive row separation algorithm when in gate array mode. * Now the default routing bounding box of a net in the contour detailed router is +-15 track pitches similar to the gridded router. This speeds up routing tremendously. * Fixed problem in the prerouter which prevented the proper completion of the routing. It was due to picking the largest via for a constraint instead of the smallest via. In addition, we added icpreroute_status so the prerouting log file shows the number of unconnected nets and number of design rule errors after prerouting. * Updated warning message for power/ground pin row alignment code. In addition, we now support multiple port geometries properly. * Added support for forbidden placement intervals. * Rewrote over the cell feed thru assignment code so that upper layer feed thrus may be assigned more efficiently. * Improved the scanpath discovery code to issue better warnings and messages when errors occur. * The itranslate icshort code now merges prerouting properly. In addition, it has been updated to handle names surrounded by {}. * Fixed problems with asymmetrical via. Code was rewritten so that it makes better use of routing area and does not create design rule errors. Also improve icrestore -database command when using gridded router. * Now icpickbox updates the coordinates of the second point during rubberbanding. * Fixed problems with poor routing when row gravity is enabled. * Now install program warns about installing 32 bit version of Linux on a 64 bit machine. * Reimplemented rubberbanding graphics to use blitting rather than the archaic XOR method. * Added the iccritical noripup command to the detail router so we can allow the user to keep critically routed nets. * Fixed problem with crash when aligning cells with power/ground rails when standard cells are large and have many power and ground ports. Version 2.0.0 pre26 ======================================================================== * Updated iplace program to use new flow graphics. * Fixed problem in global router which was causing a crash when cell instances were added in the .gdo file. * Added width optimization flow named flow.widthopt1. This flow will iterate until the width of the design matches the target. Width optimization can be controlled with three parameters in the .par file ICSC*width_optimize : ICSC*max_numrows : integer ICSC*width_tolerance : [0 .. 1.0] The first parameter is mandatory if you want to perform width optimization. If width_optimize is missing, then you get the conventional flow. The other two are optional and have defaults of 1000 rows and 10 percent tolerance or 0.1. Of course, you must have the flow set to flow.widthopt1 * Now icpar_option returns the current value of the option when only 3 arguments are given. * Added missing pad options to detail router include contiguous pad option. * Improved variable pad placing algorithm so that wire length is reduced and wires are straighter. In addition, fixed problems with pad permutation algorithm so it now works. * Fixed a crash that occurred in the fast router when routing global signals. * Fixed problem with DEF reader. It had a typo with SPECIALNETS and was missing support for FOLLOWPIN which has now been added. Version 2.0.0 pre25 ======================================================================== * Major rewrite of the iflow program so that it now supports decision objects. By using Expect in the decision object one can now build iterative flows easily. A preliminary flow editor is supplied as well. This program rewrite was necessary to allow width optimization thru iteration. Now it is possible to automatically optimize the width of a row-based design without manually knowing the number of rows necessary apriori. The new program also has a new look. * Now we generate PDF documentation from EZ. The new generation tool is under the Tools menu. * We now include the expect library so we can write expect scripts in itools for more capabilities on starting remote programs. * Now we give better error messages when GDS2 structure name is too long and rename it to XXX#. * Fixed and enhanced ability to handle stipple patterns in the global and detail routing programs. * Added support for DIFFNET spacing rules for via layers. Added the "icrouter via_obs_are_wires" command so that we work around LEF ambiguities. The default setting is off which means via obstacles definitions in LEF are treated as keepouts for any diffnet rule. If you need them to be wires either via_obs_are_wire command or better yet use the VIA_OBS_ARE_WIRES in the design rules which was added just for this purpose. * Added -pin_align option to prerouting so we can position pins in alignment with a specified layer. This is useful when stack vias are possible and the cells are very complicated. * Updated the Commands Help display so that it properly displays all commands in ::icxxx namespaces and now sorts them so you can find commands easier. * Added the LVS visual connectivity checker for helping show unconnected nets. * Added edit cell dialog gui in iroute for convenience. Also updated iroute so that it properly called the Tcl initialization functions. * Added icpad command to idetailer so we can modify the pad placement more completely and easily using pad constraints. We also added pad gui editing items to the EDIT subment. * Modified RELATIVE pad syntax so that both RELATIVE and RELATIVE statements are understood. The second form allows quick conversion from EXACT constraints to RELATIVE constraints by the change of the keyword and is added for convienence. * Changed the default row to tile spacing in the row topology program to 0 from 1 as this makes more sense. The value 1 was arbitrary and causes problems with gridding rows properly. * Implemented a graphics timeout so that slow network connections don't generate the error: ERROR[ICinitGraphics]:Cannot find window for symbolic name:.frame5.frame7.frame1.canvas2 ERROR[initgraphics]:Aborting graphics. Instead we wait for a specified amount of time before generating this error. The default is two minutes but can be set with the itools*timeout option to the .Xdefault file. * Many documentation updates. * Updated the graphics dump command. Version 2.0.0 pre24 ======================================================================== * Fixed problems with LVS problems during entire route. Removed some confusing error messages during gridded routing. * Fixed problem with icrouteable command when using the gridded router. Previously, it was chosen the incorrect routing source so output was in error. * Fixed problem with reading old .rte file formats which did not use the new GROUP keyword. * Fixed problem with global router which was allowing access to both sides even though access was blocked on one side by a keepout. * Now allow core_to_padspace to support the 't' suffix so the user can specify the distance in tracks. Updated EZ so the regions.ddo file can make use of this feature so that pads are not too close during region routing. * Added output message control to the stripes and ring power and ground GUIs in idetailer and EZ. Fixed problems with missing strap dialog in EZ. This was creating a message that the primary layer was not set. * Fixed problem with pad placement when gridding option was set. Now the core is adjusted to the proper size. * Fixed a problem where floorplanner was stuck in graphics wait loop in a non graphics mode causing an infinite loop. Version 2.0.0 pre23 ======================================================================== * Added -ycenter option to the icpreroute command so we can support y-asymmetrical libraries for prerouting. Also now support prerouting with partially assigned pins (pins on the correct vertical layer). * Added gridded router support for the icrestore -instances command. * Added support for multiple grid vias when using the gridded router. * Fixed problem with cells disappearing during redraw when in zoom. * Fixed problems with Postscript printing of design. The upgrade to a newer version of Tcl/Tk was incompatible with previous output method. * Fixed problem with MINAREA rule rounding during translation. Not enough significant decimal places were being output. * Fixed problem with prerouting process output having extra copy of via information. * Fixed problem with igrouter outputting the wrong placement. It was outputting the initial placement and not the adjusted placement. * Improved the printing GUI for printing scaled regions. * Now avoid crashing in the detail router when a pin is described by only non-routing layers. * Fixed major problem in reading parameter files in EZ. The tyacc parser was in error and preventing the correct reading of the paramter file. This resulting in written parameter file devoid of design rules. In addition, we now keep multiple backup copies ala VMS. We also implemented tainting so that we only change the update color to red now when the user actually changes a value. * Improved the EZ startup when specifying a project file. Now the command EZ works with both full and partial pathnames. * EZ now supports reading of the design log file under the Tools Menu. * Improved the power ring gui in the detail router. Now we allow the user to select message mode. * Changed the backup file separator from . to : so file name will be more readily apparent. * Added initial support for minimum enclosed area design rule. * Now we model the world pin of a ICPORTXXXX cell as a logical pin so we don't create a conflict in the physical domain. * Added support for RESERVED_LAYERS which allows the user to avoid using a layer or set of layers in placement and router even though the layers are defined as routing layers. * Fixed problem with missing prerouting when the -multi_cell_rows option is in use. * Fixed gds2 write problem which placed all of the cells on top of one another when using the SunOS5-m64 OS. Version 2.0.0 pre22 ======================================================================== * Fixed crash when SITEDEF data is present in constraint file. * Fixed problem with categorizing the last net (alphabetically) in the design as a bad net. This occured during reading the constraints and was due to the new global routing format parser. * Fixed problems with reading routing into translator for final output. * Fixed problem with fast router so it works with spacing tables. Version 2.0.0 pre21 ======================================================================== * Major rewrite of the data structures in order to save memory in the detail router. We still have one more stage of reduction to come. * Added the icrouter logmode and the -silent option to the reroute and delete net commands to minimize I/O load during routing in graphics mode. * Added cells_may_abut feature so that we can abut macros and not require spacing between them. * Improved ripup and reroute capability in the contour router. * Now we save the best result found in the second generation floorplanner and return it as the final solution. * Fixed problem with backslashed Verilog port names. Began work on fixing memory leaks. This version is for Mondowave. * Now detail router works in parallel mode with just one license. We added license_max_tries option to iroute to facillitate this feature. * Now we support N and P implant layer types. * Fixed problems with GDS2 processing creating off manufacturing grid keepout data when adaptive stairstep is on in itranslate. * Added -max_area flag to prerouting algorithm. Added the -open_fail_ok option to the iccreate_abstractions command in itranslate. * Added the -process_only switch to icread_gds2 so we can read all GDS2 in first and then perform processing. Version 2.0.0 pre20 ======================================================================== * Fixed problem with crash in placement program when double height cells are present and the row spacing is nonzero. Updated the floorplanner so that doubleback rows work properly. Version 2.0.0 pre19 ======================================================================== * Fixed problem with crash in cluster program. This crash occurred when the target number of cells per cluster was calculated to be less than 1. Now the target number of cells per cluster is limited to 1.0 Version 2.0.0 pre18 ======================================================================== * Added the ICGR*pre_equalize_rows function so one can equalize the row lengths in global routing when special constraints are present. Normally, this isn't required. This code replaces a Tcl script. Version 2.0.0 pre17 ======================================================================== * Updated icread_synopsys function to parse wire_load_table_option properly. * Added the -timescale option to the icwrite_routing_sdf command. Updated so that arrayed net names are properly output in icwrite_spice_parasitics and displayed in the common nets dialog box. * Fixed problems with double height core dump when fixed constraints are present. Version 2.0.0 pre16 ======================================================================== * Fixed problems with doubleback row generation. Previously, it was failing with the error: ERROR[readblock]:block height is less than 1 for row:2 at (5 19.850) (201.204 19.850) Must exit. * Fixed ring and stripe FROM CORE and FROM IO equations so that spacing is correct. In addition, updated placepads.tcl so the interface is cleaner and able to support core to pad spacing on a per side basis. Version 2.0.0 pre15 ======================================================================== * Fixed design rule and unconnected net problems in gridded router. The unconnected routes were due to an error in the ripup mechanism. Added a new mechanism which can handle complex via rules. * Fixed spacing problem in region compactor when no routing was present. This was causing channel to collapse to zero even though there was a row spacing constraint. We also update the channel compactor to penalize removing tiny slivers one at a time. * Added the missing rules : icrule add WIDTH and icrule SPACING ... STACKDIST commands to itranslate. Also added icvias add_no_geom in order to create PSEUDO vias. Also added icrules add OVERHANG rule and icrules add MINAREA rules. Added dummy filter to translator to remove all dummy instances for testings sake. * Added better error check in EDIF translation. * Fixed draw layer GUI to be correct y size. * Updated translation of Magic files and now translate technology file. Began work on multilayer (>= 3 layers) vias with the addition of PSUEDO vias which can have any number of layers. Currently, they are only used in translation. Future versions will have true multilayer viass. * The detail router now supports a manufacturing grid of 1 needed for support of Magic designs. * Added the -model_obs option to icread_gds2 and icread_magic for completeness. * Fixed problem with global routers moving cells to different rows during row equalization (feed padding). * Fixed problem reported by Silicide ApS where the global router was allowing a rotation of a cell to an illegal orientation. This was occuring in vertical constraint minimization. * Fixed a problem in the virtual keepin code which was not allowing a via connection in the gridded router. * Preliminary support for Sparc 64 bit architecture (v9). This is compiled -O using gcc 3.4.1. Unfortunately, higher optimization levels are unstable due to gcc bugs. Will migrate to Sun 64 bit compiler in the future. Version 2.0.0 pre14 ======================================================================== * Fixed problem with placement gate array mode where cells were being placed outside the left end of the row when the defined row was less than the sum of the total cell width. Now the code automatically relaxes the row length so all of the cells can fit with 85% utilization *OR* the program exits immediately if the new option gate_array_exit is enabled. * Improved the overlap removal code for double height cells in gate array mode. * Fixed problems with removing row length due to feed thru length estimation when conserve row length is off. * Added a new WEB-based registration method in EZ to augment email registration. Version 2.0.0 pre13 ======================================================================== * Fixed problem with icrule add spacing range command. Needed for row spacing. * Added missing DRC check for samenet and via cut obstacle rules in the gridded router. * Fixed problem with the status command returning nets are unconnected when they are connected. This affected equivalent pins in the gridded router only. * Added pattern row separation feature in ifp so once can make a repeating spacing pattern. * Rewrote the magic via translation code for input/output. * Fixed problem with buffer tree synthesis. In some cases, it was reporting ERROR[TWfixcons_init]:block assigned to instance (block 0) is out of range as specified in the constraint file - (# rows = 275) * Added EZ documentation for minimum row-row spacing and illegal spacings for row separations. In addition, we updated the detail router algorithm so that the code will work more efficiently. * Fixed problem with vectored signals in EDIF translation. Version 2.0.0 pre12 ======================================================================== * Fixed problem with LEF translation with modeling obstructions as wires. Added the -remove_port_obs switch to icread_lef so we can support LEF 5.5 port access rule that a pin is accessible is port is less than minimum width + minimum spacing to the edge of obstruction. Some abstract generators generate LEF with this requirement. Updated EZ documentation. * Added the icrule add SPACING STACK command to support via stacking rules for different nets (not samenets). * Added steiner tree wire lengths to .gpth report file. Version 2.0.0 pre11 ======================================================================== * Now we don't write internal spacer cells out to the itools.ckt file. * Now by default, the translator creates a feedthru with as many vertical layers as possible so we have good routing density. * Fixed problem with icinstance exist function returning a message instead of just a Boolean. Applies to all programs as this is in the common Tcl module. * Fixed problems with dumping spacer cells into the itools.ckt file. They should not be present in the netlist. * Finished rewrite of placement code for double height cells. Now row-based placer reports cost after legalization so that cost output is now the legal cost rather than the lower bound on cost. Previously, it was confusing to user. In addition, we now capture the lower cost solution found and restore it at the end if it is lower cost than the final cost. This is very useful for small designs (under 1000 placeable objects). * Updated SOFTGROUPS to work with double height cells. * Added ignore_non_routing to save memory in detail router. * Rewrote icscan discover command to make scan path work for non flip-flop end points. Will change spec of scanpath in a later revision in order to make data checking easier. * Fixed a bug in the notch filling algorithm which was causing crashes. Version 2.0.0 pre10 ======================================================================== * *BEWARE* this version has a bug in the output section of the detail router which causes a crash. This version is only useful for testing. * Completed and tested the code to implement double height cells when using allow_space mode. Work was begun to handle multiple core regions. Currently multiple core regions only work with row exceptions. * Added LENGTHTHRESHOLD to the detail router. Internally, this was implemented using spacing tables. In the next releases, we will make spacing tables available as user input. * Fixed a problem with stacked vias being all located on top of one another. Version 2.0.0 pre9 ======================================================================== * Fixed a very bad bug in feed_obstacles which was causing crashes in both globals routers. This bug was introduced in 2.0.0 pre 5. * Fixed problem in bgexec command which crashed EZ when the command redirected output files. Sent patch to sourceforge. * Added bendcost_threshold documentation to EZ. Version 2.0.0 pre8 ======================================================================== * Fixed problem in syntax program when cover cell does not have a boundary. * Added the TKPLACMENT="before" option to JS_COND statement in EZ to make HMTL documentation writing easier. * Added the autodetect_script option to iroute so program looks for design.rdo file automatically. Also added to placer (design.pdo), floorplanners (design.fdo) and global routers (design.gdo) * Fixed problems with GDS2 and LEFDEF viewer when filename in form was blank in EZ. * Improved routing HTML in EZ. Hopefully, it will less confusing. * Fixed some problems with sending data to InternetCAD.com in in EZ. Some still remain. This is a bug in the Tcl core. Will fix in the next release. * Fixed ifp so it writes the rules properly for its floorplanner. This was missing code as the second generation floorplanner igp was coded correctly. * Enhanced the first and second generation floorplan compactors so that they relax the core constraints in order to achieve a solution. This prevents an overlapping solution from occuring. * Added the require_via option to the global routers so that vias are not required iff detail routing is not required. * Added ability to generate boundaries from sizer rules in the translator. Added the -nosubstitute option to the icgds_def_rule itranslate command. Added the MCR operation to the sizer to support automatic extraction of boundaries. * Fixed problem with properly extracting the I/O pins from an EDIF netlist. Added check to see if we have a case problem when binding ports of an EDIF netlist. * Added the -merge_layers option to the LEF reader. * Added ez:write_design_rule_commands so we can generate a script to generate the design rules. A good teaching exercise. * Fixed problem with creating a portcell with totally bogus size (nan) when the manufacturing grid wasn't specified. * Added the flow.iplace2 flow which is a second generation placement only flow. * Fixed problems with reporting errors in both first and second generation global routers when the pin is a point. This occurs in the standard cell tutorials. * Added bendcost_threshold option to the placers : igp, ifp, iplacesc, and iplacega. This allows the user to trade off wire length for wire alignment. * Fixed an initialization problem in the second generation floorplanner. This was causing an infinite loop. Version 2.0.0 pre7 ======================================================================== * Fixed problems with clock tree synthesis when synthesizing 5 or more levels of buffers. Version 2.0.0 pre6 ======================================================================== * Fixed DEF translator to properly handle REGION definitions. * The contour (gridless) detail router now supports different spacing and width in x and y direction. This allows poly to be fatter in x than in y. * Fixed a problem in the DEF reader when reading asterisk points for a rectangle. * Added icscanpath command to translator so that it is easy to discover scanpaths in the netlist. * Fixed problems with license server FIREWALL command. Previously, squid proxies were not working properly. Version 2.0.0 pre5 ======================================================================== * Updated both global routers so that obstacles on the feed thru layers are taken into account when assigning feedthrus. * Now buffer tree may have any depth if the state is assigned. If the state is not assigned, the depth is limited to 4. * Fixed problems with Synopsys library support. Quoted strings and the define statement were in error. * Fixed problem with virtual pin assignment in the detail router. This was due to a mistake in the cut line calculation used in region routing. * Added better status message when EZ is waiting for a process to finish. Version 2.0.0 pre1 - pre4 ======================================================================== * Updated support for MacOSX Panther. Jaguar is no longer supported. * Added new icmodel subcommands: pin_exists, gate_area, diffusion_area, pgate_area, and pdiffusion_area to allow programming of antenna constraints. * Added library support for GATE_AREA and DIFFUSION_AREA constructs to support better antenna rule checking. * Added new port alternatives feature. * Fixed gridding problem when no manufacturing grid is present. * Fixed problem in accidentally using cover cell to build obstructions. If you use cover cells, you will get much better results. * Added the dreaded net weighting constraints to the constraint file. At InternetCAD, we really don't like net weight constraints but people were clamoring for them. Beware. See our DAC paper for the reasons. * Fixed problems with overlap removal code when allow_space is enabled. In some instances, cell overlaps were not resolved. * Fixed the second generation global router path straightening code for non OTC routing. Now all routes are in their proper region. Still to do : add minimum perturbation algorithm. * Added -remove_overlapping_keepouts option to the icmodel simplify command so that keepouts over pins can be removed easily. * EZ has been updated to handle power/ground meshes. * EZ now has lock-down feature so that use cannot change page during program execution. Changing the page during execution was destroying the integrity of the design flow. * EZ translation now asks questions about the supplied feedthru cell and the extraction of pad constraints. * Global router can now equalize the row lengths when rigidly place cells exist. * Fixed a problem with symmetrical detail routing which caused vias to disappear. * Now iroute draws the routing by default. Previously, user had to use the GUI to turn it on. * Updated the icinstance set command so that it conforms with the syntax of the constraint file. * Fixed problem with the translator crashing when using adaptive stairstep when reading in GDS2. * Fixed problem with incorrect output of routing into .scon file. Data was missing spaces. * Fixed problem with autoflow program which was not executing programs when the mandatory switch was enabled and more than one program was specified as a stop program. * Preliminary support for double height cells (placement only currently) * Improved support for Magic input files using a Tcl technology file. Version 1.4.0b250 ======================================================================== * Completely rewrote Steiner tree algorithm for the second generation global router. Now the global router and the detail router use the same A* algorithm so that the global router will predict the behavior of the detail router much more closely (besides being a much better algorithm than was originally coded). Now all routes should be connected and variable die spacing of macro cells insures at least minimum required spacing. Still to do: fix path straightening algorithm for non-OTC case and add minimum perturbation so wire length is optimized during spacing. * Support for first generation global routing scripts enhanced to enable the placement of power/ground strap cells. * Translator now supports LEF MANUFACTURINGGRID keyword properly.