| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [View Raw Code] [Original HTTPS Page] |
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 [].
Major:
- Changed yosys ASIC and FPGA synthesis to read the design with slang by default; set_yosys_useslang(False) goes back to yosys's own Verilog reader.
- Changed fileset parameters set with set_param to reach verilator and yosys exactly as written, which fixes string parameters in verilator but means a string value for yosys must now include its quotes ('"hello"').
Minor:
- Added sc-config tokens to store the tokens private dataroots are fetched with, rather than exporting them in every shell.
- Allowed sc-issue to take a node directory in place of the manifest inside it.
- Made [option,autoissue] write a testcase however a node fails, not only when its tool fails, named sc_issue_<design>_<jobname>_<step>_<index>.tar.gz and with its libraries chosen by the new issue settings.
- Added missing_ok to get_dataroot, which returns where a local dataroot would be rather than raising when it does not exist.
- Tools:
- openroad: added LibertyBinaryTask and the liberty_binary utility to convert liberty to the binary .blib that OpenROAD 26Q4-509 or newer reads in its place, and fixed a node failing when OpenROAD reports an infinite slack.
- yosys: stopped adding buffers and tie cells in ASIC synthesis by default, limited yosys to the task's thread count rather than every core, and fixed the registers metric counting a module's flops once however many times it is instantiated.
Major:
- Removed the sc-dashboard and sc-server commands in favor of python3 -m siliconcompiler.apps.utils.dashboard and python3 -m siliconcompiler.remote.server, and the cleanup support app in favor of sc-config cache clean.
Minor:
- Added sc-config, which lists and changes settings, sets up and tests job status email, shows and sweeps the cache, and prints where SiliconCompiler keeps its files.
- Added --gui, --web and --shell to a node's replay.sh, where the tool supports them, to rerun the step in its GUI, web viewer or interactive prompt and leave it open; an sc-issue testcase's run.sh passes them through.
- Added RunListener, registered with Scheduler.add_listener, to hear a run start, each node start and finish, and the run end, and deprecated TaskScheduler.register_callback in its favor.
- Added opensta to the asic, asic-hls and asic-soda groups of sc-install.
- Tools:
- openroad: added pdn_dont_add_pins to power_grid, and made init_floorplan read a bump map produced by an earlier step.
Major:
- Removed the public server as the default for remote runs, so a remote run now fails unless a server has been configured with sc-remote.
Minor:
- Added gitlab:// and s3:// dataroots, the latter through a new s3 extra, along with a +private form of every scheme and python:// paths to a directory inside a package.
- Masked dataroot credentials in logs, in the manifests a run writes for its tools, and in sc-issue testcases, which also leave out environment variables that look like secrets.
- Reworked file collection for remote runs and sc-issue so collected files keep their names, each file is stored once, and links inside a collected directory are kept.
- Changed sc-show without a file to open the richest view a build has, an odb ahead of the def beside it, and made sc-show -list print the order it searches in.
- Added nested -f and -F file lists, -I include directories and -v library files to Design.read_fileset.
- Added a toolscripts entry point so a package can add tools to sc-install or override SiliconCompiler's version pins, along with reusable workflows that keep those pins current and build their docker images.
- Tools:
- klayout: changed the screenshot margin to a percentage of the design's size, defaulting to 1%, rather than a distance in microns.
- openroad: fixed a def opened with sc-show losing its contents when a hierarchical netlist sat beside it, and detailed routing ignoring [asic,minlayer] and [asic,maxlayer].
- yosys: added cross-boundary optimization of a design that is not flattened, on by default with yosys 0.58 or newer, and SAT-based flip-flop merging through opt_dff_sat.
Minor:
- Reworked how a run reuses an existing build directory: an upstream excluded by [option,from], [option,to] or [option,prune] that cannot supply what depends on it is now rebuilt, rather than the run failing on an input nothing in it can produce.
- Added a task's declared input and output to what decides whether a node has to rerun.
- Fixed a previous run's SKIPPED status being carried into the next run, which stopped a re-enabled step from running.
- Added token authentication for gitlab and bitbucket dataroots, and fixed tokens being sent under the wrong username, written into the logged clone URL, and prompted for on a machine that cannot answer.
- Moved pandas into the dashboard extra and added a server extra for running sc-server, so a default install carries only what a local flow needs.
- Sped up the initial load by deferring imports that only part of a run needs.
- Tools:
- openroad: added support for rectilinear floorplans, and required an explicit die and core area when a padring is used.
Minor:
- Split the cache directory into dataroot for downloaded data sources and tools for the caches tools keep between runs, and added Task.cachedir so a tool cache lands where [option,cachedir] covers it.
- Added an automatic sweep of the data source cache at the start of a run, throttled to once a week and to entries unused for 90 days, both tunable through cleanupdays and cleanupinterval.
- Added Task.get_digest, a hash of everything that configures a task, for naming a cache directory after a configuration rather than after a tool.
- Reworked [option,continue], which is set on the node that may fail: nodes downstream of an excused failure now run on the inputs that did arrive instead of being skipped.
- Added run cancellation to the scheduler, which keeps queued nodes from starting and ends the ones already running along with their descendants.
- Fixed environment variables that are declared without a value being handed to the tool as None.
- Added docker as a cluster type for sc-server, moved its job directories under a build root, and pointed compute nodes at a cluster-wide cache rather than the home directory of whoever runs them.
- Added a docker compose deployment of a server and a slurm cluster under setup/server.
- Tools:
- bambu: write the compiler cache ccache keeps into the tool cache rather than the home directory.
- chisel: keep coursier's jar cache in the tool cache.
- keplerformal: added reset_port and reset_cycles to the sec task, and treat a difference the tool finds as a verdict rather than as a failure to run.
- openroad: added the scan_clock_mixing, scan_max_length and scan_max_chains scan chain controls to global placement, and made logic depth reporting ask for a single path per group so it no longer exhausts memory.
- opensta: made logic depth reporting ask for a single path per group so it no longer exhausts memory.
- verilator: write the compiler cache ccache keeps into the tool cache rather than the home directory.
Minor:
- Shrank the tool container images: symbols are now stripped from every installed tool, packages a tool only needed to build itself are removed, link-time-only static archives are dropped, and a tool image is no longer copied into sc_tools when a dependent image already carries it. Added sc_remove_prereqs and sc_strip_prefix to the tool install helpers.
- Tools:
- chisel: install a JRE of its own rather than relying on the one surelog pulls in for its build, and skip the sbtn launchers built for other platforms.
- mlir: install only the components the flow and soda-opt need instead of the whole LLVM install tree.
- openroad: keep tie cells in the netlist written out for logical equivalence checking.
Minor:
- Added LECFlow, a logical equivalence check flow, with combinational, sequential and k-induction checks. [jyrj]
- Added a SODA Synthesizer front end, which takes a machine learning model in MLIR through soda-opt and Bambu into the normal ASIC flow, along with SODAASICFlow and a tutorial and example. The elaboration, synthesis and ASIC flows now take a frontend flowgraph instead of a language, so a front end can live beside the tool driver it belongs to.
- Split tool output onto its own LOG and LOGERROR log levels so it can be told apart from SiliconCompiler's own messages, and made quiet apply to a task's own logging without hiding why a run stopped.
- Reworked SDC clock extraction to handle line continuations, variables and the SDC files of timing modes, and added get_clock_port.
- Added job cancellation to the remote server and the slurm scheduler, along with job ownership checks, an upload size limit, and a client that works before a server has been configured.
- Fixed sc-show to honor the tool it was given, and to find the open, show and screenshot tasks that are not hard-coded.
- Moved the tool container builds to Ubuntu 24.
- Tools:
- bambu: added RTL simulation, cell area and cycle count reporting, and parameters for the constraints and technology files, memory allocation policy, front-end compiler and testbench filesets.
- mlir: added a tool driver for the MLIR tools.
- openroad: added support for the ccs delay model and logic depth histogram reports.
- opensta: added support for the ccs delay model and an interactive open task.
- soda: added a soda-opt tool driver.
- yosys: added an interactive open task.
Minor:
- Added the gt2n_demo and icsprout55_demo targets.
- Added set_dieoutline and set_coreoutline, which take the width and height in the same order as get_diesize and get_coresize return them. These deprecate set_diearea_rectangle and set_corearea_rectangle, which took the height first.
- Allowed the tool install scripts to run without sudo access when the prerequisite packages are already present, which makes an unprivileged install into the default ~/.local prefix possible.
- Tools:
- openroad/opensta: brought the setup and hold timing reports to parity, filled in the reports that were missing, and moved the per-corner reports into a per-scenario directory.
Minor:
- Added PNRFlow, a place-and-route only flow, which ASICFlow is now assembled from.
- Added computation of the core or die area from coremargin when only one of the two is provided.
- Added support for xz and Zstandard compressed tarballs to package downloads, and switched archive format detection to the contents of the download rather than its name.
- Ensured the remote configuration file, which can hold a plaintext password or API key, is only readable by the user.
- Sped up manifest writing for manifests containing non-ASCII characters.
- Reorganized the documentation landing page, and added a padring tutorial and example, simulation and OpenROAD how-tos, and an external libraries page.
- Tools:
- openroad: aligned the place-and-route flow with ORFS and LibreLane, adding an opt-in timing repair on the global routing parasitics (rsz_enable) and a new antenna repair node after detailed routing, added an opt-in setup timing repair on the synthesized netlist (repair_synth_timing), which is an alternative to removing the synthesis buffers rather than additive.
Major:
- Removed the Schematic schema, since it was unused.
Minor:
- Added flowgraph callbacks, allowing flows to be modified after being inserted into a project.
- Added a beta version of hierarchy handling to elaboration to support parameterized modules.
- Added csv as an accepted task manifest format.
- Fixed unsupported schedulers being silently accepted.
- Fixed remote package re-download and ensured cached packages are only extracted once.
- Expanded the documentation with new tutorials, examples, FAQs, and how-tos, along with link checking.
- Added Ubuntu 26 and RHEL 9 tool build fixes with build selection and a weekly build schedule.
- Tools:
- openroad: added a PEX correlation methodology, along with the openroad_pex flow and calibration APIs, which replaces generate_openroad_rcx.
- openroad/opensta: reorganized the generated reports to make them easier to follow.
- verilator: added support for --trace-structs and --trace-depth. [HU90m]
- sby: switched the default engine from boolector to bitwuzla.
Minor:
- Added a cached schema class to speed up loading, with support for frozen schemas.
- Added system-wide settings, letting an administrator provide machine-wide defaults.
- Added tool-install checks to avoid rebuilding already-installed tools.
- Tools:
- opensta: added support for reading VCD files for switching-activity-driven timing analysis.
- yosys: removed the standalone yosys-slang plugin now that it ships with yosys 0.67.
Minor:
- Added a formal property check flow (PropertyCheckFlow) for BMC, cover, and prove modes.
- Tools:
- sby: added a SymbiYosys formal verification tool with install scripts for Ubuntu 22/24/26.
- yosys: refactored synthesis scripts and shared TCL procs, and added tests for slang usage.
Major:
- Removed support for Python 3.9.
- Changed the global-value key from global to * to avoid name conflicts, with legacy read support for older manifests.
- Added rename_node to allow flowgraph nodes to be renamed.
- Added value ranges and limits to schema types using Ada-style notation, e.g. int<0..100>, float<..1.0>, and enums like str<a,b,c>.
- Moved the dashboard to an optional dependency.
Minor:
- Added language detection to targets.
- Added a warning when installed pip package versions are out of sync.
- Made get_cores aware of the scheduler's processor affinity.
- Allowed partial matches when setting and getting flows.
- Made filelist generation depth first.
- Added Ubuntu 26 tool install scripts.
- Fixed warnings about leaked resources and mishandled atexit cleanup.
- Tools:
- openroad: added a parasitic extraction (PEX) interface to the PDK with a warning when no corner is found, and added a dedicated cleanup task that moves logic cleanup out of floorplanning.
- montage: added a convert tool, automatic montage handling, and host-scaled ImageMagick resource limits via a private policy.xml.
- icarus/verilator: added a parameter to set the timescale for compilation.
Minor:
- Added breakpoint handling in the scheduler to avoid multiple breakpoints from running at the same time.
- Tools:
- img2stream: added LEF output.
- pyslang: updated to version 11.
- openroad: fixed write_views on missing OpenRCX files.
- verilator: added support for verilog only testbenches.
Minor:
- Fixed error message in smake when no file is provided.
- Improved path/dir/file type checking in schema types.
- Fixed issue where flows would be marked as failed when using option,from.
- Added preferred indicator to sc-show -list.
Minor:
- Fixed flowgraph handling of builtin tasks, like min and max, to correctly handle the input/output file checks.
- Fixed the time reporting on the dashboard to avoid double counting parallel tasks.
- Tools:
- openroad: added checks for pin placement outside die area and added support for glob skip reports.
Minor:
- Made the breakpoint interface more robust and fixed issues with text getting garbled.
- Fixed issue when setting option,from where flowgraph would ignore it if the step appeared in a leg with parallel paths.
- Tools:
- openroad: added better handling of pin placement.
Major:
- Added OpenTask as parent class to ShowTask and ScreenshotTask, which enable opening in the commandline.
Minor:
- Added .write_depgraph to Project to enable displaying the dependency graph of a project.
- Fixed calls to sc-issue to remove the requirement to add -cfg.
- Fixed file collection to avoid collecting a file twice.
- Updated log reading handling to better handle tools that emit partial lines.
- Fixed git file resolver when LFS is used.
- Tools:
- openroad: added support for OpenTask and reordered the creation of placement blockages.
Minor:
- Added dataroot resolver to allow for nesting dataroots.
- Fixed log files accumulating in the build directory and updated log naming to make it easier to identify runs.
- Added job termination when system memory exceeds 99% utilization.
- Tools:
- openroad: added support for placement and routing blockages in init floorplan.
Minor:
- Switched to marking cached downloads as readonly to avoid accidental overwrites.
- Added utility app to cleanup caches with python3 -m siliconcompiler.apps.utils.cleanup.
- Updated targets to map regfiles from lambdalib.
- Added scp based file path resolver to allow files to be copied between machines.
- Tools:
- openroad: Added option to check that all pins are placed and remove blockages created during macro placement.
Minor:
- Added -tool option to sc-show to allow for tool filtering.
- Ensure the flow restarts when the topmodule name changes.
- Tools:
- openroad: Added support for handling 3D pin placement, reordered macro placement to occur before padring generation, and added 3D blox viewing support.
Minor:
- Tools:
- cocotb: Added plusargs task to allow for easier access to plusargs in simulations.
Minor:
- Updated layout handling of the dashboard to better handle future modifications.
- Added help screen to dashboard and basic controls for what is displayed.
- Added check for adding dependencies to projects without a name.
- Added support for ?submodules=<True/False> for git dataroots to control pulling submodules.
- Tools:
- klayout: added task to convert images to GDS.
- vcd2fst: added to support converting VCD files to FST.
Minor:
- Fixed recursive call on .write_fileset to avoid excessive recursion.
- Fixed file log installation to ensure the log contains errors from tool setup.
- Added additional error checks when adding aliases to check for no-op aliases.
- Added basic handling of type hinting to smake.
- Tools:
- openroad: update scripts to provide initial handling of multi-mode timing.
- opensta: update scripts to provide initial handling of multi-mode timing.
Minor:
- Fixed handling of tokens during github+private dataroot resolution.
- Fixed from_dict handling to correctly restore a schema from file.
- Ensure the checks in .run() gracefully handle missing files.
- Tools:
- klayout: default to writing gzipped files.
- openroad: default to writing gzipped odb and def files.
Major:
- Changed schema to make design object base class for all libraries.
Minor:
- Fixed resizing of dashboard to ensure logs are visible after resize.
- Fixed dashboard use when breakpoints are present.
- Fixed sc-show to correctly handle -cfg.
- Fixed flowgraph handling when using option,from.
- Updated time format in dashboard to make it easier to read.
- Added get_flow to Project class to allow access to the loaded flowgraphs.
- Tools:
- klayout: added stream2lef task to generate a lef from a GDS or OAS file.
- openroad: fixed version parsing.
- opensta: added write_sdf and write_liberty support to timing task.
- vpr: updated pin constraint handling.
Minor:
- Fixed dashboard line wrapping to correctly account for the width of the terminal.
- Reworked error handling to ensure backtrace is available when running with the dashboard.
Minor:
- Fixed commandline handling of sc-issue when -cfg is missing.
- Added support for -jobs to sc-install to control number of build jobs.
- Updated detection of editable python installs.
- Fixed json serialization bug when journal is active.
- Tools:
- yosys: removed default use of kogge-stone techmap pass.
- openroad: correctly include lefs in floorplanning required keys.
- icarus, verilator: added support for cocotb plugins.
Minor:
- Tools:
- builtin: added wait task to better handle stalling flow progress
- klayout: added merge task to provide a simple interface for merging multiple GDSs
- pyslang: updated to v10.0.0
Minor:
- Corrected auto dataroot behavior when setting abs paths.
- Corrected logging during check_filepaths on design objects to ensure errors are printed.
- Added .get_library to Project to allow access to imported libraries.
- Tools:
- openroad: added option to bypass SDC loading.
Minor:
- Expanded parameter setters for tasks.
- Tools:
- openroad: fixed pin constraints handling, added support for editing halos.
Major:
- Changed schema to better handle timing constraints, by splitting out mode specific information from the scenarios.
Minor:
- Reimplemented flowgraph rendering with file IO information.
- Fixed tool version checking to support threaded runs.
- Reworked use of pipes during execution to avoid creating more pipes than needed.
- Fixed flowgraph IO checks to only check required files.
- Tools:
- klayout: fixed handling of GDS generation when foreign is specified in lef.
- openroad: added support for halo constraints.
- kelper-formal: added initial support for LEC with kepler-formal.
Major:
- Added support for settings.json to allow users to set defaults and persistent options and controls for slurm nodes.
Minor:
- Added limit to the number of warnings/errors that will be printed to the terminal.
- Added copy_* methods to timing constraints to better support building multiple modes.
- Added support for flow to run collection if the specific node requires it.
- Added check for conflicting flow tasks and generate an error if one is found.
- Added Python 3.14 to testing matrix.
- Improved logging to help identify specific log files.
- Ensured data is cleaned up when a failure occurs while downloading remote data.
- Corrected missing history when failures occur in the flow.
- Fixed bug causing skipped tasks to not get re-executed when restarting flow.
- Tools:
- yosys: added warning to indicate that slang was not found, added controls for undefined signals, and buffer insertion.
- openroad: added support for using bmaps to place bumps, added IR drop task to provide better "what-if" analysis.
- vivado: added support for pre/post scripts.
Minor:
- Added support for downloading .bz2 files as dataroots.
- Added new accessor methods to Flowgraph.
- Implemented lazy loading for the schema to significantly speed up loading from disk.
- Implemented multithreaded checks at the start of .run() to accelerate the determination of which nodes need to be re-run.
- Optimized runtime handling of .active_* attributes to avoid excessive copying.
- Corrected file upload behavior for the remote runner.
- Tools:
- klayout: Fixed the screenshot task to ensure it can be correctly inserted into a flowgraph.
Minor:
- Corrected sc-issue handling of libraries to properly include pdk information.
- Added .find_task to Task class to replace get_task and deprecated this method.
- Restored missing copy flags in schema to ensure proper upload to remote runners.
- Added tool version check to start of .run() to allow for early version checking when possible.
- .check_filepaths now checks dependency filepaths too.
- Tools:
- builtin: added tasks for filtering files between nodes and entry node to copy files into the build directory.
- gtkwave: added fst to supported file extensions.
- openroad: fixed screenshot task to allow for insertion into flows and handling of timing information.
- surfer: added fst to supported file extensions.
- verilator: fixed path used for automatic VCD dump.
Minor:
- Added support for providing external tool install scripts and groups to sc-install.
- Fixed installation order in sc-install to use lists instead of sets, preserving the intended group ordering.
- Fixed path handling to correctly resolve paths when dataroot starts with an environment variable.
- Updated task scheduling to more reliably honor the node order defined in the flowgraph.
- Tools:
- opensta: reimplemented task skipping logic for FPGA timing analysis.
This release introduces a major architectural overhaul to improve usability, flexibility, and error checking. These are changes that will require you to update all your existing scripts and workflows. This is a release towards reaching v1.0.0.
Major:
- The monolithic Chip object has been replaced by a set of target-specific Project classes (ASIC, FPGA, Sim, and Lint). This change provides better type-hinting, validation, and isolates settings for different targets.
- The Design class is now the primary interface for managing sources. The old .input() calls have been replaced by a more structured "fileset" system, allowing you to group related files (e.g., RTL, SDC, etc.) and toggle them easily.
- The command-line dashboard, which shows real-time progress of a run, is now on by default for interactive sessions. This can be controlled via .option.set_nodashboard(True).
- The sc command-line application has been removed in favor of using Python scripts directly for better reproducibility. The .clock() helper method has also been removed.
- While direct schema manipulation with .set() and .add() remains supported, we now recommend using a more "Pythonic" API with helper methods for common settings. This improves code readability and reduces errors from misspelled keys.
- All task drivers have been rewritten to the new API.
- The core API has been refactored to be more object-oriented. Instead of interacting with a single, monolithic Chip object, you now work with distinct objects that have clear responsibilities, such as Project and Design.
Minor:
- Significantly expanded testing coverage of user facing methods to better support checks for backwards compatibility.
Minor:
- Implemented support for sets in schema, denoted by {}.
- Fixed cache folder handling by appending unique ID to each folder to avoid name collisions.
- Command line dashboard shows siliconcompiler log when tool log is not available, output is now preserved on exit, and improved handling of multiple jobs layout.
- Added job.log to build directory to provide a file source for the logging as well as the terminal.
- Tools:
- slang: updated to slang v9.0.
Minor:
- Fixed handling of tool command line arguments to ensure they are all strings.
- Fixed handling of schema parameters with default fields beyond just value.
- Fixed handling of schema set parameters.
- Added time delays when packages are locked to avoid deadlocks.
- Moved package caching to Resolver class to allow for shared caching across schema sections.
- Modified return value of .getkeys() to return a sorted tuple of the keys.
Major:
- Removed support for Python 3.8.
- Changed node names from {step}{index} to {step}/{index} [Ciprian167].
Minor:
- Ensure only tool outputs are forwarded for skipped nodes.
- Tools:
- openroad: limit default max displacement for detailed placement optimizations.
- opensta: added support to gracefully handle empty input files.
- surfer: added support for surfer for waveform viewing [infinitymdm].
- vpr: added support to generate timing analysis files.
Major:
- Added .find_files and .check_filespaths functionality to BaseSchema.
- Added functionality to BaseSchema to allow reverse traversal of the schema.
- Removed support for paths containing environmental variables.
Minor:
- Added a values only mode to getdict to only return the values in the schema.
- Changes the log color in the commandline dashboard to white for better visibility.
Minor:
- Fixed bug in git submodule checkouts that left the incorrect version of the submodules checked out.
- Updated replay script to provide access to replay python scripts.
- Fixed bug in remote client that caused errors when running with hashing turned on.
- Updated [record,starttime] and [record,endtime] to include microseconds.
- Tools:
- slang: updated to version 8.1.
Minor:
- Removed flowgraph utility functions and replaced with calls to flowgraph class.
- Fixed manifest merging during remote run.
- Switched core scheduler code to be class instead of a collection methods.
- Attempt to determine if sudo is needed during sc-install and selectively apply it.
- Tools:
- opensta: added support for sdf reading.
- slang: use elaboration for linting to ensure user feedback.
- yosys: ensure cell areas are annotated before determining flattening.
Major:
- Core schema infrastructure rewritten to provide better testing and easier use when integration changes.
Minor:
- Added multi-job handling to command line dashboard and corrected handling of coloring in the log.
- Updated help, scopes, and default values in various keys int he schema.
- Allow packages to reference keys as data source.
- Speedup load time by selective loading large libraries.
- Added caching to flowgraph node handling to speed up common use cases.
- Tools:
- openroad: added gif of IR drop
- yosys: improved yosys-slang integration
- sv2v: allow runtime bypass via ['tool', 'sv2v', 'task', 'convert', 'var', 'skip_convert'] = True.
Major:
- Added a commandline dashboard to provide quick overview of a run. Accessible by adding .dashboard(type='cli') before calling run(). [Ciprian167]
Minor:
- Fixed sc-issue bug that caused the directory to have a partial name.
- Fixed replay.sh generator that caused an invalid bash script to get generated during issue creation.
- Tools:
- openroad: fixed metal fill script bug that prevented the metal fill from executing properly.
- opensta: added build scripts for opensta.
- yosys: added ability use yosys as a frontend for simple design.
Minor:
- Expanded tool builds to support arm architectures, where possible.
- Added tool group descriptions to sc-install -help.
- Tools:
- openroad: added repair design option to repair timing to reduce number of design rule violations.
- yosys: split the FPGA and ASIC synthesis flows.
Minor:
- Added github specific url resolver for downloading artifacts from github.
- Added support to specify step and index for sc-show and sc-dashboard.
Major:
- Changed default behavior of .summary to only print metrics summary, and added .snapshot to generate and display job summary image.
- Moved default verilog/system verilog frontend parser to Slang.
Minor:
- Changed examples to use a requirements.txt file for external dependencies.
- Tools:
- openroad: added timing histogram reports.
Minor:
- Fixed tcl manifest to correctly reflect the data types from the schema.
- Added end of install status message to sc-install.
- Tools:
- vpr: updated to v9.0 and added timing metrics extraction.
Major:
- Updated schema to support further advanced packaging.
Minor:
- Improved the generation of relay files to provide better insight when debugging.
- Disabled the generation of the html report by default.
- Fixed the handling of environmental variables to ensure they are all set at the start of the node execution.
- Made schema fields pernode and scope enums for easier handling.
- Tools:
- openroad: added global routing metrics recording.
- yosys: added support for loading slang and moosic plugins.
Major:
- Updated schema to support advanced packaging.
Minor:
- Added additional feedback during sc-install if user paths are not configured.
- Added support for generating screenshots and displaying .dot files.
- Tools:
- bluespec: fixed support for builtin modules.
- openroad: added macro placement constraints script option via ['tool', 'openroad', 'task', 'macro_placement', 'file', 'rtlmp_constraints'], automatic power grid blockage for pins via ['tool', 'openroad', 'task', 'power_grid', 'file', 'fixed_pin_keepout'].
Minor:
- Added helper function to allow tasks to handle clock information in a uniform method.
- Improved feedback on unsupported platforms during sc-install.
- Tools:
- bambu: updates to better handle platform and clock information.
- openroad: added recover_power option support.
- yosys: switch to use builtin keep_hierarchy to speedup compile times.
Major:
- Added color support to logger to allow for easier identification of warnings and errors.
Minor:
- Corrected install scripts for surelog and bambu.
- Fixed task setup order to avoid setting up tasks before the input nodes have been setup.
- Tools:
- slang: added elaboration task.
- yosys: added controls for separator used during flattening via ['tool', 'yosys', 'task', 'syn_asic', 'var', 'hierarchy_separator'].
Major:
- Added gtkwave show task to allow for vcd viewing.
- Removed enablement for conda-eda as this is no longer a supported project.
Minor:
- Allow passing a file path to .register_source to make it easier to handle retive path to the current file.
- Tools:
- openroad: added support for mutli-bit flipflop mapping and initial support for scan chain insertion, correct pin ordering from constraints.
Major:
- Added optional optimizer install extra to provide design optimization via google-vizier.
Minor:
- Added capability to import flist files via Chip.import_flist
- Added quiet loglevel to limit siliconcompiler logging to just the most critical information.
- Tools:
- openroad: switch to turn on new macro placer by default and correct handling of dont_use based on cell lists.
- yosys: add detailed metrics for cell counts, added support for handling clockgate insertion, simplified library file handling, and updated lec task.
- sta: added check_library task to help verify library setups for asic flows.
Major:
- Update asicflow and openroad driver to utilize smaller tasks. This is a breaking change from the previous implementation, but allows for better flow composability.
- Added ['record', 'pythonversion'] and ['record', 'pythonpackage'] to schema to allow to better environment and provenance tracking.
Minor:
- Reworked remote client into single class to allow for better job tracking locally.
- Updated logic for printing package access information to avoid repeating information when possible during a run.
- Tools:
- openroad: rework tasks into smaller tasks, add access to eliminate_dead_logic via ['tool', 'openroad', 'task', 'init_floorplan', 'var', 'remove_dead_logic']
- yosys: fix fpga synthesis to allow for better macro extraction and added ability to map tri-state buffers to asic synthesis.
Minor:
- Added option to limit size of emailed logs based on number of lines.
- Fixed handling of find_files in frontend tools
- Removed automatic error when FPGA is not loaded, as this can be handled by the tool/task drivers.
- Tools:
- vivado: update tool and task drivers to handle v2024.x and cleaned up output filenames.
Minor:
- Fixed dashboard handling of graph metrics when job history contains different sets.
- Tools:
- openroad: added reporting of module cell areas.
- vpr: added options to prevent crashing in designed with dangling ports.
Minor:
- Correct requirements to remove dashboard from python 3.9.7, due to issue in 3.9.7.
Minor:
- Added a support module to call for the manifest summary from python3 -m siliconcompiler.apps.utils.summarize -cfg <file>.
- Removed dashboard from python 3.9.7, due to issue in 3.9.7.
- Tools:
- openroad: updated metrics task to allow for verilog inputs.
Major:
- Added interposer_demo target and interposerflow and drcflow.
Minor:
- Added macroarea, padcellarea, and stdcellarea to metrics.
- Added footprint to datasheet in schema.
- Improved handling of sc-show and sc-dashboard when searching for manifests.
- Tools:
- openroad: added metrics task to collect metrics and an rdlroute task to perform floorplan initization and rdlrouting.
- klayout: fixed handling of fill during GDS generation.
Major:
- Added testing support for Python 3.13.
Minor:
- Added support to allow dashboard to auto select an open port if not specified.
- Tools:
- openroad: updated minimum version to support database markers and added support to save clock routing.
- surelog: ensure its require list is complete to properly detect changes in inputs.
- yosys: added screenshot task.
- klayout: added drc task to run DRC and convert_drc_db task to convert a klayout DRC database to openroads.
- vpr: added vpr_device_code support.
- magic: added support for uncompressing LEF files.
Major:
- Added sc-install utility application to help install tools on supported platforms.
Minor:
- Added rhel8 and rhel9 install scripts.
- Fixed bug in sc-install to account for different operating systems support.
- Ensure generated files .errors and .warnings are included in the metrics files.
- Tools:
- openroad: added options to control optimization (remove_synth_buffers, rsz_skip_setup_repair, and rsz_skip_hold_repair).
- xdm: added install script.
Major:
- Added sc-install utility application to help install tools on supported platforms.
Minor:
- Updated .input/.output to support receiving lists of files.
Major:
- Updated lambdapdk to add support for ihp130 and added demo target.
Minor:
- Tools:
- openroad: fix rotation handling in floorplanning.
- xyce: updated tool driver implementation.
- xdm: added xyce netlist conversion tool.
- openfpgaloader: removed non-functional implementation of openfpgaloader driver.
Major:
- Updated schema constraints to remove the use of the z-axis.
- Added schematic information to the schema.
- Changed component placement constraints to reference the lower left corner of the instance instead of the center.
Minor:
- Tools:
- openroad: updated to account for new placement and rotation constraints.
Minor:
- Fix path handling from commandline.
Major:
- Deprecated .load_target() in favor of .use().
- Added a -use option to the sc cli app to allow for loading of modules.
- Removed the chip input from libraries, pdks, fpga, etc to simplify setup.
Major:
- Moved surelog distribution to a separate package, making SiliconCompiler a pure python distribution.
Minor:
- Fixed handling of files and directories from the commandline interface.
Minor:
- Limit schema sections getting imported from libraries to speed up importing.
- Added verilator tool option to dvflow.
- General speedup improvements to schema object.
- Added find_node_file helper function to make accessing files in the node run directory as easy as possible.
Major:
- Removed -generate from sc-issue when creating a sharable testcase.
- Allow for recursive definitions of asic logic and macro libs from imported libraries.
Minor:
- smake improved handling of boolean arguments and arguments with default values.
- Corrected .swap_library to correctly swap libraries.
Minor:
- Added portname to pins in schema.
- Allow .swap_library to swap to None when removing a soft-library.
- Tools:
- openroad: fixed max density error to 100% and allow for multiple padring files to be loaded instead of just one.
Major:
- Added smake commandline tool to enable a Makefile like interface to make.py files.
- Removed the need to have local execution for remote jobs.
Minor:
- Added additional helper functionality to Library, PDK, and FPGA to better handle package registration.
Major:
- Removed ['option', 'copyall'] from schema.
- Updated ['option', 'loglevel'] to be lower case settings.
- Added ['record', 'toolexitcode] to track the tool exit code during execution.
- Added whitelist of directories to sc-remote to avoid uploaded directories not approved by the user.
- Add support to automatically add soft IP libraries to ['option', 'library'] if specified by the library developer.
Major:
- Removed ['option', 'mode'] and ['option', 'frontend'] from schema.
- Moved flowgraph runtime information into ['record', ...].
- Implemented a dynamic flowgraph that is capable to skipping nodes that are not needed, for example in the case that a design contains VHDL and not verilog, the verilog preprocessing is skipped.
- Split ['input', 'rtl', 'verilog'] into ['input', 'rtl', 'systemverilog'] and ['input', 'rtl', 'verilog'] to be better able to tell the file types apart.
- Added support for remote jobs to be marked as rejected.
Minor:
- Fixed issue generation for python only tasks.
- Added memory usage collection to python only tasks.
- Prevent Chip.collect() from collecting the user home directory and current build directory.
- Tools:
- slang: added warning and error metrics collection.
Major:
- Added slang tool with a lint task.
Minor:
- Corrected reading of previous run manifests to avoid loading manifests of nodes while will need to be rerun.
Major:
- Overhaul of Chip and Schema python APIs.
- Major Chip function changes: renamed register_package_source -> register_source and _getworkdir -> getworkdir.
- Major Schema function changes: renamed _has_field -> has_field, _remove -> remove, and _is_empty -> is_empty.
- Overhaul of Schema keys to clean unused keys and keys with overlapping purposes, major changes:
- Added metrics: drcs, setupskew, holdskew, and inverters.
- Removed the unit section of the Schema.
- Renamed ['option', 'cache'] -> ['option', 'cachedir'].
- Merged behavior of ['option', 'flowcontinue'] and ['option', 'continue'] into ['option', 'continue'].
- Removed ['option', 'relax'], ['option', 'trace'], ['option', 'skipall'], and ['option', 'skipchecks'].
- Add ability for job scheduler to send status update emails via ['option', 'scheduler', 'msgcontact'] and ['option', 'scheduler', 'msgevent'].
- Make resume the default behavior for runs, when a new run is needed ['option', 'clean'] can be set to True to delete the old run and start fresh.
- Add capability to copy an old run and resume from a specific node, allowing users to preserve the original run while avoiding rerunning previous steps.
Minor:
- Add option to write_flowgraph to add file annotations to graphs.
Major:
- Add support for docker based running through the use of the ['option', 'scheduler', 'name'] = 'docker'.
Minor:
- Ensure that exceptions are printed to log when they occur during runs.
- Added timestamp checking to resume checks when file hashes are not available.
- Implemented totaltime metric to track the total execution time of a run.
Minor:
- Expended daily CI testing to include all examples.
- Cleaned up python requirements to remove unused ones.
- Added verbose and require_reports flags to check_checklists to allow for better control of checklist checking.
Minor:
- Limit logging while generating testcases during run.
- Move sc-leflib to test requirements
Minor:
- Print stacktraces in logger to allow for better tracking of errors.
Minor:
- Ensure that global values can be access and modified in strict mode.
- Added build scripts to tools for ubuntu 24.04.
- Added synflow which runs yosys synthesis and opensta timing.
- In strict mode, only files declared by a task driver will be copied into the inputs directory.
- In the event of a tool failure the node will run to completion before erroring out to allow for additional data gathering.
- Renamed export step in asicflow to ensure proper graph handling.
Minor:
Minor:
Minor:
Minor:
Minor:
Minor:
Minor:
Minor:
Minor:
Minor:
Minor:
Minor:
Minor:
Minor:
Major:
Minor:
Minor:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Minor:
Major:
Major:
Minor:
Minor:
Minor:
Minor:
Major:
Minor:
Minor:
Minor:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Major:
Minor:
Note: Since there was no public release of version 0.8.0, this list summarizes all changes since 0.7.0.
Major:
Minor:
Major:
Minor:
Minor:
Major:
Minor:
Minor:
Major:
Minor:
Minor:
Major:
| Back | FazBrowse Home | New Git URL |