-
Notifications
You must be signed in to change notification settings - Fork 895
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'YosysHQ:main' into nix
- Loading branch information
Showing
30 changed files
with
524 additions
and
456 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
name: Documentation Report | ||
description: Report a problem with the Yosys documentation | ||
labels: ["pending-verification"] | ||
body: | ||
- type: markdown | ||
attributes: | ||
value: > | ||
If you have a general question, please ask it in the [Discussions](https://github.com/YosysHQ/yosys/discussions) area | ||
or join our [IRC Channel](https://web.libera.chat/#yosys) or [Community Slack](https://join.slack.com/t/yosyshq/shared_invite/zt-1aopkns2q-EiQ97BeQDt_pwvE41sGSuA). | ||
If you have found a bug in Yosys, or in building the documentation, | ||
please fill out the Bug Report issue form, this form is for problems | ||
with the live documentation on [Read the | ||
Docs](https://yosyshq.readthedocs.io/projects/yosys/). Please only | ||
report problems that appear on the latest version of the documentation. | ||
Please contact [YosysHQ GmbH](https://www.yosyshq.com/) if you need | ||
commercial support for Yosys. | ||
- type: input | ||
id: docs_url | ||
attributes: | ||
label: Link to page | ||
description: "Please provide a link to the page where the problem was found." | ||
placeholder: "e.g. https://yosyshq.readthedocs.io/projects/yosys/" | ||
validations: | ||
required: true | ||
|
||
- type: input | ||
id: build_number | ||
attributes: | ||
label: Build number | ||
description: "If possible, please provide the latest build number from https://readthedocs.org/projects/yosys/builds/." | ||
placeholder: "e.g. Build #24078236" | ||
validations: | ||
required: false | ||
|
||
- type: textarea | ||
id: problem | ||
attributes: | ||
label: Issue | ||
description: "Please describe what is incorrect, invalid, or missing." | ||
validations: | ||
required: true | ||
|
||
- type: textarea | ||
id: expected | ||
attributes: | ||
label: Expected | ||
description: "If applicable, please describe what should appear instead." | ||
validations: | ||
required: false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
name: Build environment setup | ||
description: Configure build env for Yosys builds | ||
runs: | ||
using: composite | ||
steps: | ||
- name: Install Linux Dependencies | ||
if: runner.os == 'Linux' | ||
shell: bash | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get install gperf build-essential bison flex libreadline-dev gawk tcl-dev libffi-dev git graphviz xdot pkg-config python3 libboost-system-dev libboost-python-dev libboost-filesystem-dev zlib1g-dev | ||
- name: Install macOS Dependencies | ||
if: runner.os == 'macOS' | ||
shell: bash | ||
run: | | ||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 brew install bison flex gawk libffi pkg-config bash autoconf | ||
- name: Linux runtime environment | ||
if: runner.os == 'Linux' | ||
shell: bash | ||
run: | | ||
echo "${{ github.workspace }}/.local/bin" >> $GITHUB_PATH | ||
echo "procs=$(nproc)" >> $GITHUB_ENV | ||
- name: macOS runtime environment | ||
if: runner.os == 'macOS' | ||
shell: bash | ||
run: | | ||
echo "${{ github.workspace }}/.local/bin" >> $GITHUB_PATH | ||
echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH | ||
echo "$(brew --prefix flex)/bin" >> $GITHUB_PATH | ||
echo "procs=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,181 @@ | ||
name: Build and run tests | ||
|
||
on: [push, pull_request] | ||
|
||
jobs: | ||
pre_job: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
should_skip: ${{ steps.skip_check.outputs.should_skip }} | ||
steps: | ||
- id: skip_check | ||
uses: fkirc/skip-duplicate-actions@v5 | ||
with: | ||
paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]' | ||
# cancel previous builds if a new commit is pushed | ||
cancel_others: 'true' | ||
# only run on push *or* pull_request, not both | ||
concurrent_skipping: 'same_content_newer' | ||
pre_docs_job: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
should_skip: ${{ steps.skip_check.outputs.should_skip }} | ||
steps: | ||
- id: skip_check | ||
uses: fkirc/skip-duplicate-actions@v5 | ||
with: | ||
paths_ignore: '["**/README.md"]' | ||
# cancel previous builds if a new commit is pushed | ||
cancel_others: 'true' | ||
# only run on push *or* pull_request, not both | ||
concurrent_skipping: 'same_content_newer' | ||
|
||
build-yosys: | ||
name: Reusable build | ||
runs-on: ${{ matrix.os }} | ||
needs: pre_docs_job | ||
if: needs.pre_docs_job.outputs.should_skip != 'true' | ||
env: | ||
CC: clang | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest, macos-latest] | ||
fail-fast: false | ||
steps: | ||
- name: Checkout Yosys | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: true | ||
|
||
- name: Setup environment | ||
uses: ./.github/actions/setup-build-env | ||
|
||
- name: Build | ||
shell: bash | ||
run: | | ||
mkdir build | ||
cd build | ||
make -f ../Makefile config-$CC | ||
make -f ../Makefile -j$procs | ||
- name: Log yosys-config output | ||
run: | | ||
./yosys-config || true | ||
- name: Compress build | ||
shell: bash | ||
run: | | ||
cd build | ||
tar -cvf ../build.tar share/ yosys yosys-* | ||
- name: Store build artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: build-${{ matrix.os }} | ||
path: build.tar | ||
retention-days: 1 | ||
|
||
test-yosys: | ||
name: Run tests | ||
runs-on: ${{ matrix.os }} | ||
needs: [build-yosys, pre_job] | ||
if: needs.pre_job.outputs.should_skip != 'true' | ||
env: | ||
CC: clang | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest, macos-latest] | ||
fail-fast: false | ||
steps: | ||
- name: Checkout Yosys | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup environment | ||
uses: ./.github/actions/setup-build-env | ||
|
||
- name: Get iverilog | ||
shell: bash | ||
run: | | ||
git clone https://github.com/steveicarus/iverilog.git | ||
cd iverilog | ||
echo "IVERILOG_GIT=$(git rev-parse HEAD)" >> $GITHUB_ENV | ||
- name: Cache iverilog | ||
id: cache-iverilog | ||
uses: actions/cache@v4 | ||
with: | ||
path: .local/ | ||
key: ${{ matrix.os }}-${{ env.IVERILOG_GIT }} | ||
|
||
- name: Build iverilog | ||
if: steps.cache-iverilog.outputs.cache-hit != 'true' | ||
shell: bash | ||
run: | | ||
mkdir -p ${{ github.workspace }}/.local/ | ||
cd iverilog | ||
autoconf | ||
CC=gcc CXX=g++ ./configure --prefix=${{ github.workspace }}/.local | ||
make -j$procs | ||
make install | ||
- name: Download build artifact | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: build-${{ matrix.os }} | ||
|
||
- name: Uncompress build | ||
shell: bash | ||
run: | ||
tar -xvf build.tar | ||
|
||
- name: Log yosys-config output | ||
run: | | ||
./yosys-config || true | ||
- name: Run tests | ||
shell: bash | ||
run: | | ||
make -j$procs test TARGETS= EXTRA_TARGETS= CONFIG=$CC | ||
- name: Report errors | ||
if: ${{ failure() }} | ||
shell: bash | ||
run: | | ||
find tests/**/*.err -print -exec cat {} \; | ||
test-docs: | ||
name: Run docs tests | ||
runs-on: ${{ matrix.os }} | ||
needs: [build-yosys, pre_docs_job] | ||
if: needs.pre_docs_job.outputs.should_skip != 'true' | ||
env: | ||
CC: clang | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest] | ||
fail-fast: false | ||
steps: | ||
- name: Checkout Yosys | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup environment | ||
uses: ./.github/actions/setup-build-env | ||
|
||
- name: Download build artifact | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: build-${{ matrix.os }} | ||
|
||
- name: Uncompress build | ||
shell: bash | ||
run: | ||
tar -xvf build.tar | ||
|
||
- name: Log yosys-config output | ||
run: | | ||
./yosys-config || true | ||
- name: Run tests | ||
shell: bash | ||
run: | | ||
make -C docs test -j${{ env.procs }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
name: Compiler testing | ||
|
||
on: [push, pull_request] | ||
|
||
jobs: | ||
pre_job: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
should_skip: ${{ steps.skip_check.outputs.should_skip }} | ||
steps: | ||
- id: skip_check | ||
uses: fkirc/skip-duplicate-actions@v5 | ||
with: | ||
paths_ignore: '["**/README.md", "docs/**", "guidelines/**"]' | ||
# cancel previous builds if a new commit is pushed | ||
cancel_others: 'true' | ||
# only run on push *or* pull_request, not both | ||
concurrent_skipping: 'same_content_newer' | ||
|
||
test-compile: | ||
runs-on: ${{ matrix.os }} | ||
needs: pre_job | ||
if: needs.pre_job.outputs.should_skip != 'true' | ||
env: | ||
CXXFLAGS: ${{ startsWith(matrix.compiler, 'gcc') && '-Wp,-D_GLIBCXX_ASSERTIONS' || ''}} | ||
CC_SHORT: ${{ startsWith(matrix.compiler, 'gcc') && 'gcc' || 'clang' }} | ||
strategy: | ||
matrix: | ||
os: | ||
- ubuntu-latest | ||
compiler: | ||
# oldest supported | ||
- 'clang-14' | ||
- 'gcc-10' | ||
# newest | ||
- 'clang' | ||
- 'gcc' | ||
include: | ||
# macOS | ||
- os: macos-13 | ||
compiler: 'clang' | ||
# oldest clang not available on ubuntu-latest | ||
- os: ubuntu-22.04 | ||
compiler: 'clang-11' | ||
fail-fast: false | ||
steps: | ||
- name: Checkout Yosys | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: true | ||
|
||
- name: Setup environment | ||
uses: ./.github/actions/setup-build-env | ||
|
||
- name: Setup Cpp | ||
uses: aminya/setup-cpp@v1 | ||
with: | ||
compiler: ${{ matrix.compiler }} | ||
|
||
- name: Tool versions | ||
shell: bash | ||
run: | | ||
$CC --version | ||
$CXX --version | ||
# minimum standard | ||
- name: Build C++11 | ||
shell: bash | ||
run: | | ||
make config-$CC_SHORT | ||
make -j$procs CXXSTD=c++11 compile-only | ||
# maximum standard, only on newest compilers | ||
- name: Build C++20 | ||
if: ${{ matrix.compiler == 'clang' || matrix.compiler == 'gcc'}} | ||
shell: bash | ||
run: | | ||
make config-$CC_SHORT | ||
make -j$procs CXXSTD=c++20 compile-only |
Oops, something went wrong.