mirror of
https://github.com/YosysHQ/yosys
synced 2025-06-24 23:03:42 +00:00
Updates from YosysHQ
This commit is contained in:
parent
8841cc4d76
commit
da8c1955af
16 changed files with 214 additions and 133 deletions
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
5
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
_What are the reasons/motivation for this change?_
|
||||||
|
|
||||||
|
_Explain how this is achieved._
|
||||||
|
|
||||||
|
_If applicable, please suggest to reviewers how they can test the change._
|
3
.github/workflows/codeql.yml
vendored
3
.github/workflows/codeql.yml
vendored
|
@ -15,7 +15,8 @@ jobs:
|
||||||
|
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v3
|
uses: github/codeql-action/init@v3
|
||||||
with:
|
with:
|
||||||
|
|
18
.github/workflows/emcc.yml
vendored
18
.github/workflows/emcc.yml
vendored
|
@ -1,18 +0,0 @@
|
||||||
name: Emscripten Build
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
emcc:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: mymindstorm/setup-emsdk@v14
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Build
|
|
||||||
run: |
|
|
||||||
make config-emcc
|
|
||||||
make YOSYS_VER=latest
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: yosysjs
|
|
||||||
path: yosysjs-latest.zip
|
|
83
.github/workflows/extra-builds.yml
vendored
Normal file
83
.github/workflows/extra-builds.yml
vendored
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
name: Test extra build flows
|
||||||
|
|
||||||
|
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'
|
||||||
|
|
||||||
|
vs-prep:
|
||||||
|
name: Prepare Visual Studio build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [pre_job]
|
||||||
|
if: needs.pre_job.outputs.should_skip != 'true'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
- name: Build
|
||||||
|
run: make vcxsrc YOSYS_VER=latest
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: vcxsrc
|
||||||
|
path: yosys-win32-vcxsrc-latest.zip
|
||||||
|
|
||||||
|
vs-build:
|
||||||
|
name: Visual Studio build
|
||||||
|
runs-on: windows-2019
|
||||||
|
needs: [vs-prep, pre_job]
|
||||||
|
if: needs.pre_job.outputs.should_skip != 'true'
|
||||||
|
steps:
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: vcxsrc
|
||||||
|
path: .
|
||||||
|
- name: unzip
|
||||||
|
run: unzip yosys-win32-vcxsrc-latest.zip
|
||||||
|
- name: setup-msbuild
|
||||||
|
uses: microsoft/setup-msbuild@v2
|
||||||
|
- name: MSBuild
|
||||||
|
working-directory: yosys-win32-vcxsrc-latest
|
||||||
|
run: msbuild YosysVS.sln /p:PlatformToolset=v142 /p:Configuration=Release /p:WindowsTargetPlatformVersion=10.0.17763.0
|
||||||
|
|
||||||
|
wasi-build:
|
||||||
|
name: WASI build
|
||||||
|
needs: pre_job
|
||||||
|
if: needs.pre_job.outputs.should_skip != 'true'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
WASI_SDK=wasi-sdk-19.0
|
||||||
|
WASI_SDK_URL=https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-19/wasi-sdk-19.0-linux.tar.gz
|
||||||
|
if ! [ -d ${WASI_SDK} ]; then curl -L ${WASI_SDK_URL} | tar xzf -; fi
|
||||||
|
|
||||||
|
mkdir -p build
|
||||||
|
cat > build/Makefile.conf <<END
|
||||||
|
export PATH := $(pwd)/${WASI_SDK}/bin:${PATH}
|
||||||
|
WASI_SYSROOT := $(pwd)/${WASI_SDK}/share/wasi-sysroot
|
||||||
|
|
||||||
|
CONFIG := wasi
|
||||||
|
PREFIX := /
|
||||||
|
|
||||||
|
ENABLE_TCL := 0
|
||||||
|
ENABLE_READLINE := 0
|
||||||
|
ENABLE_PLUGINS := 0
|
||||||
|
ENABLE_ZLIB := 0
|
||||||
|
END
|
||||||
|
|
||||||
|
make -C build -f ../Makefile CXX=clang -j$(nproc)
|
20
.github/workflows/test-docs.yml
vendored
20
.github/workflows/test-docs.yml
vendored
|
@ -6,7 +6,22 @@ on:
|
||||||
- main
|
- main
|
||||||
|
|
||||||
jobs:
|
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:
|
||||||
|
# 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-docs:
|
test-docs:
|
||||||
|
needs: pre_job
|
||||||
|
if: needs.pre_job.outputs.should_skip != 'true'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
|
@ -28,8 +43,9 @@ jobs:
|
||||||
echo "procs=$(nproc)" >> $GITHUB_ENV
|
echo "procs=$(nproc)" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Checkout Yosys
|
- name: Checkout Yosys
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
- name: Build yosys
|
- name: Build yosys
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
|
19
.github/workflows/test-linux.yml
vendored
19
.github/workflows/test-linux.yml
vendored
|
@ -3,7 +3,23 @@ name: Build and run tests (Linux)
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
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-linux:
|
test-linux:
|
||||||
|
needs: pre_job
|
||||||
|
if: needs.pre_job.outputs.should_skip != 'true'
|
||||||
runs-on: ${{ matrix.os.id }}
|
runs-on: ${{ matrix.os.id }}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
|
@ -80,7 +96,8 @@ jobs:
|
||||||
|
|
||||||
- name: Checkout Yosys
|
- name: Checkout Yosys
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
- name: Get iverilog
|
- name: Get iverilog
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
|
19
.github/workflows/test-macos.yml
vendored
19
.github/workflows/test-macos.yml
vendored
|
@ -3,7 +3,23 @@ name: Build and run tests (macOS)
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
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-macos:
|
test-macos:
|
||||||
|
needs: pre_job
|
||||||
|
if: needs.pre_job.outputs.should_skip != 'true'
|
||||||
runs-on: ${{ matrix.os.id }}
|
runs-on: ${{ matrix.os.id }}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
|
@ -36,7 +52,8 @@ jobs:
|
||||||
|
|
||||||
- name: Checkout Yosys
|
- name: Checkout Yosys
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
- name: Get iverilog
|
- name: Get iverilog
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
|
20
.github/workflows/test-verific.yml
vendored
20
.github/workflows/test-verific.yml
vendored
|
@ -3,14 +3,32 @@ name: Build and run tests with Verific (Linux)
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
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"]'
|
||||||
|
# don't cancel previous builds
|
||||||
|
cancel_others: 'true'
|
||||||
|
# only run on push *or* pull_request, not both
|
||||||
|
concurrent_skipping: 'same_content_newer'
|
||||||
|
# we have special actions when running on main, so this should be off
|
||||||
|
skip_after_successful_duplicate: 'false'
|
||||||
|
|
||||||
test-verific:
|
test-verific:
|
||||||
|
needs: pre_job
|
||||||
|
if: needs.pre_job.outputs.should_skip != 'true'
|
||||||
runs-on: [self-hosted, linux, x64]
|
runs-on: [self-hosted, linux, x64]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Yosys
|
- name: Checkout Yosys
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
submodules: true
|
||||||
- name: Runtime environment
|
- name: Runtime environment
|
||||||
run: |
|
run: |
|
||||||
echo "procs=$(nproc)" >> $GITHUB_ENV
|
echo "procs=$(nproc)" >> $GITHUB_ENV
|
||||||
|
|
1
.github/workflows/version.yml
vendored
1
.github/workflows/version.yml
vendored
|
@ -13,6 +13,7 @@ jobs:
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
submodules: true
|
||||||
- name: Take last commit
|
- name: Take last commit
|
||||||
id: log
|
id: log
|
||||||
run: echo "message=$(git log --no-merges -1 --oneline)" >> $GITHUB_OUTPUT
|
run: echo "message=$(git log --no-merges -1 --oneline)" >> $GITHUB_OUTPUT
|
||||||
|
|
31
.github/workflows/vs.yml
vendored
31
.github/workflows/vs.yml
vendored
|
@ -1,31 +0,0 @@
|
||||||
name: Visual Studio Build
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
yosys-vcxsrc:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Build
|
|
||||||
run: make vcxsrc YOSYS_VER=latest
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: vcxsrc
|
|
||||||
path: yosys-win32-vcxsrc-latest.zip
|
|
||||||
|
|
||||||
build:
|
|
||||||
runs-on: windows-2019
|
|
||||||
needs: yosys-vcxsrc
|
|
||||||
steps:
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: vcxsrc
|
|
||||||
path: .
|
|
||||||
- name: unzip
|
|
||||||
run: unzip yosys-win32-vcxsrc-latest.zip
|
|
||||||
- name: setup-msbuild
|
|
||||||
uses: microsoft/setup-msbuild@v1
|
|
||||||
- name: MSBuild
|
|
||||||
working-directory: yosys-win32-vcxsrc-latest
|
|
||||||
run: msbuild YosysVS.sln /p:PlatformToolset=v142 /p:Configuration=Release /p:WindowsTargetPlatformVersion=10.0.17763.0
|
|
30
.github/workflows/wasi.yml
vendored
30
.github/workflows/wasi.yml
vendored
|
@ -1,30 +0,0 @@
|
||||||
name: WASI Build
|
|
||||||
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
wasi:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Build
|
|
||||||
run: |
|
|
||||||
WASI_SDK=wasi-sdk-19.0
|
|
||||||
WASI_SDK_URL=https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-19/wasi-sdk-19.0-linux.tar.gz
|
|
||||||
if ! [ -d ${WASI_SDK} ]; then curl -L ${WASI_SDK_URL} | tar xzf -; fi
|
|
||||||
|
|
||||||
mkdir -p build
|
|
||||||
cat > build/Makefile.conf <<END
|
|
||||||
export PATH := $(pwd)/${WASI_SDK}/bin:${PATH}
|
|
||||||
WASI_SYSROOT := $(pwd)/${WASI_SDK}/share/wasi-sysroot
|
|
||||||
|
|
||||||
CONFIG := wasi
|
|
||||||
PREFIX := /
|
|
||||||
|
|
||||||
ENABLE_TCL := 0
|
|
||||||
ENABLE_READLINE := 0
|
|
||||||
ENABLE_PLUGINS := 0
|
|
||||||
ENABLE_ZLIB := 0
|
|
||||||
END
|
|
||||||
|
|
||||||
make -C build -f ../Makefile CXX=clang -j$(nproc)
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -18,7 +18,6 @@ __pycache__
|
||||||
/coverage.info
|
/coverage.info
|
||||||
/coverage_html
|
/coverage_html
|
||||||
/Makefile.conf
|
/Makefile.conf
|
||||||
/abc
|
|
||||||
/viz.js
|
/viz.js
|
||||||
/yosys
|
/yosys
|
||||||
/yosys.exe
|
/yosys.exe
|
||||||
|
@ -46,6 +45,7 @@ __pycache__
|
||||||
/tests/unit/bintest/
|
/tests/unit/bintest/
|
||||||
/tests/unit/objtest/
|
/tests/unit/objtest/
|
||||||
/tests/ystests
|
/tests/ystests
|
||||||
|
/build
|
||||||
|
|
||||||
# Created during tests
|
# Created during tests
|
||||||
/tests/arch/quicklogic/pp3/run-test.mk
|
/tests/arch/quicklogic/pp3/run-test.mk
|
||||||
|
|
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -1,3 +1,6 @@
|
||||||
[submodule "verific"]
|
[submodule "verific"]
|
||||||
path = verific
|
path = verific
|
||||||
url = git@github.com:silimate/verific.git
|
url = git@github.com:silimate/verific.git
|
||||||
|
[submodule "abc"]
|
||||||
|
path = abc
|
||||||
|
url = https://github.com/YosysHQ/abc
|
||||||
|
|
80
Makefile
80
Makefile
|
@ -141,7 +141,7 @@ LIBS += -lrt
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
YOSYS_VER := 0.41+0
|
YOSYS_VER := 0.41+8
|
||||||
|
|
||||||
# Note: We arrange for .gitcommit to contain the (short) commit hash in
|
# Note: We arrange for .gitcommit to contain the (short) commit hash in
|
||||||
# tarballs generated with git-archive(1) using .gitattributes. The git repo
|
# tarballs generated with git-archive(1) using .gitattributes. The git repo
|
||||||
|
@ -159,15 +159,6 @@ OBJS = kernel/version_$(GIT_REV).o
|
||||||
bumpversion:
|
bumpversion:
|
||||||
sed -i "/^YOSYS_VER := / s/+[0-9][0-9]*$$/+`git log --oneline c1ad377.. | wc -l`/;" Makefile
|
sed -i "/^YOSYS_VER := / s/+[0-9][0-9]*$$/+`git log --oneline c1ad377.. | wc -l`/;" Makefile
|
||||||
|
|
||||||
# set 'ABCREV = default' to use abc/ as it is
|
|
||||||
#
|
|
||||||
# Note: If you do ABC development, make sure that 'abc' in this directory
|
|
||||||
# is just a symlink to your actual ABC working directory, as 'make mrproper'
|
|
||||||
# will remove the 'abc' directory and you do not want to accidentally
|
|
||||||
# delete your work on ABC..
|
|
||||||
ABCREV = 237d813
|
|
||||||
ABCPULL = 1
|
|
||||||
ABCURL ?= https://github.com/YosysHQ/abc
|
|
||||||
ABCMKARGS = CC="$(CXX)" CXX="$(CXX)" ABC_USE_LIBSTDCXX=1 ABC_USE_NAMESPACE=abc VERBOSE=$(Q)
|
ABCMKARGS = CC="$(CXX)" CXX="$(CXX)" ABC_USE_LIBSTDCXX=1 ABC_USE_NAMESPACE=abc VERBOSE=$(Q)
|
||||||
|
|
||||||
# set ABCEXTERNAL = <abc-command> to use an external ABC instance
|
# set ABCEXTERNAL = <abc-command> to use an external ABC instance
|
||||||
|
@ -795,41 +786,43 @@ $(PROGRAM_PREFIX)yosys-config: misc/yosys-config.in
|
||||||
-e 's#@BINDIR@#$(strip $(BINDIR))#;' -e 's#@DATDIR@#$(strip $(DATDIR))#;' < $< > $(PROGRAM_PREFIX)yosys-config
|
-e 's#@BINDIR@#$(strip $(BINDIR))#;' -e 's#@DATDIR@#$(strip $(DATDIR))#;' < $< > $(PROGRAM_PREFIX)yosys-config
|
||||||
$(Q) chmod +x $(PROGRAM_PREFIX)yosys-config
|
$(Q) chmod +x $(PROGRAM_PREFIX)yosys-config
|
||||||
|
|
||||||
abc/abc-$(ABCREV)$(EXE) abc/libabc-$(ABCREV).a:
|
.PHONY: check-git-abc
|
||||||
|
|
||||||
|
check-git-abc:
|
||||||
|
@if [ ! -d "$(YOSYS_SRC)/abc" ]; then \
|
||||||
|
echo "Error: The 'abc' directory does not exist."; \
|
||||||
|
echo "Initialize the submodule: Run 'git submodule update --init' to set up 'abc' as a submodule."; \
|
||||||
|
exit 1; \
|
||||||
|
elif git -C "$(YOSYS_SRC)" submodule status abc 2>/dev/null | grep -q '^ '; then \
|
||||||
|
echo "'abc' is a git submodule. Continuing."; \
|
||||||
|
exit 0; \
|
||||||
|
elif [ -f "$(YOSYS_SRC)/abc/.gitcommit" ] && ! grep -q '\$$Format:%h\$$' "$(YOSYS_SRC)/abc/.gitcommit"; then \
|
||||||
|
echo "'abc' comes from a tarball. Continuing."; \
|
||||||
|
exit 0; \
|
||||||
|
elif [ -f "$(YOSYS_SRC)/abc/.gitcommit" ] && grep -q '\$$Format:%h\$$' "$(YOSYS_SRC)/abc/.gitcommit"; then \
|
||||||
|
echo "Error: 'abc' is not configured as a git submodule."; \
|
||||||
|
echo "To resolve this:"; \
|
||||||
|
echo "1. Back up your changes: Save any modifications from the 'abc' directory to another location."; \
|
||||||
|
echo "2. Remove the existing 'abc' directory: Delete the 'abc' directory and all its contents."; \
|
||||||
|
echo "3. Initialize the submodule: Run 'git submodule update --init' to set up 'abc' as a submodule."; \
|
||||||
|
echo "4. Reapply your changes: Move your saved changes back to the 'abc' directory, if necessary."; \
|
||||||
|
exit 1; \
|
||||||
|
else \
|
||||||
|
echo "Initialize the submodule: Run 'git submodule update --init' to set up 'abc' as a submodule."; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
ABC_SOURCES := $(wildcard $(YOSYS_SRC)/abc/*)
|
||||||
|
|
||||||
|
abc/abc$(EXE) abc/libabc.a: $(ABC_SOURCES) check-git-abc
|
||||||
$(P)
|
$(P)
|
||||||
ifneq ($(ABCREV),default)
|
$(Q) mkdir -p abc && $(MAKE) -C $(PROGRAM_PREFIX)abc -f "$(realpath $(YOSYS_SRC)/abc/Makefile)" ABCSRC="$(realpath $(YOSYS_SRC)/abc/)" $(S) $(ABCMKARGS) $(if $(filter %.a,$@),PROG="abc",PROG="abc$(EXE)") MSG_PREFIX="$(eval P_OFFSET = 5)$(call P_SHOW)$(eval P_OFFSET = 10) ABC: " $(if $(filter %.a,$@),libabc.a)
|
||||||
$(Q) if test -d abc/.hg; then \
|
|
||||||
echo 'REEBE: NOP qverpgbel vf n ut jbexvat pbcl! Erzbir nop/ naq er-eha "znxr".' | tr 'A-Za-z' 'N-ZA-Mn-za-m'; false; \
|
|
||||||
fi
|
|
||||||
$(Q) if test -d abc && test -d abc/.git && ! git -C abc diff-index --quiet HEAD; then \
|
|
||||||
echo 'REEBE: NOP pbagnvaf ybpny zbqvsvpngvbaf! Frg NOPERI=qrsnhyg va Lbflf Znxrsvyr!' | tr 'A-Za-z' 'N-ZA-Mn-za-m'; false; \
|
|
||||||
fi
|
|
||||||
$(Q) if test -d abc && ! test -d abc/.git && ! test "`cat abc/.gitcommit | cut -c1-7`" = "$(ABCREV)"; then \
|
|
||||||
echo 'REEBE: Qbjaybnqrq NOP irefvbaf qbrf abg zngpu! Qbjaybnq sebz:' | tr 'A-Za-z' 'N-ZA-Mn-za-m'; echo $(ABCURL)/archive/$(ABCREV).tar.gz; false; \
|
|
||||||
fi
|
|
||||||
# set a variable so the test fails if git fails to run - when comparing outputs directly, empty string would match empty string
|
|
||||||
$(Q) if test -d abc && ! test -d abc/.git && test "`cat abc/.gitcommit | cut -c1-7`" = "$(ABCREV)"; then \
|
|
||||||
echo "Compiling local copy of ABC"; \
|
|
||||||
elif ! (cd abc 2> /dev/null && rev="`git rev-parse $(ABCREV)`" && test "`git rev-parse HEAD`" = "$$rev"); then \
|
|
||||||
test $(ABCPULL) -ne 0 || { echo 'REEBE: NOP abg hc gb qngr naq NOPCHYY frg gb 0 va Znxrsvyr!' | tr 'A-Za-z' 'N-ZA-Mn-za-m'; exit 1; }; \
|
|
||||||
echo "Pulling ABC from $(ABCURL):"; set -x; \
|
|
||||||
test -d abc || git clone $(ABCURL) abc; \
|
|
||||||
cd abc && $(MAKE) DEP= clean && git fetch $(ABCURL) && git checkout $(ABCREV); \
|
|
||||||
fi
|
|
||||||
endif
|
|
||||||
$(Q) rm -f abc/abc-[0-9a-f]*
|
|
||||||
$(Q) $(MAKE) -C abc $(S) $(ABCMKARGS) $(if $(filter %.a,$@),PROG="abc-$(ABCREV)",PROG="abc-$(ABCREV)$(EXE)") MSG_PREFIX="$(eval P_OFFSET = 5)$(call P_SHOW)$(eval P_OFFSET = 10) ABC: " $(if $(filter %.a,$@),libabc-$(ABCREV).a)
|
|
||||||
|
|
||||||
ifeq ($(ABCREV),default)
|
$(PROGRAM_PREFIX)yosys-abc$(EXE): abc/abc$(EXE)
|
||||||
.PHONY: abc/abc-$(ABCREV)$(EXE)
|
$(P) cp $< $(PROGRAM_PREFIX)yosys-abc$(EXE)
|
||||||
.PHONY: abc/libabc-$(ABCREV).a
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(PROGRAM_PREFIX)yosys-abc$(EXE): abc/abc-$(ABCREV)$(EXE)
|
$(PROGRAM_PREFIX)yosys-libabc.a: abc/libabc.a
|
||||||
$(P) cp abc/abc-$(ABCREV)$(EXE) $(PROGRAM_PREFIX)yosys-abc$(EXE)
|
$(P) cp $< $(PROGRAM_PREFIX)yosys-libabc.a
|
||||||
|
|
||||||
$(PROGRAM_PREFIX)yosys-libabc.a: abc/libabc-$(ABCREV).a
|
|
||||||
$(P) cp abc/libabc-$(ABCREV).a $(PROGRAM_PREFIX)yosys-libabc.a
|
|
||||||
|
|
||||||
ifneq ($(SEED),)
|
ifneq ($(SEED),)
|
||||||
SEEDOPT="-S $(SEED)"
|
SEEDOPT="-S $(SEED)"
|
||||||
|
@ -1147,9 +1140,6 @@ echo-yosys-ver:
|
||||||
echo-git-rev:
|
echo-git-rev:
|
||||||
@echo "$(GIT_REV)"
|
@echo "$(GIT_REV)"
|
||||||
|
|
||||||
echo-abc-rev:
|
|
||||||
@echo "$(ABCREV)"
|
|
||||||
|
|
||||||
echo-cxx:
|
echo-cxx:
|
||||||
@echo "$(CXX)"
|
@echo "$(CXX)"
|
||||||
|
|
||||||
|
|
1
abc
Submodule
1
abc
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit a5a6254db169d2c5233fa19ec415cf271ec717d1
|
|
@ -2160,8 +2160,16 @@ void VerificImporter::import_netlist(RTLIL::Design *design, Netlist *nl, std::ma
|
||||||
int port_offset = 0;
|
int port_offset = 0;
|
||||||
if (pr->GetPort()->Bus()) {
|
if (pr->GetPort()->Bus()) {
|
||||||
port_name = pr->GetPort()->Bus()->Name();
|
port_name = pr->GetPort()->Bus()->Name();
|
||||||
port_offset = pr->GetPort()->Bus()->IndexOf(pr->GetPort()) -
|
int msb_index = pr->GetPort()->Bus()->LeftIndex();
|
||||||
min(pr->GetPort()->Bus()->LeftIndex(), pr->GetPort()->Bus()->RightIndex());
|
int lsb_index = pr->GetPort()->Bus()->RightIndex();
|
||||||
|
int index_of_port = pr->GetPort()->Bus()->IndexOf(pr->GetPort());
|
||||||
|
port_offset = index_of_port - min(msb_index, lsb_index);
|
||||||
|
// In cases where the msb order is flipped we need to make sure
|
||||||
|
// that the indicies match LSB = 0 order to match the std::vector
|
||||||
|
// to SigSpec LSB = 0 precondition.
|
||||||
|
if (lsb_index > msb_index) {
|
||||||
|
port_offset = abs(port_offset - (lsb_index - min(msb_index, lsb_index)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
IdString port_name_id = RTLIL::escape_id(port_name);
|
IdString port_name_id = RTLIL::escape_id(port_name);
|
||||||
auto &sigvec = cell_port_conns[port_name_id];
|
auto &sigvec = cell_port_conns[port_name_id];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue