Skip to content
Merged
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .abc.config
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# SPDX-FileCopyrightText: 2026 Accemic Technologies GmbH
# SPDX-License-Identifier: ISC
#
# abc-flow project configuration for CEDARtools.TraceEncoder.
# abc-flow project configuration for CEDARtools.TraceEncoder (CTTE).
#
# Pins the Vivado version used for simulation and implementation (2022.1).
# Update these together when the project moves to a new tool version.

sim_backend=verilator
vivado_sim=2022.1
vivado_impl=2022.1
vivado_impl=2022.1
74 changes: 67 additions & 7 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# SPDX-FileCopyrightText: 2026 Accemic Technologies GmbH
# SPDX-License-Identifier: ISC
#
# Canonical whitespace conventions for this repository.
#
# Indentation is by TAB, rendered four columns wide, for everything that is
# written by hand in a hardware-design idiom: SystemVerilog, shell, Make,
# constraints. That is what the sources have always used and what the
# per-file vim / Emacs modelines declare, so the two can never disagree.
# Alignment *within* a line (port lists, comment columns) uses spaces, so a
# file reads the same at any tab width.
#
# Languages whose ecosystems mandate spaces keep spaces: Python (PEP 8),
# YAML (tabs are illegal), JSON, and the prose formats.
#
# Generated files (rtl/pkg/ct_cs_cpuif*.sv, tests/lib/ct_cs_cpuif_wb_helper.sv)
# follow their generator's style — never reformat them, rerun `make rdl`.

root = true

Expand All @@ -8,20 +23,65 @@ charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2
indent_style = tab
tab_width = 4
indent_size = 4

[*.{sv,svh,v,vh}]
indent_size = 2
indent_style = tab
tab_width = 4

[*.rdl]
indent_size = 2
[*.{sh,bash}]
indent_style = tab
tab_width = 4

[Makefile]
indent_style = tab
tab_width = 4

[*.{md,markdown}]
trim_trailing_whitespace = false
[*.{xdc,f}]
indent_style = tab
tab_width = 4

[*.abc]
indent_style = space
indent_size = 4

[*.py]
indent_style = space
indent_size = 4

[*.{tcl,rdl}]
indent_style = space
indent_size = 4

[*.{yml,yaml}]
indent_style = space
indent_size = 2

[*.json]
indent_style = space
indent_size = 2

[*.adoc]
indent_style = space
indent_size = 2

# Markdown keeps trailing whitespace: two trailing spaces are a hard line
# break, and stripping them silently reflows the rendered text.
[*.{md,markdown}]
indent_style = space
indent_size = 2
trim_trailing_whitespace = false

# Verbatim third-party text — never reformatted.
[LICENSES/**]
insert_final_newline = false
trim_trailing_whitespace = false

[third_party/**]
indent_style = unset
indent_size = unset
tab_width = unset
trim_trailing_whitespace = false
insert_final_newline = false
16 changes: 8 additions & 8 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
# GitHub CODEOWNERS — review routing.
# Human-readable maintainer list lives in MAINTAINERS.md.
#
# Owners: @accemic (company profile) and @albertschulz (main developer).
# Owners: @accemic (company profile), @albertschulz and @accemic-weiss (maintainers).

# Default — every change needs a maintainer review.
* @accemic @albertschulz
* @accemic @albertschulz @accemic-weiss

# Legal / CI surface — extra care.
/LICENSE.md @accemic @albertschulz
/LICENSES/ @accemic @albertschulz
/.github/workflows/ @accemic @albertschulz
/.github/CODEOWNERS @accemic @albertschulz
/CITATION.cff @accemic @albertschulz
/.abc.config @accemic @albertschulz
/LICENSE.md @accemic @albertschulz @accemic-weiss
/LICENSES/ @accemic @albertschulz @accemic-weiss
/.github/workflows/ @accemic @albertschulz @accemic-weiss
/.github/CODEOWNERS @accemic @albertschulz @accemic-weiss
/CITATION.cff @accemic @albertschulz @accemic-weiss
/.abc.config @accemic @albertschulz @accemic-weiss
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ SPDX-License-Identifier: CC-BY-4.0

## Environment

- CEDARtools.TraceEncoder commit / version:
- CTTE commit / version:
- Vivado version:
- `abc` version:
- PeakRDL version (if RDL-related):
Expand Down
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ SPDX-License-Identifier: CC-BY-4.0
- [ ] If `rdl/ct_cs_cpuif.rdl` changed, `make rdl` was re-run and the
regenerated `rtl/pkg/ct_cs_cpuif*.sv` + `tests/lib/ct_cs_cpuif_wb_helper.sv`
are committed in the same PR (likewise `make rdl-soc` →
`examples/tgc5b_soc/pkg/ct_soc_regs*.sv`)
`examples/kv260/common/tgc5b/pkg/ct_soc_regs*.sv`)
- [ ] CLA agreed (see [CONTRIBUTING.md](../CONTRIBUTING.md))

## Notes for reviewers
Expand Down
84 changes: 84 additions & 0 deletions .github/actions/setup-formal/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# SPDX-FileCopyrightText: 2026 Accemic Technologies GmbH
# SPDX-License-Identifier: ISC

name: Set up the formal toolchain
description: >-
Install the pinned YosysHQ OSS CAD Suite and sv2v, and export
OSS_CAD_SUITE / SV2V_HOME so formal/common/env.sh picks them up.
Both are public tarballs -- the formal gates need no EDA licence.

inputs:
oss-cad-suite-version:
description: OSS CAD Suite release tag (a date, e.g. 2026-08-02)
required: false
# The build formal/README.md records its results against. Bump it
# deliberately and re-read that README's timing table -- solver versions
# move proof times, and an unbounded proof that starts timing out looks
# exactly like a property regression.
default: "2026-08-02"
sv2v-version:
description: sv2v release tag
required: false
default: "v0.0.13"

runs:
using: composite
steps:
- name: Cache the formal toolchain
id: cache
uses: actions/cache@v4
with:
path: |
~/.local/oss-cad-suite
~/.local/sv2v
key: formal-${{ runner.os }}-oss${{ inputs.oss-cad-suite-version }}-sv2v${{ inputs.sv2v-version }}

- name: Download OSS CAD Suite ${{ inputs.oss-cad-suite-version }}
if: steps.cache.outputs.cache-hit != 'true'
shell: bash
run: |
set -euo pipefail
ver='${{ inputs.oss-cad-suite-version }}'
# Asset name is the tag with the dashes removed: 2026-08-02 -> 20260802.
stamp="${ver//-/}"
url="https://github.com/YosysHQ/oss-cad-suite-build/releases/download/${ver}/oss-cad-suite-linux-x64-${stamp}.tgz"
echo "fetching $url"
curl -fsSL "$url" -o /tmp/oss-cad-suite.tgz
mkdir -p "$HOME/.local"
# The tarball unpacks to a top-level oss-cad-suite/ directory.
tar -xzf /tmp/oss-cad-suite.tgz -C "$HOME/.local"

- name: Download sv2v ${{ inputs.sv2v-version }}
if: steps.cache.outputs.cache-hit != 'true'
shell: bash
run: |
set -euo pipefail
ver='${{ inputs.sv2v-version }}'
url="https://github.com/zachjs/sv2v/releases/download/${ver}/sv2v-Linux.zip"
echo "fetching $url"
curl -fsSL "$url" -o /tmp/sv2v.zip
rm -rf /tmp/sv2v-unzip && mkdir -p /tmp/sv2v-unzip
unzip -q /tmp/sv2v.zip -d /tmp/sv2v-unzip
mkdir -p "$HOME/.local/sv2v"
# The zip holds sv2v-Linux/sv2v; SV2V_HOME must be the directory
# CONTAINING the binary, which is what formal/common/env.sh probes for.
find /tmp/sv2v-unzip -name sv2v -type f -exec cp {} "$HOME/.local/sv2v/sv2v" \;
chmod +x "$HOME/.local/sv2v/sv2v"

- name: Export the toolchain locations
shell: bash
run: |
set -euo pipefail
echo "OSS_CAD_SUITE=$HOME/.local/oss-cad-suite" >> "$GITHUB_ENV"
echo "SV2V_HOME=$HOME/.local/sv2v" >> "$GITHUB_ENV"

- name: Prove the toolchain runs
shell: bash
run: |
set -euo pipefail
# A formal job that starts without a working solver reports property
# failures about an encoder nobody checked. Fail here instead.
export PATH="$HOME/.local/oss-cad-suite/bin:$HOME/.local/sv2v:$PATH"
yosys -V
sby --help >/dev/null
sv2v --version
Loading
Loading