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 insetup()
.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
tosc-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 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.
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!!!