4. Revision History and Change Log#

The changes in each SiliconCompiler release version are described below. Commit version shown in (). Where applicable, the contributors that suggested a given feature are shown in [].

4.1. SiliconCompiler 0.12.1 (2023-06-07)#

Major:

  • Fixed writing of manifest to preserve values that were previously removed incorrectly.

  • Updated recording of [‘record’, …] to track tool versions, tool options, task start and end times, and SiliconCompiler version, while preserving control of sensitive records like [‘record’, ‘ipaddr’] with [‘option’, ‘track’].

Minor:

  • Fixed handling of sc-issue to avoid clobbering the user set options and only bundle the required files for a testcase to minimize the size of the file.

  • Added error checking for create_cmdline to check for invalid arguments.

  • Tools:

    • OpenROAD - added support for disallowing one site gaps in detail placement [‘tool’, ‘openroad’, ‘task’, ‘place’, ‘var’, ‘dpl_disallow_one_site’]. Added support for [‘option’, ‘warningoff’]

    • surelog - Added support for [‘option’, ‘warningoff’]

    • Verilator - Added support for [‘option’, ‘warningoff’]

4.2. SiliconCompiler 0.12.0 (2023-05-24)#

Major:

  • Added/updated parameters in [‘datasheet’] section of the schema to allow for better capturing of design datasheet.

  • Updated Verilator tool driver to support CFLAGS/LDFLAGS and fix linting task.

  • Added operations task to klayout to allow for unit operations on GDSs like merging, adding outlines, rotating, etc.

  • Added options to archive() to support archiving multiple jobs and filtering files to include.

Minor:

  • Added enforcement of [‘option’, ‘mode’] to ensure it is set for better manifest checking.

  • Added per-pin voltage constraints for better support of multiple power/voltage domains, [‘constraint’, ‘timing’, scenario, ‘voltage’, pin].

  • Fixed tool drivers to ensure proper use of find_files() is not done in setup().

  • Added check for permissions error while collecting child process memory statistics.

4.3. SiliconCompiler 0.11.2 (2023-05-15)#

Major:

  • Updated sc-issue to generate self-contained testcases to allow for better sharing of testcases.

  • Updated klayout tool driver to support map-file option for DEF-GDS export step, and remove need for hard coded options in .lyt file in favor of getting values from the schema.

Minor:

  • Updated loading order to target in commandline interface to ensure schema parameers are set before loading target.

  • Error checking for flowgraphs with duplicated edges.

  • Added -ext to sc-show command to control what file is opened when multiple files are available.

  • Tools:

    • OpenROAD - added flags to control antenna repairs: [‘tool’, ‘openroad’, ‘task’, ‘route’, ‘var’, ‘ant_check’] and [‘tool’, ‘openroad’, ‘task’, ‘route’, ‘var’, ‘ant_repair’]; added clock buffer selection option from the library with [‘library’, lib, ‘option’, ‘openroad_cts_clock_buffer’]

4.4. SiliconCompiler 0.11.1 (2023-05-03)#

Major:

  • Revamped documentation for better readability and navigability.

Minor:

  • Fixed handling when loading schemas from JSON to ensure values are normalized correctly.

  • When a tool fails, the last 10 lines of the log is printed when [‘option’, ‘quiet’] is set to aid in debugging.

  • Updated server/client to use python tarfile module instead of spawning subprocesses.

  • Implemented python linting.

  • Tools:

    • OpenROAD - implemented snapping to sites or manufacturing grid for component placement via [‘tool’, ‘openroad’, ‘task’, ‘floorplan’, ‘var’, ‘ifp_snap_strategy’] and added ability to select SDC IO buffer for automatic constraint generation via [‘tool’, ‘openroad’, ‘task’, ‘floorplan’, ‘var’, ‘sdc_buffer’].

    • yosys - fixed invalid keypath access when logiclib is incorrectly specified.

4.5. SiliconCompiler 0.11.0 (2023-04-17)#

Major:

  • sc-issue added as command line application to support sharing runnable testcases.

  • Removed the requirement that the initial task of the flowgraph be called ‘import’ and the final task be called ‘export’.

  • Fully implemented .node() to take in a task module, simplifying the construction of a flowgraph and removing its dependence on [‘option’, ‘scpath’].

Minor:

  • [‘tool’, tool, version, ‘sbom’] added to be able to track a tools SBOM.

  • .hash_files() updated to honor the ‘hash’ field for the file parameters.

  • .calc_yield(), .calc_area(), .calc_dpw() updated to new schema parameters.

4.6. SiliconCompiler 0.10.2 (2023-04-04)#

Major:

  • Support for Python 3.11

  • Building arm64 wheels for surelog

Minor:

  • Tools:

    • general - deployed docker based CI with automatic tool building and testing

    • klayout - support for OAS stream files via [‘tool’, ‘klayout’, ‘task’, ‘export’, ‘var’, ‘stream’] = ‘oas’, better detection of missing layout cells

    • yosys - support for controlling buffer insertion via [‘tool’, ‘yosys’, ‘task’, ‘syn_asic’, ‘var’, ‘add_buffers’] = ‘True’/’False’

    • openroad - correct handling of INF timing in metrics

  • Improve memory recording to account for child processes

  • General documentation cleanup

4.7. SiliconCompiler 0.10.1 (2023-03-11)#

Major:

  • Adding ._record_metric() for tool drivers to use when recording metrics to ensure they honor the schema units and record the source of the metric at the same time.

Minor:

  • Improved error handling and messaging for remote jobs.

  • Fixed HTML summary report and PNG summary image not getting rebuilt when calling .summary()

  • Updated .summary() table to display units and format numbers accordingly.

4.8. SiliconCompiler 0.10.0 (2023-03-08)#

Major:

  • Schema overhauled (see schema documentation for details):

    • Added ability to override certain schema parameters on a per-step/index basis.

    • Added step and index to schema access methods.

    • Expanded constraints category to include component and pin placement.

    • Cleaned up parameters which were duplicated in other categories.

    • Implemented [‘input’, …] and [‘output’, …] filesets along with .input() and .output() helper functions

  • Added tasks to tools prevent step name from getting used for task identification.

  • Implemented .use() in favor of .load_pdk(), .load_flow(), etc. to take in Python modules instead of strings.

  • Changed libraries, flows, checklists, and pdks to explicitly return a particular class object.

  • Generate a summary PNG.

  • Removed Floorplanning API.

  • Added support for custom macros and scripts in the remote workflow.

Minor:

  • Updated OpenROAD scripts to support a hierarchical flow.

  • Updated Yosys scripts to better support hierarchy.

  • Improved auto documentation generation.

  • Updated pdk and library settings to provide additional corners where available.

  • Updated documentation, including Installation, Quickstart Guide and Tutorials.

  • Added Fmax as a first-order metric to the Schema

4.9. SiliconCompiler 0.9.6 (2022-10-03)#

Major:

  • Fixed bug that causes tool setup information to be lost when running a flow in multiple chunks using a steplist.

Minor:

  • Fixed old schema references in Yosys synthesis strategy scripts.

  • Updated error message for missing file requirements.

  • Updated OpenROAD scripts to handle multiple LEF files.

  • Updated KLayout driver to use batch mode flag and capture more warnings.

  • Updated Verilator driver to implement [‘option’, ‘trace], [‘option’, ‘warningoff’], and provide passthroughs for CFLAGS and LDFLAGS.

  • Removed support for ‘extraopts’ passthrough in Verilator driver.

  • Updated version of Surelog bundled with wheels distribution.

4.10. SiliconCompiler 0.9.5 (2022-09-12)#

Minor:

  • Schema: Added [‘tool’, <tool>, ‘prescript’/’postscript’, <step>, <index>] to support user-supplied pre- and post-scripts for script-based tools.

  • Schema: Added [‘tool’, <tool>, ‘file’, <step>, <index>] passthrough parameter.

  • Added runtime logic to terminate tools that do not exit on their own after a job is interrupted with ctrl-c.

  • Fixed KLayout show bugs.

  • Fixed issue building SC in editable mode using newer versions of Pip/setuptools.

4.11. SiliconCompiler 0.9.4 (2022-08-25)#

Major:

  • Changed run() logic to not reset metrics to zero.

    • summary() will only display metrics that have been explicitly set.

Minor:

  • Schema: Changed [‘constraint’, <scenario>, ‘libcorner’] from scalar to list.

  • Added support for –latches option in GHDL driver.

  • Added :keypath: directive to distributed Sphinx extensions.

  • Added reports and final manifest to archive() outputs.

  • Fixed bug where job argument to find_files() was not handled properly.

  • Fixed pin sizes and PDN vias in Caravel wrapper example.

  • Updated flow scripts to support newer version of OpenROAD.

  • Updated version of Surelog bundled with wheels distribution.

4.12. SiliconCompiler 0.9.3 (2022-08-01)#

Major:

  • Added basic editing functionality for signoff checklists in HTML report.

  • Changed file collection behavior:

    • For local runs, inputs are not copied into import/ at all.

    • For remote runs, inputs are copied into import/0/inputs/ only, not outputs/.

  • Implemented [‘option’, ‘entrypoint’], allowing users to specify an alternative top-level.

  • Implemented support for “pure Python” tools.

    • A run() method inside a tool setup file will be run instead of an executable.

Minor:

  • Changed run() behavior to read metrics from all leaf tasks.

  • Fixed implementation of [‘option’, ‘jobincr’].

  • Fixed bug causing exception on summary() for machines with a default encoding other than UTF-8.

  • Fixed logfile reading logic to gracefully handle invalid characters.

  • Improved error messages for some common issues.

4.13. SiliconCompiler 0.9.2 (2022-07-08)#

Major:

  • Schema: Added [‘option’, ‘flowcontinue’] to control whether flow continues when a tool reports errors.

    • This used to be controlled by [‘tool’, <tool>, ‘continue’], but this parameter is meant to feed directly into tools (rather than controlling the SC runtime).

  • Schema: Added [‘option’, ‘continue’] parameter to control whether errors in the Python API are fatal.

    • The default value makes errors fatal, setting this parameter to True reverts to the old behavior.

  • Added VPR-based FPGA bitstream generation flow.

  • Added logic to set errors and warnings metrics based on [‘tool’, <tool>, ‘regex’, …] matches. This reduces tool driver boilerplate and makes the metrics consistent with the generated regex match files.

Minor:

  • Changed default technology target for sc app.

  • Changed KLayout show script to always use a dark background.

  • Changed check_manifest() to allow tool tasks to have multiple inputs (behaving as if they were merged with a “join” builtin).

  • Changed check_manifest() to return True on success rather than 0 (the previous behavior didn’t match the documentation).

  • Changed Yosys and OpenROAD tool drivers to make them easier to use in flows with alternate step names.

  • Changed GHDL tool driver to allow additional CLI options via [‘tool’, <tool>, ‘var’, …, ‘extraopts’].

  • Removed return codes from post_process().

4.14. SiliconCompiler 0.9.1 (2022-06-21)#

Major:

  • Added input filetype inference based on file extension (restores functionality lost in 0.9.0).

  • Added manifest tree viewer to HTML report.

  • Added simulator exe compilation support to Verilator.

  • Improved TCL manifest generation:

    • Fixed escaping of special characters and whitespace.

    • Fixed insertion of “$env” in filepaths.

    • Changed tuple printing to be TCL list instead of tuple-like string.

Minor:

  • Schema: Added tool CLI arguments to [‘record’, …] schema.

  • Changed create_cmdline() switchlist parameter to accept switch names as specified on command line.

  • Changed setup module docs generator to be packaged with SC.

  • Changed HTML report to be self-contained.

  • Fixed CSV manifest generation.

4.15. SiliconCompiler 0.9.0 (2022-05-19)#

Major:

  • Schema: Reorganized entire schema! Changes summarized below:

    • Cleaned and consolidated top-level organization, most parameters are now nested.

    • Moved build configuration options underneath [‘option’, …].

    • Added [‘output’, …] to store pointers to flow outputs.

    • Added [‘model’, …] to store pointers to design abstractions (timing libraries, layouts, etc).

    • Added [‘datasheet’, …] to store information about design’s interface.

    • Added [‘unit’, …] to store user driven SI units specification (temp,voltage, etc)

    • Renamed [‘eda’, …] to [‘tool’, …]

    • Renamed [‘mcmm’, …] to [‘constraint’, …]

    • Replaced [‘source’], [‘constraint’], and [‘read’, …] with more flexible [‘input’, <filetype>] to supply input files.

    • Added support for storing multiple PDKs in schema and selecting which one to use for run (analogous to flows).

    • Change [‘flowgraph’] to support modular flow composition

    • Added support for package management [‘depgrah’].

    • Added checklist support.

    • Removed special [‘library’, …] keypaths. All libraries are now created as Chip objects, and have their full config imported into a parent chip’s schema.

  • Added ‘sup’ packaging utility

  • Added ability to configure stdout and stderr redirection on a per-tool basis (thanks to @suppamax for implementing).

  • Added flexible tool version checking based on PEP-440 standard, now enabled by default.

  • Added ‘clean’ feature for cleaning up intermediate tool outputs.

  • Added ‘resume’ feature for restarting failed flows (for debugging).

  • Added automatic capture of peak memory usage (adds dependency on psutil).

  • Changed [‘design’] to be a required parameter for instantiating a Chip.

  • Changed error behavior to consistently raise exceptions rather than exit.

  • Removed tool script copy feature, so now all EDA scripts are run from the reference directory.

Minor:

  • Schema: Added ability to store per-parameter designer notes.

  • Added offline wheels distribution.

  • Added read_lef() function to help with PDK bring-up.

  • Added environment variables to replay scripts.

  • Added LVS/DRC signoff flow and top-level GDS stream out flow.

  • Added native support for Sky130 I/O library, along with Heartbeat + padring example.

  • Changed internals to minimize SC performance overhead with large flowgraphs.

  • Changed task runtime tracking to distinguish between time spent in tool and total time.

  • Fixed breakpoints to work more consistently across tools.

Note: Since there was no public release of version 0.8.0, this list summarizes all changes since 0.7.0.

4.16. SiliconCompiler 0.7.0 (2022-03-02)#

Major:

  • Schema: Added ability to specify environment variables on a per-tool, per-task basis.

  • Schema: Added per-tool ‘techmap’ parameter to library schema.

  • Added browser-viewable report generation to core.summary().

Minor:

  • Schema: Added filetypes to library schema: ‘def’, ‘gerber’, ‘netlist’, ‘model’ category.

  • Schema: Added ‘stackup’ key to library lef/gds parameters.

  • Schema: Changed ‘pdk’ and ‘stackup’ library parameters to lists.

  • Schema: Added ‘dir’ passthrough to library schema.

  • Schema: Added ‘nodisplay’ option to schema to better support headless jobs.

  • Schema: Added ‘licensefile’ to package parameters to support non-standard licenses.

  • Schema: Added ‘gerber’ to read schema.

  • Schema: Added several cell categories to library schema.

  • Changed how PDK-specific Yosys and OpenROAD parameters are driven to avoid hardcoding process info in tool drivers.

  • Fixed step ordering bug in core.summary().

  • Fixed bug with how ‘arg’, ‘index’ is handled.

  • Fixed small bugs in automatic documentation generation.

  • Added core.check_filepaths() helper.

4.17. SiliconCompiler 0.6.0 (2022-02-11)#

Major:

  • Schema: Added ‘flow’ key to flowgraph to enable multi-flow targets.

  • Schema: Added ‘flow’ parameter to enable selection between flows in flowgraph.

  • Schema: Changed ‘_’ separated tuple target to a single ‘module’ load target.

  • Schema: Added ‘regex’ for grep like functionality.

  • Schema: Changed metal grid to use PDK metal name as the major key.

  • Schema: Added ‘tool’ key to PDK settings to avoid tool file conflicts.

  • Schema: Added ‘units’ parameter to enable tech agnostic SDC.

  • Schema: Added ability to specify tricky apr setup files on a per tool basis (tracks, taps, vias, antenna, etc).

  • Schema: Added checklist functionality

  • Added core.grep function

  • Added core.check_logfile function to core API to emulate grep behavior

  • Added core.load_{target, flow, lib, pdk} functions to core API in place of target()

  • Added asap7 target

  • Added docker support for basic RTL2GDS tool chain

  • Removed core.target() function

Minor:

  • Schema: Changed lib ‘driver’ to move into cells (consistency)

  • Schema: Added site symmetry to avoid full lef parser.

  • Schema: Changed tool version switch to a list

  • Schema: Changed ‘asic’, ‘targetlib’ to ‘asic’, ‘logiclib’ for clarity.

  • Schema: Changed ‘eda, ‘report’ parameter guideline to always use ‘metric’ as keyword

  • Schema: Added -skip_check option to speed up new target bringup

  • Schema: Added -skip_step option to enable skipping specific steps

  • Schema: Added ‘pdk’, [‘file’, ‘directory’, ‘variable’] parameters to enable tool-specific PDK setups.

  • Schema: Changed cell types to be hardcoded (tapcell, buf, clkbuf, etc) to avoid fragmentation.

4.18. SiliconCompiler 0.4.1 (2022-01-06)#

Minor:

  • Fix bug in Yosys parameter requirements spec that made check_manifest() too strict

4.19. SiliconCompiler 0.4.0 (2022-01-05)#

Major:

  • Schema: Add ‘tool’ key to PDK fields

  • Schema: Remove unneeded ‘record’ keys

  • Implement automatic record-keeping

  • Implement checks that flow make sense in terms of file I/O and that required files resolve

  • Allow importing multiple files with the same basename

Minor:

  • Automatically configure KLayout path on macOS

  • Allow importing multiple files with the same basename

  • Implement -I CLI switch for include directory

4.20. SiliconCompiler 0.3.1 (2021-12-21)#

Minor:

  • Fix sc-show on Windows.

4.21. SiliconCompiler 0.3.0 (2021-12-21)#

Major:

  • Schema: add ‘read’ section.

  • Schema: Add alternate frontend support.

Minor:

  • Fix old version of Surelog bundled with wheels

4.22. SiliconCompiler 0.1.1 (2021-12-08)#

Minor:

  • Fix: Prevent sc-show crash when PDK files are not found.

  • Fix: Ensure sc-show can find KLayout executable on Windows

4.23. SiliconCompiler 0.1.0 (2021-12-03)#

Major:

  • First public release!!!