Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
## Next release
## 0.6.10

- Improved `Logic.replicate(1)` and same-width `signExtend` to return the original signal, eliminating redundant replication modules and generated SystemVerilog (<https://github.com/intel/rohd/pull/689>).
- Improved simulation performance and generated outputs by avoiding module creation for four-state-safe operations involving `Const`s, zero shifts, and muxes with constant controls (<https://github.com/intel/rohd/issues/429>).
- Enforced that `Const` values cannot be changed through `put` or `inject`, including through another `Logic` driven by a `Const` (<https://github.com/intel/rohd/issues/486>).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead: - Breaking: Const values can no longer be changed through put or inject, including through another Logic driven by a Const; these attempts now throw UnassignableException. Use a non-Const Logic for mutable testbench or simulation drivers (#486).

- Added per-`Const` preferred radix control for generated literals, normalized `Const` names to reflect their displayed radix, and enhanced `LogicValue.toRadixString` to omit its width and radix decorator or digit separators (<https://github.com/intel/rohd/issues/601>).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

- Fixed a bug to prevent stack overflows when synthesizing designs with combinational loops (<https://github.com/intel/rohd/pull/680>).
- Improved generated SystemVerilog to collapse contiguous partial array and range assignments into packed slice assignments when safe (<https://github.com/intel/rohd/pull/676>).
- Added per-direction configuration of explicit or implicit object and data types for generated SystemVerilog ports. Defaults preserve the existing `input logic`, `output logic`, and `inout wire` declarations (<https://github.com/intel/rohd/pull/678>).
- Added per-direction configuration of explicit or implicit object and data types for generated SystemVerilog ports. Defaults preserve the existing `input logic`, `output logic`, and `inout wire` declarations (<https://github.com/intel/rohd/pull/678>, <https://github.com/intel/rohd/pull/687>).
- Significantly enhanced ROHD DevTools with embedded and standalone VM connections, live hierarchy and signal inspection, filtering, snapshots and export, and cross-probe integration (<https://github.com/intel/rohd/pull/665>).
- Improved `Logic.getRange` and `slice` on filled `Const`s to return direct constants instead of constructing `BusSubset` modules (<https://github.com/intel/rohd/pull/677>).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Significantly enhanced ROHD DevTools with embedded and standalone VM connections, live hierarchy and signal inspection, filtering, snapshots and export, and cross-probe integration (Devtools #665).
  • Added the rohd_hierarchy package for compact hierarchy dictionaries, canonical occurrence addresses, hierarchy search, and netlist adapters (ROHD Hierarchy: an API for compact, generic traversal of a remote design #653).
  • Added the ROHD VS Code extension with context-aware snippets, Dart Tooling Daemon integration, and source navigation for cross-probing from ROHD viewers (Rohd extension #670).

- Improved generated SystemVerilog for swizzles to compact adjacent bit selections into legal slice expressions (<https://github.com/intel/rohd/pull/674>).
- Improved generated SystemVerilog to collapse a variety of intermediate `LogicArray`s and net buses (e.g. from bit-blasting, aggregate connections, `assignSubset`) into inline concatenations on their consuming connections, eliminating unnecessary intermediate declarations, `assign`s, and `net_connect`s when it is safe to do so (<https://github.com/intel/rohd/pull/663>).
- Centralized synthesizer naming so output names in different contexts are more consistent (<https://github.com/intel/rohd/pull/652>).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead: - Centralized synthesizer naming so output names in different contexts are more consistent. Generated SystemVerilog signal and instance names may change in designs with name collisions, repeated constants, or mergeable intermediate signals, so tests or downstream scripts that match exact generated identifiers may need updates (#652).


## 0.6.9

Expand Down
2 changes: 1 addition & 1 deletion lib/src/utilities/config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@
/// A utility for ROHD configuration file.
class Config {
/// The version of the ROHD framework.
static const String version = '0.6.9';
static const String version = '0.6.10';
}
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: rohd
version: 0.6.9
version: 0.6.10
description: The Rapid Open Hardware Development (ROHD) framework, a framework for describing and verifying hardware.
homepage: https://intel.github.io/rohd-website
repository: https://github.com/intel/rohd
Expand Down
109 changes: 109 additions & 0 deletions tool/prepare_release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
#!/bin/bash

# Copyright (C) 2026 Intel Corporation
# SPDX-License-Identifier: BSD-3-Clause
#
# prepare_release.sh
# Prepare ROHD for a release without publishing it.
#
# Usage (from repo root):
# tool/prepare_release.sh <version>
#
# 2026 July 30
# Author: Max Korbel <max.korbel@intel.com>

set -euo pipefail

# Require an explicit stable semantic version so an accidental invocation cannot
# mutate release metadata with an incomplete or pre-release version.
if [[ $# -ne 1 || ! "$1" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Usage: $0 <major.minor.patch>" >&2
exit 2
fi

# Resolve all paths and source provenance before changing the working tree.
readonly VERSION="$1"
readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
readonly REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
readonly ARTIFACT_REPOSITORY="${ROHD_ARTIFACT_REPOSITORY:-https://github.com/intel/rohd.git}"
readonly ARTIFACT_BRANCH="${ROHD_ARTIFACT_BRANCH:-artifacts}"
readonly SOURCE_COMMIT="$(git -C "$REPO_ROOT" rev-parse HEAD)"
readonly TEMP_DIR="$(mktemp -d)"

cleanup() {
rm -rf "$TEMP_DIR"
}
trap cleanup EXIT

cd "$REPO_ROOT"

# Fail before making release changes if earlier tests left temporary outputs.
tool/gh_actions/check_tmp_test.sh

# Fetch the official artifact build without depending on a locally named remote.
echo "Fetching the ROHD DevTools build from $ARTIFACT_REPOSITORY ($ARTIFACT_BRANCH)..."
git fetch --quiet --no-tags "$ARTIFACT_REPOSITORY" "refs/heads/$ARTIFACT_BRANCH"
readonly ARTIFACT_COMMIT="$(git rev-parse FETCH_HEAD)"
readonly ARTIFACT_SOURCE_COMMIT="$(git rev-parse "$ARTIFACT_COMMIT^")"

# The artifact workflow creates its commit directly on top of the source commit.
# Refuse a stale build rather than packaging DevTools from a different revision.
if [[ "$ARTIFACT_SOURCE_COMMIT" != "$SOURCE_COMMIT" ]]; then
echo "The DevTools artifact is stale." >&2
echo " Current source: $SOURCE_COMMIT" >&2
echo " Artifact source: $ARTIFACT_SOURCE_COMMIT" >&2
echo "Wait for the artifact workflow for the current source commit to finish." >&2
exit 1
fi

# Extract into a temporary directory and smoke-test before replacing the local
# release payload, leaving the existing build intact if validation fails.
git cat-file -e "$ARTIFACT_COMMIT:extension/devtools/build/index.html"
git cat-file -e "$ARTIFACT_COMMIT:extension/devtools/config.yaml"
git archive "$ARTIFACT_COMMIT" extension/devtools | tar -x -C "$TEMP_DIR"

tool/gh_actions/devtool/test_devtools_install.sh \
"$TEMP_DIR/extension/devtools"

# Install the tested artifact. The web build is ignored by Git but included in
# the published package through the exception in .pubignore.
rm -rf extension/devtools/build
mkdir -p extension/devtools
cp -R "$TEMP_DIR/extension/devtools/build" extension/devtools/build
cp "$TEMP_DIR/extension/devtools/config.yaml" extension/devtools/config.yaml

# Synchronize every framework version declaration and promote the pending
# changelog section to the requested release number.
sed -i "0,/^version: .*/s//version: $VERSION/" pubspec.yaml
sed -i \
"0,/static const String version = '.*';/s//static const String version = '$VERSION';/" \
lib/src/utilities/config.dart

if grep -q "^## $VERSION$" CHANGELOG.md; then
:
elif grep -q '^## Next release$' CHANGELOG.md; then
sed -i "0,/^## Next release$/s//## $VERSION/" CHANGELOG.md
else
echo "CHANGELOG.md needs a '## Next release' or '## $VERSION' heading." >&2
exit 1
fi

if ! grep -q "^version: $VERSION$" pubspec.yaml ||
! grep -q "static const String version = '$VERSION';" \
lib/src/utilities/config.dart; then
echo "Failed to synchronize release version $VERSION." >&2
exit 1
fi

# Run the same checks used for normal development and reject malformed diffs.
# Publishing remains a separate, intentionally manual operation.
tool/run_checks.sh
git diff --check

cat <<EOF

ROHD $VERSION is prepared from source commit $SOURCE_COMMIT.
DevTools artifact commit: $ARTIFACT_COMMIT

Review the changelog and working tree before performing the manual publish step.
EOF
Loading