Revision information on Qflow version 1.4
Revision information on Qflow version 1.3
Revision information on Qflow version 1.2
Revision information on Qflow version 1.1
Revision information on Qflow version 1.0
Revision information on Qflow version 0.9
- posted: October 26, 2024 at 2:00am version: 1.4 revision: 104
Corrected an error in spi2xspice.py in handling tristate gates that was discovered by Robin Tsang. The index of the tristate pin was not reversed before indexing the input bit array value, so the incorrect pin was used to determine the tristate value, resulting in an incorrect logic table for the component.
- posted: May 5, 2024 at 2:00am version: 1.4 revision: 103
handle conb in sky130 standard cell pullup/pulldown
removed comment
Also: Updated the version to go along with the merge of pull request output standard cells with dual high/low outputs).
Also: Initialized variable srcdir in vesta.c per the pull request of user Teemperor (github PR #43), but wanted to initialize it to the enumerated name rather than the value 0.
Also: Corrected the tech file setting in osu018, which was incorrect as observed by user susinxy in github PR #35 (still thinking about the other part of that PR).
Also: Update Makefile.in
- posted: January 13, 2024 at 2:00am version: 1.4 revision: 102
Corrected the spi2xspice.py script to correctly handle signals that feed back into the same subcircuit; any port signal which is a subcell output should never be re-cast as an input. Thanks to Harald Pretl for uncovering this error.
- posted: November 16, 2023 at 2:00am version: 1.4 revision: 101
Modified the qflow_manager script's handling of existing startup scripts. (1) Added file extension ".tech" to the name from the "tech load" command before checking if the file exists; and (2) checking for the variant in which "path sys" is used to declare the path where the tech file is found, instead of providing the full path to the "tech load" command. This resolves issue #279 on github posted by Jacob Rohan.
Added "-silent" to the "load gds_top" command, since that option has been made available since the qflow script was originally written, and prevents an unexpected error message that users will likely find confusing.
- posted: November 30, 2022 at 2:00am version: 1.4 revision: 100
Modified the DEF and verilog readers to better support DEF2Verilog for converting DEF files generated by magic into structural verilog netlists.
- posted: August 31, 2022 at 2:00am version: 1.4 revision: 99
Corrected spi2xspice.py to add the missing model for a dlatch, and to correct for liberty files that put pins in double quotes everywhere.
- posted: September 24, 2021 at 3:00am version: 1.4 revision: 98
Corrected a missing variable initialization that can cause a crash condition in vesta.
- posted: August 28, 2021 at 3:00am version: 1.4 revision: 97
Corrected syntax for "set" command in several .sh files, in a part of the code that is usually not exercised (depends on the location of the techfile). Thanks to Junichi Akita for the bug report.
- posted: June 10, 2021 at 3:00am version: 1.4 revision: 96
Quick fix to the LVS error counting from netgen's JSON output file, corresponding to an update made in netgen 1.5.185. This change distinguishes between missing pins that are strictly in error vs. missing pins that can be ignored because the corresponding pin in the other netlist is a no-connect.
- posted: March 5, 2021 at 3:00am version: 1.4 revision: 95
Modified yosys.sy according to the correction by Dave (xphoniex) in github issue #21. The problem is that the "|&" in the tcsh script combines stdout and stderr, and because stdout is not flushed by yosys, both come out randomly interleaved. So in parsing a line for "ERROR" one cannot assume that the line begins with "ERROR". The correction strips off anything in front of "ERROR" so that the subsequent parsing captures the text of the error message as intended. As I noted in a comment to the issue, the shell scripts should really all be rewritten in python.
- posted: February 26, 2021 at 3:00am version: 1.4 revision: 94
Made qflow compatible with the goals for open_pdks by honoring the PDK_ROOT and PDK_PATH environment variables, and checking the default open_pdks install location of /usr/share/pdk/ for qflow setups, then adding these to the drop-down list of PDK choices.
- posted: February 25, 2021 at 3:00am version: 1.4 revision: 93
Corrected an issue in the spi2xspice.py that prints out lots of error messages that it should not be printing as it parses the insides of standard cells that it should be skipping through.
Finally dug into what was causing vesta to fail on the sky130 process liberty files, and fixed all the issues, which mainly had to do with out-of-(sensible)-order statements and lots of stuff in quotes.
- posted: February 23, 2021 at 3:00am version: 1.4 revision: 92
Added a simply python script to migrate a qflow project from one directory to another, making substitutions for one or more of the following: the location of the project, the qflow installation, the technology files location, and the qflow version. As much of this is handled as automatically as possible.
Revised the script from the previous commit to always use absolute paths.
Also: Corrected the python script to run through the preprocessor and not get deleted on make clean. Make the startup process more robust for finding the technology directory and files, and not generating confusing messages in the output.
Also: Modified the way that the magic scripts and the manager GUI handle the .magicrc file in the layout directory, so that it can recover from a startup file that does not specify the correct path. Also handles the case where the technology file is specified as a path relative to the technology directory and not an absolute path.
Also: Corrected two errors: One in addspacers.c causing the position offset of stripes to be incorrect when the "-nostretch" option is chosen, and one in the Makefile that failed to link the math library to vlog2Cel and causes the whole make of the src/ directory contents to fail.
Also: Corrected an error with an unititialized variable that would cause the die X area to become a random number after running addspacers, when using the "-nostretch" option.
Also: Corrected an error in which the order of the power and tap names is not arranged to match what's in the .sh file, because the routine that gets the names from LEF does not have any indication of preferred order. If it's wrong, then addspacers gets screwed up.
- posted: February 5, 2021 at 3:00am version: 1.4 revision: 91
Corrected vlog2Cel to account for non-zero ORIGIN values in lef macros (this was handled correctly by the older blif2Cel.tcl script but was not correctly translated into the C code for vlog2Cel).
- posted: December 23, 2020 at 3:00am version: 1.4 revision: 90
Added Linux CI
Added a patch from Mohamed "Donn" Gaber that allows qflow to compile under clang.
- posted: November 25, 2020 at 3:00am version: 1.4 revision: 89
Finished the fix started in the previous commit, to get spi2xspice working properly with the sky130 technology PDK (issue with pins in quotes in the liberty files).
- posted: November 24, 2020 at 3:00am version: 1.4 revision: 88
Corrected the spi2xspice.py script for use with the sky130 PDK and any technology for which the liberty files have pin() records with the pin name in quotes.
- posted: September 11, 2020 at 3:00am version: 1.4 revision: 87
Modified the readliberty.c file to handle Windows DOS-style Ctrl-R line termination.
- posted: July 24, 2020 at 3:00am version: 1.4 revision: 86
Corrected a typo in opentimer.sh (which I do not exercise often). Thanks to Peter de Jong for the patch.
- posted: July 18, 2020 at 3:00am version: 1.4 revision: 85
Corrected an error in the quote trimming routine that uses a variable before it is set, and can cause a segfault when trimming quotes from a line.
- posted: July 14, 2020 at 3:00am version: 1.4 revision: 84
Modified the netgen_lvs.sh script so that the setup script is searched for in the tech directory according to the name in the qflow technology setup script, not always assuming that the name in the qflow technology setup script is always an absolute path.
Modified the migration step to allow for extracting using the GDS views of the standard cells instead of the abstract views.
Also: Added another option to use the GDS view of a layout when doing extraction (this did not solve the problem at hand but is being retained as a useful option).
- posted: June 20, 2020 at 3:00am version: 1.4 revision: 83
Corrected the use of "restrict" as a variable name, since "restrict" is a reserved keyword in clang, as pointed out by Alessandro de Laurenzis.
Double-quoting echo messages
Also: Removed initial check on command line arguments
Also: Fix quoting for $ symbol
- posted: June 16, 2020 at 3:01am version: 1.4 revision: 82
Added support for "SYMMETRY X ;" in LEF (cells that cannot be flipped right-to-left).
- posted: June 11, 2020 at 3:00am version: 1.4 revision: 81
Corrected addspacers to handle a tiny layout with a row size too small to fit power stripes. There was already such a calculation in the code, but it was not repeated after the number of stripes was recalculated for adding fill under the power buses. Corrected the arrangepins script to avoid an error on tiny layouts when the number of rows is one. Note that this fix eliminates a critical error in addspacers which would go into an infinite loop, eating memory while doing so. It does not fix all the problems associated with tiny layouts; the design width is not reduced when the power stripes are eliminated, and no power pins are created which causes LVS to fail. However, these problems are minor and can be fixed by hand.
- posted: May 11, 2020 at 3:00am version: 1.4 revision: 80
Modified the LEF read command to optionally accept parentheses on the values after ORIGIN in a LEF file, which technically adheres to the spec, even though it is not accepted practice from the tools made by the same company that, ahem, wrote the spec.
- posted: February 28, 2020 at 3:00am version: 1.4 revision: 79
Updated the synthesis shell script to handle annoying cases where a standard cell library has four-pin power connections (power + unconnected taps) but the LEF library only contains the power pins. The setup script should contain the vddnet and gndnet entries in the form "power_net,tap_net". The script will auto- detect that the LEF library has only one entry and will use the LEF name for the power net but fill in the missing tap net from the name in the setup file.
Additional modification to vlog2Verilog was needed to handle the case where LEF files do not contain the power/ground tap pins.
Also: One additional correction to vlog2Verilog for output syntax.
Also: Missed one comma, so syntax was still wrong. . .
- posted: February 24, 2020 at 5:03pm version: 1.4 revision: 78
- posted: February 24, 2020 at 3:08pm version: 1.4 revision: 77
Updated README with instructions to use git checkout before compiling.
Added code to prevent an out-of-bounds access in the case of a missing or insufficient technology LEF file passed to vlog2Cel.
Also: Corrected an uninitialized variable that causes vlog2Verilog to crash when searching for antenna cell names matching a pattern.
Also: Found that the qflow manager "Edit Layout" does not work between LVS and GDS steps because it is expecting a GDS file from the layout that does not yet exist. Fixed.
Also: Revised vesta to use the verilog parser from readverilog.c instead of its own parser, which was not as complete. Also changed behavior to not propagate negative delay times. Not sure how realistic this is. Negative values do appear in liberty tables, but extrapolating off the ends of such tables sometimes results in avalanching negative values.
Also: Corrected error in opensta.sh script that causes an error due to incorrect command to set variable hardmacrolibs. This means that opensta.sh will run on a design with hard macros and fail otherwise. Now confirmed to work in both cases.
Also: Added code to prevent an out-of-bounds access in the case of a missing or insufficient technology LEF file passed to vlog2Cel.
Also: Modified the yosys.sh script to put the "setundef" command below "flatten". "setundef" is an active sweep that replaces existing undefined nodes, not a global setting, so putting it at the top of the file was completely ineffective. The vlog2Verilog tool does its own replacement of undefined nodes, so the command is not really necessary at all, but it works best if undefined nodes are handled up front during synthesis.
Also: Added back missing gate-change counts which somehow got lost in the translation from blifFanout to vlogFanout. This change has no effect on the netlist output, just the diagnostic printout.
Also: Modified the synthesis script to avoid keeping additional .v files in the source directory which may confuse qflow when re-running synthesis from the top; and modified the call to vlogFanout so that it does not overwrite the original input file but makes an additional output file.
Also: Corrected synthesis script so that changing directory to the source directory happens outside of an if ... endif block. Otherwise, the use of yosys_options with a "-s" argument will cause bad things to happen.
Also: Corrected the synthesis script again because last time I was apparently in the wrong branch or something.
Also: Modified vlogFanout again so that an empty string separator can be declared with "-s nullstring" instead of two double-quotes, which just makes parsing correctly from the shell script a pain.
Also: Corrected the use of "setundef" to be added in all three cases in the script where it needs to appear.
Also: Corrected readverilog.c for verilog include files (failed to initialize cell stack structure to NULL); also fixed printout of the name of any missing include file.
Also: Corrected bad code in vlog2Def that was generating bad strings for net names in the DEF file, and potentially causing a segfault.
Also: Corrected the placement script to restore the pre-placement netlist files in case placement is being run in an iterative loop without having run synthesis just prior to placement.
Also: Fixed parsing of 2-dimensional arrays in DEF2Verilog.
Also: Modified the technology change script to remove the .magicrc file in the layout directory, or else the technology won't match the next time magic runs.
Also: Corrected the DEF read routine so that it recognizes the net name changes made by vlog2Cel that are required to make backslash- escaped names in verilog compatible with DEF syntax. This allows for a correct translation of names from verilog to DEF and back.
Also: Corrected vlog2Def.c to handle arrays of instances, which had been updated in readverilog.c but not in vlog2Def.c.
Also: Added body tie cells to the list of fill cells handled by the density planning code (for those standard cell libraries that do not have body ties within each standard cell).
Also: Updated the script for RePlAce with corresponding changes to vlog2Def. This commit corrects the implementation of density planning in vlog2Def. Preliminary support for pin positioning in the pre-placement DEF file. This is, for now, placing pins on a fixed metal layer and at the origin, pending determining how to apply pin constraints.
Also: Corrected error in decongest script (missing brackets around expression).
Also: Rewrote "addspacers" as a C application instead of a Tcl script. This allows much of the spacer handling to be more nuanced than the script would allow. Also, added handling of generating power and ground combs when there are not enough route layers to run power stripes over the cells. Also, addspacers no longer makes assumptions about the ordering of components, and so is compatible with other placement tools and can be used to add internal fill (however, it does not yet have the ability to distribute the different types of fill cells like the decongest script does).
Also: Modified the qflow GUI manager to not overwrite configuration files during the "Prep" stage. Although the "prep" stage does not need to be run more than once on a project, users may do so unintentionally, and it should not wipe out custom configurations. There is now a checkbox to force configuration files to be removed and rebuilt.
Also: Corrected an error in addspacers that incorrectly computed the number of power stripes between the origin and an obstruction.
Also: Corrected another error in addspacers, which is that it was not handling the TRACKS statements in the DEF file (i.e., not extending the number of tracks in X to cover the additional area made by inserting fill under the power stripes).
Also: Final correction to addspacers TRACKS; also corrected a similar error in the calculation of pin positions that would move forward those pins to the left of the first power stripe.
Also: Corrected the LEF reader for handling via SPACING rules, ACCURRENTDENSITY and DCCURRENTDENSITY entries, and corrected the addspacers main code to make pins the width of the route instead of (incorrectly) double the width.
Also: Corrected addspacers, which was not setting orientation of fill cells placed under the power stripes, and corrected it for use with graywolf, where place2def does not generate ROWS statements, so ROWS statements cannot be used to determine the row orientation (TO DO: Get place2def.tcl to produce ROWS statements).
Also: Corrected the power and ground metal1 comb drawing in addspacers.
Also: Corrected an error in addspacers, improperly positioned parenthesis can cause addspacers to segfault due to out-of-bounds string access.
Also: Corrected several potential array overflows, as found by valgrind, and which may be contributing to a segfault when reading the FreePDK45 liberty file.
Also: Added "qrouter_nocleanup" option to project_vars.sh. If defined and not set to zero, then qrouter will not run the stage3 cleanup, which speeds up routing when the quality of the routes is not an issue (e.g., anything not going to tape-out).
Also: Modified addspacers so that it does not crash if there is a mismatch between the minimum width of fill gaps produced by the placement tool vs. the minimum width of available fill cells. That indicates an error in the tool setup but should not cause a crash condition.
Also: Added missing handling of the modified verilog backslash-escaped names coming from the delay file, in vesta. This had been left undone while it was not known how other tools handle the naming convention difference between delay file formats and verilog. That still remains unresolved but qflow needs to be self-consistent. So the delay file names remain with the space replaced by a second backslash, and vesta restores the original verilog name when reading the delay file.
Also: Several important modifications: (1) Implemented a new method for assigning fill cells, which ignores flip-flops (which have a larger width-to-number-of-ports ratio than combinatorial cells) and generally improves routability compared to the old method; and (2) Created a library out of the FreePDK standard cell GDS files, and reworked the gscl45nm tech file to accomodate GDS reads and writes, and also changed the native lambda of the techfile to 25nm.
Also: Failed to add the GDS file to the list of files copied on "make install" for gscl45nm on the last commit.
Also: Corrected a typo which prevents a correct check of a successful run of arrangepins.tcl.
Also: Corrected vesta to not do the legacy name translation that was previously used, which was causing names read from the delay file to not be recognized.
Also: Modified DEF2Verilog.c to add unconnected nets where signal inputs are not connected (for example, unused antenna cell inputs). Note that this fix is provisional. It may be preferred to mark all such nets as "1'bx" (or expand that to the number of bits in a bus) and handle the "x" inputs in vlog2Spice (which should be done anyway). However, the current method is simpler and works for generating valid SPICE.
Also: Corrections to vlog2Cel.c to handle instance arrays in verilog. Additional corrections to deal with the fallout from having instance arrays in the .cel file.
Also: Made several corrections to support the handling of back-annotation of antenna violation fixes through the output DEF file. This update was done in conjunction with an update to qrouter, which previously output fixes to a text file but not the output DEF file. The annotation could have been done with the existing annotation script. However, it was deemed much better to fix qrouter to generate the correct DEF file for its output (see commit message for qrouter).
Also: Modified expressions in the scripts for determining if an expected file is missing or is stale, which was incorrect in a number of cases, leading to qflow moving on in spite of errors in those cases.
Also: Corrected a hidden error revealed by the cleanup of the "if" expressions in the shell script for magic_gds.sh, which will cause the GDS step to always fail because new files are always seen as "stale".
Also: Added checks for magic or netgen crashing (non-zero exit status) for migration, DRC, LVS, and GDS generation.
Also: Corrected readverilog for assignment statements that assign either to or from a bus-subnet, or assign a collection of nets in a brace- enclosed list. Note that this does not (yet) support net merging through assignments, but the correction prevents portions of the assignment statement from being registered as net names.
Also: Added a catch for nonzero exit status (i.e., crash) from qrouter.
Also: Removed the redundant (and incorrect) cleanup routine from the GUI manager, and instead set it up in the proper way for the GUI manager to call qflow with the "clean" action. Because the "purge" option was not available by command-line call to qflow, added it as option "-p" to "qflowclean". Resolved all differences between the GUI manager and command-line versions of the "clean" script.
Also: Corrected vlog2Spice, which was confused by SPICE subcircuits with more than one space between pin names.
Also: Changed opensta.sh script to (1) remove the "-f" switch from the "sta" command line, which apparently has been deprecated, and (2) added command "set_propagated_clock" to the generated .sdc file when running post-route STA.
Also: One additional change: Post-route STA needs its own unique SDC file, separate from the pre-route SDC file.
Also: Added statements to the script to run magic for GDS generation to avoid doing generation of GDS layers from inter-cell interactions, which should not exist for standard cells.
Also: Corrected addspacers, which was omitting the final power stripe if there were an odd number of stripes.
Also: Corrected position of underfill when stretching layout to add spacers under the power stripes. Underfill now (roughly) matches the power stripe positions as it is supposed to.
Also: Modified addspacers to add an additional track pitch to the power post area for the pin keep-out area, so that pins are not placed so close to the power post that they cannot be routed vertically without creating a DRC error with the post.
Also: Corrected problem in vlogFanout in which buffer trees placed on nets that are arrays (e.g., "net[1]") fail to remove the brackets for buffer trees of depth greater than one, resulting in names that violate verilog syntax.
Also: Corrected an error in addspacers in calculating the distance to move pins and obstructions to the right to adjust for the additional width of the cell due to added power rail underfill. The error could cause the rightmost pins and obstructions to be placed too far to the left, often resulting in obstructed standard cell pins.
Also: Modified the output of the netgen command line in the netgen script so that it properly substitutes variables but still correctly prints the quotes in the command line.
Also: Corrected tool vlog2Spice to use the same name-rewriting method used by vlog2Cel and vlog2Def when translating verilog backslash- escaped names into something that is SPICE compatible.
Also: Fixed pin manager so that the array compaction does not get screwed up by having components other than those belonging to the same array in the same pin group.
Also: Modified vlog2Verilog to strip trailing "!" (global) identifiers from power buses, sometimes used in LEF but not compatible with verilog name syntax.
Also: Corrected problems with verilog reading for the syntax "input wire" or "output wire" in a verilog module header. Also, implemented proper handling of ifdef and ifndef, elsif, and endif.
Also: Modified qflow to generate tilde escapes for the user path in the main generated files (qflow_vars.sh, qflow_exec.sh, and project_vars.sh) and handle those tilde escapes throughout, such that the files can be made more portable.
Also: Modified code that checks for wire assignments that are compatible with a structural verilog netlist to include constant values being assigned to buses (as long as the constant value does not include "X" or "Z"). Also fixed the quote-trimming routine so that it does not consider a verilog constant value to be a quoted string.
Also: Added technology variant osu035_redm4 (redistibution metal4), contributed by Staf Verhaegen, to the set of distributed technologies.
Also: Added osu035_redm4 files to .gitignore, as well as the same for gscl45nm, which had not been done before.
Also: Small fix to readverilog to handle multiple wires specified on a single line (e.g., "wire a, b, c;").
Also: Removed files that were being tracked before being put in .gitignore, and so have to be manually deleted in order to stop being tracked and to then be properly ignored like they're supposed to.
Also: Corrected an error in vlog2Spice which causes it to crash if a bad path is given for a netlist for the "-l" option.
Also: Corrected the decongest script to correctly handle body tie cells, as there was a missing block in an "if" statement. Thanks to Simon Chang for pointing out the error and sending a correction.
Also: Modified addspacers to pick up the width and height of standard cells in a row from the ROW statement SITE definition, for each row individually. This avoids problems with the original method of finding sites in the technology LEF and using one randomly, since there may be different unit pitches represented for different standard cell sets in the technology LEF file.
Also: Corrected addspacers to avoid infinite loops (due to incorrect handling of the default and per-row row height).
Also: Added handling of PROPERTYDEFINITIONS to getpowerground.tcl. It does not need to do much handling of LEF statements, but since the MACRO keyword can appear within PROPERTYDEFINITIONS, not handling it leads to bad consequences.
Also: Changes in spi2xspice.py to accommodate several things, including parsing (or ignoring) the next_state expression of scan flops (which are not synthesized but may be seen in a SPICE library), removing quotes around cell names, and handling function expressions that are not delimited by parentheses.
Also: Added handling of the PROPERTYDEFINITIONS section in a LEF file to other scripts such as decongest, getantennacell, getfillcell, and powerbus (all Tcl scripts).
Also: Revised the qflow GUI to call qflow according to the installed location rather than the default location. Otherwise it is not possible to run two versions of qflow using the GUI.
Also: Updated the qflow manager for version 1.4 to detect the version of qflow compiled into the manager vs. the version that a project was configured for. If the project was built in version 1.3, the manager will issue an alert and quit (potentially the manager could be made to handle version 1.3 projects, and probably should, but this is the quicker solution for now).
Also: Corrected openSTA script to pass the configuration file as an input redirection and not as an argument, which doesn't work. Fixed the problem of instance arrays (where instances cannot, apparently, be legally referenced by index in verilog) by backslash-escaping the names, and by handling backslash-escaped instance names in the DefRead command, vlog2Cell, and vlog2Verilog.
Also: Corrected the technology selection, which was failing to switch to the new technology after purging.
Also: A number of small changes to accomodate standard cells with more than one power and ground net, as is the case with standard cells that use separate tap cells for substrate and well ties. Also corrected the handling of the power and ground wire declarations in the rtlnopwr netlist, which was duplicating the entries due to a wrong return value from a subroutine.
Also: One more modification to make sure that only the primary name for power and ground go into the qrouter config file.
Also: Also removed a diagnostic print statement from the GUI manager.
Also: One last quick fix to keep vlog2Verilog from crashing when a standard cell set does *not* have multiple power buses.
Also: Corrected an error in addspacers that fails to reinstate the SPICE-sanitized syntax for verilog backslash notation when writing the DEF file components, causing the component instance names to not match the instance names in the NETS section. This causes qrouter to ignore all nets that start with a backslash.
Also: Corrected DEF2Verilog for the same issue, with instance names needing to be converted between sanitized SPICE syntax and verilog backslash syntax.
Also: Corrected failure to initialize icDelay in the connect structure, as pointed out by Alessandro De Laurenzis (thanks, Alessandro!). This can cause serious calculation errors in systems that do not automatically zero data on malloc(). Also changed strtof() to strtod() where the result (icDelay) is a double, although the compiler presumably takes care of the conversion.
Also: Make sure that sptr at line 1866 gets initialized.
Also: Modified the yosys script per discussion in the github issue #2 "Invalid verilog file detection". The hierarchy checks that look for errors need to be watching ONLY stderr output from yosys, as stdout output may contain confusing references that are picked up incorrectly as errors.
Also: Added configuration option to install to a directory different from the runtime directory, with the expectation that the initial install gets distributed to the final install location. For use when it is not desired to append the whole install directory onto DESTDIR.
Also: Corrected --with-distdir= option use of withval in configure.in.
Also: Corrected for bad entry of distdir in configure.in.
Also: Missed modifying the Makefiles two levels down in tech/.
Also: Corrected (again!) the distributed install, which broke everything as it revealed an underlying error in which the install variables "prefix" and "exec_prefix" were not defined in the Makefile. Also modified "addspacers" to handle macros and multiple-row-height cells in the placement area.
Also: Modified addspacers again, this time to make sure that searches along the rows stick to multiples of the site width, regardless of the width of the macro placed (which is and has been the behavior for the Y direction, anyway). Macros that do not match the site size are flagged with a message, but the search for areas to fill will continue from the nearest site boundary.
Also: And yet one more refinement to cope with unaligned macros in the standard cell core area.
Also: Fixed a broken implementation of searching on a comma-separated verilog vector in vlog2Spice.
Also: Extended vlog2Def to handle buses and signal bundles for wires connected to instance pins (this normally does not show up when using only standard cells; it is mostly an issue when using hard macros).
- posted: February 7, 2020 at 3:00am version: 1.4 revision: 76
Extended vlog2Def to handle buses and signal bundles for wires connected to instance pins (this normally does not show up when using only standard cells; it is mostly an issue when using hard macros).
- posted: February 6, 2020 at 3:00am version: 1.4 revision: 75
Fixed a broken implementation of searching on a comma-separated verilog vector in vlog2Spice.
- posted: February 4, 2020 at 3:00am version: 1.4 revision: 74
Corrected (again!) the distributed install, which broke everything as it revealed an underlying error in which the install variables "prefix" and "exec_prefix" were not defined in the Makefile. Also modified "addspacers" to handle macros and multiple-row-height cells in the placement area.
Modified addspacers again, this time to make sure that searches along the rows stick to multiples of the site width, regardless of the width of the macro placed (which is and has been the behavior for the Y direction, anyway). Macros that do not match the site size are flagged with a message, but the search for areas to fill will continue from the nearest site boundary.
Also: And yet one more refinement to cope with unaligned macros in the standard cell core area.
- posted: January 31, 2020 at 3:00am version: 1.4 revision: 73
Added configuration option to install to a directory different from the runtime directory, with the expectation that the initial install gets distributed to the final install location. For use when it is not desired to append the whole install directory onto DESTDIR.
Corrected --with-distdir= option use of withval in configure.in.
Also: Corrected for bad entry of distdir in configure.in.
Also: Missed modifying the Makefiles two levels down in tech/.
- posted: January 25, 2020 at 3:01am version: 1.4 revision: 72
Make sure that sptr at line 1866 gets initialized.
Modified the yosys script per discussion in the github issue #2 "Invalid verilog file detection". The hierarchy checks that look for errors need to be watching ONLY stderr output from yosys, as stdout output may contain confusing references that are picked up incorrectly as errors.
- posted: January 15, 2020 at 3:00am version: 1.4 revision: 71
Corrected failure to initialize icDelay in the connect structure, as pointed out by Alessandro De Laurenzis (thanks, Alessandro!). This can cause serious calculation errors in systems that do not automatically zero data on malloc(). Also changed strtof() to strtod() where the result (icDelay) is a double, although the compiler presumably takes care of the conversion.
- posted: January 14, 2020 at 3:01am version: 1.4 revision: 70
Corrected an error in addspacers that fails to reinstate the SPICE-sanitized syntax for verilog backslash notation when writing the DEF file components, causing the component instance names to not match the instance names in the NETS section. This causes qrouter to ignore all nets that start with a backslash.
Corrected DEF2Verilog for the same issue, with instance names needing to be converted between sanitized SPICE syntax and verilog backslash syntax.
- posted: January 12, 2020 at 3:00am version: 1.4 revision: 69
Corrected the technology selection, which was failing to switch to the new technology after purging.
A number of small changes to accomodate standard cells with more than one power and ground net, as is the case with standard cells that use separate tap cells for substrate and well ties. Also corrected the handling of the power and ground wire declarations in the rtlnopwr netlist, which was duplicating the entries due to a wrong return value from a subroutine.
Also: One more modification to make sure that only the primary name for power and ground go into the qrouter config file.
Also: Also removed a diagnostic print statement from the GUI manager.
Also: One last quick fix to keep vlog2Verilog from crashing when a standard cell set does *not* have multiple power buses.
- posted: January 9, 2020 at 3:00am version: 1.4 revision: 68
Corrected openSTA script to pass the configuration file as an input redirection and not as an argument, which doesn't work. Fixed the problem of instance arrays (where instances cannot, apparently, be legally referenced by index in verilog) by backslash-escaping the names, and by handling backslash-escaped instance names in the DefRead command, vlog2Cell, and vlog2Verilog.
- posted: January 8, 2020 at 3:00am version: 1.4 revision: 67
Revised the qflow GUI to call qflow according to the installed location rather than the default location. Otherwise it is not possible to run two versions of qflow using the GUI.
Updated the qflow manager for version 1.4 to detect the version of qflow compiled into the manager vs. the version that a project was configured for. If the project was built in version 1.3, the manager will issue an alert and quit (potentially the manager could be made to handle version 1.3 projects, and probably should, but this is the quicker solution for now).
- posted: November 28, 2019 at 3:01am version: 1.4 revision: 66
Corrected addspacers to avoid infinite loops (due to incorrect handling of the default and per-row row height).
Added handling of PROPERTYDEFINITIONS to getpowerground.tcl. It does not need to do much handling of LEF statements, but since the MACRO keyword can appear within PROPERTYDEFINITIONS, not handling it leads to bad consequences.
Also: Changes in spi2xspice.py to accommodate several things, including parsing (or ignoring) the next_state expression of scan flops (which are not synthesized but may be seen in a SPICE library), removing quotes around cell names, and handling function expressions that are not delimited by parentheses.
Also: Added handling of the PROPERTYDEFINITIONS section in a LEF file to other scripts such as decongest, getantennacell, getfillcell, and powerbus (all Tcl scripts).
- posted: November 22, 2019 at 3:01am version: 1.4 revision: 65
Modified addspacers to pick up the width and height of standard cells in a row from the ROW statement SITE definition, for each row individually. This avoids problems with the original method of finding sites in the technology LEF and using one randomly, since there may be different unit pitches represented for different standard cell sets in the technology LEF file.
- posted: November 2, 2019 at 3:00am version: 1.4 revision: 64
Corrected the decongest script to correctly handle body tie cells, as there was a missing block in an "if" statement. Thanks to Simon Chang for pointing out the error and sending a correction.
- posted: October 25, 2019 at 3:00am version: 1.4 revision: 63
Corrected an error in vlog2Spice which causes it to crash if a bad path is given for a netlist for the "-l" option.
- posted: October 12, 2019 at 3:00am version: 1.4 revision: 62
Added osu035_redm4 files to .gitignore, as well as the same for gscl45nm, which had not been done before.
Small fix to readverilog to handle multiple wires specified on a single line (e.g., "wire a, b, c;").
Also: Removed files that were being tracked before being put in .gitignore, and so have to be manually deleted in order to stop being tracked and to then be properly ignored like they're supposed to.
- posted: October 10, 2019 at 3:00am version: 1.4 revision: 61
Modified code that checks for wire assignments that are compatible with a structural verilog netlist to include constant values being assigned to buses (as long as the constant value does not include "X" or "Z"). Also fixed the quote-trimming routine so that it does not consider a verilog constant value to be a quoted string.
Added technology variant osu035_redm4 (redistibution metal4), contributed by Staf Verhaegen, to the set of distributed technologies.
- posted: October 5, 2019 at 3:00am version: 1.4 revision: 60
Modified qflow to generate tilde escapes for the user path in the main generated files (qflow_vars.sh, qflow_exec.sh, and project_vars.sh) and handle those tilde escapes throughout, such that the files can be made more portable.
- posted: October 1, 2019 at 3:00am version: 1.4 revision: 59
Corrected problems with verilog reading for the syntax "input wire" or "output wire" in a verilog module header. Also, implemented proper handling of ifdef and ifndef, elsif, and endif.
- posted: August 31, 2019 at 3:00am version: 1.4 revision: 58
Modified vlog2Verilog to strip trailing "!" (global) identifiers from power buses, sometimes used in LEF but not compatible with verilog name syntax.
- posted: August 18, 2019 at 3:00am version: 1.4 revision: 57
Fixed pin manager so that the array compaction does not get screwed up by having components other than those belonging to the same array in the same pin group.
- posted: August 17, 2019 at 3:00am version: 1.4 revision: 56
Corrected tool vlog2Spice to use the same name-rewriting method used by vlog2Cel and vlog2Def when translating verilog backslash- escaped names into something that is SPICE compatible.
- posted: August 16, 2019 at 3:00am version: 1.4 revision: 55
Corrected problem in vlogFanout in which buffer trees placed on nets that are arrays (e.g., "net[1]") fail to remove the brackets for buffer trees of depth greater than one, resulting in names that violate verilog syntax.
Corrected an error in addspacers in calculating the distance to move pins and obstructions to the right to adjust for the additional width of the cell due to added power rail underfill. The error could cause the rightmost pins and obstructions to be placed too far to the left, often resulting in obstructed standard cell pins.
Also: Modified the output of the netgen command line in the netgen script so that it properly substitutes variables but still correctly prints the quotes in the command line.
- posted: August 13, 2019 at 3:00am version: 1.4 revision: 54
Corrected position of underfill when stretching layout to add spacers under the power stripes. Underfill now (roughly) matches the power stripe positions as it is supposed to.
Modified addspacers to add an additional track pitch to the power post area for the pin keep-out area, so that pins are not placed so close to the power post that they cannot be routed vertically without creating a DRC error with the post.
- posted: August 12, 2019 at 3:00am version: 1.4 revision: 53
Corrected addspacers, which was omitting the final power stripe if there were an odd number of stripes.
- posted: August 3, 2019 at 3:00am version: 1.4 revision: 52
Changed opensta.sh script to (1) remove the "-f" switch from the "sta" command line, which apparently has been deprecated, and (2) added command "set_propagated_clock" to the generated .sdc file when running post-route STA.
One additional change: Post-route STA needs its own unique SDC file, separate from the pre-route SDC file.
Also: Added statements to the script to run magic for GDS generation to avoid doing generation of GDS layers from inter-cell interactions, which should not exist for standard cells.
- posted: August 1, 2019 at 3:00am version: 1.4 revision: 51
Corrected vlog2Spice, which was confused by SPICE subcircuits with more than one space between pin names.
- posted: July 27, 2019 at 3:00am version: 1.4 revision: 50
Corrected a hidden error revealed by the cleanup of the "if" expressions in the shell script for magic_gds.sh, which will cause the GDS step to always fail because new files are always seen as "stale".
Added checks for magic or netgen crashing (non-zero exit status) for migration, DRC, LVS, and GDS generation.
Also: Corrected readverilog for assignment statements that assign either to or from a bus-subnet, or assign a collection of nets in a brace- enclosed list. Note that this does not (yet) support net merging through assignments, but the correction prevents portions of the assignment statement from being registered as net names.
Also: Added a catch for nonzero exit status (i.e., crash) from qrouter.
Also: Removed the redundant (and incorrect) cleanup routine from the GUI manager, and instead set it up in the proper way for the GUI manager to call qflow with the "clean" action. Because the "purge" option was not available by command-line call to qflow, added it as option "-p" to "qflowclean". Resolved all differences between the GUI manager and command-line versions of the "clean" script.
- posted: July 25, 2019 at 3:00am version: 1.4 revision: 49
Made several corrections to support the handling of back-annotation of antenna violation fixes through the output DEF file. This update was done in conjunction with an update to qrouter, which previously output fixes to a text file but not the output DEF file. The annotation could have been done with the existing annotation script. However, it was deemed much better to fix qrouter to generate the correct DEF file for its output (see commit message for qrouter).
Modified expressions in the scripts for determining if an expected file is missing or is stale, which was incorrect in a number of cases, leading to qflow moving on in spite of errors in those cases.
- posted: July 20, 2019 at 3:00am version: 1.4 revision: 48
Corrections to vlog2Cel.c to handle instance arrays in verilog. Additional corrections to deal with the fallout from having instance arrays in the .cel file.
- posted: July 19, 2019 at 3:00am version: 1.4 revision: 47
Corrected a typo which prevents a correct check of a successful run of arrangepins.tcl.
Corrected vesta to not do the legacy name translation that was previously used, which was causing names read from the delay file to not be recognized.
Also: Modified DEF2Verilog.c to add unconnected nets where signal inputs are not connected (for example, unused antenna cell inputs). Note that this fix is provisional. It may be preferred to mark all such nets as "1'bx" (or expand that to the number of bits in a bus) and handle the "x" inputs in vlog2Spice (which should be done anyway). However, the current method is simpler and works for generating valid SPICE.
- posted: July 17, 2019 at 3:00am version: 1.4 revision: 46
Several important modifications: (1) Implemented a new method for assigning fill cells, which ignores flip-flops (which have a larger width-to-number-of-ports ratio than combinatorial cells) and generally improves routability compared to the old method; and (2) Created a library out of the FreePDK standard cell GDS files, and reworked the gscl45nm tech file to accomodate GDS reads and writes, and also changed the native lambda of the techfile to 25nm.
Failed to add the GDS file to the list of files copied on "make install" for gscl45nm on the last commit.
- posted: July 11, 2019 at 3:00am version: 1.4 revision: 45
Modified addspacers so that it does not crash if there is a mismatch between the minimum width of fill gaps produced by the placement tool vs. the minimum width of available fill cells. That indicates an error in the tool setup but should not cause a crash condition.
Added missing handling of the modified verilog backslash-escaped names coming from the delay file, in vesta. This had been left undone while it was not known how other tools handle the naming convention difference between delay file formats and verilog. That still remains unresolved but qflow needs to be self-consistent. So the delay file names remain with the space replaced by a second backslash, and vesta restores the original verilog name when reading the delay file.
- posted: July 10, 2019 at 3:00am version: 1.4 revision: 44
Added "qrouter_nocleanup" option to project_vars.sh. If defined and not set to zero, then qrouter will not run the stage3 cleanup, which speeds up routing when the quality of the routes is not an issue (e.g., anything not going to tape-out).
- posted: July 6, 2019 at 3:00am version: 1.4 revision: 43
Corrected an error in addspacers, improperly positioned parenthesis can cause addspacers to segfault due to out-of-bounds string access.
Corrected several potential array overflows, as found by valgrind, and which may be contributing to a segfault when reading the FreePDK45 liberty file.
- posted: June 12, 2019 at 3:00am version: 1.4 revision: 42
Corrected the power and ground metal1 comb drawing in addspacers.
- posted: June 7, 2019 at 3:00am version: 1.4 revision: 41
Corrected the LEF reader for handling via SPACING rules, ACCURRENTDENSITY and DCCURRENTDENSITY entries, and corrected the addspacers main code to make pins the width of the route instead of (incorrectly) double the width.
Corrected addspacers, which was not setting orientation of fill cells placed under the power stripes, and corrected it for use with graywolf, where place2def does not generate ROWS statements, so ROWS statements cannot be used to determine the row orientation (TO DO: Get place2def.tcl to produce ROWS statements).
- posted: May 26, 2019 at 3:00am version: 1.4 revision: 40
Corrected an error in addspacers that incorrectly computed the number of power stripes between the origin and an obstruction.
Corrected another error in addspacers, which is that it was not handling the TRACKS statements in the DEF file (i.e., not extending the number of tracks in X to cover the additional area made by inserting fill under the power stripes).
Also: Final correction to addspacers TRACKS; also corrected a similar error in the calculation of pin positions that would move forward those pins to the left of the first power stripe.
- posted: May 23, 2019 at 3:00am version: 1.4 revision: 39
Modified the qflow GUI manager to not overwrite configuration files during the "Prep" stage. Although the "prep" stage does not need to be run more than once on a project, users may do so unintentionally, and it should not wipe out custom configurations. There is now a checkbox to force configuration files to be removed and rebuilt.
- posted: May 22, 2019 at 3:00am version: 1.4 revision: 38
Rewrote "addspacers" as a C application instead of a Tcl script. This allows much of the spacer handling to be more nuanced than the script would allow. Also, added handling of generating power and ground combs when there are not enough route layers to run power stripes over the cells. Also, addspacers no longer makes assumptions about the ordering of components, and so is compatible with other placement tools and can be used to add internal fill (however, it does not yet have the ability to distribute the different types of fill cells like the decongest script does).
- posted: May 12, 2019 at 3:00am version: 1.4 revision: 37
Corrected error in decongest script (missing brackets around expression).
- posted: May 9, 2019 at 3:00am version: 1.4 revision: 36
Added body tie cells to the list of fill cells handled by the density planning code (for those standard cell libraries that do not have body ties within each standard cell).
Updated the script for RePlAce with corresponding changes to vlog2Def. This commit corrects the implementation of density planning in vlog2Def. Preliminary support for pin positioning in the pre-placement DEF file. This is, for now, placing pins on a fixed metal layer and at the origin, pending determining how to apply pin constraints.
- posted: May 8, 2019 at 3:00am version: 1.4 revision: 35
Corrected vlog2Def.c to handle arrays of instances, which had been updated in readverilog.c but not in vlog2Def.c.
- posted: May 7, 2019 at 9:13am version: 1.4 revision: 34
Corrected readverilog.c for verilog include files (failed to initialize cell stack structure to NULL); also fixed printout of the name of any missing include file.
Corrected bad code in vlog2Def that was generating bad strings for net names in the DEF file, and potentially causing a segfault.
Also: Corrected the placement script to restore the pre-placement netlist files in case placement is being run in an iterative loop without having run synthesis just prior to placement.
Also: Fixed parsing of 2-dimensional arrays in DEF2Verilog.
Also: Modified the technology change script to remove the .magicrc file in the layout directory, or else the technology won't match the next time magic runs.
Also: Corrected the DEF read routine so that it recognizes the net name changes made by vlog2Cel that are required to make backslash- escaped names in verilog compatible with DEF syntax. This allows for a correct translation of names from verilog to DEF and back.
- posted: April 16, 2019 at 3:00am version: 1.4 revision: 33
ocd_git_pure automatic update to repo
Modified the yosys.sh script to put the "setundef" command below "flatten". "setundef" is an active sweep that replaces existing undefined nodes, not a global setting, so putting it at the top of the file was completely ineffective. The vlog2Verilog tool does its own replacement of undefined nodes, so the command is not really necessary at all, but it works best if undefined nodes are handled up front during synthesis.
Also: Added back missing gate-change counts which somehow got lost in the translation from blifFanout to vlogFanout. This change has no effect on the netlist output, just the diagnostic printout.
Also: Modified the synthesis script to avoid keeping additional .v files in the source directory which may confuse qflow when re-running synthesis from the top; and modified the call to vlogFanout so that it does not overwrite the original input file but makes an additional output file.
Also: Corrected synthesis script so that changing directory to the source directory happens outside of an if ... endif block. Otherwise, the use of yosys_options with a "-s" argument will cause bad things to happen.
Also: Corrected the synthesis script again because last time I was apparently in the wrong branch or something.
Also: Modified vlogFanout again so that an empty string separator can be declared with "-s nullstring" instead of two double-quotes, which just makes parsing correctly from the shell script a pain.
Also: Corrected the use of "setundef" to be added in all three cases in the script where it needs to appear.
- posted: April 12, 2019 at 3:00am version: 1.4 revision: 32
Updated README with instructions to use git checkout before compiling.
Added code to prevent an out-of-bounds access in the case of a missing or insufficient technology LEF file passed to vlog2Cel.
Also: ocd_git_pure automatic update to repo
Also: ocd_git_pure automatic update to repo
Also: ocd_git_pure automatic update to repo
Also: ocd_git_pure automatic update to repo
Also: ocd_git_pure automatic update to repo
Also: ocd_git_pure automatic update to repo
Also: ocd_git_pure automatic update to repo
Also: ocd_git_pure automatic update to repo
Also: Corrected an uninitialized variable that causes vlog2Verilog to crash when searching for antenna cell names matching a pattern.
Also: Found that the qflow manager "Edit Layout" does not work between LVS and GDS steps because it is expecting a GDS file from the layout that does not yet exist. Fixed.
Also: ocd_git_pure automatic update to repo
Also: ocd_git_pure automatic update to repo
Also: ocd_git_pure automatic update to repo
Also: ocd_git_pure automatic update to repo
Also: Revised vesta to use the verilog parser from readverilog.c instead of its own parser, which was not as complete. Also changed behavior to not propagate negative delay times. Not sure how realistic this is. Negative values do appear in liberty tables, but extrapolating off the ends of such tables sometimes results in avalanching negative values.
Also: Corrected error in opensta.sh script that causes an error due to incorrect command to set variable hardmacrolibs. This means that opensta.sh will run on a design with hard macros and fail otherwise. Now confirmed to work in both cases.
Also: ocd_git_pure automatic update to repo
Also: Added code to prevent an out-of-bounds access in the case of a missing or insufficient technology LEF file passed to vlog2Cel.
- posted: April 11, 2019 at 3:00am version: 1.4 revision: 31
ocd_git_pure automatic update to repo
Revised vesta to use the verilog parser from readverilog.c instead of its own parser, which was not as complete. Also changed behavior to not propagate negative delay times. Not sure how realistic this is. Negative values do appear in liberty tables, but extrapolating off the ends of such tables sometimes results in avalanching negative values.
Also: Corrected error in opensta.sh script that causes an error due to incorrect command to set variable hardmacrolibs. This means that opensta.sh will run on a design with hard macros and fail otherwise. Now confirmed to work in both cases.
- posted: April 10, 2019 at 3:00am version: 1.4 revision: 30
ocd_git_pure automatic update to repo
- posted: April 9, 2019 at 3:00am version: 1.4 revision: 29
ocd_git_pure automatic update to repo
- posted: April 8, 2019 at 3:00am version: 1.4 revision: 28
ocd_git_pure automatic update to repo
- posted: April 7, 2019 at 3:00am version: 1.4 revision: 27
ocd_git_pure automatic update to repo
Corrected an uninitialized variable that causes vlog2Verilog to crash when searching for antenna cell names matching a pattern.
Also: Found that the qflow manager "Edit Layout" does not work between LVS and GDS steps because it is expecting a GDS file from the layout that does not yet exist. Fixed.
- posted: March 27, 2019 at 3:00am version: 1.4 revision: 20
Testing.
- posted: February 14, 2019 at 3:00am version: 1.4 revision: 19
Update at Wed Feb 13 20:17:09 EST 2019 by tim
Additional corrections mainly to deal with arrays of instances and how to translate them with vlog2Verilog and vlog2Spice. Note that vlog2Verilog does not have a working bit-blast mode except that arrayed instances are now correctly expanded.
- posted: January 26, 2019 at 3:00am version: 1.4 revision: 18
Update at Fri Jan 25 10:57:53 EST 2019 by tim
Added support for 'z' (high-impedence) in output net connections. Revised vlog2Spice to output something even if no spice netlists are found for the subcircuits; it will generate warnings but also generates an output netlist that can be used for black-box LVS.
- posted: January 25, 2019 at 3:00am version: 1.4 revision: 17
Update at Thu Jan 24 13:22:11 EST 2019 by tim
Changes to vlogFanout not pushed in previous commit. Essentially the same commit message.
Also: Corrected serious problem where passing an unknown option switch to qflow will cause the setup files to be rewritten and overwrite the technology name with the default.
Also: Found an error in parsing in-line arrays passed to pins; this now appears to be done correctly.
Also: Failed to initialize the in-line array string, causing occasional weirdness and potentially causing a crash condition.
- posted: January 24, 2019 at 3:00am version: 1.4 revision: 16
Update at Wed Jan 23 15:20:55 EST 2019 by tim
Considerable additional development, mainly to support buses and the obnoxious (shall I say notorious?) backslash-escaped-names notation in verilog. This commit has everything working up to the router, although signal naming is known to be an issue for the delay file formats generated by the router and read back in the STA tool(s).
- posted: January 22, 2019 at 3:00am version: 1.4 revision: 15
Update at Mon Jan 21 16:15:12 EST 2019 by tim
Updates: Fixed handling of antenna cells (moved into vlog2Verilog). Considerable changes in handling the verilog backslash-escaped names. The impact on converting names between DEF, SPICE, and delay file formats is still unknown.
- posted: January 20, 2019 at 3:00am version: 1.4 revision: 14
Update at Sat Jan 19 12:15:17 EST 2019 by tim
Having educated myself on the ugly verilog backslash-escaped names method, all of the verilog manipulating tools were rewritten to handle the notation correctly, generating syntactically correct verilog output.
- posted: January 19, 2019 at 3:00am version: 1.4 revision: 13
Update at Fri Jan 18 10:57:32 EST 2019 by tim
Corrected synthesis script, which was removing leading backslashes from verilog names, in some cases causing them to become illegal verilog syntax (the backslash escapes the whole name and makes any non-whitespace character valid in the name). Remains to be seen if any downstream formats can't handle the backslash.
Also: Corrected improper handling of fixed bits, which output them as wires.
Also: Found a poorly-written chokepoint in the readverilog.c routine that causes readverilog to scale badly with size. vlog2Verilog and other tools in src/ that use the ReadVerilog() routine should no longer have problems with taking long times to execute.
- posted: January 18, 2019 at 3:00am version: 1.4 revision: 12
Update at Thu Jan 17 17:13:37 EST 2019 by tim
Extended the code that handles buses in readverilog.c to the target applications (vlog2Verilog, vlog2Spice, etc.).
- posted: January 17, 2019 at 3:00am version: 1.4 revision: 11
Update at Wed Jan 16 10:55:48 EST 2019 by tim
Corrected a crash condition if a liberty template does not match the number of items passed to it. Possibly the liberty format allows templates to change between the definition and the instantiation??
- posted: January 12, 2019 at 3:00am version: 1.4 revision: 10
Update at Fri Jan 11 11:24:27 EST 2019 by tim
Updated the spi2xspice script to take various delays and loads from the command line, rather than hard-code them into the output file, since the values need to be adjusted per foundry process. Corrected these values for processes smaller than the 0.35um feature size.
- posted: January 10, 2019 at 3:00am version: 1.4 revision: 9
Update at Wed Jan 9 10:38:53 EST 2019 by tim
Discovered that passing "quit -noprompt" to magic in batch mode will actually stall the program and prevent it from exiting, causing qflow in turn to hang. Removed the "-noprompt" option from all scripts used for batch mode. Same correction as made to qflow-1.3.
Also: Also needed to redirect stdin to /dev/null in subprocess calls from the GUI manager.
Also: Also needed to redirect stdin on calls to magic from the "Edit Layout" button.
Also: Corrected error in generating back-annotated files; in addition, removed the annotate Tcl script and replaced it with DEF2Verilog, which is much more general-purpose and will work with any router that generates a modified netlist in an output DEF file.
- posted: January 5, 2019 at 3:00am version: 1.4 revision: 8
Update at Fri Jan 4 11:19:16 EST 2019 by tim
Corrected errors in generating pin names within buffer trees, and declaring those buffer trees to be permutable when creating a .cel file for graywolf (behavior did not match that of qflow-1.3).
Also: Modified spi2xspice.py script so that all inputs including unused power and ground nets have an A/D attached to keep them from being floating nodes.
Also: Corrected an error that prevents rc2dly from crashing when qrouter generates an ERROR entry (for example, because it didn't finish routing). This fix was supposed to have been made a couple of commits ago, but the patch didn't work due to an error. Same correction as made to qflow-1.3.
- posted: January 4, 2019 at 3:00am version: 1.4 revision: 7
Update at Thu Jan 3 10:34:19 EST 2019 by tim
Corrected roundoff problem in vlog2Cel that caused placement to be off by one unit, accumulating over the width and/or height of the layout.
- posted: January 3, 2019 at 3:00am version: 1.4 revision: 6
Update at Wed Jan 2 12:31:41 EST 2019 by tim
Added parsing of in-line arrays ("{ ... }") for pin connections in structural verilog, to the readverilog.c routine. This just adds such arrays verbatim to the port->net record, which needs to be handled by the tools that link to the readverilog routines, such as vlogFanout, vlog2Verilog, etc., which has not yet been done.
- posted: December 31, 2018 at 3:00am version: 1.4 revision: 5
Update at Sun Dec 30 11:18:22 EST 2018 by tim
Corrected readdef for DEF2verilog, as the pitch and offset were set to type int when they should have been type double, leading (typically) to zero pitch and causing an infinite loop. Also corrected a problem with rc2dly and vesta that would cause infinite loops when the router generated ERROR names in the parasitic delay value file.
Also: Corrected output of place2def, which was incorrectly parsing the output generated by vlog2Cel to attach fill cells to standard cells for input to graywolf.
- posted: December 29, 2018 at 3:00am version: 1.4 revision: 4
Update at Fri Dec 28 15:45:12 EST 2018 by tim
Corrected the xspice script so that it removes brackets from pin and net names. ngspice generally accepts brackets in names but not when they are nested in XSPICE expressions. Same correction as was made to qflow-1.3.
Also: Corrected spi2xspice.py script to not output A records for cells like antenna tie-downs that have no outputs, since these are non-functional cells.
- posted: December 28, 2018 at 3:00am version: 1.4 revision: 3
Update at Thu Dec 27 12:35:31 EST 2018 by tim
Getting a bit further on RePlAce integration. Can get a placement now, although it is not properly squared off or minimized for area, and the pins are not handled, causing routing to fail all the time. But much better than the last commit.
- posted: December 27, 2018 at 3:00am version: 1.4 revision: 2
Update at Wed Dec 26 22:41:50 EST 2018 by tim
First major update on the development version. A lot of code refactored. The per-step scripts, e.g., "placement.sh", have been replaced by per-tool scripts, e.g., "graywolf.sh". The project_vars.sh file now contains a list of tools to be used which can be altered by editing the file or from within the GUI. The process of adding a new tool to the flow has been streamlined. Very preliminary support for RePlAce (not working yet).
Also: Corrected the configure search for ntuplace3 and ntuplace4h in the RePlAce source tree, which corrected the installation. Still working on errors in RePlAce runtime.
- posted: December 25, 2018 at 1:33pm version: 1.4 revision: 1
Copied .gitignore back to new version.
- posted: January 8, 2020 at 3:00am version: 1.3 revision: 18
Modified the qflow manager so that it calls the qflow executable compiled in, not the default one, so that different versions of qflow can be run without conflict as long as the corresponding version of the manager script is being used.
- posted: October 10, 2019 at 3:00am version: 1.3 revision: 17
Added osu035_redm4 from Staf Verhaegen to the set of distributed technologies.
- posted: July 8, 2019 at 3:00am version: 1.3 revision: 16
Corrected problem with attempting to remove a project_vars.sh file or a project .par file that does not exist. This fix had been made to version 1.4 but not back-ported to 1.3.
- posted: June 16, 2019 at 3:00am version: 1.3 revision: 15
Updated qflow.sh.in to accept a full path or a relative path for the "magicrc" entry in the .sh file (this was done in qflow-1.4 but not back-ported to 1.3).
And corrected one more line I missed on the last commit.
- posted: May 22, 2019 at 3:00am version: 1.3 revision: 14
Updated qflow-1.3 with changes by Staf Verhaegen corresponding to changes in qrouter-1.4 to deal with offset 1-of-N tracks.
Additional change from Staf Verhaegen missed in the last commit.
- posted: April 17, 2019 at 3:00am version: 1.3 revision: 13
Modified the synthesis script to add the "setundef" command to remove undefined nodes, which otherwise propagate to other formats and only cause trouble downstream (plus, undefined inputs should never be synthesized).
Fixed the position of "cd ${sourcedir}" so that setting yosys_options to use the "-s" option will cause things to fail somewhat mysteriously.
Also: Corrected the position of "sepoption" and "libertyoption" in the call to blifFanout, without which the gate sizing does not work because the liberty library has the separator character set to NULL.
Also: Changed blifFanout to allow "-s nullstring" to stand in for an empty string, since parsing the empty string is a pain in the shell script.
Also: Last commit outside of scripts directory; this commit catches the change to the synthesize script.
Also: Added "setundef" to all three places in the script where it needs to appear.
Also: Corrected typo in setting sepoption to blifFanout in the synthesis script.
- posted: March 19, 2019 at 3:00am version: 1.3 revision: 13
Update at Mon Mar 18 09:43:47 EDT 2019 by tim
Applied patches by Alessandro De Laurenzis for OpenBSD, although some of the string bounds checks are more general fixes.
- posted: February 6, 2019 at 3:00am version: 1.3 revision: 12
Update at Tue Feb 5 17:25:13 EST 2019 by tim
Added UTF-8 encoding to file reads from the log files, which otherwise balks on non-ASCII characters that get into date strings and such in OS variants outside of the U.S.
- posted: February 5, 2019 at 3:00am version: 1.3 revision: 11
Update at Mon Feb 4 16:39:36 EST 2019 by tim
Urrgh. . . last fix was incomplete, should have replaced "break" with "shift" instead of just adding "shift", otherwise it does not operate as intended. Many apologies for leaving the distribution version in a broken state. . .
- posted: February 4, 2019 at 3:00am version: 1.3 revision: 10
Update at Sun Feb 3 11:12:31 EST 2019 by tim
Corrected an error that was introduced by the last commit, omitting a "shift" after parsing the module name in the command line. This prevents qflow from continuing to run after specifying a new project, making it impossible to set up a new project.
- posted: January 25, 2019 at 3:00am version: 1.3 revision: 9
Update at Thu Jan 24 14:31:50 EST 2019 by tim
Corrected serious problem where passing an unknown option switch to qflow will cause the setup files to be rewritten and overwrite the technology name with the default.
- posted: January 17, 2019 at 3:00am version: 1.3 revision: 8
Update at Wed Jan 16 10:55:56 EST 2019 by tim
Corrected a crash condition if a liberty template does not match the number of items passed to it. Possibly the liberty format allows templates to change between the definition and the instantiation??
- posted: January 12, 2019 at 3:00am version: 1.3 revision: 7
Update at Fri Jan 11 11:35:17 EST 2019 by tim
Updated spi2xspice to take various timing and load values from the command line. Updated the smaller feature size process technology files (osu018 and gscl45nm) to pass more realistic values to spi2xspice.
- posted: January 10, 2019 at 3:00am version: 1.3 revision: 6
Update at Wed Jan 9 10:38:24 EST 2019 by tim
Discovered that passing "quit -noprompt" to magic in batch mode will actually stall the program and prevent it from exiting, causing qflow in turn to hang. Removed the "-noprompt" option from all scripts used for batch mode.
Also: Also needed to run subprocess while redirecting stdin from /dev/null.
Also: Also needed to redirect stdin on calls to magic from the "Edit Layout" button.
- posted: January 7, 2019 at 3:00am version: 1.3 revision: 5
Update at Sun Jan 6 13:42:51 EST 2019 by tim
Corrected name rewriting inside the output verilog file to flatten 2-dimensional arrays. Previously, only one pair of '[...]' was searched and replaced within a net name, leaving vectors in two dimensional arrays. Ideally, the vectors should be left in, but that requires adding 'wire' statements for each vector before they are used, which implies a two-pass parse of the BLIF netlist, requiring substantial code rewriting. Since qflow-1.4 gets rid of this problem entirely by using verilog output from yosys, there's not much point is rewriting a soon-to-be deprecated tool.
Also: Also made another correction to rc2dly.c; same fix as made in a previous commit, but needed to be made in two separate cases. One of those had been missed.
- posted: January 5, 2019 at 3:00am version: 1.3 revision: 4
Update at Fri Jan 4 15:16:26 EST 2019 by tim
Modified spi2xspice.py script so that all inputs including unused power and ground nodes have an A/D attached so that the input pins are not left floating. Same change as was made to qflow-1.4.
Also: Corrected an error that prevents rc2dly from crashing when qrouter generates an ERROR entry (for example, because it didn't finish routing). This fix was supposed to have been made a couple of commits ago, but the patch didn't work due to an error.
- posted: December 31, 2018 at 3:00am version: 1.3 revision: 3
Update at Sun Dec 30 15:22:49 EST 2018 by tim
Corrected error that reported technology directory mismatch when comparing two directories, one of which might be a symbolic link to the other. Also patched rc2dly and vesta to avoid errors and infinite looping when the router generates ERROR placeholders in the parasitic delay file output.
- posted: December 29, 2018 at 3:00am version: 1.3 revision: 2
Update at Fri Dec 28 15:44:14 EST 2018 by tim
Corrected the xspice script so that it removes brackets from pin and net names. ngspice generally accepts brackets in names but not when they are nested in XSPICE expressions.
Also: Corrected spi2xspice.py script to not output A records for cells like antenna tie-downs that have no outputs, since these are non-functional cells.
- posted: December 25, 2018 at 1:33pm version: 1.3 revision: 1
Copied .gitignore back to new version.
Revision information on Qflow version 1.2:
- posted: December 23, 2018 at 3:00am version: 1.2 revision: 93
Update at Sat Dec 22 22:56:34 EST 2018 by tim
Expanded spi2xspice.py to handle subcircuit definitions that are in the input file, not pulled in from a .include statement. Also corrected a duplicate .end statement error.
- posted: December 18, 2018 at 3:00am version: 1.2 revision: 92
Update at Mon Dec 17 09:23:47 EST 2018 by tim
Corrected an error that wrote mismatched quotes into the project_manager.sh file, and removed some diagnostic statements from the decongest script.
Also: Changes to work around problems caused by a re-work of the handling of gate suffix strings. This became untenable, and the solution was to start using regular expression strings to indicate to the tools how to match the names of cells (for now, fill cells are used; need to extend this to blifFanout to replace the 'separator' string).
Also: Corrected the handling of the "addspacers_options" line, since it contains information about powerbus width and pitch that needs to be retained whether or not the option is active.
- posted: December 13, 2018 at 3:00am version: 1.2 revision: 91
Update at Wed Dec 12 08:25:52 EST 2018 by tim
Corrected the showgatelist() routine to correct for the wrong flags (should be PIN_INPUT and PIN_CLOCK, not INPUT and CLOCK). Thanks to Roger Darr for the bug report and suggested fix.
- posted: December 8, 2018 at 3:00am version: 1.2 revision: 90
Update at Fri Dec 7 15:58:41 EST 2018 by tim
Rebuilt qflow-1.2 in preparation for new development version 1.4.
- posted: November 22, 2018 at 3:00am version: 1.2 revision: 89
Update at Wed Nov 21 08:22:22 EST 2018 by tim
Corrected a string overrun error where a suffix was added to a net when a buffer is inserted, but the string allocation was not making room for the suffix.
- posted: November 21, 2018 at 3:00am version: 1.2 revision: 88
Update at Tue Nov 20 13:04:38 EST 2018 by tim
Additions and enhancements to vesta and the scripts that handle BLIF and liberty formats, to fully support bus notation in liberty files, and to avoid unnecessarily changing the syntax of bus delimiters between file formats. Several scripts and tools that did not handle multiple input liberty files have been updated to do so.
Also: Typo correction that prevented hard macros from being imported into the layout database during "migrate".
- posted: November 20, 2018 at 3:00am version: 1.2 revision: 87
Update at Mon Nov 19 10:35:27 EST 2018 by tim
Changed some diagnostic print statements from stderr to stdout. Removed handling of "dont_use" cells from the liberty file parser, as the original use (building a genlib file) is long deprecated, and it now interferes with the use of hard macros (which are generally defined as dont_use).
Also: Revised blifFanout so that behavior accepts multiple entries for separator ("-s") along with multiple entries for input liberty files. That allows hard macros to not be mixed up with standard cells when determining what gates can be resized. Also added option "-S" to declare no separator (as opposed to an empty string separator, which is a valid separator).
- posted: November 13, 2018 at 3:00am version: 1.2 revision: 86
Update at Mon Nov 12 14:03:06 EST 2018 by tim
Modified the SPEF output so that the name map names do not include the delimiter and pin. The spec is unclear on whether or not the name map can include these, and various STA tools differ on their interpretation.
- posted: November 6, 2018 at 3:00am version: 1.2 revision: 85
Update at Mon Nov 5 16:14:40 EST 2018 by tim
Updated the old SCMOS techfiles for device-level extraction. The extraction section had been untouched because the digital flow does not extract on the device level, but only at the subcircuit level.
- posted: November 3, 2018 at 3:00am version: 1.2 revision: 84
Update at Fri Nov 2 07:56:14 EDT 2018 by tim
Modified the placement script to change "rm" to "rm -f" when deleting the.obs file, which may not exist and therefore should not throw an error message.
- posted: November 2, 2018 at 3:00am version: 1.2 revision: 83
Update at Thu Nov 1 10:34:40 EDT 2018 by tim
Made the annotate script generate a proper 0 or 1 return code, so that it can be checked by the calling script router.sh. Otherwise, missing input files are reported but do not cause the flow to halt.
Also: Rewrote the exit statements for blif2cel.tcl so that it does return 0 on success and 1 on error, as the placement.sh script expects.
- posted: October 30, 2018 at 3:00am version: 1.2 revision: 82
Update at Mon Oct 29 14:15:56 EDT 2018 by tim
Revised scripts to allow handling of all three known open source STA tools. Vesta only runs by default, but the project_vars.sh file can be annotated to use any of the other STA tools, and the GUI allows any of them to be set as well. OpenTimer and OpenSTA do not run by default due to the necessity of hand-editing an SDC command file.
Also: Minor correction to prevent OpenSTA and OpenTimer from reading a delay file when running the pre-route STA.
- posted: October 27, 2018 at 3:00am version: 1.2 revision: 81
Update at Fri Oct 26 16:37:56 EDT 2018 by tim
Added check for variable "netgen_setup" in the technology setup file from the LVS script, allowing the technology setup to specify a location other than the qflow technology directory.
Also: Added endif missing from the script in the previous commit.
- posted: October 26, 2018 at 3:00am version: 1.2 revision: 80
Update at Thu Oct 25 11:03:53 EDT 2018 by tim
Corrected an error in the liberty parser that failed to handle rewriting of XOR functions if the expression is not surrounded by parentheses. Probably should remove the rewriting altogether since it was done for genlib, used by VIS/SIS, which is all very deprecated now. . .
Also: Changed addspacers behavior to label power and ground specialnets in the output DEF file as FIXED rather than ROUTED.
- posted: October 6, 2018 at 3:00am version: 1.2 revision: 79
Update at Fri Oct 5 17:16:22 EDT 2018 by tim
Refactored the vesta code to move the skew and setup/hold calculations out of the main loop, where they fail because the source and destination may end up re-linked to another path which may no longer be on the same clock net. There is still a question of how to handle the delay value at the common point; this will be investigated next.
Also: Correction to sign in part of the calculation of clock skew. Noted that the liberty format defines hold times as typically negative, so adjusted hold time calculation accordingly.
Also: Initial OpenSTA integration. See notes on qflow website.
- posted: October 5, 2018 at 3:00am version: 1.2 revision: 78
Update at Thu Oct 4 22:18:00 EDT 2018 by tim
Update to vesta; found that new maximum/minimum paths after the first found were not updating the timing in the top level record, but the output was sorting and reporting the first and incorrect data value. Also separated out the clock skew and setup/hold value so that all values contributing to the final delay are present in the displayed (long format) output. Now that I can corroborate against OpenSTA, the delays appear to be in the ballpark.
- posted: October 4, 2018 at 3:00am version: 1.2 revision: 77
Update at Wed Oct 3 10:50:44 EDT 2018 by tim
Added a few GUI features, namely the ability to optionally skip the STA steps of the flow (on which nothing else depends), and buttons to set or clear all the "stop" checkbuttons for stopping after each step of the flow.
Also: Corrected errors in the SPEF format header, and corrected errors in the SDF format header and body.
- posted: October 3, 2018 at 3:00am version: 1.2 revision: 76
Update at Tue Oct 2 08:08:22 EDT 2018 by tim
Corrected the arrangepins script, which was failing to move the pin under consideration when it moved all pins below it down to make room. This was causing the occasional overlap of pins which of course results in route failure.
Also: Added preliminary support for OpenTimer integration (incomplete, and not advertised in the configuration yet); corrected bit-blasted netlist to replace periods with underscores to match the layout naming convention; and added functionality to qflow to swap the order of DRC and LVS, as well as correcting a few errors in detecting the existing state of DRC and STA results.
- posted: September 29, 2018 at 3:00am version: 1.2 revision: 75
Update at Fri Sep 28 11:20:44 EDT 2018 by tim
Additional code to support non-rectangular route areas. Blockages created in a .cel1 file are now used to create obstruction areas for (avoiding) routing, and these obstruction areas are used to avoid placing power posts for power routing. Not yet done: avoiding placing power posts in hard macros.
Also: Added functionality to create a bit-blasted version of the verilog and a compatible SPEF timing file, all in preparation for the integration of OpenTimer into qflow.
Also: Implemented an additional switch to blif2Verilog to avoid using a wire declaration for Vdd and Gnd, which makes OpenTimer unhappy. Qflow now produces verilog and SPEF output that is compatible with OpenTimer.
Also: Minor correction to guard against string overflow in the SPEF name mapping.
Also: Revised the last commit so that it actually does prevent string buffer overruns.
- posted: September 28, 2018 at 3:00am version: 1.2 revision: 74
Update at Thu Sep 27 13:25:27 EDT 2018 by tim
Correction to decongestion script, which was not checking the (newly implemented) manufacturing grid -based scale factor for units in the .cel file. Also re-implemented the use of a muliplier "X" for the concatenated fill cell and standard cell names in the .cel file. Without it, the cell names become very long and can overrun string buffers in graywolf.
Also: Another round of fixes for the SPEF file format generation. Work is still ongoing. . .
- posted: September 27, 2018 at 3:00am version: 1.2 revision: 73
Update at Wed Sep 26 21:59:47 EDT 2018 by tim
First major update in the SPEF format output conversion from the RC delay format created by qrouter, in support of OpenTimer. Still needs to handle name conversions between the layout and the verilog netlists.
- posted: September 26, 2018 at 3:00am version: 1.2 revision: 72
Update at Tue Sep 25 14:34:06 EDT 2018 by tim
Minor change to always apply "ext2spice global off" when extracting top-level netlists, as it is a generally dangerous thing to do to allow name merging, which can misrepresent a layout (name merging is still allowed for ports in abstract views).
- posted: September 24, 2018 at 3:00am version: 1.2 revision: 71
Update at Sun Sep 23 12:19:38 EDT 2018 by tim
Implemented patch by Ruben Undheim for allowing a file to be put in the source directory listing all files to be read in during synthesis. If the file has the default name.fl, then it is used automatically. Otherwise, the project_vars.sh file has an entry to list the (non-default) filename of this file. Also implements a project_vars.sh file variable "is_system_verilog" to force system-verilog compatibility, to be used when system verilog files simply use the same ".v" extension.
- posted: September 22, 2018 at 3:00am version: 1.2 revision: 70
Update at Fri Sep 21 11:06:42 EDT 2018 by tim
Corrected the problem of having the qflow script report "ls: not found" when searching for verilog source files, by using command "find" instead of "ls" (apparently in tcsh it is impossible to simultaneously capture stdout in a variable and suppress stderr).
- posted: September 21, 2018 at 3:00am version: 1.2 revision: 69
Update at Thu Sep 20 10:00:14 EDT 2018 by tim
Rewrote the migrate script so that it can be called from LVS to perform extraction only from an existing layout. Otherwise, since the addition of the migrate script, it had become impossible to edit the layout to resolve LVS errors after migration, since the extraction was being done only in the migration step.
- posted: September 20, 2018 at 3:00am version: 1.2 revision: 68
Update at Wed Sep 19 13:11:53 EDT 2018 by tim
Changed the GUI manager handling of the migrate step to watch for the SPICE file generated by layout extraction instead of the log file. Need to revisit this: Apparently the watchclock() routine is not waiting for the process to finish and is continuing to run the wrap-up step before the SPICE file has been written because it is triggering off the creation of the drc.log file. Since there are several other processes that wait on the log file, this can potentially cause other errors as well.
Also: Modified the gscl45nm technology to make use of the newest magic extension to allow widespacing rules to define both the width of metal triggering the rule and the runlength, as well as an option to the entire DRC section to interpret widespacing rule metal widths as either inclusive or non-inclusive.
Also: Corrected a typo that results in a python error instead of gracefully handling the actual error and exiting.
- posted: September 19, 2018 at 3:00am version: 1.2 revision: 67
Update at Tue Sep 18 16:35:19 EDT 2018 by tim
Modified scripts to make use of the modified qrouter "-i" output to be able to know the manufacturing grid throughout the synthesis process, and set the scalefactors of all layout accordingly. This avoids ever needing to worry about roundoff errors in placement and routing.
- posted: September 18, 2018 at 3:00am version: 1.2 revision: 66
Update at Mon Sep 17 10:52:55 EDT 2018 by tim
Modified the addspacers script so that it makes use of VIARULE statements in the technology LEF file to form the via stripes for the power and ground posts, instead of trying to concoct something from individual VIA definitions. Generally, this results in cleaner power posts and simpler SPECIALNETS records for the power and ground nets.
Also: Corrected addspacers script so that it outputs the correct metal layer height instead of "1" for power posts in the specialnets section. This was not strictly necessary, but the height was needed to prevent errors in some cases such as osu050 where only power posts are output, so it made sense to put in a real value everywhere. Also: Corrected an error that was generating decimal numbers for the power post coordinates in violation of the DEF spec.
- posted: September 17, 2018 at 3:00am version: 1.2 revision: 65
Update at Sun Sep 16 14:38:01 EDT 2018 by tim
Updated the config.guess file, which was badly out of date.
Also: Replaced the addspacers script with the original one, since the new one is not yet ready to commit.
- posted: September 15, 2018 at 3:00am version: 1.2 revision: 64
Update at Fri Sep 14 20:14:23 EDT 2018 by tim
Reverted back to the state before making changes in support of the gcsl45nm technology, because the handling of the DEF scalefactor broke all the other technologies. Will re-implement more carefully this time.
- posted: September 14, 2018 at 3:00am version: 1.2 revision: 63
Update at Thu Sep 13 13:35:53 EDT 2018 by tim
Made some modifications to better support the gscl45nm technology, particularly to get the DEF units to be in nanometers and to correctly handle this throughout. Also noted that the gscl45nm standard cells appear to be more correct when the route layer offsets are zero rather than the default of 1/2 pitch, so changed the technology LEF definitions accordingly. Still assessing routability of this technology node.
- posted: September 9, 2018 at 3:00am version: 1.2 revision: 62
Update at Sat Sep 8 10:37:47 EDT 2018 by tim
Started implementation of partial blockages in the placement stage. This a allows creation of non-rectangular layouts by specifying cut-out areas using "hardmacro" statements in a file with the extention ".cel1", used very much like the ".cel2" file to post- annotate the .cel file that is generated from the synthesis results. To do: Use the information from the .cel1 file to automatically generate obstruction statements to the qrouter .cfg file.
- posted: August 30, 2018 at 3:00am version: 1.2 revision: 61
Update at Wed Aug 29 08:49:38 EDT 2018 by tim
Applied a patch by Sean Cross to the router script to correct the use of single vs. double quotes in the call to qrouter.
- posted: August 29, 2018 at 3:00am version: 1.2 revision: 60
Update at Tue Aug 28 13:51:50 EDT 2018 by tim
Corrected an inadvertent error in the GUI python script which mistakenly called getcwd() as a method in sys instead of os.
- posted: August 28, 2018 at 3:00am version: 1.2 revision: 59
Update at Mon Aug 27 14:41:14 EDT 2018 by tim
Added missing comma in pin list for antenna cell in the back-annotation script.
- posted: August 27, 2018 at 3:00am version: 1.2 revision: 58
Update at Sun Aug 26 13:34:27 EDT 2018 by tim
Applied a fix from Leandro Marsó to pass the current working directory to set_project when starting qflow in GUI mode without any project name as the argument (which is the normal way to call it if not creating a new project).
- posted: August 23, 2018 at 3:00am version: 1.2 revision: 57
Update at Wed Aug 22 14:55:14 EDT 2018 by tim
Added patch from Russell Friesenhahn to (lightly) support inout nodes (which are incompatible with BLIF syntax).
- posted: August 21, 2018 at 3:00am version: 1.2 revision: 56
Update at Mon Aug 20 19:38:47 EDT 2018 by tim
Some fairly major changes: Added migrate, DRC, and LVS as command-line options that run from scripts in qflow_exec.sh like all the other stages of the flow. Corrected gdsii.sh (deleted the competing createGDS.sh) so that it actually works, and added it as a command-line enabled flow step as well. Modified the GUI to pull out these routines where they had been handled exclusively by the GUI, and replaced them with subprocess calls to the corresponding qflow command-line command. Mostly the above changes are transparent other than capturing more tool output in the console window. Also: Corrected an error preventing the qflow gui from being called simply with the name of the project directory when starting from the same project directory.
Also: Modified qrouter to default to an RC filename that is the same root name as the output. For qflow, this means that the output file will be_route.rc instead of .rc, so scripts have been modified accordingly. This is not an error in qflow but the change keeps the behavior consistent with the default behavior of qrouter.
- posted: August 11, 2018 at 3:00am version: 1.2 revision: 55
Update at Fri Aug 10 15:17:34 EDT 2018 by tim
Corrected an error which caused the last line of a BLIF file to be excised if the line was a .gate line for a cell that does not have a liberty file definition.
- posted: August 9, 2018 at 3:00am version: 1.2 revision: 54
Update at Wed Aug 8 11:50:59 EDT 2018 by tim
Applied patches from Sean Cross, correcting some logical errors in the shell script tests for out-of-date files because tcsh always returns "true" for "-M" test applied to a non-existent file. This likely corrects the known long-standing problem that failure to generate output files often does not stop the synthesis process as it should. Additional minor correction to an error statement which gives the wrong file extension for a missing file.
Also: One additional correction to remove the call to write_delays from the router script, if qrouter version is less than 1.4.21, in which the write_delays command was folded into the standard route script.
- posted: August 7, 2018 at 3:00am version: 1.2 revision: 53
Update at Mon Aug 6 15:20:35 EDT 2018 by tim
Modified the annotation script for fill cells so that it includes fill cells like spacers or decap with no inputs---these still go into the verilog file. Extended the procedure to include both the power and no-power versions of the verilog netlist.
Also: Added definitions for the FILL cell in the SPICE and verilog files for each of the distributed OSU technologies. This makes them compatible with the latest code change that annotates the SPICE and verilog netlists with spacer and decap cells as well as the antenna cells (if any; they aren't defined in the OSU standard cell sets).
- posted: July 26, 2018 at 3:00am version: 1.2 revision: 52
Update at Wed Jul 25 10:14:09 EDT 2018 by tim
Corrected an error that incorrectly parsed lines for a backslash- return line continuation escape.
- posted: July 23, 2018 at 3:00am version: 1.2 revision: 51
Update at Sun Jul 22 10:57:20 EDT 2018 by tim
Corrected scaling of pin bounding box to match the UNITS MICRONS scale declared in the DEF file header.
Also: Corrected the annotate script, which was failing to add the fill cells if any unfixed antenna violations were present in the output file.
Also: Correction to the last commit, which had a Tcl/Tk elseif on its own line, one of those stupid Tcl no-nos.
- posted: July 17, 2018 at 3:00am version: 1.2 revision: 50
Update at Mon Jul 16 10:54:15 EDT 2018 by tim
Corrected an error that prevented the use of "fillratios" to define the amount of each type of fill in the project_vars.sh file.
Also: Corrected a problem with arrangepins that occurs if there are no pins on a side, in which case the leftmost and rightmost pins on the top and bottom get assigned to be the left and right sides, causing the pins to get moved away from the layout edge.
- posted: July 16, 2018 at 3:00am version: 1.2 revision: 49
Update at Sun Jul 15 21:15:31 EDT 2018 by tim
Analyzed rc2dly.c to see what was taking it so long, and found a simple problem of parsing a linked list to find the end on every node, in a routine that actually returns the last entry in the list. So, easy fix.
Also: Added support for hard macros to the display.sh script, so that the layout can be displayed with "qflowdisplay". Previously, only the GUI supported hard macros for display.
- posted: July 15, 2018 at 3:00am version: 1.2 revision: 48
Update at Sat Jul 14 21:35:41 EDT 2018 by tim
Updated qflow manager script to allow a continuous flow from beginning to end (excepting the "prep" and "clean" steps) unless a checkbox in the settings for each step is checked to force a stop at the end of that step.
- posted: July 14, 2018 at 3:00am version: 1.2 revision: 47
Update at Fri Jul 13 11:12:17 EDT 2018 by tim
Updated the techfiles' "lef" sections for the correct canonical layer names to match the layer names used in the standard cell LEF files.
Also: Corrected LVS code for skipping timed-out extraction. Fails in normal case due to uninitialized variable "skipextract".
- posted: July 11, 2018 at 3:00am version: 1.2 revision: 46
Update at Tue Jul 10 10:51:46 EDT 2018 by tim
Corrected an error in the placement script for reading the technology LEF file (was broken by the last commit). Also added qflow version and revision information to blifFanout and to vesta to better track problems in the wild.
- posted: July 10, 2018 at 3:00am version: 1.2 revision: 45
Update at Mon Jul 9 13:58:33 EDT 2018 by tim
Modified the arrangepins.tcl script so that it also changes the pins (which are all now on track junctures) to have a size equal to the route width, instead of a (centimicron) unit size. The unit size causes the pin to disappear when loaded into magic, which is not an error but which, when used with "lef write", will generate a LEF file with pins having no geometry information if the pins are not connected internally to the block.
Also: Updated hard macro handling so that the addspacers and arrangepins scripts both read all of the hard-macro LEF files. Also, the placement script puts the "read_lef" lines for the hard macros into the .cfg file for qrouter. At this point the placement script runs to completion but the placement is not being called right, as the hard macros tend to overlap. More work to be done.
- posted: July 9, 2018 at 3:00am version: 1.2 revision: 44
Update at Sun Jul 8 21:30:16 EDT 2018 by tim
Corrected an error found in blifanno that misses net connections that are the last line in the net in the DEF file, if the line ends with a semicolon. This can result in LVS failures due to swapped buffers in buffer trees.
- posted: July 8, 2018 at 3:00am version: 1.2 revision: 43
Update at Sat Jul 7 21:09:34 EDT 2018 by tim
Corrected an error check in the placement script. As written, it would fail to notice if the verilog and/or SPICE netlists were not regenerated, after correcting the buffer tree connections post- placement.
- posted: July 5, 2018 at 3:00am version: 1.2 revision: 42
Update at Wed Jul 4 16:15:38 EDT 2018 by tim
Added a missing call to read the .par file and pick up previously set values to seed the GUI entries. Also added a workaround for large files causing timeouts when extracting for LVS: The state will be left as "incomplete" and can be run again when the extraction has finished. The real solution needed is to incorporate the LVS and DRC into the qflow command-line, then call qflow from the manager as is done for place and route, which are not subject to timeouts.
- posted: June 29, 2018 at 3:00am version: 1.2 revision: 41
Update at Thu Jun 28 19:11:40 EDT 2018 by tim
Updated arrangepins to avoid getting confused when the placement tool runs pins off the edge of the design space. Instead, it does what it was intended to do, which is to pull them back into the layout area.
- posted: June 27, 2018 at 3:00am version: 1.2 revision: 40
Update at Tue Jun 26 09:38:06 EDT 2018 by tim
Added missing WM_DELETE_WINDOW handlers for popup windows (text report and help window).
Also: Modified the qflow GUI and the createGDS script to allow the "gdsfile" variable in the technology setup file to be a space- separated list of GDS files, in case there is not a single GDS library for the standard cells (although that is much cleaner).
Also: Additional modification to handle GDS files in "set" statement with or without comments and with or without quotes around the space-separated list of files (which would be normal for tcsh syntax).
- posted: June 16, 2018 at 3:00am version: 1.2 revision: 39
Update at Fri Jun 15 09:15:00 EDT 2018 by tim
Modified blifFanout to dynamically allocate its input string, so that arbitrarily long I/O lists cannot crash the program anymore.
- posted: June 15, 2018 at 3:00am version: 1.2 revision: 38
Update at Thu Jun 14 22:11:31 EDT 2018 by tim
Corrected problem with pinmanager that appears to be a tkinter issue, in that tkinter is for unknown reasons generating thousands of pixmaps when the pins are generated, an apparent consequence of using a canvas object (?). New behavior compresses vectors that are larger than 12, which is basically an ad-hoc method of more or less guaranteeing that pin lists won't exceed the X11 pixmap limit.
- posted: June 9, 2018 at 3:00am version: 1.2 revision: 37
Update at Fri Jun 8 09:26:14 EDT 2018 by tim
Corrected a bad error in the previous commit which forced the pin position cleanup to set a pitch of 1 centimicron. Also tracked down and fixed another more subtle error that forced the relocation of perfectly well-positioned pins.
- posted: June 8, 2018 at 3:00am version: 1.2 revision: 36
Update at Thu Jun 7 08:14:03 EDT 2018 by tim
Corrected an error failing to quote a multi-word option string, causing only the first part of the option to be captured.
Also: Fixed an error in arrangepins that occurs if one or more sides has no pins.
- posted: June 7, 2018 at 3:00am version: 1.2 revision: 35
Update at Wed Jun 6 11:27:22 EDT 2018 by tim
Corrected the fillcells.txt output created by addspacers in the case that spacers placed under the power bus rails are antenna cells and have inputs. Otherwise the pins are missing, the annotated netlist does not use unique nets on the pins, and the netlist fails LVS.
Also: Removed some diagnostic print statements.
Also: Corrected arrangepins (again) to handle DEF files where only one of X or Y is specified for each layer in TRACKS (which is the usual format from qflow scripts).
- posted: June 6, 2018 at 3:00am version: 1.2 revision: 34
Update at Tue Jun 5 16:26:35 EDT 2018 by tim
Committed a patch that should have been committed some days ago that fixes a bug in the placement script that makes all cells get written to the .cel file as "hardcell", which has the wrong syntax and so immediately causes an error. Also discovered an improper use of the ${?var} syntax that caused fill cells not to be treated correctly if they are not defined in the techfile setup script.
- posted: May 29, 2018 at 3:00am version: 1.2 revision: 33
Update at Mon May 28 22:23:20 EDT 2018 by tim
Found buffer overflow in blifFanout when working with hard macros with long pin lists. Expanded the unnecessarily restricted line length, but need to have a dynamic allocation. . .
- posted: May 25, 2018 at 3:00am version: 1.2 revision: 32
Update at Thu May 24 12:16:10 EDT 2018 by tim
Fixed the synthesis script for detecting errors specific to missing cells (otherwise may incorrectly interpret other error messages).
Also: Corrected an issue with the PDK node being reset by filesystem preparation and not being set to the choice from the option menu on the button.
- posted: May 23, 2018 at 3:00am version: 1.2 revision: 31
Update at Tue May 22 08:37:15 EDT 2018 by tim
Changed the "display" script to use Cairo graphics (magic-8.2) instead of OpenGL (which fails on many systems even when compiled in correctly). OpenGL can be activated through the magic_display variable in the project_vars.sh file (now documented on the web page). Otherwise, the display script defaults to using X11.
- posted: May 19, 2018 at 3:00am version: 1.2 revision: 30
Update at Fri May 18 17:05:42 EDT 2018 by tim
Numerous fixes to the qflow manager, especially concerning the handling of the project name vs. the verilog module, and the handling of fill cells through netlist annotation and LVS.
Also: Minor correction to place2def file, which was not properly ignoring already-defined antenna cells, but was overwriting them.
- posted: May 18, 2018 at 3:00am version: 1.2 revision: 29
Update at Thu May 17 16:59:23 EDT 2018 by tim
Added pin arrangement script (now tested on several designs) that corrects some of the problems caused by graywolf. It spreads out the pins while keeping pins aligned to their terminal connections to the extent possible, and avoids placing pins under the power bus stripes. This greatly increases the routability of a design.
- posted: May 16, 2018 at 3:00am version: 1.2 revision: 28
Update at Tue May 15 17:17:22 EDT 2018 by tim
Additional code to take output from the antenna violation corrections in qrouter and back-annotate the netlists for STA and LVS. Made a correction to a long-time error that failed to add the ".end" line to the BLIF file, which propagated to missing end statements in SPICE and verilog netlists.
- posted: May 13, 2018 at 3:00am version: 1.2 revision: 27
Update at Sat May 12 21:11:10 EDT 2018 by tim
Corrections to the decongest script to correctly handle cases where only one or two of the three fill types is specified. Also added the ability to specify the ratio of types of fill cells from the project_vars.sh file.
- posted: May 12, 2018 at 3:00am version: 1.2 revision: 26
Update at Fri May 11 18:53:29 EDT 2018 by tim
Slight changes to the code from the last commit in conjunction with the final version of antenna violation fixing in qrouter version 1.4. Antenna fixing now absorbed into the "standard_ route" script, and does not need to be explicitly called in the route configure script.
Also: One more slight change, as the antenna cell needs to be declared before the design DEF file has been read.
- posted: May 11, 2018 at 3:00am version: 1.2 revision: 25
Update at Thu May 10 21:59:37 EDT 2018 by tim
Added code to make use of the new "antenna" command in qrouter version 1.4, which identifies antenna violations (and eventually will remove them).
- posted: May 10, 2018 at 3:00am version: 1.2 revision: 24
Update at Wed May 9 11:44:07 EDT 2018 by tim
Added option to buffer inputs as well as outputs. Added option to automatically attach an antenna cell to every digital input and route it.
- posted: May 9, 2018 at 3:00am version: 1.2 revision: 23
Update at Tue May 8 22:39:28 EDT 2018 by tim
Implemented new features to support (1) clock buffers vs. regular buffers (if available in the standard cell set), and (2) decap fill and antenna fill vs. regular fill (if available in the standard cell set). Remaining to do: User-specified ratios of fill cell types, and option to automatically add antenna cells to all digital inputs.
- posted: May 8, 2018 at 3:00am version: 1.2 revision: 22
Update at Mon May 7 13:05:08 EDT 2018 by tim
Merged all updates from qflow-1.1 into qflow-1.2. Yes, I'm aware that that's backwards. qflow-1.2 will now be the development platform in the usual sense.
- posted: February 21, 2018 at 3:00am version: 1.2 revision: 21
Update at Tue Feb 20 17:03:02 EST 2018 by tim
Important correction: Change to liberty file handling caused the reading of tables to get skewed, messing up all measurements. This has been fixed. Another error fixed to avoid false "independent clock" warning messages. Same changes as made to qflow-1.1.
- posted: January 31, 2018 at 3:00am version: 1.2 revision: 20
Update at Tue Jan 30 10:24:00 EST 2018 by tim
Changed default behavior for "via stack" statement in qrouter config file from "2" to "none". Same change as made to qflow version 1.1.
Also: Modification to previous change to make default 'via stack all' instead of 'via stack none'.
- posted: January 28, 2018 at 3:00am version: 1.2 revision: 19
Update at Sat Jan 27 16:05:13 EST 2018 by tim
Updated with some changes from qflow-1.1 that were not merged into version 1.2. Checked for use with the qflow tutorial, which works.
- posted: January 26, 2018 at 3:00am version: 1.2 revision: 18
Corrected two missing end-quotes in the synthesis script.
- posted: January 24, 2018 at 5:35pm version: 1.2 revision: 17
Forgot to update gscl45nm Makefile for "make distclean".
- posted: January 24, 2018 at 5:35pm version: 1.2 revision: 16
Added "distclean" targets to "make" to be compatible with the script on the opencircuitdesign server that builds the tarballs.
- posted: January 8, 2018 at 5:35pm version: 1.2 revision: 15
Corrected failure in vesta to handle reference counts when freeing backtraces on clock nets. Same correction as made to qflow-1.1.
- posted: January 24, 2018 at 5:35pm version: 1.2 revision: 14
Updated blif2cel.tcl script to correct same errors as qflow-1.1 (pitch of first route layers, handling comment lines).
December 4, 2017 at 3:00am version: 1.2 revision: 13
Corrected readliberty and vesta to make bounds checks on the token size and reallocate memory when it gets larger than the original size. Also added the check for "env" in Makefile and substitution of same in spi2xspice.py. All changes were previously made to qflow-1.1.
- posted: November 13, 2017 at 3:00am version: 1.2 revision: 12
Corrected an error that could cause yosys to fail on hierarchy missed due to qflow setting a tcsh variable to text from yosys output containing brackets (bad idea). Same correction made to qflow-1.1.
- posted: November 9, 2017 at 3:00am version: 1.2 revision: 11
Fixed addspacers, which was generating an error when the specified power stripe pitch was larger than the width of the layout. Same change as made to qflow-1.1. Also added a fix to addspacers that was previously made to qflow-1.1 but not qflow-1.2.
- posted: October 27, 2017 at 3:00am version: 1.2 revision: 10
Changed /bin/env to /usr/bin/env, as this seems to be more widely supported. Need better support from the configure script, though.
- posted: October 26, 2017 at 3:00am version: 1.2 revision: 9
Corrected regular expression in blif2cel.tcl causing an error when reading the OSU standard cell LEF files. Same fix made to qflow-1.1.
- posted: October 20, 2017 at 3:00am version: 1.2 revision: 8
Same change made to qflow-1.1, simple fix to filtering of the outpus from the router script. Corrected an error in the place2def script that was introduced by the last commit.
- posted: October 19, 2017 at 3:00am version: 1.2 revision: 7
Several important fixes: Corrected DEF file units so that DEF file values are always integer; this does not affect the flow through qflow and magic, but affects results if the DEF file is read by any tool adhering to the integer value requirement. Fixed place2def script to read both technology and macro LEF files if both are specified independently for the technology. Corrected a round-off error affecting the placement of obstruction layers when fill cells are added for power bus stripes. Same changes as made to qflow-1.1.
- posted: October 11, 2017 at 3:00am version: 1.2 revision: 6
Added files for FreePDK45 to the set of distributed technologies.
- posted: August 10, 2017 at 3:00am version: 1.2 revision: 5
No changes, repository alignment.
- posted: August 9, 2017 at 3:00am version: 1.2 revision: 4
No changes, repository alignment.
- posted: May 1, 2017 at 3:00am version: 1.2 revision: 3
Implemented minimum pad spacing in .par file so that pads are forced by graywolf to be at double pitch spacing, which helps prevent qflow from pushing overlapping pads off the end of the route grid. Added gridX, gridY to the .par file in anticipation of the next graywolf update. Same changes as made to qflow-1.1.
- posted: April 26, 2017 at 3:00am version: 1.2 revision: 2
Implemented handling of .include files in blif2BSpice.c; this is particularly useful when the vendor collects individual SPICE files for standard cells in a .lib file with .include statements instead of a single file. Added code from David Lanzendorfer for hard macro placement and balancing power net resistance.
- posted: April 26, 2017 at 3:00am version: 1.2 revision: 1
First commit of qflow development version 1.2
Revision information on Qflow version 1.1:
- posted: September 17, 2018 at 3:00am version: 1.1 revision: 121
Update at Sun Sep 16 14:38:24 EDT 2018 by tim
Updated the config.guess file, which was badly out of date.
- posted: September 1, 2018 at 3:00am version: 1.1 revision: 120
Update at Fri Aug 31 17:39:05 EDT 2018 by tim
Corrected a bad error caused by not correctly implementing a code change made to qflow-1.2, causing qflow-1.1 to write duplicate pins to the .cel output, which just causes major errors.
- posted: August 23, 2018 at 3:00am version: 1.1 revision: 119
Update at Wed Aug 22 14:55:33 EDT 2018 by tim
Added patch from Russell Friesenhahn to (lightly) support inout nodes (which are incompatible with BLIF syntax) (same change made to qflow-1.2).
- posted: August 9, 2018 at 3:00am version: 1.1 revision: 118
Update at Wed Aug 8 11:51:12 EDT 2018 by tim
Applied patches from Sean Cross, correcting some logical errors in the shell script tests for out-of-date files because tcsh always returns "true" for "-M" test applied to a non-existent file. This likely corrects the known long-standing problem that failure to generate output files often does not stop the synthesis process as it should. Additional minor correction to an error statement which gives the wrong file extension for a missing file.
- posted: July 26, 2018 at 3:00am version: 1.1 revision: 117
Update at Wed Jul 25 10:14:19 EDT 2018 by tim
Corrected an error that incorrectly parsed lines for a backslash- return line continuation escape.
- posted: July 16, 2018 at 3:00am version: 1.1 revision: 116
Update at Sun Jul 15 21:15:40 EDT 2018 by tim
Analyzed rc2dly.c to see what was taking it so long, and found a simple problem of parsing a linked list to find the end on every node, in a routine that actually returns the last entry in the list. So, easy fix.
- posted: July 14, 2018 at 3:00am version: 1.1 revision: 115
Update at Fri Jul 13 11:12:26 EDT 2018 by tim
Updated the techfiles' "lef" sections for the correct canonical layer names to match the layer names used in the standard cell LEF files.
- posted: July 11, 2018 at 3:00am version: 1.1 revision: 114
Update at Tue Jul 10 10:52:04 EDT 2018 by tim
Added qflow version and revision information to blifFanout and to vesta to better track problems in the wild.
- posted: July 9, 2018 at 3:00am version: 1.1 revision: 113
Update at Sun Jul 8 21:30:08 EDT 2018 by tim
Corrected an error found in blifanno that misses net connections that are the last line in the net in the DEF file, if the line ends with a semicolon. This can result in LVS failures due to swapped buffers in buffer trees.
- posted: June 16, 2018 at 3:00am version: 1.1 revision: 112
Update at Fri Jun 15 09:14:45 EDT 2018 by tim
Modified blifFanout to dynamically allocate its input string, so that arbitrarily long I/O lists cannot crash the program anymore.
- posted: May 29, 2018 at 3:00am version: 1.1 revision: 111
Update at Mon May 28 22:23:31 EDT 2018 by tim
Found buffer overflow in blifFanout when working with hard macros with long pin lists. Expanded the unnecessarily restricted line length, but need to have a dynamic allocation. . .
- posted: May 25, 2018 at 3:00am version: 1.1 revision: 110
Update at Thu May 24 12:15:56 EDT 2018 by tim
Fixed the synthesis script for detecting errors specific to missing cells (otherwise may incorrectly interpret other error messages).
Also: Corrected an issue with the PDK node being reset by filesystem preparation and not being set to the choice from the option menu on the button.
- posted: May 19, 2018 at 3:00am version: 1.1 revision: 109
Update at Fri May 18 17:08:26 EDT 2018 by tim
Resolved issues with distinguishing between the project name and the verilog top module (and, in a few places, the path to the project).
- posted: May 18, 2018 at 3:00am version: 1.1 revision: 108
Update at Thu May 17 10:10:44 EDT 2018 by tim
Corrected handling of side allowable percentage ranges so that it gets output if start is still 0 or stop is still 100 after the other value is changed.
- posted: May 4, 2018 at 3:00am version: 1.1 revision: 107
Update at Thu May 3 08:56:47 EDT 2018 by tim
Disabled the use of OpenGL graphics when calling magic unless there is a specific setting in the ~/.qflow/prefs.json file. This avoids an obscure deadlock issue when the X server fails on a GLX call due to disabled off-screen rendering.
- posted: May 1, 2018 at 3:00am version: 1.1 revision: 106
Update at Mon Apr 30 10:22:29 EDT 2018 by tim
Resolved some issues with setting the verilog file and/or the technology from inside the GUI.
Also: Updated the pin manager to add more helpful behavior, such as automatically clustering vectors, allowing signals to be selected and moved in groups, and not failing to accept focus directly over the pin name.
- posted: April 30, 2018 at 3:00am version: 1.1 revision: 105
Update at Sun Apr 29 17:25:42 EDT 2018 by tim
Additional changes to the OSU050 standard cell set, although it is clear that a definition is needed for obsm1 or else DRC can never pass. Otherwise, implemented a technology selection button and added logic to handle changing from one technology to another (which requires a complete reset of the project).
Also: Instead of adding obsm1 to the magic techfile for OSU050, added an option to the DRC section of the qflow GUI to allow DRC to run on the full GDS view of the standard cells, which works for the OSU050 technology, and can be useful for other cases in which the LEF views don't mesh well with the magic techfile.
Also: Added check for graphics support in magic so that the edit layout function is not restricted by the version of magic available. The version of magic is also captured for future use in maintaining compatibility with different versions and their supported options. Need to be doing many more tool version checks, though.
- posted: April 29, 2018 at 3:00am version: 1.1 revision: 104
Update at Sat Apr 28 14:51:48 EDT 2018 by tim
Completed first iteration of the qflow manager GUI, ported from the efabless platform and adapted to local use. Also added the GDS files of the open-source standard cells to the distribution, as well as netgen (LVS) setup files for each. With the GUI manager, qflow adds design filesystem preparation, LVS, DRC, and GDS output generation to the set of actions qflow performs on a synthesis project.
Also: Made numerous corrections to the techfiles, which had not been properly edited for content after converting to format 29. This had not been an issue for as long as qflow was not using GDS read and write.
- posted: April 13, 2018 at 3:00am version: 1.1 revision: 103
Update at Thu Apr 12 08:12:27 EDT 2018 by tim
Corrected a minor error in which the "checkdirs" script, if given the wrong number of arguments, fails with an error instead of printing a usage message. Also changed the qflow script such that if the checkdirs script fails, the qflow script exits.
- posted: March 10, 2018 at 3:00am version: 1.1 revision: 102
Update at Fri Mar 9 09:03:19 EST 2018 by tim
Corrected an error in rc2dly that fails on standard cell sets whose names contain underscores.
- posted: March 9, 2018 at 3:00am version: 1.1 revision: 101
Update at Thu Mar 8 14:15:05 EST 2018 by tim
Added an option to the place2def script to scale. This works around problems where the manufacturing grid is less than 1 centimicron but the tracks are on multiples of 1 centimicron so the DEF file is made without using the minimum manufacturing grid. Qrouter does not (yet) have the ability to scale all values in the DEF file as it reads them in. The stop-gap measure is to use "place2def_options" in the tech shell script. The argument to place2def.tcl is "scale=" where is an integer.
- posted: February 21, 2018 at 3:00am version: 1.1 revision: 100
Update at Tue Feb 20 17:02:28 EST 2018 by tim
Important correction: Change to liberty file handling caused the reading of tables to get skewed, messing up all measurements. This has been fixed. Another error fixed to avoid false "independent clock" warning messages.
- posted: February 3, 2018 at 3:00am version: 1.1 revision: 99
Update at Fri Feb 2 14:16:31 EST 2018 by tim
Made a number of enhancements: Liberty file parser for vesta and for blifFanout now parse according to the newer spec that allows lines to end without a semicolon. Implemented automatic check of standard cell LEF to determine the names of the power and ground pins, and propagate this information to all the scripts, so that it does not have to be specified in the .sh file. This avoids weird problems with the router caused by improperly named power and ground.
Also: Added the gscl45nm library to qflow version 1.1, since development of 1.1 got ahead of the 1.2 repository and now version 1.2 is going to be retired.
- posted: January 31, 2018 at 3:00am version: 1.1 revision: 98
Update at Tue Jan 30 10:23:37 EST 2018 by tim
Changed default behavior for "via stack" statement in qrouter config file from "2" to "none".
Also: Modification to previous change to make default 'via stack all' instead of 'via stack none'.
- posted: January 28, 2018 at 3:00am version: 1.1 revision: 97
Update at Sat Jan 27 15:35:24 EST 2018 by tim
Reorganized debug and verbose output modes, and added a debug mode for generating output about liberty file parsing, since this seems to be a perrenial issue, with lots of liberty files here and there that violate the official liberty syntax.
- posted: January 27, 2018 at 3:00am version: 1.1 revision: 96
Update at Fri Jan 26 10:37:15 EST 2018 by tim
Changed behavior of vesta to not delete names of cells marked "dont_use" in the liberty file. If a cell gets used anyway in the netlist, it now flags a warning and allows the cell to be used anyway. Also fixed readliberty to not use standard delimiters that it defines for the liberty file format when reading the delay file, which contains net names generated by yosys that may contain ":", which is considered a delimiter in liberty files.
- posted: January 26, 2018 at 3:00am version: 1.1 revision: 95
Update at Thu Jan 25 14:45:05 EST 2018 by tim
Also: Changed the synthesis script from Staf Verhaegen's patch which moves the check for a custom yosys script up and if found, does not attempt to automatically generate a yosys script. This prevents qflow from overwriting the custom script if they have the same name, and prevents other errors, and fixes the general case where one might use a custom script to avoid errors generated when running the automatic creation.
- posted: January 24, 2018 at 5:45pm version: 1.1 revision: 94
Added "distclean" targets to "make" to be compatible with the script on the opencircuitdesign server that builds the tarballs.
- posted: January 8, 2018 at 3:00am version: 1.1 revision: 93
Corrected failure in vesta to handle reference counts when freeing backtraces on clock nets.
Changed the same code again to be more flexible with respect to unknown dictionary entries in the timing section. It no longer specifically finds the ecsm_waveform and ecsm_capacitance keywords, but parses through any dictionary-like entry and generates an "unhandled feature" output statement.
- posted: December 17, 2017 at 3:00am version: 1.1 revision: 92
Fixed the liberty file read routine for timing sections having ecsm_waveform and/or ecsm_capaticance entries. These values are not handled, but such entries no longer cause parsing to fail.
- posted: December 14, 2017 at 3:00am version: 1.1 revision: 91
Corrected blif2cel.tcl in several places, (1) to properly ignore commented lines in LEF, and (2) to use only the pitch of the first route layer(s) to set the pitch of the pads.
- posted: December 11, 2017 at 3:00am version: 1.1 revision: 90
Added SDF file output in addition to the vesta format and SPEF format. Both SDF and SPEF are still preliminary, and are not being used by any other tool currently.
- posted: December 6, 2017 at 3:00am version: 1.1 revision: 89
Added experimental SPEF file generator.
Also changed vesta to have the same out-of-bounds check on the token size in advancetoken().
- posted: December 4, 2017 at 3:00am version: 1.1 revision: 88
Corrected the read_liberty routine to check for token overflow and allocate more memory as needed. Tokens can contain everything between delimiters like { and } for unhandled sections and can be very large.
- posted: November 21, 2017 at 3:00am version: 1.1 revision: 87
Added change from Russell Friesenhahn to let the configure script find the "env" tool which is then in turn substituted in to the spi2xspice script. Also fixed the spi2xspice script to read the nominal process voltage from the liberty file and apply appropriately to the D-to-A and A-to-D signal bridges. Added some preliminary support for simplified hard macro integration into the synthesis flow (unfinished, does not affect existing methods).
- posted: November 13, 2017 at 3:00am version: 1.1 revision: 86
Corrected an error that could cause yosys to fail on hierarchy missed due to qflow setting a tcsh variable to text from yosys output containing brackets (bad idea).
- posted: November 9, 2017 at 3:00am version: 1.1 revision: 85
Fixed addspacers, which was generating an error when the specified power stripe pitch was larger than the width of the layout.
- posted: October 27, 2017 at 3:00am version: 1.1 revision: 84
Changed /bin/env to /usr/bin/env, as this seems to be more widely supported. Need better support from the configure script, though.
- posted: October 26, 2017 at 3:00am version: 1.1 revision: 83
Corrected regular expression in blif2cel.tcl causing an error when reading the OSU standard cell LEF files.
- posted: October 20, 2017 at 3:00am version: 1.1 revision: 82
Simple change to filtering of the router script output so that it catches the number of failed nets at the end (if any) but doesn't also output every failed net along the way.
Corrected an error that was introduced by the last commit.
- posted: October 19, 2017 at 3:00am version: 1.1 revision: 81
Several important fixes: Corrected DEF file units so that DEF file values are always integer; this does not affect the flow through qflow and magic, but affects results if the DEF file is read by any tool adhering to the integer value requirement. Fixed place2def script to read both technology and macro LEF files if both are specified independently for the technology. Corrected a round-off error affecting the placement of obstruction layers when fill cells are added for power bus stripes.
- posted: September 28, 2017 at 3:00am version: 1.1 revision: 80
Corrected a basic error in the command line parsing in which omitting the project name was not recognized as an error and would cause bad things to happen (rewriting the qflow_exec script with bad syntax). Now it will properly generate a usage message and exit.
- posted: September 22, 2017 at 3:00am version: 1.1 revision: 79
A number of housekeeping changes. Added print statements with the command and arguments for every script and executable called from a synthesis flow script. Added more checks for non-zero exit status from scripts, to catch interpreter errors. Also: Corrected blifFanout to generate only unsigned char exit values, and to output the number of gates changed as a print statement on stdout, using grep and cut to identify the number of gates changed. Otherwise, blifFanout can never exit due to failure (because the negative exit values could not be seen), and would end suddenly any time the number of gates changed was a multiple of 256.
Corrected an error in addspacers handling technologies where there are not enough route layers to place a vertical power bus (generally, 4 metals are required to do power buses easily).
Reverted the system of "default" variables back to the way it used to be, which was to set default values in the tech .sh file, except for the change that the defaults from the tech .sh file are written into the project_vars.sh file so that the user can see what the defaults are in order to be better informed about changing them. Also: Changed the behavior of addspacers to ensure that at least one power and one ground bus are generated if the "-stripe" argument is given, as it is better to violate the specified pitch than to generate bad layout.
- posted: September 21, 2017 at 3:00am version: 1.1 revision: 78
Made substantial revisions to the code that generates power posts for power striping, to account for via spacing and overlap rules where specified. Also added check for variable "logdir" to avoid errors on projects created with versions of qflow before the individual log files were implemented.
Corrected some typos in the previous commit that prevented addspacers from running. New version is still a work in progress, as it does not correctly find some power buses from the polygon geometry, and it needs to know the via separation to correctly construct the power posts.
Enhanced the addspacers script to deal with USE and DIRECTION values for pins that are not uppercase, and to deal with pins that are listed as POLYGONs instead of RECTs, in particular to parse a power or ground bus polygon to extract a single rectangle spanning the cell. This is an ad hoc solution but works in the cases I've encountered so far.
- posted: September 20, 2017 at 3:00am version: 1.1 revision: 77
Corrected spi2xspice.py script to correctly handle quotes and whitespace around pin names in the liberty file.
- posted: September 19, 2017 at 3:00am version: 1.1 revision: 76
Modified the main "qflow" launch script to use exec to make it transparent to exit status, and use the :q modifier on $argv to handle arguments with whitespace correctly. Thanks to Risto Bell for the fix.
Corrected handling of quotes in the default values set in the techfile .sh file, so that the quotes end up in project_vars.sh.
- posted: September 18, 2017 at 3:00am version: 1.1 revision: 75
Added the ability to declare defaults for entries in project_vars.sh in the technology .sh file, for defaults like "via_use" and "fanout_options" that are process-dependent. Also added "stat" to the end of the standard yosys script so that statistics on the use of standard cells will be written in the log file.
- posted: September 13, 2017 at 3:00am version: 1.1 revision: 74
Corrected failure to check for end-of-string terminator that makes parsing segfault in a very flaky and system-dependent way.
- posted: August 28, 2017 at 3:00am version: 1.1 revision: 73
Added handling for "via_use" in project_vars.sh to be passed to the .cfg file as "via use", coordinating with the latest commit to qrouter.
Removed swap file that ended up in the distribution.
- posted: August 26, 2017 at 3:00am version: 1.1 revision: 72
Corrected vesta to set fsum to NULL if no summary file or directory has been specified on the command line. Otherwise, vesta can lock up trying to access a non-NULL random fsum.
Change to rc2dly to output only the total wire capacitance for each net, so that vesta does not double-count the receiver gate capacitances (or, conversely, ignore the wire capacitance).
- posted: August 25, 2017 at 3:00am version: 1.1 revision: 71
Corrected errors in which cell in list was referenced by name, where the name is removed if the cell is marked "dont_use" in the liberty file, causing a crash.
- posted: August 24, 2017 at 3:00am version: 1.1 revision: 70
Revised the delay reading in vesta to ignore the capacitance from the delay backannotation file, since it double-counts the terminal pin capacitances. The effect of the wiring capacitance should already be present in the delay values in the file.
Corrected obscure csh issue with using an if ... else if conditional to test for a variable being defined or not and then checking for a specific value.
- posted: August 23, 2017 at 3:00am version: 1.1 revision: 69
Corrected the call to qrouter for no graphics mode. This required a correction to qrouter to properly handle no-console and no-graphics modes properly.
Revised the method of logging output so that there is now a directory log/ in the project, and individual log files are created for each step of the process. This makes it easier to track down errors from a specific step, instead of dumping everything into one file.
Added options to vesta to supply a directory or file name to dump output to. If a directory name (as determined by the lack of a file extension), then four separate output files will be made, one for each timing analysis.
- posted: August 17, 2017 at 3:00am version: 1.1 revision: 68
Corrected an error in addspacers that causes it to exit with an error condition if there is not enough room in the layout for the power stripes that were requested.
- posted: August 16, 2017 at 3:00am version: 1.1 revision: 67
Added option to project_vars.sh to display graphics during routing.
- posted: August 14, 2017 at 3:00am version: 1.1 revision: 66
Substantial changes to add routed wire delays to static timing analysis. Code by Russell Friesenhahn of ARLUT converts the nested R-C delay values produced by qrouter into wire delays using the Elmore approximation. Additional scripts add the delay generation and conversion and post-route STA into the flow.
- posted: August 12, 2017 at 3:00am version: 1.1 revision: 65
Fixed some major issues with the run-time computation of the clock trees and finding common clock points between two registers. Qflow was scanning the entire clock tree for the analysis of every single register-to-register connection, which was not unreasonable for designs with small clock networks, but quickly reached stupid proportions for microprocessor-sized designs, as the run-time was exponentially related to the number of registers in the design. Everything in qflow is now more or less linear with design size (probably O(N log(N))).
- posted: August 10, 2017 at 3:00am version: 1.1 revision: 64
No action, repository realignment.
- posted: August 9, 2017 at 3:00am version: 1.1 revision: 63
No action, repository realignment.
- posted: August 7, 2017 at 3:00am version: 1.1 revision: 62
Corrected error in addspacers that (depending on the cell width) would sometimes add one more power bus stripe than expected, while calculations such as where to put pin-protecting obstructions would use the smaller number and therefore end up with conflicting values.
- posted: August 6, 2017 at 3:00am version: 1.1 revision: 61
Corrected error in which for reasons that I don't understand, the LEF file DIRECTION value gets an extra space at the end and then fails subsequent comparisons. Although I don't see how the regexp fails, it was easy enough to use the Tcl "string trim" command to remove whitespace.
- posted: August 1, 2017 at 3:00am version: 1.1 revision: 60
Modified the primary and synthesis scripts so that the command "qflow" takes the option module_name, NOT source_file, but can have the syntax "qflow module_name source_file" in case the source file does not have the same root name as the module. In all cases, the module name is used for all subsequent file root names (such as the .blif, .spc, .def, and so forth). Alternately, "qflow module_name" will work even if there is no file module_name.v (or .sv), as long as qflow can find some verilog file in the source directory containing the specified module.
Corrected two errors: (1) placement script did not pass the "-techlef" option to addspacers, and (2) addspacers did not check LEF and DEF files for comment lines.
Modified synthesis script so that it checks for python3 before attempting to run the spi2xspice.py tool.
- posted: July 22, 2017 at 3:00am version: 1.1 revision: 59
Removed initial tab from verilog output, since it causes problems with OpenTimer (which is OpenTimer's fault, and will be fixed, but might as well accomodate the bug because it's easy to).
- posted: July 11, 2017 at 3:00am version: 1.1 revision: 58
Changed a misspelling in the vesta version output, and increased the version number to better track versions out there in the world.
- posted: June 19, 2017 at 3:00am version: 1.1 revision: 57
Fixed two errors: One that caused the power or ground posts to be placed on the wrong columns after the first (simple coding error), and one which caused the power and ground bus labels to be offset (failure to match two pieces of code which should have been consolidated into one, anyway).
Corrections to make power and ground pin placement compatible with the position of stripes (one case was missed).
- posted: June 14, 2017 at 3:00am version: 1.1 revision: 56
Updated qflow to use the new qrouter "standard" route script. Updated addspacers to automatically add pins for power and ground when it generates the power bus stripes.
- posted: June 10, 2017 at 3:00am version: 1.1 revision: 55
Corrections to automatic power striping: Allows posts to be drawn for power buses even if the top level metal cannot be placed due to lack of definition in the technology LEF file (however the better thing to do in that case is pass a different LEF file to addspacers than to qrouter). Also changed the power post to be no wider than the vias, otherwise it just wastes space and interferes with routing.
- posted: June 9, 2017 at 3:00am version: 1.1 revision: 54
Finished the basic implementation of power bus striping.
- posted: June 8, 2017 at 3:00am version: 1.1 revision: 53
Expanded on the implementation of power bar stripes. Code now takes "pattern" and generates internal bars of power and ground connections. Many details are not handled, and the specialnets output is not recognized by qrouter, so it is not quite yet usable, but it is much further along than yesterday.
And another correction to prevent errors when used normally. . .
Corrected an error that causes addspacers to fail if the new/ provisional code for adding vertical column spacers is not being used.
- posted: June 7, 2017 at 3:00am version: 1.1 revision: 52
Preliminary support for power bus striping, largely nonfunctional so far except for placing columns of spacers throughout the circuit layout.
Correction to spi2xspice.py script, which otherwise does not correctly parse the function expressions in the OSU standard cell sets.
- posted: June 6, 2017 at 3:00am version: 1.1 revision: 51
Added support for generating XSPICE models of synthesized circuits.
- posted: May 18, 2017 at 3:00am version: 1.1 revision: 50
Added "rename -enumerate" to qflow default script to avoid generating output node names with leading "$", which conflicts with ngspice.
- posted: May 17, 2017 at 3:00am version: 1.1 revision: 49
Corrected blif2BSpice to correctly add the ".ends" to the end of the subcircuit. Added "-i" option to blif2BSpice to put an include line for the standard cell definitions instead of dumping them directly into the output. Revised the synthesis and placement scripts to use this option.
- posted: May 1, 2017 at 3:00am version: 1.1 revision: 48
Implemented minimum pad spacing in .par file so that pads are forced by graywolf to be at double pitch spacing, which helps prevent qflow from pushing overlapping pads off the end of the route grid. Added gridX, gridY to the .par file in anticipation of the next graywolf update.
- posted: March 31, 2017 at 3:00am version: 1.1 revision: 47
Added patch from Jamey Hicks to exit with error code 1 after each qflow script is run if the script returns an error code.
Finished (hopefully) the cleanup of all derived files from the git repository.
Removed Makefiles down in the individual tech directories
Final push of .gitignore after deleting files
- posted: March 27, 2017 at 3:00am version: 1.1 revision: 46
Cleaning up after changing .gitignore. . . needed to delete ignored files first. . .
Fixed the placement script call to the qrouter "layers" command. By not placing the whole command after "catch" in braces, the number of layers was being ignored by the Tcl parser.
- posted: March 26, 2017 at 3:00am version: 1.1 revision: 45
Corrected placement script with patch from Karl-Filip Faxen to properly compare timestamps on the .acel file. Also updated the .gitignore file to properly reflect the contents of the repository.
Removed backup file.
- posted: March 6, 2017 at 3:00am version: 1.1 revision: 44
Added extensions to Vesta by Karl-Filip Faxen to print "long format" output, including each complete backtraced path.
Also: Update at Mon Mar 6 20:24:25 EST 2017 by tim
Also: Merge branch 'master' into work
Also: Removed backup file.
- posted: February 25, 2017 at 3:00am version: 1.1 revision: 43
Set fdly to NULL to avoid a segfault.
Also: Update at Fri Feb 24 12:54:33 EST 2017 by tim
Also: Merge branch 'master' into work
- posted: January 12, 2017 at 3:00am version: 1.1 revision: 42
Corrected the previous handling of quoted items in the liberty file, which conflicted with other attempts to handle such outside of the advancetoken() routine.
Also: Update at Wed Jan 11 09:15:44 EST 2017 by tim
Also: Merge branch 'master' into work
Also: Fixed it the right way, this time.
- posted: January 10, 2017 at 3:00am version: 1.1 revision: 41
Tokenizer fixed to not attempt to increment a static array; this is caught by some (most?) compilers and will prevent compilation.
Also: Update at Mon Jan 9 10:05:42 EST 2017 by tim
Also: Merge branch 'master' into work
- posted: January 6, 2017 at 3:00am version: 1.1 revision: 40
Corrected problem with liberty files that put quotes around strings. The parser now removes quotes from entries where they are optional.
Also: Update at Thu Jan 5 10:39:53 EST 2017 by tim
Also: Merge branch 'master' into work
- posted: December 21, 2016 at 3:00am version: 1.1 revision: 39
Corrected the commented-out setting for vesta that is put by default in project_vars.sh, which was a multi-word option and therefore needs to be in quotes.
Also: Update at Tue Dec 20 15:13:37 EST 2016 by tim
Also: Merge branch 'master' into work
- posted: December 7, 2016 at 3:00am version: 1.1 revision: 38
Added hard macro extensions to blif2cel.tcl from David Lanzendorfer.
Also: Update at Tue Dec 6 22:38:50 EST 2016 by tim
Also: Merge branch 'master' into work
- posted: September 20, 2016 at 3:00am version: 1.1 revision: 37
Applied patch by Risto Bell for Bugzilla bug 138.
Also: Update at Mon Sep 19 08:57:53 EDT 2016 by tim
Also: Merge branch 'master' into work
- posted: September 19, 2016 at 3:00am version: 1.1 revision: 36
Corrected qflow script to use "tcsh -f" instead of "tcsh" in the first line of scripts generated for use in running qflow (e.g., qflow_exec.sh).
Also: Update at Sun Sep 18 21:45:29 EDT 2016 by tim
Also: Merge branch 'master' into work
Also: Fixed help text of blifFanout so that MaxFanout, which is integer, is not printed with %g, and so that where values set by the command line were referred to as 'default', these values are now referred to as 'value', and the actual default value is also given.
Also: Swapped the reading of.sh and project_vars.sh, so that values in project_vars.sh may override those in .sh, specifically for option strings passed to applications (like blifFanout).
Also: Corrected error in vesta that causes crash if no delay file is specified.
- posted: September 9, 2016 at 3:00am version: 1.1 revision: 35
Added code for interconnect delay calculations from Russell Friesenhahn.
Also: Update at Thu Sep 8 21:26:04 EDT 2016 by tim
Also: Merge branch 'master' into work
- posted: June 10, 2016 at 3:00am version: 1.1 revision: 34
Corrected typo in display.sh; thanks to Santiago Rubio for pointing it out.
Also: Update at Thu Jun 9 08:55:47 EDT 2016 by tim
Also: Merge branch 'master' into work
Also: Updated display script to generate a load script and run this from the magic command-line, in conjunction with changes to magic to allow scripts to be specified on the command line.
- posted: June 8, 2016 at 3:00am version: 1.1 revision: 33
Corrected display script, as the embedded newline is not interpreted correctly in the "lef read" command, and needs to be split into two separate commands. Thanks to Santiago Rubio for the patch.
Also: Update at Tue Jun 7 08:33:09 EDT 2016 by tim
Also: Merge branch 'master' into work
- posted: April 19, 2016 at 3:00am version: 1.1 revision: 32
Modified the osu018 technology to use SCN6M_SUBM.10 instead of SCN6M_DEEP.09; thanks to Shimon for pointing out that the OSU standard cells matched the SUBM tech and not the DEEP. Otherwise, reading the GDS files from the OSU018 standard cell set into magic under SCN6M_DEEP.09 will generate large numbers of DRC errors. Note, however, that the LEF files from OSU018 do not specify metal extensions on the vias, and so stacked vias m1-m3 will cause minimum metal violations on metal2. The way around this is to specify via stacks = 1 to qrouter, so that every metal layer must route for at least 1 track width, which satisfies the minimum metal requirement.
Also: Update at Mon Apr 18 21:24:20 EDT 2016 by tim
Also: Merge branch 'master' into work
- posted: March 17, 2016 at 3:00am version: 1.1 revision: 31
Added back parsing of option "buffer" for backwards-comptibility without breaking, although the option is non-functional.
Also: Update at Wed Mar 16 09:21:40 EDT 2016 by tim
Also: Merge branch 'master' into work
- posted: March 16, 2016 at 3:00am version: 1.1 revision: 30
Fixed an incorrect parsing of one of the various possible version strings returned by yosys.
Also: Update at Tue Mar 15 16:36:03 EDT 2016 by tim
Also: Merge branch 'master' into work
- posted: February 27, 2016 at 3:00am version: 1.1 revision: 29
Added "touch $synthlog" to the top of all the scripts after synthesize.sh so that removing the log file does not generate an error message.
Also: Update at Fri Feb 26 19:03:44 EST 2016 by tim
Also: Merge branch 'master' into work
- posted: February 19, 2016 at 3:00am version: 1.1 revision: 28
Corrected a round-off error in the generation of .cel files by the decongest script. This would cause overlap of cells when cells have odd-numbered widths, leading to cell X positions that precess relative to the routing grid along the width of the layout.
Also: Update at Thu Feb 18 22:34:47 EST 2016 by tim
Also: Merge branch 'master' into work
- posted: February 17, 2016 at 3:00am version: 1.1 revision: 27
Corrected an error in vesta that would segfault on attempting to deal with a latch that it thought was a flop. Also, modified blifFanout to give more relevant diagnostic information, such as units used for loads and latencies, and showing how "strength" relates to the specified maximum latency. Defaults for blifFanout made more realistic, especially for the default 0.35um technology, so that it doesn't constantly report that gates are too weak and try to change all gates to the maximum size. Option "-f" changed to "-I" ("I" for "Ignore") so that "-f" means do fanout buffering only, and "-L" means do load balancing only.
Also: Update at Tue Feb 16 20:24:17 EST 2016 by tim
Also: Merge branch 'master' into work
- posted: February 16, 2016 at 3:00am version: 1.1 revision: 26
Corrected a number of errors in blifFanout that failed to properly handle dont_use type cells and would subsequently corrupt memory. Also corrected several lines that prevented auto-detect of buffer cells in the liberty file.
Also: Update at Mon Feb 15 21:53:50 EST 2016 by tim
Also: Merge branch 'master' into work
- posted: February 13, 2016 at 3:00am version: 1.1 revision: 25
Corrected handling of place2def so that it does not exit with an error if a route is given in the info file with a width or pitch of zero. Simultaneous change to qrouter behavior should not let such routes get into the info file, though. This check has been added to qflow as a precautionary measure only.
Also: Update at Fri Feb 12 22:08:27 EST 2016 by tim
Also: Merge branch 'master' into work
- posted: January 10, 2016 at 3:00am version: 1.1 revision: 24
Corrected installation and execution for local installations of yosys. Specifically, yosys calls yosys-abc, which if not in the standard search path, must be specified using the "-exe" switch to the "abc" command in yosys.
Also: Update at Sat Jan 9 10:44:42 EST 2016 by tim
Also: Merge branch 'master' into work
- posted: November 23, 2015 at 3:00am version: 1.1 revision: 23
Revised the way that the placement and router scripts handle output filenames. Placement now copies the .def solution to _unroute.def (previously done only at the end of the router script). The router script uses the _unroute.def file as input and does not overwrite it. The previous method allowed the _unroute.def file to become out of sync with the rest of the files.
Also: Update at Sun Nov 22 09:41:25 EST 2015 by tim
Also: Merge branch 'master' into work
Also: Slight modification, as the unroute copy was being made before the addspacers tool was run, leading to different file contents.
Also: Rootname, not project. . .
- posted: November 21, 2015 at 3:00am version: 1.1 revision: 22
Added graywolf_options to list of variables defined in project_vars.sh, so that specific arguments can be passed to graywolf. "-n" will disable graphics, allowing a fully graphics-free flow.
Also: Update at Fri Nov 20 13:40:40 EST 2015 by tim
Also: Merge branch 'master' into work
- posted: November 14, 2015 at 3:00am version: 1.1 revision: 21
Changed qflow behavior so that option "yosys_nodebug" is now "yosys_debug" and the non-debug behavior is the default (resulting in smaller layouts with fewer unconnected outputs that are useful only for debugging).
Also: Update at Fri Nov 13 13:11:19 EST 2015 by tim
Also: Merge branch 'master' into work
- posted: November 13, 2015 at 3:00am version: 1.1 revision: 20
Corrected a problem in the place2def.tcl script that was not properly using the information from the info file to place pins on 1-of-N route tracks when the layer width and spacing rules require it.
Also: Update at Thu Nov 12 20:02:55 EST 2015 by tim
Also: Merge branch 'master' into work
- posted: November 12, 2015 at 3:00am version: 1.1 revision: 19
Corrected synthesis script, which had added the line necessary to process RTL in the verilog source, but only added it to the preliminary yosys script, not to the final one.
Also: Update at Wed Nov 11 11:31:46 EST 2015 by tim
Also: Merge branch 'master' into work
- posted: October 31, 2015 at 3:00am version: 1.1 revision: 18
Modified scripts so that the .cel file is generated as part of the placement script, not the synthesis script. The change is required due to the introduction of density planning, since the density affects the generation of the .cel file passed to graywolf for placement. If the .cel file is generated as part of the synthesis script, then if the density is modified, the flow has to be re-run from synthesis, not from placement. This update corrects the issue.
Also: Update at Fri Oct 30 09:22:54 EDT 2015 by tim
Also: Merge branch 'master' into work
- posted: October 30, 2015 at 3:00am version: 1.1 revision: 17
Corrected one remaining error in the "decongest" density planning script that does not handle the case of zero fill cells, and so was preventing densities above about 0.9 (one fill cell per standard cell).
Also: Update at Thu Oct 29 08:33:10 EDT 2015 by tim
Also: Merge branch 'master' into work
- posted: October 29, 2015 at 3:00am version: 1.1 revision: 16
Modified the synthesis script so that the various files (lef, techlef, gds, spice, liberty) can be specified as absolute paths and not have to be symbolic links from the tech directory.
Also: Update at Wed Oct 28 09:43:21 EDT 2015 by tim
Also: Merge branch 'master' into work
Also: Extended the absolute path handling capability to all the major synthesis flow scripts.
- posted: October 17, 2015 at 3:00am version: 1.1 revision: 15
Updated readliberty.c to match a change previously made to the same code in vesta.c, underscoring the need to use one single liberty file parsing library for all the tools. . .
Also: Update at Fri Oct 16 11:02:32 EDT 2015 by tim
Also: Merge branch 'master' into work
- posted: October 12, 2015 at 3:00am version: 1.1 revision: 14
Corrected two errors with the decongestion routine. One error was an incorrect computation of the number of fill cells to make up the total density, resulting in fill cells being added even if the density was set to 1. The other was a round-off error resulting in an incorrect width value, which tends to cause bad route failures.
Also: Update at Sun Oct 11 11:27:31 EDT 2015 by tim
Also: Merge branch 'master' into work
- posted: October 5, 2015 at 3:00am version: 1.1 revision: 13
Added patch by Staf Verhaegen that passes a default script argument to ABC that works much better than the default behavior, expanding the range of cells used (e.g., will use AOI and OAI cells instead of trying to shove everything into NAND/NOR logic). The practical impact appears to be an increase in circuit speed as well as routing efficiency. Added an additional hook from variable "abc_script" in project_vars.sh for manual control over this expression. 'set abc_script = ""' reverts to the original behavior.
Also: Update at Sun Oct 4 11:43:37 EDT 2015 by tim
Also: Merge branch 'master' into work
Also: Modified synthesis script to provide immediate output on the failure to find a verilog source file. Helps to catch and resolve gross errors faster.
- posted: September 15, 2015 at 3:00am version: 1.1 revision: 12
Corrected POLYGON handling of blif2cel.
Also: Update at Mon Sep 14 08:50:39 EDT 2015 by tim
Also: Merge branch 'master' into work
- posted: September 7, 2015 at 3:00am version: 1.1 revision: 11
Corrected density planning of "decongest" for situations where the number of fill cells is less than the total number of cells, due to having only large filler cells in the standard cell set. Optimized "decongest" to make use of smaller fill cells if available, such that the fill cells will outnumber the standard cells, making the decongestion more evenly spread across the layout. Improved blif2cel.tcl so that cells that only use POLYGON for pins instead of RECT will not lose information in the .cel file.
Also: Update at Sun Sep 6 12:41:16 EDT 2015 by tim
Also: Merge branch 'master' into work
- posted: August 4, 2015 at 3:00am version: 1.1 revision: 10
Noted that graywolf produces redundant net entries where it thinks that a route should go from a pin to both top and bottom of a cell, and that putting these redundant net entries into the DEF file output causes qrouter to report false failures. Rewrote the place2def script to avoid generating the redundant entries.
Also: Update at Mon Aug 3 10:01:25 EDT 2015 by tim
Also: Merge branch 'master' into work
- posted: July 26, 2015 at 3:00am version: 1.1 revision: 9
Oops, last change defined hash.o and readliberty.o in such a way that the makefile attempts to turn them into executables. Fixed.
Also: Update at Sat Jul 25 09:27:08 EDT 2015 by tim
Also: Merge branch 'master' into work
Also: Once again. . .
- posted: July 25, 2015 at 3:00am version: 1.1 revision: 8
Corrected src makefile to clean up hash.o and readliberty.o on a "make clean". Removed the two object files from the git repository, where they don't belong.
Also: Update at Fri Jul 24 10:41:34 EDT 2015 by tim
Also: Merge branch 'master' into work
- posted: June 10, 2015 at 3:00am version: 1.1 revision: 7
Added files for support of OSU018 (for TSMC). Also: Corrected the BLIF-to-verilog conversion so that trailing brackets <*> are converted back into verilog syntax square brackets [*] but brackets in the middle created by multi-dimensional arrays are replaced with underscores. The result appears to be compatible with gate-level simulations in Icarus verilog.
Also: Update at Tue Jun 9 11:30:38 EDT 2015 by tim
Also: Merge branch 'master' into work
Also: Added OFFSET lines back into the OSU standard cell LEF files. These are no longer needed now that qrouter has been corrected with respect to the default OFFSET when not specified; however, leaving the OFFSET in does no harm and maintains backwards compatibility with previous versions of qrouter.
- posted: June 4, 2015 at 3:00am version: 1.1 revision: 6
Modified scripts such that all TCL scripts are annotated with the correct path to "tclsh" on installation.
Also: Update at Wed Jun 3 17:34:02 EDT 2015 by tim
Also: Merge branch 'master' into work
- posted: June 3, 2015 at 3:00am version: 1.1 revision: 5
Modified readliberty.c to ignore cells marked "dont_use". Corrected synthesis script to no longer require a "gate.cfg" file to run blifFanout, since this has been deprecated (and is no longer in the set of installed files). Modified blifFanout to use the first buffer found in the liberty file, so details of the buffer cell do not need to be provided in the tech shell script (although they will be used, if passed to the program).
Also: Update at Tue Jun 2 10:08:55 EDT 2015 by tim
Also: Merge branch 'master' into work
Also: Corrected missing tagging of flop and latch output with an appropriate flag; otherwise, clock source searches don't stop at flop outputs and can get into infinite loops.
Also: Corrected Makefile.in in the src directory, or else vesta won't compile.
- posted: June 1, 2015 at 3:00am version: 1.1 revision: 4
Corrected the liberty file reading of scalar values instead of tables for vesta static timing analysis and in the readliberty library. Also, added a hash table for reading and looking up nets in vesta to speed up the verilog file reading, which was a bottleneck for large netlists.
Also: Update at Sun May 31 19:36:05 EDT 2015 by tim
Also: Merge branch 'master' into work
Also: Removed an unused backup file.
- posted: May 30, 2015 at 3:00am version: 1.1 revision: 3
Corrected an error in back-annotation of permuted buffer tree nets.
Also: Update at Fri May 29 09:36:47 EDT 2015 by tim
Also: Merge branch 'master' into work
Also: Finally got around to updating the yosys script to use the default "synth -top" command, for yosys versions 0.5 and up.
Also: Added a new option to "project_vars.sh" called "yosys_nodebug". If set to 1, the yosys script uses "clean -purge" after the standard cell mapping. This removes all the buffers that are used to maintain internal signal names, resulting in a smaller but less easily debugged layout.
- posted: May 27, 2015 at 3:00am version: 1.1 revision: 2
Corrected code so that it does not segfault on a diagnostic print statement when path starts at an input pin instead of a flop output.
Also: Update at Tue May 26 12:16:13 EDT 2015 by tim
Also: Merge branch 'master' into work
- posted: May 18, 2015 at 3:00am version: 1.1 revision: 0
Initial check-in of development version 1.1, an important update with greatly improved clock and buffer tree optimization.
- posted: May 19, 2015 at 3:00am version: 1.1 revision: 1
Added a comment, mostly just to jog the system into updating all the files on the server side.
Revision information on Qflow version 1.0:
- posted: November 16, 2015 at 3:00am version: 1.0 revision: 99
Corrected the direction that pins are offset when avoiding overlaps made by graywolf.
Also: Update at Sun Nov 15 16:55:58 EST 2015 by tim
Also: Merge branch 'master' into work
- posted: May 9, 2015 at 3:00am version: 1.0 revision: 96
Corrected calculation for number of fill cells to add, to get the specified density to be interpreted as the fraction of the layout comprising actively routed cells.
Also: Update at Fri May 8 20:08:42 EDT 2015 by tim
Also: Merge branch 'master' into work
Also: Additional correction to clocktree to correctly parse a cellname when fill cells have been merged into cell instances with a specific syntax.
Also: Another correction to prevent the clock tree insertion tool from screwing up when faced with fill cells added for density management.
- posted: May 8, 2015 at 3:00am version: 1.0 revision: 95
Changed all tcl scripts to use /bin/tclsh; however, this needs to be set through a substitution, so not yet done. . .
Also: Update at Thu May 7 15:48:59 EDT 2015 by tim
Also: Merge branch 'master' into work
Also: Implemented a variation of "decongest.tcl" that will take a .cel file and insert fill cells uniformly to meet a specific density. Added the placement option "initial_density" indicating the density of actively routed cells (as a fraction of the total layout area). This gives a way to force a density rather than relying on the congestion router solution (or having to wait for an initial router failure to get the congestion router solution).
- posted: April 21, 2015 at 3:00am version: 1.0 revision: 94
Modified the blif2Verilog script so that the ".nopwr.v" file adds wire statements for power and ground, assigning 1'b1 and 1'b0 to them, respectively, so that the verilog file becomes simulatible. Also, for the purpose of verilog simulation, added the verilog libraries for the standard cell gates to the qflow distribution/installation.
Also: Update at Mon Apr 20 09:31:37 EDT 2015 by tim
Also: Merge branch 'master' into work
- posted: March 31, 2015 at 3:00am version: 1.0 revision: 93
Made a couple of corrections that allows the use of a null string ("") as variable "separator". This was supported by blifFanout but was being bungled by the script calling blifFanout. Because the OSU standard cell sets are more appropriately compatible with the null separator than with the "X" separator (due to a few cells that don't use the "X", like CLKBUF), the standard cell script has been changed to specify a null separator character.
Also: Update at Mon Mar 30 16:42:31 EDT 2015 by tim
Also: Merge branch 'master' into work
Also: Corrected place2def.tcl, which would greedily take the first underscore and so screw up output on cell names that contain an underscore as part of the name.
Also: Thought better of it and added a $ to the regexp to make sure that the underscore-followed-by-digits is the last part of the instance string.
- posted: February 27, 2015 at 3:00am version: 1.0 revision: 92
Corrected a bad error in the ypostproc.tcl script that was deleting the first cell of any netlist that contains the line ".names $undef", a line that has been generated by recent versions of yosys. Naturally, this produces bad output. . .
Also: Update at Thu Feb 26 20:13:15 EST 2015 by tim
Also: Merge branch 'master' into work
- posted: February 26, 2015 at 3:00am version: 1.0 revision: 91
Added qflow option "-v" or "--version" to print qflow version number; prevented qflow from printing a message about setup before arguments are parsed, and if either "--version" or "--help" was given.
Also: Update at Wed Feb 25 19:39:23 EST 2015 by tim
Also: Merge branch 'master' into work
- posted: February 3, 2015 at 3:00am version: 1.0 revision: 90
Applied patch from green AT moxielogic.com from Bugzilla bug ID 44, adding DESTDIR to the Makefiles for correct installation.
Also: Update at Mon Feb 2 08:10:25 EST 2015 by tim
Also: Merge branch 'master' into work
- posted: November 20, 2014 at 3:00am version: 1.0 revision: 89
Corrected an error that causes synthesize_yosys.sh to fail due to the version number on yosys 0.4 (due to a lack of following a standard syntax for version numbering). Also, blif2cel.tcl modified to accept a LEF syntax variant containing two values for the PITCH statement.
Also: Update at Wed Nov 19 15:52:34 EST 2014 by tim
Also: Merge branch 'master' into work
- posted: October 15, 2014 at 3:00am version: 1.0 revision: 88
Removed references to TimberWolf in favor of Ruben Undheim's update called "graywolf", which already has more desirable behavior such as installing into a standard location and not requiring sourcing a script file before running.
Also: Update at Tue Oct 14 20:42:31 EDT 2014 by tim
Also: Merge branch 'master' into work
- posted: September 30, 2014 at 3:00am version: 1.0 revision: 87
Corrected an error that prevents qflow from working with qrouter version 1.3.0.
Also: Update at Mon Sep 29 21:05:35 EDT 2014 by tim
Also: Merge branch 'master' into work
- posted: September 19, 2014 at 3:00am version: 1.0 revision: 86
Updated synthesis checks on yosys version to capture the newest revision string format of. . + This allows qflow to handle syntax changes made by a specific source code commit.
Also: Update at Thu Sep 18 09:34:36 EDT 2014 by tim
Also: Merge branch 'master' into work
- April 9, 2013
Qflow converted from a loose set of independent scripts into a package with an install location. Scripts greatly revised and extended to fit the new package format. All scripts extended to use the OSU 0.35um open-source standard cell set by default. Capability to split nets with large fanout into trees added.- April 9, 2013 at 5:09pm
Third time's the charm.
Also: Update at Tue Apr 9 17:08:54 EDT 2013 by tim
Also: Merge branch 'master' into work
- April 10, 2013 at 3:00am
Various updates, corrections to make the example circuit complete the entire flow without errors. Much more to do, but it's a good start.
Also: Update at Tue Apr 9 19:58:56 EDT 2013 by tim
Also: Merge branch 'master' into work
- April 11, 2013 at 3:00am
Added a few scripts for file conversion. These are not yet part of the official flow.
Also: Update at Wed Apr 10 11:44:01 EDT 2013 by tim
Also: Merge branch 'master' into work
- April 12, 2013 at 3:00am
Trivial changes. . .
Also: Update at Thu Apr 11 10:39:20 EDT 2013 by tim
Also: Merge branch 'master' into work
- April 13, 2013 at 3:00am
Implemented a technology-independent spacer (filler cell) adding routine "addspacers.tcl".
Also: Update at Fri Apr 12 14:04:55 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Forgot to map the output of addspacers back to the original filename so that the correct file will be used by the router.
Also: Small modification to add output to the log file instead of dumping it to the terminal.
- April 15, 2013 at 3:00am
Changed sis input from "rlib" to "read_library", as "rlib" became deprecated at some point, but sis versions from 1.3 should understand the "read_library" command.
Also: Update at Sun Apr 14 19:20:53 EDT 2013 by tim
Also: Merge branch 'master' into work
- May 1, 2013 at 3:00am
Corrected an error in the configure script that would prevent setting libdir and other paths to anything other than the default.
Also: Update at Tue Apr 30 17:52:27 EDT 2013 by tim
Also: Merge branch 'master' into work
- May 9, 2013 at 3:00am
A number of changes. Most changes involve support of power and ground connections; e.g., unused set or reset pins on flops. Normally direct connections to power and ground are optimized out of verilog logic, but this does not apply to cells added during post-processing. In particular, where a set or reset flop is needed but only a set+reset flop is available, one input will have to be tied. Additional code supports both positive and negative reset inputs to flops. Yet more code cleans up a few places where gate pin names were hard-coded into the scripts. Finally, the technology parameters have been removed from the "qflow_vars.sh" file, as they are technology-dependent but not project-dependent. The end-user should not be modifying these values.
Also: Update at Wed May 8 19:48:28 EDT 2013 by tim
Also: Merge branch 'master' into work
- May 10, 2013 at 3:00am
Corrected a minor error preventing BDnetFanout from running.
Also: Update at Thu May 9 14:08:19 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Corrected the BDnetFanout source as well so that a missing "ignore" file will not crash the program. Also made sure "ignore" file is properly closed after reading.
Also: Put the call to BDnet2BSpice back in the synthesis and resynthesis scripts, to create the netlist-derived SPICE netlist needed for LVS.
- May 11, 2013 at 3:00am
Made modifications to BDnet2BSpice to take as an input argument the filename of a SPICE library of subcircuits representing the standard cells. This allows BDnet2BSpice to match the port order of the standard cells, as the BDNET netlist cannot be assumed to have the same port order (especially as the BDNET format does not even refer to the power connections). Also added handling of arguments passed for the name of the power and ground nets. Added the SPICE file for the osu035 technology to the example technology database in qflow, and modified the synthesis scripts to use the new syntax for BDnet2BSpice.
Also: Update at Fri May 10 13:33:32 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Corrected an error in the core bounding box position calculated by place2def2.tcl, which was causing the tool to sometimes generate obstruction regions over part of the core. When gate pins were far enough to the right to be under that obstruction, qrouter could no longer route to them.
- May 12, 2013 at 3:00am
Corrected the unused input to a DFFSR when used as a set-only or reset-only flop, when the set and/or reset pins are inverted.
Also: Update at Sat May 11 09:22:40 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Expanded the verilog preprocessor to handle "parameter" statements, which VIS does not.
- May 14, 2013 at 3:00am
Small modification to vpreproc (nonfunctional)
Also: Update at Mon May 13 11:26:32 EDT 2013 by tim
Also: Merge branch 'master' into work
- May 17, 2013 at 3:00am
Modified qflow to add the magic startup script to the layout directory, and to substitute the path to the techfile into the startup script in the install directory.
Also: Update at Thu May 16 10:34:43 EDT 2013 by tim
Also: Merge branch 'master' into work
- July 15, 2013 at 3:00am
Accidental commit of object files and other temporary build files. Will be removed.
Also: Update at Sun Jul 14 15:34:16 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Removed temporary build files from the distribution.
- July 16, 2013 at 3:00am
Corrected an error which was setting the current working directory name to lowercase when generating paths, causing errors with directory names having capital letters in them.
Also: Update at Mon Jul 15 15:12:58 EDT 2013 by tim
Also: Merge branch 'master' into work
- July 18, 2013 at 3:00am
Changed the flow so that "placement.sh" is always run with the "-d" option. This is unnecessary if the fanout buffer stage is run, but one cannot assume that the end-user will choose to run the fanout buffering, and so the placement stage should ALWAYS prepare all the files needed by the router.
Also: Update at Wed Jul 17 09:05:24 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Made changes to "vpreproc.c" to ignore "always" blocks that either contain no references to a clock, no references to a reset signal, or both. Also modified the code to handle "always" blocks that contain a single "if" statement and therefore do not have "begin" and "end" statements. All of this just highlights the relative insanity of verilog syntax. . .
Also: Quick correction to the last commit.
Also: Added preliminary support for the Odin-II verilog parser.
- July 19, 2013 at 3:00am
Corrections to the preprocessor for VIS, to remove ending semicolon from parameters, and to remove comma characters from register names where there are more than one register name per line.
Also: Update at Thu Jul 18 11:16:04 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Some extensions to the preprocessor, restoring the ability of the former preprocessor script to handle vector subranges on the right-hand-side. Also, fixed some of the block parsing for multiple clock domains, in preparation for actually handling the multiple clock domains.
- July 22, 2013 at 3:00am
Correction to vpreproc.c, which was closing the input file before writing the "endmodule" line. At best, this causes immediate errors with the downstream verilog parser.
Also: Update at Sun Jul 21 13:42:37 EDT 2013 by tim
Also: Merge branch 'master' into work
- July 26, 2013 at 3:00am
This is a major update to qflow, replacing the tools "VIS" and "SIS" with "odin_II" and "abc", respectively. The flow can now handle multiple clock domains and a respectably large variety of verilog syntax.
Also: Update at Thu Jul 25 13:24:13 EDT 2013 by tim
Also: Merge branch 'master' into work
- July 27, 2013 at 3:00am
Update to vpreproc, still trying to accomodate a whole bunch of random variations people use for verilog syntax.
Also: Update at Fri Jul 26 14:47:22 EDT 2013 by tim
Also: Merge branch 'master' into work
- July 30, 2013 at 3:00am
Added the OSU 0.5um standard cell set, with a lot of help from Rodolfo del Valle (thanks!).
Also: Update at Mon Jul 29 18:33:01 EDT 2013 by tim
Also: Merge branch 'master' into work
- July 31, 2013 at 3:00am
Modifications to the OSU 0.5um technology files to correct errors and add missing components needed by qflow.
Also: Update at Tue Jul 30 10:12:11 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: One additional modification moves one of the VDD fingers in DFFSR from being marked as an obstruction, to the VDD pin geometry. Technically, ALL of these bits of geometry should be part of the pin geometry, and not part of the obstruction. However, this particular one interferes with qflow by making qrouter believe that VDD is "boxed in" by obstructions, and prevents it from routing static VDD connections from pins to the power bus. Note, however, that one is supposed to connect signals that are tied permanently high or low to a "tiehi" or "tielo" cell, which has a small resistor between the internal connection and the power bus, and prevents potential ESD issues from having a small digital gate connected directly to a chip pin. The real issue is that there are no "tiehi" or "tielo" cells in the OSU standard cell set, and the existing problem only arises as a result of trying to hack in a direct connection to the power bus in order to make the layout match the netlist.
Also: Additional correction to the IRSIM parameter file for OSU050
Also: Update to the configure script and makefiles to correctly support the use of --with-libdir= and --with-bindir= to allow an installation in a non-default location.
- August 3, 2013 at 3:00am
Modified the synthesis script to make use of newest Odin-II code, which avoids the need for a custom patch, and also allows latches to be set to 0 in the .blif file to prevent making abc unhappy. Thanks to Ken Kent for the Odin-II updates!
Also: Update at Fri Aug 2 20:05:40 EDT 2013 by tim
Also: Merge branch 'master' into work
- August 16, 2013 at 3:00am
Update to vpreproc tool to (1) correctly handle parameters with spaces in the parameter definition, (2) correctly handle parameters with nested parameters in the definition, and (3) handle vector bundles in the assignment of reset values.
Also: Update at Thu Aug 15 08:41:01 EDT 2013 by tim
Also: Merge branch 'master' into work
- August 17, 2013 at 3:00am
Correction to a major error that cropped up with the last update to Odin_II and ABC. ABC, unlike sis, buffers the outputs, so it becomes incorrect to remove the trailing _FF_NODE added by Odin_II to buffer outputs. Instead, only those DFF outputs that are not module outputs should have _FF_NODE removed, so that simulators can see the original signal names, and the rest should be left untouched. The synthesis flow is simplified by not requiring the use of AddIO2BDnet, although there need to be some hooks to user-space to allow AddIO2BDnet to latch asynchronous inputs or double-buffer outputs.
Also: Update at Fri Aug 16 09:53:46 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Corrected an error in vpreproc that would overwrite the reset signal name if the reset was followed immediately by space and the close-parenthesis for the always() statement.
- August 18, 2013 at 3:00am
Corrected the so-called "resynthesis" script (clock tree generator), which was still referring to "_buf" names and therefore basically failed to run. Increased the number of I/Os handled by the BDnet2BSpice and BDnet2Verilog tools, although this is a poor substitute for dynamic allocation.
Also: Update at Sat Aug 17 11:15:19 EDT 2013 by tim
Also: Merge branch 'master' into work
- August 21, 2013 at 3:00am
Rewrote the clocktree algorithm to limit the number of branches in any one tree to the maximum allowed fanout. This also corrects an error in which some branches of a fanout tree could be driving no gates at all. There was also a minor error causing some buffer outputs to be printed twice in the node list; this has been fixed.
Also: Update at Tue Aug 20 17:50:01 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Added handling of LOGIC0 and LOGIC1 generic gates for technologies whose standard cell set does not include tie-high and tie-low cells.
- August 22, 2013 at 3:00am
Corrected an error in the cleanup script that was still referring to a filename with "_buf".
Also: Update at Wed Aug 21 11:43:57 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Corrected a minor typo in place2def2.tcl, which was calling itself place2def.tcl.
Also: Implemented what are hopefully some halfway rational ways to deal with the output. Most extraneous output ends up in "synth.log". Information about what's running at what time is also dumped to the screen. Qrouter, because it can take so long to run, is teed to both synth.log and into a grep function that looks for major errors/failures but also ticks out statements every 100 routes so that the user doesn't start thinking that something has gone bye-bye.
- August 23, 2013 at 3:00am
Additional work to capture errors. Within a specific qflow master script, each step is checked for one output file that it is supposed to create. If the file does not exist or is older than some key file generated earlier in the same qflow run, then the script stops and exits with an error. Note that this does not capture errors between scripts in qflow_exec.sh, yet.
Also: Update at Thu Aug 22 09:06:28 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Added options "build" and "all" to "qflow", so that qflow can be run from the command line without remembering all the steps to write in.
- August 26, 2013 at 3:00am
Corrected an error preventing use of a locally defined tech directory.
Also: Update at Sun Aug 25 09:48:02 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Corrected the synthesis script to avoid an undefined variable error if BDnetFanout is not run due to lack of support in the technology files.
- August 31, 2013 at 3:00am
Corrected an error in clocktree where an empty cluster can cause a divide-by-zero.
Also: Update at Fri Aug 30 20:16:49 EDT 2013 by tim
Also: Merge branch 'master' into work
- September 2, 2013 at 3:00am
Created a new tool called "liberty2tech", that is useful for generating a flow for a new technology. It will parse a standard "Liberty" format timing file, and generate a genlib file for ABC for standard-cell mapping, and a "gate.cfg" file for BDnetFanout for load balancing. Those are the most difficult files to create for the flow.
Also: Update at Sun Sep 1 19:55:46 EDT 2013 by tim
Also: Merge branch 'master' into work
- September 3, 2013 at 3:00am
Added liberty2tech compile/install to Makefile.in
Also: Update at Mon Sep 2 08:27:12 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Modified liberty2tech to use a simple pattern matching to determing which cells get put in the genlib file.
Also: Made some changes to avoid having scripts hard-code the DFF clock and input pins. Instead, these pin names are specified in the technology .sh script.
Also: Corrected an error preventing the use of set and reset flops.
Also: Corrected an error allowing long input/output lists to overrun memory in BDnetFanout.
Also: Modified the techfiles distributed with the OSU035 and OSU050 technologies to use the better "device" extraction models instead of the old "fet" models. This also allows the default substrate node name to be set by the Tcl variable GND, instead of being hardwired into the techfile.
- September 4, 2013 at 3:00am
Added features to liberty2tech to deal with local overrides of template index values, and to handle various differences between the format of the function string. This includes handling implicit ANDs (e.g, "A B") and XOR using "^".
Also: Update at Tue Sep 3 11:42:17 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Expanded liberty2tech to handle templates in either orientation, and to expand the index and value strings into numerical arrays for easier processing at the end (and for future, more complicated processing).
Also: Updated the genlib and gate.cfg files for osu035 and osu050 from the liberty format files that come with the standard cell distributions.
Also: And additional expansion of the function strings handled by liberty2tech, to accept a single-quote after a pin name or a nested expression, as equivalent to "!" before the pin name or expression (that is, inversion in postfix notation rather than prefix notation). This is specifically to support the pharosc cells from vlsitechnology.org. Also, fixed the tokenizer to remove trailing whitespace.
- September 7, 2013 at 3:00am
Qflow corrections: postproc.tcl will not skip parsing a file if nothing is in the .init file: It still needs to replace the default flop names with the general-purpose flop cell for the technology! Also: Checked in new verilog preprocessor "verilogpp", which is a huge improvement over "vpreproc". However, it is not yet used by the synthesis script; awaiting more testing.
Also: Update at Fri Sep 6 20:22:01 EDT 2013 by tim
Also: Merge branch 'master' into work
- September 8, 2013 at 3:00am
Replaced the vpreproc tool with the new verilogpp tool. This not only is better at correctly interpreting procedural blocks in verilog. It also handles `ifdef statements, includes files that are specified by `include, and makes a number of replacements of syntax that is not handled by Odin_ii. It also handles instance calls, where the instance names found in a source file are dumped to a dependency list in a file called ".dep". Changes to the synthesis script parse the .dep file and recursively call the preprocessor on the dependent files, and their dependent files, and so on. All files needed to be read by Odin_ii are dumped into an XML configuration file that Odin_ii knows how to read.
Also: Update at Sat Sep 7 14:06:39 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: One additional correction to send stderr output from abc to the log file; otherwise, program crashes cannot be caught.
Also: Using the new "-k" switch on qrouter; some changes to the osu050 tech to see what affect it has on the behavior of ABC. Apparently none. . .
Also: Correction to BDnetFanout, to avoid overwriting the string-terminating NULL when shifting characters to make room for a gate name that is longer than the original.
Also: Slight change to the last modification, nothing important. . .
Also: Removed error message reporting from "qrouter -i", because it appears to always be generating an error return code, for some reason.
- September 9, 2013 at 3:00am
Corrected a fairly major error (only off by a factor of 1000!) in which the gate.cfg files for osu035 and osu050 had delay/cap in units of fs/fF, which was read by BDnetFanout as ps/fF. The liberty2tech tool was the root cause of the error. Also cleaned up some incorrect printf statements in BDnetFanout, and removed the "-k" switch for qrouter, which was experimental (and breaks when used with earlier versions of qrouter).
Also: Update at Sun Sep 8 08:49:15 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Added to qflow the ability to add padding area to the layout with fill cells, using a user-supplied percentage fill amount. To go along with this, added the "project_vars.sh" file to the list of files generated by qflow to go in the project top-level directory. As of now, the user-supplied percentage fill is the only value used in that file, but this will be greatly expanded upon in the near future.
Also: Corrected an unbalanced parenthesis introduced into the osu050.genlib tech file.
- September 10, 2013 at 3:00am
Changed the handling of fill cells completely. To get a better result from TimberWolf, each cell is now given implicit feedthrough tracks across the cell. This causes the global router to produce a solution that is much closer to a sea-of-gates router result. Instead of removing explicit feedthroughs placed by TimberWolf, the explicit feedthroughs are turned into fill cells, and retained in the layout. All of this helps to avoid routing congestion and improves the chance of getting a valid routing result.
Also: Update at Mon Sep 9 09:29:26 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Correction to the ".par" parameter files used by TimberWolf for the two supported technologies. Specifically, correct values were entered for layer resistance and capacitance, correct values for layer width, and layer spacing was adjusted relative to layer width to provide the correct routing track spacing using the formula (track separation = metal width + metal spacing).
Also: One further small correction to a comment line with incorrect information.
Also: And a few more small things. . . added 'random.seed' to the .par file so that runs will be repeatable, and rewrote the grep function for tracking qrouter output so that it only prints every 100 commits, not when the commit is, say, 4004.
Also: Correction to the last update to place2def.
- September 12, 2013 at 3:00am
Found that TimberWolf can violate track pitch when placing pins, so it is possible for pins to overlap by occupying the same grid point. Changed place2def.tcl to prevent this from happening. Also, changed the "qflow" script to handle creating the initial ".par" file in the layout directory, instead of the synthesize script. qflow now checks both the ".par" and ".magicrc" files, and in the case of a technology file update or a technology change for the project, will copy the existing file to a backup name, and generate the new file. This will avoid all sorts of weird problems caused by switching to a different technology while having a conflicting .par file or .magicrc file.
Also: Update at Wed Sep 11 12:19:30 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Modified clocktree to pick up the random seed number (if any) that is in the .par file. Otherwise, clocktree's manipulations will invalidate the reproducibility of results from the other tools (namely TimberWolf, the only other one to use randomization). With this fix, results ARE repeatable from run to run, given the same source file and parameters.
Also: Corrected liberty2tech (once again), where a correction to the slope was not applied to all its dependent calculations. The genlib format was changed from ps to ns, as per genlib documentation, although I don't think the abc calculation are dependent on the absolute value. Still, better to stick with the documentation, to avoid confusion.
- September 13, 2013 at 3:00am
Allows the technology script to set variable "resolution", which is passed on to qrouter as the "-r" option, and lets qrouter handle things on the nanometer scale, if necessary. Not used by distributed technologies osu035 and osu050.
Also: Update at Thu Sep 12 13:54:20 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Corrected two fprintf lines in verilogpp error messages. Fixed a bdnet2cel round-off error in calculating the cell height and width of macros read from the LEF file.
- September 14, 2013 at 3:00am
Modified the qflow "configure" script to allow the use of the much simpler "--with-vtr=<DIR>" in place of the separate --with-Odin_II= and --with-abc=, when both programs (or either program) comes as part of the VTR package. The original switches are still valid.
Also: Update at Fri Sep 13 10:42:08 EDT 2013 by tim
Also: Merge branch 'master' into work
- September 15, 2013 at 3:00am
Added some option handling. The "project_vars.sh" file is now a place where one can specify options for different tools in the chain. The options can also be set by the technology script, which is parsed first, and overridden from "project_vars.sh", in case a specific technology has a need to specify a certain command-line option for one or more of the tools in the chain. This does not yet deal with all the options that go to the various Timberwolf tools, which are their own headache.
Also: Update at Sat Sep 14 17:11:58 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Another change: technology is now picked up from the existing "qflow_vars.sh" file if "qflow" is being run again in the same project directory, which avoids the sort of catastrophic consequence of failing to specify "--tech" just to refresh, or just to run again off of the command line.
- September 16, 2013 at 3:00am
Removed the hard-coded via stack specifier, and made it settable from the tech or user script. Added a search for a ".cfg2" file that can be appended to the ".cfg" file to add additional information for qrouter.
Also: Update at Sun Sep 15 10:22:17 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Correction to qflow.sh.in to avoid printing messages about values used for "tech" before the command line has been parsed for a --tech switch.
Also: Corrected a typo. . .
Also: Another slight change, to move some manipulations of the .cfg file out of place2def.tcl and into placement.sh.
Also: One last correction to syntax. . .
Also: A vague attempt to parse and modify verilog statements of the form "wire <name> = <value>", which Odin_II does not like. The procedure is to break the line into two lines, "wire <name>;" and "assign <name> = <value>".
- September 24, 2013 at 3:00am
Update at Mon Sep 23 22:18:33 EDT 2013 by tim
- October 1, 2013 at 3:00am
Modified .gitignore for project
Also: Merge branch 'master' into work
Also: Added an important initialization to the state stack pointer that will otherwise cause a crash on systems that don't zero pointers on allocation.
Also: Update at Mon Sep 30 11:47:18 EDT 2013 by tim
Also: Merge branch 'master' into work
- October 3, 2013 at 3:00am
Preprocessor correction when popping out of the last "end" statement for an "always" block. I am concerned that there is a counterexample to this. . .
Also: Update at Wed Oct 2 10:12:31 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Corrected the verilogpp source in the correct way, this time.
- October 4, 2013 at 3:00am
Correction to verilogpp.c covering a case where a negative edge reset was not printed to the .init file, causing a cascade of errors downstream.
Also: Update at Thu Oct 3 11:30:57 EDT 2013 by tim
Also: Merge branch 'master' into work
- October 5, 2013 at 3:00am
Added code needed to handle resets that are declared to be internal assigned wires. Very similar handling to the clocks that are assigned internal wires. The name of the reset signal is modified to ensure it can be found by the postprocessing step, then added to the modules output signal list. This keeps the synthesis tool from optimizing it out of existance. After synthesis, it is removed from the output list and given its original name. The remainder of the reset signal handling for resetting flip-flops is the same as before.
Also: Update at Fri Oct 4 17:38:59 EDT 2013 by tim
Also: Merge branch 'master' into work
- October 9, 2013 at 3:00am
Some modifications to avoid redundant handling of clocks and reset signals by vmunge; correction of verilogpp to clear out tentative subcircuits that were found not to be.
Also: Update at Tue Oct 8 11:28:23 EDT 2013 by tim
Also: Merge branch 'master' into work
- October 10, 2013 at 3:00am
Overhaul of qflow to eliminate all uses of the "BDNET" format in favor of the (slightly less obscure) BLIF netlist format. A few scripts that are not part of the main flow (bdnet2sim and rtl2bdnet) have not yet been modified for handling BLIF files. Also, corrected an error in BDnetFanout (now blifFanout) in which a change in units caused a maximum value setting to be in a typical range, causing odd error messages about gate strengths being too low.
Also: Update at Wed Oct 9 12:02:14 EDT 2013 by tim
Also: Merge branch 'master' into work
- October 11, 2013 at 3:00am
Rewrote the verilog preprocessing and postprocessing routines to properly record module hierarchies, and track signals, clocks, and resets through the hierarchy when replacing "latch" statements with reset flops.
Also: Update at Thu Oct 10 10:28:15 EDT 2013 by tim
Also: Merge branch 'master' into work
- October 12, 2013 at 3:00am
Some more modifications to the new routines, and a correction to vmunge.tcl when replacing clock and reset signals with loopback versions.
Also: Update at Fri Oct 11 09:41:14 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Found that the substitutions previously done by blifrtl2bdnet were missing, now that BDNET files are no longer used and blifrtl2bdnet has been removed from the flow. Recast the substitutions into sed scripts and put into synthesize.sh.
Also: Further refinement of XML file generation for Odin-II to avoid repeating files that are called multiple times from different sources.
- October 20, 2013 at 3:00am
A few corrections to (1) verilogpp.c for parsing "always @(*)" syntax, and (2) liberty2tech.c, to actually read the statements declaring the time and capacitance units used in the file, and to handle all the units accordingly; (3) the gate.cfg files for osu035 and osu050 to correct for errors caused by the previously incorrect liberty2tech, and (4) additions to most of the scripts and tools to use yosys as an alternative synthesis frontend. For now, qflow is not making optimal use of yosys, but will be upgraded soon. Documentation will follow, shortly.
Also: Update at Sat Oct 19 10:49:15 EDT 2013 by tim
Also: Merge branch 'master' into work
- October 25, 2013 at 3:00am
Major update to support yosys, following changes made to yosys by Clifford Wolf to support set-reset flops, making yosys useable with the OSU035 standard cell set. Modified a large number of script files to support yosys as the primary synthesis frontend, while keeping Odin_II as an alternative synthesis frontend. Since yosys could synthesize the openMSP430 microcontroller, this forced me to rewrite the old and horrible parsing code in blif2BSpice and blif2Verilog to make better use of allocated memory instead of fixed-size character arrays. Documentation on the opencircuitdesign website will follow shortly.
Also: Update at Thu Oct 24 19:47:28 EDT 2013 by tim
Also: Merge branch 'master' into work
- October 26, 2013 at 3:00am
Added script "ybuffer" to add buffers between internal signals and the module output, which is what "AddIO2BDnet" used to do, and what Odin_II does automatically.
Also: Update at Fri Oct 25 13:35:25 EDT 2013 by tim
Also: Merge branch 'master' into work
- October 30, 2013 at 3:00am
Update with a reasonably good, working version of the vesta static timing analysis tool.
Also: Update at Tue Oct 29 20:16:05 EDT 2013 by tim
Also: Merge branch 'master' into work
- October 31, 2013 at 3:00am
Added setup time calculation at path termination on a flop input. Added path loop identification. Made a few optimizations for speeing up program execution. Worst case can still be very bad, though, for long combinatorial chains with a lot of fanout points.
Also: Update at Wed Oct 30 17:51:18 EDT 2013 by tim
Also: Merge branch 'master' into work
- November 1, 2013 at 3:00am
Modifed the STA to use a "--fastmode" that does not attempt to find the worst-case timing, but gets close, and does not get stuck in deep combinatorial hierarchies. The scripts have been updated to use the fast mode, as well as taking user-supplied options from the qflow_vars.sh script. Vesta does clock skew and setup time calculations now, but does not yet use wire load models.
Also: Update at Thu Oct 31 20:41:33 EDT 2013 by tim
Also: Merge branch 'master' into work
- November 2, 2013 at 3:00am
A few more minor optimizations. Inverted "fast mode" so that default mode is "fast" and "--exhaustive" forces an exhaustive search. This was precipitated by the realization that the OSU035 liberty file has nonsensical data in places, such as negative propagation delays, and that for normal, sensible data sets, the fast search's greedy algorithm will always produce the correct result.
Also: Update at Fri Nov 1 20:08:35 EDT 2013 by tim
Also: Merge branch 'master' into work
Also: Removed temporary copies of the vesta source.
- November 5, 2013 at 3:00am
Added the remainder of the standard analysis types to vesta, including minimum path delay register-to-register and register-to-output, and maximum and minimum path delays for input-to-register and input-to-output.
Also: Update at Mon Nov 4 13:34:58 EST 2013 by tim
Also: Merge branch 'master' into work
- November 27, 2013 at 3:00am
Important update to the clock tree insertion tool, which now iterates to produce hierarchical trees to whatever depth is needed to maintain maximum fanout counts.
Also: Update at Tue Nov 26 19:27:07 EST 2013 by tim
Also: Merge branch 'master' into work
- November 28, 2013 at 3:00am
A number of changes to the flow: Mainly, incorporated the "decongest" script into a second round of place and route, that will run if and only if the router failed to route everything the first time. However, this involved other changes, such as moving the number of layers (if not default) declaration into the project_vars.sh file, reworking the way qrouter is called to parse the LEF file for routing information, so that qrouter is called outside of place2def.tcl, using a simple bootstrap configuration file. place2def only generates the "fence" of obstruction layers around the pins, then dumps this information into a file called ".obs" that is used by the placement script to construct the routing configuration file for qrouter. This rearrangement also corrected a problem where several via configuration statements were being executed after the routing, which means they were not being applied to the routing at all. The new flow with the additional decongestion placement and final routing has been run on several test cases. It shows excellent results with the osu035 standard cell set, although it is likely that the decongestion parameters will need to be changed for other technologies.
Also: Update at Wed Nov 27 16:21:48 EST 2013 by tim
Also: Merge branch 'master' into work
Also: Modified router script to track qrouter's new output messages about "Nets remaining" instead of "TotalRoutes". Yada yada yada. See xkcd 1296.
Also: HAAAAAAAAAAAANDS (xkcd 1296)
- November 29, 2013 at 3:00am
Reworked the decongestion script both to match the normalized value now produced by qrouter, and to scale up the amount of fill based on the percentage of route failures on the last qrouter run. Also changed the "fanout" feedback to the log file from the inscrutable "nchanged=" to the more obvious "gates resized:".
Also: Update at Thu Nov 28 12:02:49 EST 2013 by tim
Also: Merge branch 'master' into work
- December 2, 2013 at 3:00am
Twiddled with the decongestent parameters again. It is clear that continued twiddling will not greatly improve the flow. It is necessary to do a better sorting and masking in qrouter to improve the routing solution, because there are cases of large designs failing to route in spite of having fill added up the wazoo.
Also: Update at Sun Dec 1 17:17:26 EST 2013 by tim
Also: Merge branch 'master' into work
- December 21, 2013 at 3:00am
Changes to deal with problems arising from use of lower case in either the macro cell names or the tech directory name.
Also: Update at Fri Dec 20 13:05:12 EST 2013 by tim
Also: Merge branch 'master' into work
- January 17, 2014 at 3:00am
Corrected an error where yosys' use of a backslash before module names would get interpreted by the script as unix escape codes. Synthesis script changed to replace the backslash with a forward slash to avoid the error.
Also: Update at Thu Jan 16 09:14:35 EST 2014 by tim
Also: Merge branch 'master' into work
- January 18, 2014 at 3:00am
Modified blif2Verilog so that it changes characters ":" and "." to underscores ("_") in all signal names, because these characters are not legal verilog. Because the original verilog source cannot have such signal names, it is not anticipated that this will cause any problems with matching signal names elsewhere in the flow.
Also: Update at Fri Jan 17 17:05:31 EST 2014 by tim
Also: Merge branch 'master' into work
- January 23, 2014 at 3:00am
Modified the yosys synthesis script to make use of the new commands for mapping tiehi and tielo standard cells.
Also: Update at Wed Jan 22 09:56:20 EST 2014 by tim
Also: Merge branch 'master' into work
- January 24, 2014 at 3:00am
Added the "tiehipin_out" and "tielopin_out" variables to the osu035.sh and osu050.sh scripts, although there are no tie cells in those standard cell sets, mostly to let people know that the method is available, and how to use it.
Also: Update at Thu Jan 23 21:23:12 EST 2014 by tim
Also: Merge branch 'master' into work
- January 26, 2014 at 3:00am
Made changes to the flow scripts so that (1) the flow properly detects when yosys has failed to generate a new output blif file, and will stop; and (2) each script of the flow will fail to run if the previous script has stopped due to a fatal error. The combination of these changes prevents qflow from continuing to run and producing output based on results of some previous run.
Also: Update at Sat Jan 25 12:26:24 EST 2014 by tim
Also: Merge branch 'master' into work
- February 7, 2014 at 3:00am
Made a change to the placement script to check if "qrouter -i" generated an output ".info" file and halt if not. This prevents the placement from otherwise proceeding on to the place2def.tcl script and failing with an unhelpful and obscure error message.
Also: Update at Thu Feb 6 12:06:04 EST 2014 by tim
Also: Merge branch 'master' into work
- February 8, 2014 at 3:00am
Corrected an error pertaining to the order in which qrouter is told to read the technology and macro LEF files. This was corrected in the section of code that writes the configuration file for the Tcl-based version of qrouter but was not fixed in the section of code that writes a slightly different syntax of configuration file for the non-Tcl-based version of qrouter.
Also: Update at Fri Feb 7 12:38:22 EST 2014 by tim
Also: Merge branch 'master' into work
- February 9, 2014 at 3:00am
Corrected an error in vesta that would invert the tables, swapping times with capacitances, with obviously bad results.
Also: Update at Sat Feb 8 11:29:24 EST 2014 by tim
Also: Merge branch 'master' into work
- February 16, 2014 at 3:00am
A very quick fix to ybuffer.tcl to correct an error that could produce a bad output netlist when any output name is a substring of another output name. However, this should be replaced shortly with a better implementation within yosys.
Also: Update at Sat Feb 15 15:58:44 EST 2014 by tim
Also: Merge branch 'master' into work
Also: Updated synthesize_yosys to make use of the "-bits" option to the "iopadmap" command in yosys v.0.2.0. This replaces the use of script "ybuffer.tcl" to insert output buffers, and is more general in that it can also be used to add input buffers or handle bidirectional ports, although anything beyond adding output buffers requires a custom synthesis script.
- February 17, 2014 at 3:00am
Corrected Vesta for lookup tables that are 1-dimensional.
Also: Update at Sun Feb 16 17:15:48 EST 2014 by tim
Also: Merge branch 'master' into work
- April 9, 2014 at 3:00am
Added routine "getfillcell.tcl" that searches a LEF file for fill cells according to the pattern given in the tech setup shell script, and a .par file with a feedThruWidth definition, and returns the name of the fill cell whose width matches the one used in the .par file.
Also: Update at Tue Apr 8 17:42:20 EDT 2014 by tim
Also: Merge branch 'master' into work
- May 27, 2014 at 3:00am
Update at Mon May 26 09:55:12 EDT 2014 by tim
- May 28, 2014 at 3:00am
Update at Tue May 27 19:10:21 EDT 2014 by tim
- May 30, 2014 at 3:00am
Update at Thu May 29 10:52:52 EDT 2014 by tim
- May 31, 2014 at 3:00am
Update at Fri May 30 14:41:25 EDT 2014 by tim
- June 1, 2014 at 3:00am
Update at Sat May 31 14:50:58 EDT 2014 by tim
- July 10, 2014 at 3:00am
Correction to the clocktree script to handle cells such as tiehi/ tielo that have no inputs, instead of generating an error and exiting.
Also: Update at Wed Jul 9 12:00:47 EDT 2014 by tim
Also: Merge branch 'master' into work
- July 13, 2014 at 3:00am
Additional diagnostic statements printed in the STA tool.
Also: Update at Sat Jul 12 14:18:44 EDT 2014 by tim
Also: Merge branch 'master' into work
Also: Fixed an error that causes vesta to crash if it has bad input and cannot find a valid netlist.
Also: Corrected an error in blifFanout that causes a crash if the gate strength changes from a 1-character suffix (e.g., "1") to a 2-character suffix (e.g., "10").
- July 18, 2014 at 3:00am
Added support for structural verilog in-line, pending update of yosys to revision 0.3.1.
Also: Update at Thu Jul 17 08:34:09 EDT 2014 by tim
Also: Merge branch 'master' into work
Revision information prior to qflow system:
- Date: June 19, 2011
Initial offering of the full digital flow with the new open-source detail router qrouter.
- Date: June 21, 2011
Modified the bdnet2cel.tcl script to do much more thorough parsing of the LEF file, including ignoring various sections that are normally found in LEF files (but not needed by the converter script), and parsing layer information for track pitches. The pins must be declared with dimensions equal to the route pitches, because TimberWolf will place pins next to each other, and if they are placed closer together than the route pitch, they will overlap and not be routable.
- Date: December 6, 2012
Made substantial updates to the place2def2.tcl script. This corrects for track offset from the origin and also corrects an error that gave all the pin positions an offset that could potentially drop the pins outside of the routing track area, making them unroutable.- Date: December 7, 2012
Added clocktree.tcl to the list of files to download. This script tool breaks up large fanout nets (like the clock) with buffer trees. It is not particularly useful without the load balancing tool that I have not yet converted to a generic process.
email: Last updated: October 26, 2024 at 2:00am