Xic Generation 4 Release Notes This is the 4.3 post-production series. See the release note archive for the production releases (4.2.1 - 4.2.16) and earlier. The 4.3 branch is the first open-source release of the XicTools. The programs (Xic, WRspice, and others) are available at no cost, in binary packages for selected operating systems, and as source code. As open-source, there may well be many different versions of the programs available. As much as possible, these will be consolidated into general releases, and tagged known-good releases will be issued periodically. The latest source code will be available directly from the repository, for those wishing to track the latest. Scroll down to the notes for the current Xic release, which follows some important general information. ***************************************************** IMPORTANT -- General changes from 4.2 branch 1. If you currently have XicTools programs installed from earlier branches, it is strongly recommended that these be deleted. This will be managed automatically by the wr_install script. Under Windows, you can use wr_install under Cygwin, or you can run the cleanold.bat file before installing 4.3 programs. You should NOT delete the gtk2-bundle packages for Windows and OS X, these are still required for 4.3. Your present releases of Xic and WRspice can be saved in Safe Install format (even under Windows), and existing safe-installs won't be affected. 2. The Safe Install feature now applies to all packages, including Microsoft Windows. In Safe Install, when updating, the current release is saved in its entirety, and can be easily reverted to if necessary. The Safe Install logic is now implemented with scripts included in the distribution files, and no longer relies on use of wr_install. 3. Distribution file names, and operating system names, are a little different now. The new OSNAME format is now in the form NAME[.ARCH], where the optional ARCH defaults to x86_64 if not given for Linux/OS X, or i386 for Windows. 4.2 OSNAME Corresponding 4.3 name Darwin64 Darwin LinuxRHEL5 LinuxRHEL5.i686 LinuxRHEL5_64 LinuxRHEL5 LinuxRHEL6_64 LinuxRHEL6 LinuxRHEL7_64 LinuxRHEL7 Win32 Win32 4. The XicTools source repository was migrated to GIT from CVS. The source tree orgainzation was improved. The build, packaging, and package installation systems were extensively revised. Previously external accessories such as adms (used with WRspice), and fastcap and fasthenry (used with Xic) were added to the XicTools collection. New packages sets for Fedora26 and OpenSUSE13 were added. 5. Support for OpenAccess in Xic is back. Non-commercial or OpenAccess Coalition members are free to use this capability. 6. In Linux and OS X, Xic is now run from a shell script, which uses the XIC_LIBRARY_PATH environment variable to set the LIBRARY_PATH environment variable during execution. The XIC_LIBRARY_PATH variable can be used to transfer the location of the user's OpenAccess library, for example. ***************************************************** IMPORTANT -- Mac OS X note! The Darwin64 package release is now generated on High Sierra (10.13), but the programs are fully compatible with Sierra (10.12), Mojave (10.14), and Catalina (10.15). Support for earlier OS X releases has ended. This is Apple's decision, not mine. ***************************************************** IMPORTANT -- Font Size (March 2020) The default GTK font sizes generally seem reasonable on Linux and Windows, but not on Apple, where they are too small on my old 2010 13 inch MacBook Pro, and too large on my new 15 inch MacBook Pro. One can change the fonts with the Font setting pop up and saving, but these apply only to text in application windows, not the native widget text. The widget text size could be changed in the .gtkrc-2.0 file. Now, the default application font sizes track the widget font sizes, so fixing font sizes can generally be done very simply from .gtkrc-2.0 as below. 1. Create (if necessary, it might already exist) a file in your home directory named ".gtkrc-2.0". 2. Add a line to the file, for example: gtk-font-name="foo 10" The integer 10 is an example, your size may vary. Experiment to find the best size for your screen. For my old MacBook I use 18, for the new one 10. Linux and Windows seem to get this right in the first place, 10 being about the default. ***************************************************** IMPORTANT -- Linux and OS X only You should remove the following directories from your search path: usr/local/xictools/xic/bin usr/local/xictools/wrspice/bin (assuming tools installed under /usr/local, this could be different). These directories were required in your search path for earlier Xic and WRspice, as part of Safe Install support. In 4.3 releases, all executables are linked into the /usr/local/xictools/bin directory. This directory should remain, or be added to your search path if not already there (again /usr/local is the default, and should be replaced by your actual installation location prefix). ***************************************************** IMPORTANT -- Windows notes WINDOWS USERS SHOULD DO THE FOLLOWING: To avoid rendering problems with tree-view display components. Edit the file c:/usr/local/gtk2-bundle/etc/gtk-2.0/gtkrc Either comment out the line by adding a # character at the beginning, or replace the line with gtk-theme-name="MS-Windows" This changes the appearance of Xic and WRspice, which may look better to Windows users (I think so). * DLL issues. The gtk2-bundle package must be installed to support any XicTools programs that use a graphical interface. This is the same bundle as was used with 4.2. You should NOT have the gtk2-bundle/bin in your search path, as it might then adversely affect operation of other programs. The programs that need the bundle DLLs should be run from the .bat files, i.e., xic.bat, wrspice.bat, and others. These are installed by default in /usr/local/xictools/bin, which should be in your shell search path. * Cygwin users: Cygwin now defaults to a new "mintty" terminal emulator. This does NOT work AT ALL with WRspice, or any other native Windows application that interacts with the console. The same applies to xterm and rvxt terminal emulators compiled under Cygwin. These work better for running Xic, or running WRspice from Xic, where the terminal window is not interactive, but there are subtle problems so this is not recommended. WRspice can be run from the old-style native bash box, or a native DOS box. For example, start a Command Prompt terminal window ("DOS box") from Windows, and give the commands cd c:\cygwin64\bin bash --login -i This gives the traditional Cygwin window, suitable for running WRspice. This can be encapsulated in a bat file that can be run from an icon, there may be a c:/cygwin64/Cygwin.bat file in the Cygwin distribution that does exactly this. If not, create a Cygwin.bat file somewhere with the contents @echo off C: chdir C:\cygwin64\bin bash --login -i This assumes that Cygwin in installed in C:\cygwin64, modify the file text appropriately if not. Create a desktop icon that will run this bat file, and use it to launch Cygwin windows for running native Windows applications including WRspice and Xic. Note: the 64-bit Cygwin64 is recommended over the 32-bit Cygwin, which suffers from internal problems due to conflicts with Windows Defender and other Windows programs. This caused mysterious run-time failures of Cygwin programs on my Windows 10 machines. ***************************************************** End of general info. =============================================================================== xic-4.3.10 07/20/2019 Current Release CHANGES AND NEW FEATURES ------- --- --- -------- * Updates to the FastHenry interface. 1. New technology file physical layer keywords: FH_nhinc, FH_rh. These correspond to the FastHenry nhinc and rh segment options (number of filaments and filament width ratio). When given and non-default, these will be added to each segment definition for the layer that is parallel to the substrate and has the height of the film thickness, in generated FastHenry input files. 2) New variable FhDefaults and corresponding entry area in the LR Extraction panel (from the Extract menu). Any text in this entry is added to the generated FastHenry input file in a ".DEFAULT" line. * Default Technology Files Added a technology file for the SeeQC 4-superconducting layer process (c4S1). This is a continuation under new management of the Hypres process. SeeQC Inc., Elmsford, NY USA https://www.seeqc.com https://seeqc.com/wp-content/uploads/2020/02/SeeqcDesignRules_S1.pdf The Hypres tech file will remain for now, for historical compatibility, but that process no longer exists - use the SeeQC tech file for new work. * New Predefined Macros New predefined macros are TECHNOLOGY, VENDOR, and PROCESS, all upper-case, and added Process and Vendor techfile keywords, analogous to Technology. The macros are set in the technology file, e.g. Technology sce Vendor SeeQC Process c4s1 These expand like other macros., and can be queried when macro expanding lines from startup files. In device.lib, for example, If vendor = IBM ... Endif. The TECHNOLOGY value is also set as a Define, as if (from the example) Define sce was given. * Misc. Properties and Terminals For R, L, C devices, it is now possible to apply both a model and value properties. Both properties are used when netlisting. One can now set/modify vectored instance range by editing the label. If the given name string contains a range suffix , it will be used to set the range property. Lack of a suffix will delete an existing range. It seems that the only way to revert to internally generated labels is to delete the name property in the Properties Editor. The "byname" terminals are now forced to have the same locations as bus terminals that they implelent bits of. This is for consistency, and for the Node Mapping panel marks. BUGS FIXED ---- ----- * Repetition is now added to gpulse source instances read from from OpenAccess. * Fixed a SPICE netlisting bug. * Fixed a weird display problem on OpenSuse. Before, if the mouse enters the Xic tray icon, the display will be munged if the pointer is in the main drawing window when redrawing. Dragging the mouse over one of the other icons would fix things. * Updated the SPICE output line sorting to better represent arrayed instance names. * Fixed bug: press/hold button 3 in drawing window, move pointer out of Xic and release, get a segmentation fault. * Fixed an issue under Ubuntu with the default theme. The Print Control panel was black and basically unusable. * Fixed some problems with netlisting of arrayed instances and bundle terminals. Most importantly, terminal devices with non-scalar net expression labels didn't work. * Fixed bad syntax in SPICE output .saves from vector subcells. * Suppress display of invisible terminals in ghost move display of schematic instances. * Fixed bug, moved instance bus terminal positions were not updated. * Fixed an ugly one. When a cell was saved as native, the bounding box would become incorrect, and physical cells would appear empty if there are no subcells. * Fixed bug, couldn't revert from assigned name of instance. * When editing a range property from the Properties panel, any existing text is now displayed in the prompt line. * Fixed connectivity bug in arrayed bus terms. * Probable bug fix, when WRspice doesn't converge, sometimes Xic freezes. Added code to (tentatively) avoid this problem. ------------------------------------------------------------------------------- xic-4.3.9 11/20/2019 Current Release CHANGES AND NEW FEATURES ------- --- --- -------- * Improved FastHenry interface. FastHenry: XicTools update to the 090919 package, release number 14. The default solver is now KLU, which can be much faster. Updates to the FastHenry interface for faster/better operation, particularly with non-Manhattan features. Manhattanizing is now done before any cutting. The FhMinRect variable no longer exists, non-Manhattan refinement is handled by FhManhGridCnt. New variable: FhManhGridCnt The minimum size used to approximate non-Manhattan is sqrt((area of interest)/FhManhGridCnt). Larger is more accurate but slower, similar to FhVolElTarget. The range is 1e2-1e5, the default is 1e3. An entry area in the Params page of the FastHenry interface panel sets and is set by this variable. During refinement for the FastHenry interface (Volume Element Refinement is checked on the Params page of the panel), volume element size is computed with a new algorithm which provides a better value. * Improved portable-PCell (Synopsys/Ciranova) grip support. Xic now handles all Ciranova location codes. The locations that are not centered on a Manhattan edge are displayed as glyph grips (others remain as lines). 45 degree rotations work now. * Miscellaneous Environment variables are now recognized and expanded when handling most file paths. In particular, these are used when generating .include/.lib lines when generating SPICE output. New environment variable XIC_TECH_DIR. The value is a path to a directory. If given, the directory is searched for the technology file, if not found in the current directory, and before other locations. BUGS FIXED ---- ----- * The macro functionality (opamp example) was broken, an internal macro flag was not getting set when reading a disk file. * The OppenAccess plug-in can now build under OA release major 5. * Errors in ReadCdsLmap were reported as from ReadCdsTech. * The is_library OpenAccess interface function was succeeding only for libraries defined in the top-level lib.defs file. The search now recurses to full depth. This prevented the Place button operation from Content windows from the OA Libraries pop-up from working except for libraries defined at the top level. * Avoid spurious warning about changing group count in the FastHenry interface. * Fixed a crash in the Compare Layouts function in the Convert menu. ------------------------------------------------------------------------------- xic-4.3.8 8/5/2019 Current Release CHANGES AND NEW FEATURES ------- --- --- -------- * Internal code refactoring for better maintainability. * Internal code changes to avoid compiler warnings and faults from new compilers. * OpenAccess Support The OA TCL pcell example now works in Xic. One can place, remaster, etc. Added a debug print of the PCell evaluator name. * Misc. Changes Now just append ".cir" to the cell name to create the default SPICE dump file name. Previously anything after a final '.' was stripped before appending "cir". When entering an analysis string for the run and deck buttons, leading periods are now ignored, e.g. ".tran" and "tran" are equivalent. BUGS FIXED ---- ----- * Fixed a bug that prevented the Place button operation from Content windows from the OA Libraries pop-up from working except for libraries defined in the top level lib.defs file. * Fixed: for RPM distributions, wr_install needed to be run twice to properly update an existing installation. * Note regarding Debian and warnings about missing Adwaita theme. User can add this theme: sudo apt install gnome-themes-extra * Eliminated a spurious OA message that appeared sometimes when saving native cells. * Changes to the OpenAccess interface to avoid cell name clashes with Xic device library names. Many cells in the analogLib couldn't be opened or placed from the Contents Listing, "oa_" is now prepended to the OA cell name to avoid clashes. ------------------------------------------------------------------------------- xic-4.3.7 3/11/2019 Current Release CHANGES AND NEW FEATURES ------- --- --- -------- * Updates to the OpenAccess plug-in. Lots of work on the OpenAccess support. The OpenAccess TCL pcell example now works in Xic. One can place, remaster, etc. TCL can therefor provide a portable pcell language. So why is there a need for Python portable pcells, as championed by Ciranova/Synopsys? Maybe the need to be fluent in both OA and TCL is too much of a barrier. The "tweaking" applied to devices from the analogLib has changed. Previously, all cells from analogLib were given a "alib_" prefix in Xic to avoid name clashes. this is no longer done. Instead, there is an internal list of cell names, mostly from analogLib and Basic (these libraries are supplied with Virtuoso and Synopsys Custom Compiler). If an OA cell name is found in this list (from any library), "oa_" is prepended to the corresponding cell name in Xic. If a device instance has an instance name prefixed by the name prefix (either the CDF entry or an instNamePrefix property), the instance is given this as an assigned name. * Miscellaneous Changes New variable: SpiceInclude (string) This can be set to a file path. When a SPICE netlist is created with this variable set, text will be added to the top of the SPICE deck. If the file is found, the text from the file is added to the deck verbatim. Othewise, ".include path" is added, the path being the file path from the variable. This applies when ceating SPICE with the deck button, or when preparing input for the simulator when using the run button. Updated the rsfq_lib.tar.gz file in the examples. Cleaned out .bak cells and added a pdf of the 2013 JJ Workshop talk that addresses inductorless RSFQ. BUGS FIXED ---- ----- * When entering an analysis string for the run and deck buttons, leading periods are now stripped, ensuring that only one period is used in the SPICE output. * Just append ".cir" to the cell name to create the SPICE input file name, previously anything after the final '.' was stripped before appending ".cir". * Many bugs were fixed in the OpenAccess support and plug-in. * Renamed a function to avoid name a clash with virtual function (different args so safe) reported (only) by Clang in OS X Mojave. * Fixed a strange Ubuntu-18 problem where a button widget name apparently clashed with the theme and it inherited a black background. Changed name SelPanel to SelCP to fix. ------------------------------------------------------------------------------- xic-4.3.6 8/14/2018 CHANGES AND NEW FEATURES ------- --- --- -------- * Schematic property changes. The Name property, used for cells and cell instances, has changed. This is internal and leads to better efficiency. The Macro property has disappeared, and has been replaced by a flag in the Name property. The property usage model for Name/Macro properties has changed, and there is a backwards compatibility issue. > Xic 4.3.6 can read and correctly process any Xic file. > Files written by 4.3.6 contain no Macro properties, unless the WriteMacroProps variable is set, in which case any needed Macro properties will be regenerated when writing output. This must be set for files written with xic-4.3.6 to be read properly by earlier Xic releases, if Macro properties would be present. However, Macro properties are unusual, and these are set primarily by the OpenAccess reader when encountering certain passive device schematic symbols that are implemented as macros instead of models. Unless you have created these yourself, or are using OpenAccess with a PDK, you won't have to worry about Macro properties. When Xic-4.3.6 encounters a Macro property when reading input, a window pops up warning the user to set the WriteMacroProps variable before writing output to be exported to pre-4.3.6 systems. If this doesn't appear, then the design is "safe". The message will not appear if the WriteMacroProps variable is set, which can be done in a .xicstart/.xicinit or techfile. If you are using 4.3.6 only, just save the design to produce files without Macro properties, and thus avoid the pop-up. Specific changes. 1. New separate propery structures for cells/instances, instance name derives from cell name. 2. In Name property string, there is a new "macro" keyword which sets the macro flag. Ths logic is about the same as before, with "macro" being the complement of the previous "subckt" flag, for elements keyed with X. 3. The macro flag can be set for devices as well as subcircuits. For devices, this replaces the separate Macro property. Old files with macro properties read fine, the macro properties set the flag and are removed. They can be regenerated in output if the new WriteMacroProps variable is set. This is required for backward compatibility to 4.3.5 and earlier when Macro properties would be present. 4. The macro flag in instances is inherited from the master and is not settable from the instance name property string. 5. The property string syntax has changed a bit, but is backwards compatible except for macro properties. Master: if macro flag is set: macro else if The "X 0 subckt" is for backward compatibility, just "X" would be sufficient for 4.3.6 and later. Also for backward compatibility, the reader takes "X anything" (two tokens) as "X macro". Instance: any case: number [subckt [ ]] The "subckt" appears if starts with "X" and macro is not set in the master. Coordinates additionally appear if a physical label was placed (in extraction). The "subckt" and coordinates are ignored by the reader, but can be seen in native cell files (for example). 6. If a macro property is read, an Info window appears telling the user to set WriteMacroProps if backwards compatibility is needed. * OpenAccess interface enhancements Update to OpenAccess translator property handling. All electrical cell properties are now read at once, from both schematic and symbol views, before reading other content. This ensures having all values available when needed, which avoids some trouble. A new property XICP_PARTNAME (7162) can be applied, and is set from "partName" properties when reading OpenAccess. This is used in in @partName text labels. * Misc. Changes If a file named ".xic_ignore" exists in a "models" directory, the directory content will be ignored. A -d option was added to the !mklib command for creating references to directories that contain collections of native cell files. * New !preload command and RegisterSubMaster function. These allow native sub-master cells in the library to resolve references when reading OpenAccess data, useful when pcell evaluation is not possible. Rather obscure, see the help system (give "? RegisterSubMasters") for complete information. BUGS FIXED ---- ----- * Fixed a bug causing some temporary files to not be deleted on normal program exit. * Prevent the simulation monitor pop-up from taking focus, to avoid giving focus back to the main window which causes iplots to disappear underneath the Xic window (on some window managers). * The extraction system will now ignore duplicate instance placements, these are ignored elsewhere as well. Previously these caused errors and required explicit removal before extraction would work. * Fixed a bug causing errors if the Place button was used with library cells. * Using Place from the Contents pop-up from the OpenAccess Libraries listing panel requred that the library be open, or there was an error with an uninformative message. The library is no longer required to be open for placement through this button. * Fixed ghost terminal marks incorectly appearing in the main window when copying from a schematic sub-window with a different cell, and the mouse pointer is in the sub-window. * Avoid showing the Merge Control pop-up spuriously when loading pcell sub-masters. * Fixed miscellaneous bugs in pcell evaluation. * Highlighted bus terminals were not being erased when deleted. ------------------------------------------------------------------------------- xic-4.3.5 4/19/2018 CHANGES AND NEW FEATURES ------- --- --- -------- * Technology file search. The technology file will now be found if installed in a subdirectory named "techfiles" in the directory where Xic is started. The search order is the current directory, techfiles subdirectory, the library path. * The software updating through the mozy help browser should work now. The special url is ":xt_pkgs". BUGS FIXED ---- ----- * In Windows, the interprocess communication to WRspice was broken in the default installation. The installation format change and other things prevented the setup from working "out of the box". Basically, the internal default path to WRspice could not be found. One would have to set up the path manually, using the SpiceProg variable. Also, the batch file can not be used here, one must link the .exe file, which is no longer exported to .../xictools/bin, but can be found in the link .../xictools/wrspice/bin. Anyway, the default setup should be ok now. Also, the installation script used "junction" links for the executables linked into .../xictools/bin. These can't be run from cmd.exe (a "DOS box") for some reason known only to Microsoft. These have been changed to normal symbolic links which seem to work now in the current Windows 10. The junction links work fine in a Cygwin window. * Fixed a minor bug in the FastCap/FastHenry interface: if the program was run in the foreground, the "Running jobs" displayed in the panel would be incremented but not decremented when the run finishes. * Fixed a problem in the "Node Mapping" panel from the side menu. In click-to-select mode in a physical mode subwindow, with the "Use Extract" check box not checked, the wrong node was being selected. * Xic was not recognizing the new xictools-included fastcap and fasthenry as being the "wr" versions. * Fixed crash due to dark-field ground-plane when grouping. ------------------------------------------------------------------------------- xic-4.3.4 2/23/2018 CHANGES AND NEW FEATURES ------- --- --- -------- * Flattening functionality update. Three new boolean variables: NoFlattenStdVias When set, standard via instances will not be flattened, but are retained as standard vias at the top of the flattened hierarchy. NoFlattenPCells When set, parameterized cell (pcell) instances will not be flattened, but are retained as pcells at the top of the flattened hierarchy. The NoFlattenStdVias and NoFlattenPCells modes apply only when flattening without windowing. When flattening cell data from a file, these apply only when the sub-masters are not included in the file (i.e., the sub-masters are created in Xic). When true, instance placements are retained but moved to the top of the flattened hierarchy. NoFlattenLabels When set, labels in subcells are ignored when flattening. This prevents creating wire nets with conflicting net labels. These variables have corresponding check boxes in these four panels: 1. Flatten Hierarchy, from the Flatten button in the Edit menu. 2. Export Control, from the Export Cell Data button in the Convert menu. 3. Import Control, from the Import Cell Data button in the Convert menu. 4. Format Conversion, from the Format Conversion button in the Convert menu. * I/O update (Convert menu functions). The Import Control panel now has a windowing/flattening control group in the Read File page allowing these operations to be performed as input is being read (physical data only). The Export Control and Format Conversion panels are now paged, with a Setup page that provides options, and a second page from where the operation is started. The Import Control, Export Control, and Format Conversion operations now work more correctly with library, standard vias, and pcells. By default, masters of these cells are never written to output unless this is explicitly enabled (by check boxes in the Setup pages or variables). If written, while scaling, these masters will never be scaled. Instead, all of their instance placements are scaled. The WriteAllCells variable has been renamed to "KeepLibMasters" which better describes its effect. WriteAllCells still works as an alias for now but is undocumented. The Format Conversion panel now has check boxes "Include library cell masters", "Include parameterized cell sub-masters" and "Include standard via cell sub-masters" which track the variables KeepLibMasters, KeepPCellSubMastgers, and KeepStdViaSubMasters. These are also found in the Export Control panel. These determine whether library cells, pcells, and standard via cells are written to output. * Update to !netext command. If neither of -w or -g is given, or "-w 0,0,0,0", or "-g 0", then the effective area is the entire bounding box of the top-level cell. In this case, there is an additional "-vs" argument recognized. When given, standard vias will not be flattened but remain as instances in the net cells. This applies when via sub-masters are not included is the source file, and are thus created internally in Xic. If the net has a name, a generated net file will be given a cell property with number 7149 and the string being the net name. Beware if using a grid: if flattening, the top net cell will contain the net name properties from all grid cells, so there may be duplicate or inconsistent name properties. If not flattening, the primary and all subcells should be checked, each property applies only to the corresponding grid location. In either case, conflicting names need to be dealt with somehow. BUGS FIXED ---- ----- * Updated special-purpose code that helps associate physical and schematic MOS circuits. The previous test required that power and ground nets be defined as global. If not so defined, some device associations wouldn't be found. The new code doesn't require this, and provides complete association in these cases. * The files xic.exe and wrspice.exe triggered a virus alert in the Webroot virus scanner. This is spurious, but prevented the programs from being installed. I found that by not stripping these exe files, the alert wasn't triggered. The Makefiles were modified to not strip xic.exe and wrspice.exe for this reason. * Fixed up the Apple gtk2-bundle-x11 build, which needed some tweaks to the library list for the current MacPorts. The wr_install script now installs this without complaining that it isn't an xictools-4.3 distribution. * The Selection Contol panel object type filtering was not working. * Conversion function scaling bugs fixed. The operations from the Import Control, Export Control, and Format conversion panels did not play nicely with scaling and library, parameterixed, and standard via cells. Much effort went to cleaning this up. * The main cell database was updated to fix a logic problem that would cause trouble if there were large numbers of duplicate objects. This was discovered when a coding error was producing dozens of redundant standard via cells at each location. Removing the duplicates with the duplicate object filter would cause crashes, and other odd behavior was seen. Presently, the database should be immune to this, which is unlikely in real layouts, but one never knows. ------------------------------------------------------------------------------- xic-4.3.3 1/10/2018 CHANGES AND NEW FEATURES ------- --- --- -------- * New system to generate and track instance names in physical mode. Each physical cell instance has a name consisting of the master name, colon separator, and a 0-based index number in database order (top to bottom then left to right of the upper left corner of the instance bounding box). The index number is increased by the size of the array when numbering array instances, to leave space for indexing individual components. The instance name is used in the Select/Choose Instances panel (see below), in the label of unexpanded physical instances shown in the drawing windows, and in the extraction system. Instance numbers are regenerated when needed, after a modification which changes the instance list of a cell. They are stable and reproducible as long as the containing cell and its hierarchy are unmodified. New boolean variable: NoInstnameLabels When set, unexpanded physical instances in drawing windows will use the master name (as in previous Xic releases) rather than instance names introduced in this release. * Selection system change. A new pop-up applies when there are three or more cell instances potentially in a selection operation (point or area) and no selectable geometry. The Select Instances panel produces a list of instances with a clickable yes/no to toggle selected status of each listed instance. When the selection mechanism is used to choose instances for some other purpose, the same pop-up, laabelled "Choose Instances" appears. The pop-up is modal in either case, meaning all but the pop-up is locked out while the pop-up is visible. This was implemented to allow selection of instances when there are many overlapping subcells, such as a netext file where each wire net is a separate subcell. * Script functions changed. GetInstanceName Support for physical cell instance names added. GetInstanceIdNum() Now returns the physical instance number as used in the instance name, checks for sequence validity. GetInstanceAltId() Checks for number sequence validity. BUGS FIXED ---- ----- * Fixed segmentation fault library access code. * Library references weren't being followed through a Cell Hierarchy Digest (CHD), e.g., expanded library cells were blank in display mode. * The Info command was leaving pointers to freed memory in the selection list, resulting in potential instability. * Script parser: parse of string constants was not expanding backslash escapes correctly, a\\b would be read as a\ instead of a\b. * The Logo script function was incorectly ignoring the LogoPixelSize variable. * In logo creation, there is no longer caching of the width/height of xpm data. This caused trouble when the user reuses the same xpm file name but changes the content. * In the Xiv feature set, pressing Esc twice now deselects all, the same as in Xic. ------------------------------------------------------------------------------- xic-4.3.2 10/29/2017 CHANGES AND NEW FEATURES ------- --- --- -------- * New package management system The existing system which automatically checks for updated packages has been removed, and a new package management system is available. The system for sending messages to users through the wrcad.com web site, which was never used, has also been removed. Presently, there is no internet access attempted on program startup, which saves time. The new package management page is build into the help system, so is available in Xic, WRspice, and in the stand-alone mozy help browser. Giving the keyword/url :xt_pkgs displays a page showing the installed and available xictools packages. Available packages can be downloaded and installed through this interface. This can also be accessed with the !update command. The following items have been removed from Xic and the documentation: XT_NO_CHECK_UPDATE environment variable XT_UPD_DEBUG environment variable NoCheckUpdate variable InstallCmdFormat variable !passwd command !proxy command The proxy functionality has also been moved the the help system, through a new Set Proxy button in the Options menu of the help windows. ------------------------------------------------------------------------------- xic-4.3.1 10/1/2017 Welcome the the first open-source release of Xic. Now, instead of asking Whiteley Research for new features, users can modify the source code and do it themselves. Please contribute! We can help. Changes are relative to the final production release xic-4.2.16. CHANGES AND NEW FEATURES ------- --- --- -------- * Major refactoring due to lack of C++ standards conformance throughout the program, which caused real trouble with the latest C++ compilers. Specifically, it used to be possible to write very efficient linked-list code in C++ making use of the assumption that it is possible to call a method from a non-polymorphic class through a null pointer, and check for a null "this" pointer in the function body. One could iterate over the list headed by "this" and have correct behavior when the list is empty. This idiom was not uncommon, though it violated the official dictum that calling a method from a null object leads to undefined behavior. The idiom was used in the Microsoft Foundation Class, for example. Surely, the elegance and efficiency would obviously lead to de-facto standardization, right? Alas, such code generates a warning in Apple's latest clang, and in addition segmentation faults in gcc-7.1 under Fedora 26. This code had to be replaced by static functions that explicitly pass an object pointer. Uglier, more complex code, but it works. This is an unfortunate step backward for "a better C than C" aspect of C++. * Major effort to clean up core leaks and other internal consistency issues using the Valgrind analysis tool. Lots of small things were fixed as a result. * Miscellaneous changes required in port to Fedora 26, mostly in interprocess communication code. * Reversed direction of Ctrl-mouse wheel zoom, to match prevailing standard. * The Grid panel was changed visually to avoid some cosmetic problems with the default Fedora/Gnome theme. * The Color Selection panel was updated to allow setting opposite-mode (electrical when in physical mode and vice-versa) colors. * New environment variable XT_GUI_COMPRESS. When set, don't allow space around button contents. Such space can cause side menu button images to be truncated on low-res displays. Specifically, this fixes Xic displayed in a VirtualBox running Fedora. * The !dumpcds command will now output a GDSII layer mapping file in addition to the Cadence ASCII tech and drf files. * New Join features for wires. The !join command can now join wires in electrical mode. New command: !jw [-l] Without argument, take the latest selected wire, and join it recursively to other existing similar wires that share an endpoint. With -l (letter l), join if possible all wires on the current layer. * !select layer syntax tweak. 1. A hyphen ('-') is now a stand-in for the current layer, but not in regular expressions. 2. The layer alias name (lppName) is now also tested against the regular expression. * Standard Via selection Ctrl-clicking on a selected standard via instance now pops up the standard via parameter setting panel, allowing the instance to be changed. * Wire and Polygon Termination Pressing Enter now terminates wires and polys being created in the respective side-menu commands. Also, if the click is within PixelDelta pixels of the target, the wire or poly will be terminated. This helps ensure termination with ultra-fine grid setting. The PixelDelta variable can be set to change the snap pixel value, the default is 3. * Print Control Panel updated. The Print Control Panel has changed. When the PostScript Line-Draw driver is chosen, a new Line Width entry area becomes visible. This can be used to set the line width as rendered in the plot, in points (1/72 in). The PSlineWidth variable, which was an odious hack to do the same thing, has been removed. The default is "0", which means to use the minimum line width supported by the printer. The Portrait/Landscape selection is now a drop-down menu instead of radio buttons, and some controls have changed location a bit. * The xic --v option now produces three tokens: version osname arch E.g., 4.3.1 LinuxRHEL7 x86_64 * Many more small tweaks and updates, including the following. In the Compare Cells panel with compare flat mode, the Equiv list is now explicitly set to the Cells list if nothing is entered. Otherwise file2 would use the default cell, which may not be the one listed in Cells. The cell hierarchy digest (CHD) default cell is now the first top-level physical cell by offset that has instances. The "has instances" in new, avoids choosing an uninteresting default cell. The Tree and Info reports from selections in the Cells Listing now track the display mode of the listing, rather than the current mode. If the Tree is called from the Cells List, it will no longer update when the main window display mode changes, is is "captive" of the Cells List. New code to handle standard vias when flattening, i.e., using a CHD. These vias were excluded before. The set current layer by clicking on object function now works for zero-width wires as used in electrical mode. In the script debugger, Load will now search the current directory for the script, before searching the ScriptPath. The !exec command will now check the current directory after the ScriptPath. Both avoid having to add "./" ahead of a script name if the current directoiry is not in ScriptPath. BUGS FIXED ---- ----- * Node (net) name mapping failures fixed. Fixed lack of name assignment in the Node (Net) Name Mapping panel. The operation would fail if names are case-insensitive (now the default) and the new name contained lower case. * In the Spice Commandd (side menu) operation, error messages weren't being handled. This was a core leak, too. * Numerous fixes to standard via handling internally. Standard vias should be handled transparently in all operations. * In the prompt line text editor, pressing Backspace or clicking button 1 in the prompt line now exits "firstinsert" (erase all) mode. The fact that button 1 which resets cursor position didn't do this was a bug. One could start editing a string, use btn 1 to move the cursor to the center, use Backspace to erase chars to the beginning. Typing a char would then erase the remainder of the line and there would be nothing left but the new character.