Releases: siliconcompiler/siliconcompiler
Releases · siliconcompiler/siliconcompiler
v0.9.5
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
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 tofind_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
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, notoutput/
.
- For local runs, inputs are not copied into
- 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.
- A
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
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
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
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
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
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
v0.4.0
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