Skip to content

Releases: siliconcompiler/siliconcompiler

v0.9.5

16 Sep 15:21
ba7e004
Compare
Choose a tag to compare

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.

v0.9.4

26 Aug 21:48
2849312
Compare
Choose a tag to compare

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.

CI hint: NOPUBLISH

v0.9.3

02 Aug 03:02
4fa8691
Compare
Choose a tag to compare

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 output/.
  • 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.

v0.9.2

10 Jul 20:08
fcbf3f7
Compare
Choose a tag to compare

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().

v0.9.1

21 Jun 16:13
668b989
Compare
Choose a tag to compare

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.

v0.9.0

19 May 20:33
caefdc4
Compare
Choose a tag to compare

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.
    • 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 (analagous to flows).
  • Schema: 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 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 checklist support.
  • 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.

CI hint:
NOPUBLISH

v0.7.0

03 Mar 18:48
ae74fb3
Compare
Choose a tag to compare

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.

CI hint:
NOPUBLISH

v0.6.0

14 Feb 20:19
806632e
Compare
Choose a tag to compare

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.

CI hint:
NOPUBLISH

v0.4.1

06 Jan 18:47
13a362e
Compare
Choose a tag to compare
  • Fix bug in Yosys parameter requirements spec that made check_manifest() too scrict

v0.4.0

05 Jan 19:58
be8549d
Compare
Choose a tag to compare

Happy New Year!

  • Schema updates
    • Add 'tool' key to PDK fields
    • Clean up unneeded 'record' keys
    • A few other misc. changes
  • Functionality changes
    • Implement automatic record-keeping
    • Implement -I CLI switch for include directory
    • 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
    • Automatically configure KLayout path on macOS
  • Bug fixes
    • Fix sc-show to use 'read' schema introduced in last release

CI hint: NOPUBLISH