# $RCSfile: WHATSNEW,v $ (InternetCad.com,Inc.) # $Date: 2004/05/24 04:14:16 $ Version 2.0.0 pre37 ======================================================================== a : 07 Feb 2007 * Fixed problem with translating design names that end in _#. This was conflicting with itools names for routing regions. Now routing regions will be suffixed with _R# to lessen the conflict and additionally, the -basename switch will allow the user to override the name truncation mechanism entirely. b : 08 Feb 2007 * Now we alway output a model if it is used. The translator had a logic problem which prevented this from happening when hierarchy is present. c : 15 Feb 2007 * Fixed problem with conflict between Draw Reference and Graphics Update command in iplacesc program. * Fixed problem with poor result with small chained test case. The move strategy code had a problem which resulted in the annealing schedule aborting early after 1 iteration. d : 22 Feb 2007 * Added the icmodel instances command to the translator so one can list the instances of a hierarchical module. Updated the icread_vhdl command so that it can take hierarchical netlists and now processes assignment statements properly. In addition, the IO pins are now added properly. Also added, -case_insensitive switch which converts names and identifiers to lower case. e : 2 Mar 2007 * Updated programs so that class constraints for clusters are inherited from the member instances. * Translator now by default creates nets that the router has generated when reading the final routing. This may occur on power and ground nets which the router may have generated. Previously, these nets were ignored. f :13 Mar 2007 * Fixed CCT translator to understand multiple word properties. * Fixed Synopsys translator so that it understands quoted strings much better. g :20 Mar 2007 * Fixed problem of outputting error messages in the sdfwrite translator command when the net contains only a single pin. * Added support for the -supply_binding option to VHDL parsing so user can map logical 1 and 0 to the power/ground supplies. This will allow users to tieoff gates to logical 1 and 0 in the VHDL yet physically tie them off to the supplies. h :21 Mar 2007 Fixed problem in VHDL translation which added bogus interface pins. i :22 Mar 2007 Fixed problem with overlap of double height cells in overlap routines. This problem occurred when the user fixed a double height cell in the row and other double height cells in the row could get overlapped in the row direction. Added icnets::driver_check Tcl procedure so the user can check to see if all nets have a driver. This allows earlier detection of problems rather than waiting till later in the flow during SDF creation. j : 5 Apr 2007 Now standard cells fixed as hardcells can now really can take on the main attribute of hardcells - rectlinear shape. This is useful for multirow L-shaped cells. Now a better error message when reading unknown components in a SPICE deck. Now we support partitioned power supplies where the user has defined the power supplies for each row. Automatic assignment is almost complete. k : 6 Apr 2007 Added the ability to output pin type and pin attributes from the icnet binding command. Improved prerouting model in placer and floorplanners so that all prerouting is screened to see if the geometries should be converted to freeways. This can radically improve the results of connections to prerouted busses. Fixed problem with initializing the number of points in a path when translating from CCT. l :19 Apr 2007 Now ictile_info of the detail router takes the -center argument to calculate and display the center of a tile. The create abstraction Tcl now takes two additional arguments: -nominjog and -targetpins. The -nominjog turns off the minjog code. The -targetpins allows a via to be placed on a pin during prerouting. This was added to improve the prerouting on some older technologies which don't have minjog rules. In addition, we now allow the y position of the prerouting to be specified in the exact order list. Also we now use a more thorough algorithm in searching for the geometry to align the pin during prerouting. Added the -create_nets/-nocreate_nets options to the CCT translator so that prerouting can be read and instantiated even if it is not in the netlist. m :23 Apr 2007 Now we store off io_port names of CCT input so we can restore them upon the creation of a .ses file. :25 Apr 2007 beta release Fixed problems with rounding positions of virtual ports. Problem was due to unnecessary floor command in the Tcl procedure. Version 2.0.0 pre36 ======================================================================== * Fixed unitialized variable in igp which was causing errors in the global router by not initializing the position of the cells properly. * Added the model type info to the iceditcell GUI and added the ability to edit the size of softcells during floorplanning. * Now take neighborhood constraints into account when we perform initial placement. * Improved quality of the detail routing by fixing a bug in the cost calculation. * Fixed problems with error messages in the placer when class constraints are present in the hierarchical mode. * Fixed a problem in the global router which avoids a crash if pins are not defined properly or are shorted together. * Added the -boundary_depth option to icread_gds so the user can control the depth at which the translator will look for the GDS boundary. Default is one. Previously, translator looked at all levels. * Fixed problem with global router complaining about pins not being on a routing layer when in fact they are on a routing layer. * Major rewrite of the icnet command in the detail router. Now this command uses common code so it will be more reliable in the future. * Fixed misleading error message when global pins are not properly added to the design. Previous, it was stating no equivalent pins were found which is total bogus. Obviously, a copy and paste error. * Now support subcircuits at the end of SPICE files. * Row class constraints in the genrows topology program of the floorplanner is now persistent. Use the -persistent option of the icgenrows class constraint. * Added support and documentation for VALID_ORIENTS clause in fixed constraints. This will allow the user to set an individual instances valid orientation set. Previously, the set of valid orientations was set by the model. Now, one can override the model definition for individual instances. * Rewrote the Edit Row gui in the row topology generator of the floorplanners (ifp and igp) so that the class definition is persistent and alignment of supply pins considers layer. * Added save and restore capability for idetailer's cost structure. This file is called and .rcost file. These options have been added to the GUI. * Improved quality of the detailer router by eliminating some cases of slivering. In addition, improved code for aligning metal to vias which will reduce the number of DRCs for complicated routes. * Added missing iclayers command to first generation floorplanner ifp. Also added bin packing initialization code from igp to improve results. * Added a new variable pad placement algorithm based on dynamic programming which yields better results. Use *pad_new_algorithm : on in the .par file. In future releases this will be the default algorithm. * Added support for environment variable ICVERSIONCHAR which allows the user to specify the backup separator. This is needed for MS filesystems. * Rewrote icplacepads::beautify so that it is more effective. * Added support for virtual pads and ports. This was need to model Virtuoso pins more accurately. * Updated icgds find command so that it can work on a single gds layer. * Fixed problem with contracted netlists in the gridded router. * Fixed problem in the global router which erroneously assigned the positions of feedthru pins to off grid positions. The problem was in the vertical constraint minimization stage. * Updated LEF/DEF parsers so that they can read DOS file format. * Improved syntax algorithm so it does not exhibit O(n2) behavior on circuits with explicit power and ground representations. * Improved the icread_synopsys translator command so that long lines do not result in a syntax error. Now handle internal pins correctly during parsing. * Added gridding to the output_at_density option of the global router. In addition, we added the output_horizontal_layers option to control the number of horizontal layers used for the density calculation. * Improved pad placement code using linear assignment. Now both gridded and griddless router use the improved code. * Fixed problem with the icreplacement_policy keepouts replace in the translator. Previously this command had no effect. * Updated the icrecord command so that it support the -noexec switch and the -- options. The -noexec switch was needed to output the Tcl commands into the history when script generation routines are executed. * Improved the power/ground construction scripts in the detail router so that they now output the commands necessary to run the same operations in a do script. You will now find the commands in the Tcl history and .ddid file. * Added PAD_NEW_ALGORITHM option to the ncons files for convenience. * Fixed problems with removing overlap of cells in vertical rows. * Fixed problem with license server logging so that more exit points are supported with better error messages. * Fixed missing property attribute for wires in the CCT translator. * Now license server uses the /var/tmp/.itools directory to store the lock and pid files. This is to be compatible/consistent with FLEXLM and prevent cron jobs deleting these files accidently. Previously, the pid file was in /tmp. * Fixed a bad crash in the detail router due to new pad placement code. * Fixed a major problem in the placer specifically due to the cluster program. This bug was introduced in June in version pre35 when the attempt to "Fixed problem with infinite loop in clustering for some special netlists." was incorrectly implemented. Version pre35 is considered defective and should not be used for placement. * Fixed crash in router when some pins are incorrectly placed in the design. Now an error message is output. * Fixed a problem in the detail router's route generate code which was causing a crash. The tell tail sign was the router would output an error message denoting that a logic error was detected. Soon afterward, it would crash. This bug existed in all versions after version 2.0.0 pre34. * Now prBoundary is calculated with only the metal layers during a CCT translation. * Updated the compactor code so that core areas may have negative offsets. * Rewrote the class constraint code so the the default block class is 0 and not 1. This is much more easier to understand and allows the user to assign block class 1 to row 1, block class 2 to row 2, etc. making classes more straightforward. In addition, this is how this constraint was originally envisioned. * Added the icnet properties command so we can manipulate net properties in the translator. * Fixed problem with pad editor orientation bitmap. Orientation 5 referenced the wrong bitmap. * Added more support for power supply partitioning. Initial support for single row partitioning is finished. Optimization still needs work. * Added initial support for define statments in Synopsys .lib files. * Now support row pedestals correctly in the global router when adaptive spacing is enabled. * Now icread_verilog takes -module option so we can flatten the verilog in one Tcl command in the case of the top level module is not the last module occuring in the Verilog. In addition, the default flattening now stops when the flattener encounters a model which has a physical representation. Fixed problem with missing trireg keyword which was causing bogus syntax error reporting. * Added the icflatten_verilog apr_stop command so one can control the flattening on an instance basis. * Now -used_models works properly on the icwrite_ic command when hierarchical cells are present. Version 2.0.0 pre35 ======================================================================== * Added EZedit script to implement an interactive itools library manager. * Added icmodel ports Tcl command to output ports of a pin. * Added -Q (quiet) option for prettier startup output for EZedit. * Fixed crash in route_only case (igrouter) due to changes in internal graph structures. * Fixed channel compaction when one routing layer is much wider than any other layer. * Added initial support for itools interactive editor. * Added -popup option to icrouteable_report so popup can warn users when unrouteable nets exist. * Added itoolslm alias for EZedit. Added version cache to libmanager in EZedit. * Added filter options to the icgds enumerate command. Added MERGE ability to the icgds_define LAYER command. * Added the -ignore_bind_errors command the the icread_ckt and icread_ic commands. Added the icexit_on_bind_error command to handle bind errors in general in the translator. * Fixed bug in parallel placement algorithm which was degrading the results. * Update the parallel host creation and manipulation tool ichost so that it understands the icdaemon and uses it to test the parallel setup. * Improved the graphics behavior when in the parallel mode using icdaemon. Previously startup times were extremely slow. * Added support for clock spines. Now the placer runs twice to place clock drivers such that all loads are either in the same row as the driver or in either of the two adjacent rows. * We now turn off port compaction except for the last iteration when speed is set to fast 20 or greater so compaction doesn't dominate run time. * Added support for uniform sparecell placement. * Added the iccost relax_minjog command to the detail router to control minjog design rules. * Fixed typo which prevented reading ANTENNACELL in the LEF translator. * Added the ability to recognize instance placement properties to discover the instance name. Added the icgds property command. * Added support for extracting the prBoundary from CCT input files. * Added GRID_IOS to .ncons file. * Fixed problem with infinite loop in clustering for some special netlists. * Added power/ground mesh generation interface to the detail router. * Added driver centering constraint to the clock spine constraint. * Added ability for the user to supply the log file pathname. In addition, now we create the .itools directory if it doesn't exist so the default log file will work properly. * Improved error handling capability of LEF reader. Now complains when geometry supplied is in error. * Added the icgds_define SUBSTITUTE layerx WITH layery rule so user can modify GDS on the fly and replace the routing layer input to itools. * Now the placer does not spend excessive time in the final stage placement algorithm when fast placement is requested. * Added icrow given_boundary command in the iplacesc program. * Fixed problem with autodetecting placement scripts. * Added pre_equalize_row option to placer for completeness. * Added ability to allow_row_overlap in the global routers for completeness. This is a risky endeavour as the global routers assume that cells in the rows do not overlap and its use is discouraged. * Improved the IO routing appearance by routing each of the nets in a clockwise order starting from the bottom left pad. * Added pad routing optimization Tcl function for detail router. Added this function also to the place pads dialog box. * Fixed problem with pre_equalization of rows in the placer. Now spacer cells are properly added to the design. The global router performed the algorithm properly and this error is only seen if only placement is performed. * Fixed problem with small misalignment of layers in the detail router. * Added icvias grid_if_possible option in detail router. * Fixed problem with writing out SPARECELL constraints. Previously, there were no spaces between the keywords. * Fixed problems with floorplanner not reading the correct parameter file when performing detail routing. * Got rid of annoying warning message in detail router which states the tile is NULL. * Fixed problem with global nets not routing properly. Problem was that not all global pins were being added to the list of target route pins. * Now spine buffer are assigned using linear assignment so that row overflow is minimized. * Added the icspeed command it iplacesc. * Now we revert to left-edge standard cell placement when row pre-equalization constraints are badly specified. This way a good result with respect to wire length is returned. * Improved result when many spacer cells are present. * Added the icnet globalbind command. * Added missing Wire Length Monitor command to igp floorplanner. * Added the -pin_type option to rowstraps GUI. * Fixed problems with icglobal_nets function. Now output is correct whenever implicit global signals are requested. * Fixed problems with initial bin packing algorithm in the igp floorplanner. * Now core size is properly reinitialized when rerunning the floorplanner in igp. Now we calculate a minimum size for the core based on bin packing and we don't allow the automatic size of the core to go below it. * Fixed problem with output_at_density spacing in global router. * Fixed problem with searching EZ for keywords. Previously it complained that ...icsearch.js could not be loaded due to an unterminated string literal. * Now we make sure that all class assignments to clock spines are properly within the range of valid rows. In addition, centering option now works properly. * Now both icinstance core and icinstance corecell work properly. Some Tcl scripts were referencing icinstance corecell which wasn't implemented. * Added POWER_MESH constraint to .ncon constraint file. * Added icgds_label_instances_from_text option so we can extract instances from GDS when instances are labeled. * Added the icplacepads::assign function in itranslate so we can assign pads to sides if needed. Also added the icrow::assign function so we can extract row info from a placement. * Added ability to reference icmesh GUI capability from an idetailer script. * Fixed problems with stacked vias in contour detailer router. Now generated routes do not create massive design rule errors. * Fixed problems with extracting rows in translator when feeds are present. * Added the depth option to the icgds find command for completeness. Added icgds lookup command so we can get gds layer numbers from symbolic name. Also improved gds commands so that you can either use raw GDS units or design units. Added the -obey_cons and -verbose options to icpad findside command. * Added a tolerance option to the sparecell constraint. * Added the CLUSTER constraint for row-based placment. A cluster may be defined by the user by using the CLUSTER constraint in the .con file. See EZ for more details on the constraint syntax. * Began work on adding CLUSTER constraints to igp. * Added CLUSTER_SUBCIRCUIT constraint to .ncons file constraints. * Fixed problems with trying to fix undersized pins on cut layers in the detail router. This operation should only be applied to routing layers. * Fixed problem with false design rule errors when insulators are present in the routing. * Fixed problem with false design rule errors when insulators are present in the routing. * Added CLASS_EXPR, CLASS_MODEL, and ROW_CLASS constraints to .ncons file constraints. * Fixed problems with -setgrid option to idetailer placepads Tcl script. Now properly support padgroups in optimize pad routing command. * Added icroute_statistics namespace in the idetailer program so that we can make a routing report. * Added stdcell placement capability to the igp program. Now the second generation floorplanner can place stdcells as well. Version 2.0.0 pre34 ======================================================================== * New fat wire algorithm which is far more accurate in determining fat wires. * Fixed problem with global nets in the detail router. Previously, non global nets with the same name were being tagged as global. Now we correctly match by the group number. * Improved the neighborhood report file so that it now reports violations in decreasing order. * Added new algorithm to pre equalize the rows when in ECO mode. This is available in placement when ECO is in effect and equalize_rows is enabled in the parameter file. In the global router, this algorithm is enabled thru by either the enaabling of either eco_placement or pre_equalize_rows. In allow_space overlap mode, pre_equalize_rows is turned on by default. When the desired row topology is rectangular, this algorithm will generally achieve better results in the case of eco_placement or when space is allowed between cells in the row. * Fixed problem with buffering nets in "flat" placement mode. Previously, we only buffered nets in hierarchical mode. * Fixed problem with row topology program not outputting all rows. This occurred with some complex row topologies when rows were split with exceptions. * Improved the rigid neighbor algorithm so that it generates better results. * Unified the grid parameter option so the "grid xgrid xoffset ygrid yoffset" is valid as a parameter for all programs. * Now special width gets highest precedence followed by database width and then minimum design width for a layer. This allows one to route all nets on the layer above minimum design rule width in an efficient way. * Added ORIENT_MODEL, ROUTING_WIDTH, and TIMING_FACTOR to .ncons file. * Major rewrite of the path straightening algorithm in the gridless router. This was needed in order to satisfy notch design rules. * Added the -global, -noglobal, and the -index switches to the icinstance nets command. * Improved error checking for double row height cells. * Fixed problems turning off density display in global router. * Added support for inverse keepouts in the detail router. * Added minimum jog design rule checker in the detail router. * More improvements to detail router's path straightening code and added ability to visualize undersized pins. * Added eco_preview capability in the placer for user debugging. * Added the -e switch to the syntax program to enable more comprehensive syntax checking. The switch turns on keepout checking. * Updated the global router to handle stdcell macro obstructions properly. * Rewrote the supply alignment code so that it is not limited to a maximum number of geometries and now the power supply geometries are analyzed more carefully. In addition, a tolerance amount has been added to the parameter file call "alignment_tolerance". * Major rewrite of the detail routing to handle fat wires correctly. * New antenna rule design checking algorithm which is more accurate and very fast. * Improvements to the floorplanners pad placement capabilities. CORE and PADRING options are obeyed if possible. * Now allow both forms for icpad_ring and "icpad core" itranslate commands. Both commands accept both a list of coordinates or 4 separate coordinate arguments. * Updated the error messages in icinstance so they are less cryptic. * Added the ability to output representatives of each row class in the syntax program so debugging is easier. This is available using the "syntax -e -v" command line options. * Fixed problems with generating keepouts when using the icread_cct command in the translator. * Fixed a problem with the placer which prevented it from finding the optimal placement of a simple inverter chain. This problem resided in the orientation optimization code. * Added the ability to draw pedestals and references in the floorplanners. In addition, we added a crude compaction algorithm for use when user has specified the rows. * Rewrote antenna rule checker and antenna rule violation remover. The new algorithm is much more efficient. * Fixed problem in the detail router when reloading "contracted" netlist. Previously, global net indices were not updated after the contraction. * Added the ability to set the random seed from the command line. This feature was added to allow the create of the icexplore command which will run a set of placement and global routing steps and pick the best one. This is useful when you absolutely need the smallest die/block size. * Added the -lumped and -scale options to the icwrite_routing_sdf command. The -lumped command forces the command to calculate the delay as the lumped capacitance multiplied by the driver strength as opposed to the default Elmore delay of the routing. The -scale option allows the user to scale the result. * Fixed problem with channel compactor which prevented it from achieving maximum compaction. * Fixed problems with the iroute compacting algorithm when macro blocks are present. In addition, icregion_info minspace and extra space commands allow control over compaction constraints. Also fixed problem with origin of designs with macros. * Fixed problem of detail router dropping local connections to global signals. * Fixed crash of detail router due to a samenet via calculation bug. * Updated gds label routine so it puts the label in the center of the instance. * Added logging function to iclicensed so that exit reason is logged. Use iclicensed -bl or use the "license log on" from ladmin -a to enable logging. * Fixed vertical pedestals and vertical rows in placement. The overlap function was using the wrong dimension and so spacing was incorrect. * Added the icrow instances command in the translator so we can detect out of order cells. * Added the density_pad_adjust mechanism to the global router. Now there are two options when using this feature: move the pads or shrink the core when the adjusted cells just don't fit the given pad ring. * Added the EXPAND_PADS and ROWS options to the cons_options.tcl file so we can handle expanding the core using the density_pad_adjust feature and allow pre-existing row definitions in the .ncons file. * Added improved fat wire algorithm which speeds routing over previous fat wire algorithms. This is a major improvement over 34u and earlier versions. * Added more error checking to the SDF output routes function. * Fixed problems with icwrite_sdf function when writing lumped capacitance without including layout pin capacitance. Previous some pins were not output. * Fixed a crash in the detail router which occured when fat wires were *NOT* present. * Fixed problems with the design rule checking built into the detail router. Previously, it was misssing some fat wire errors. * New code to handle longer sets of inverter chains properly in P&R. If all inverter chains are placed in a single row, the probability of the placer finding optimal solutions has been significantly increased (100 out 100 runs). 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. * Improved behaviour of pad placing code in detail routing when variable pads are requested. * Now the icstripe Tcl code may be issued in the detail router when in nographics mode. 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.