Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
2028c88
updated AXI4Lite register testcase
weilanad Jun 27, 2025
32f6b31
remove unused signals
weilanad Jun 27, 2025
32c5941
fix header
weilanad Jun 27, 2025
52590c9
Disable unimplemented Lotary Arbiter
stefanunrein Aug 25, 2025
e24f945
Make check if Init value fits in downcounter
stefanunrein Aug 25, 2025
ebafe53
Update my_config template with GENERIC in examples
stefanunrein Aug 25, 2025
802e9c5
Add default return code to omit simulator warning
stefanunrein Aug 25, 2025
4154ffe
Use sync_Bits to synchronize pointers in fifo_ic_got
stefanunrein Aug 25, 2025
49d1688
Add output for fill-level of fifo_shift
stefanunrein Aug 25, 2025
2be1fa7
Add Chunck-Enable feature to crc calculation
stefanunrein Aug 25, 2025
ca00223
Support for fraction of one for type T_FRACTIONAL
stefanunrein Aug 25, 2025
a2da83a
Add AXI4Lite-VersionRegister module and necessary files
stefanunrein Aug 25, 2025
3627230
changes from review
weilanad Aug 26, 2025
acf33e8
Use init constant to get the size of the record elements
stefanunrein Aug 26, 2025
bf681ae
Move pre synthesis tcl script for GitVersionRegister to tools/git
stefanunrein Aug 26, 2025
7271704
add misc_Strobe files, missing for some modules
stefanunrein Aug 26, 2025
1b577ee
initialize with '0' for better simulation
stefanunrein Aug 26, 2025
8d8b643
cleanup
stefanunrein Aug 26, 2025
af36440
remove *.files files since they are out of date and we use *.pro file…
stefanunrein Aug 26, 2025
b3da273
remove old unused files for ISE
stefanunrein Aug 26, 2025
18ad0e6
add missing dependency VHDL modules
stefanunrein Aug 26, 2025
a5e18cc
fix package name
stefanunrein Aug 26, 2025
766b79e
cleanup .pro files to include every vhdl file
stefanunrein Aug 26, 2025
8623074
remove more obsolete files
stefanunrein Aug 26, 2025
418f38e
cleanup scripting and fix last files
stefanunrein Aug 27, 2025
11f7860
add NVC script source as comment
stefanunrein Aug 27, 2025
7de2810
fix lincense header
stefanunrein Aug 27, 2025
45ec327
remove broken file
stefanunrein Aug 27, 2025
6df52ae
simulate for nvc, ghdl-llvm and ghdl-mcode
stefanunrein Aug 27, 2025
51dab8d
Add auto-tagging of release jobs
stefanunrein Aug 27, 2025
5d6cdd1
fix job names
stefanunrein Aug 27, 2025
4139d0c
run documentation always
stefanunrein Aug 27, 2025
ecb70f1
formatting
weilanad Aug 27, 2025
7b58aeb
Updated axiI4lite_Register testcases.
Paebbels Aug 27, 2025
57c3758
Apply suggestions from code review
stefanunrein Aug 27, 2025
9670400
Merge remote-tracking branch 'github/dev' into PLC2/release-github
stefanunrein Aug 27, 2025
58169a1
fix license header
stefanunrein Aug 27, 2025
c480388
Changes from review
stefanunrein Aug 28, 2025
75fd96c
add missing file
stefanunrein Aug 28, 2025
0b1a5a6
cleanup build and sim scripting
stefanunrein Aug 28, 2025
de24e5c
Use dev branch for prepare step
stefanunrein Aug 28, 2025
e148d61
Apply suggestions from code review.
Paebbels Aug 28, 2025
0057637
Uploads for v2.1.0
Paebbels Aug 28, 2025
e190643
Improve GitHub pipeline.
Paebbels Aug 29, 2025
212331f
Fixed problems identified by Sigasi Visual HDL.
Paebbels Sep 9, 2025
a05d1f9
Get next steps running in pipeline.
Paebbels Sep 9, 2025
23e4b09
Integrate OSVVM report.
Paebbels Sep 9, 2025
68e1204
LaTeX may fail.
Paebbels Sep 12, 2025
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
  •  
  •  
  •  
301 changes: 107 additions & 194 deletions .github/workflows/Pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,231 +5,144 @@ on:
pull_request:

jobs:
Build-OSVVM:
name: Build OSVVM
runs-on: ubuntu-24.04
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
with:
lfs: true
submodules: true

- name: 🔧 Install tcllib
run: sudo apt-get install -y --no-install-recommends tcllib

- name: Setup GHDL ${{ inputs.ghdl_backend }}
uses: ghdl/setup-ghdl@v1
with:
version: latest
backend: llvm

- name: Prepare
run: |
mkdir -p temp/ghdl

- name: 🔨 Pre-compile OSVVM
run: |
cd temp/ghdl

tee run.tcl <<EOF
source ../../lib/OSVVM-Scripts/StartGHDL.tcl
build ../../lib/OsvvmLibraries.pro OsvvmLibraries
EOF
printf "=================\n"

tclsh run.tcl

- name: 📤 Upload 'GHDL-OSVVM-Report' artifacts
uses: pyTooling/upload-artifact@v4
continue-on-error: true
with:
name: GHDL-OSVVM-Report
working-directory: temp/ghdl
path: |
logs
reports
*.html
*.xml
*.yml
retention-days: 1

- name: 📤 Upload 'GHDL-OSVVM' artifacts
uses: pyTooling/upload-artifact@v4
with:
name: GHDL-OSVVM
working-directory: temp/ghdl
path: |
VHDL_LIBS
retention-days: 1

- name: 📤 Upload 'GHDL-OSVVM-Generated' artifacts
uses: pyTooling/upload-artifact@v4
continue-on-error: true
with:
name: GHDL-OSVVM-Generated
# working-directory: temp/ghdl
path: |
lib/osvvm/*_generated.vhd
retention-days: 1

Build-PoC:
name: Build PoC
runs-on: ubuntu-24.04
Prepare:
uses: pyTooling/Actions/.github/workflows/PrepareJob.yml@r6
with:
main_branch: 'master'
release_branch: 'master'

Simulate:
uses: ./.github/workflows/Simulate.yml
strategy:
fail-fast: false
matrix:
include:
- { simulator: 'nvc', backend: '', version: 'latest', can-fail: false }
- { simulator: 'ghdl', backend: 'mcode', version: 'latest', can-fail: false }
- { simulator: 'ghdl', backend: 'llvm', version: 'latest', can-fail: false }
with:
simulator: ${{ matrix.simulator }}
ghdl-version: ${{ matrix.version }}
ghdl-backend: ${{ matrix.backend }}
nvc-version: ${{ matrix.version }}
can-fail: ${{ matrix.can-fail }}

PublishTestResults:
uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@r6
needs:
- Build-OSVVM
- Simulate
# if: success() || failure()
with:
unittest_artifacts_pattern: 'PoC-Report-XML-*'
testsuite-summary-name: 'The PoC Library'
merge-input-dialect: 'Any-JUnit'
merged_junit_filename: 'unittest.xml'
merged_junit_artifact: 'PoC-Report-XML'
dorny: ${{ inputs.dorny }}
# codecov: ${{ inputs.codecov }}
# secrets:
# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

IntermediateCleanUp:
name: 🗑️ Intermediate Artifact Cleanup
runs-on: 'ubuntu-24.04'
needs:
- Simulate
- PublishTestResults
# if: success() || failure()
steps:
- name: ⏬ Checkout repository
uses: actions/checkout@v4
with:
lfs: true
submodules: true

- name: 🔧 Install tcllib
run: sudo apt-get install -y --no-install-recommends tcllib

- name: Setup GHDL ${{ inputs.ghdl_backend }}
uses: ghdl/setup-ghdl@v1
with:
version: latest
backend: llvm

- name: Prepare
run: |
mkdir -p temp/ghdl

mv src/common/my_project.vhdl.template tb/common/my_project.vhdl

- name: 📥 Download artifacts 'GHDL-OSVVM' from 'Build-OSVVM' job
uses: pyTooling/download-artifact@v4
with:
name: GHDL-OSVVM
path: temp/ghdl

- name: 📥 Download artifacts 'GHDL-OSVVM-Generated' from 'Build-OSVVM' job
uses: pyTooling/download-artifact@v4
with:
name: GHDL-OSVVM-Generated
# path: temp/ghdl

- name: 🔨 Pre-compile PoC
run: |
ls -lAh lib/osvvm/*_generated.vhd

cd temp/ghdl

tee run.tcl <<EOF
source ../../lib/OSVVM-Scripts/StartGHDL.tcl

namespace eval ::poc {
variable myConfigFile "../tb/common/my_config_GENERIC.vhdl"
variable myProjectFile "../tb/common/my_project.vhdl"
variable vendor "GENERIC"; # GENERIC for vendor-less build; Xilinx, Altera,... for vendor specific build
}

set ::osvvm::AnalyzeErrorStopCount 1
SetExtendedAnalyzeOptions {-frelaxed -Wno-specs}

build ../../src/PoC.pro PoC
EOF

printf "=================\n"
tclsh run.tcl

- name: 📈 Simulate PoC
run: |
cd temp/ghdl

tee run.tcl <<EOF
source ../../lib/OSVVM-Scripts/StartGHDL.tcl

namespace eval ::poc {
variable myConfigFile "../tb/common/my_config_GENERIC.vhdl"
variable myProjectFile "../tb/common/my_project.vhdl"
variable vendor "GENERIC"; # GENERIC for vendor-less build; Xilinx, Altera,... for vendor specific build
}

SetExtendedSimulateOptions {-frelaxed -Wno-specs -Wno-binding}

build ../../tb/RunAllTests.pro
EOF

printf "=================\n"
tclsh run.tcl

- name: 📤 Upload 'GHDL-PoC-Report' artifacts
uses: pyTooling/upload-artifact@v4
- name: 🗑️ Delete YAML artifacts from matrix jobs
uses: geekyeggo/delete-artifact@v5
continue-on-error: true
with:
name: GHDL-PoC-Report
working-directory: temp/ghdl
path: |
logs
reports
*.html
*.yml
retention-days: 1
name: |
OSVVM-Report-YAML-*
PoC-Report-YAML-*

- name: 📤 Upload 'GHDL-PoC-Report-XML' artifacts
uses: pyTooling/upload-artifact@v4
- name: 🗑️ Delete JUnit XML artifacts from matrix jobs
uses: geekyeggo/delete-artifact@v5
continue-on-error: true
with:
name: GHDL-PoC-Report-XML
working-directory: temp/ghdl
path: |
*.xml
retention-days: 1

- name: 📤 Upload 'GHDL-PoC' artifacts
uses: pyTooling/upload-artifact@v4
with:
name: GHDL-PoC
working-directory: temp/ghdl
path: |
VHDL_LIBS
retention-days: 1
name: |
OSVVM-Report-XML-*
PoC-Report-XML-*

Documentation:
uses: pyTooling/Actions/.github/workflows/SphinxDocumentation.yml@r4
uses: pyTooling/Actions/.github/workflows/SphinxDocumentation.yml@r6
needs:
- Build-PoC
- PublishTestResults
# if: success() || failure()
with:
requirements: '-r docs/requirements.txt'
doc_directory: 'docs'
unittest_xml_artifact: 'GHDL-PoC-Report-XML'
unittest_xml_artifact: 'PoC-Report-XML'
html_artifact: 'PoC-HTML'
latex_artifact: 'PoC-LaTeX'

Test:
runs-on: 'ubuntu-24.04'
needs:
- Simulate
- PublishTestResults
- Documentation
# if: success() || failure()
steps:
- run: |
printf "Simulate: '%s'\n" "${{ needs.Simulate.result }}"
printf "PublishTestResults: '%s'\n" "${{ needs.PublishTestResults.result }}"
printf "Documentation: '%s'\n" "${{ needs.Documentation.result }}"

PDFDocumentation:
uses: pyTooling/Actions/.github/workflows/LaTeXDocumentation.yml@dev
needs:
- Documentation
if: (success() || failure()) && needs.Documentation.result == 'success'
with:
document: 'The PoC-Library'
latex_artifact: 'PoC-LaTeX'
pdf_artifact: 'PoC-PDF'
can-fail: 'true'

PublishToGitHubPages:
uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@dev
uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@r6
needs:
- Documentation
- Build-PoC
- Simulate
# if: (success() || failure()) && needs.Documentation.result == 'success'
with:
doc: 'PoC-HTML'
# coverage: 'PoC-Coverage-HTML'

AutoTag:
uses: pyTooling/Actions/.github/workflows/TagReleaseCommit.yml@r6
needs:
- Prepare
- PublishToGitHubPages
if: needs.Prepare.outputs.is_release_commit == 'true' && github.event_name != 'schedule'
permissions:
contents: write # required for create tag
actions: write # required for trigger workflow
with:
version: ${{ needs.Prepare.output.version }}
auto_tag: ${{ needs.Prepare.outputs.is_release_commit }}

Release:
uses: pyTooling/Actions/.github/workflows/NightlyRelease.yml@r4
if: startsWith(github.ref, 'refs/tags/v')
uses: pyTooling/Actions/.github/workflows/PublishReleaseNotes.yml@r6
needs:
# - Ubuntu
# - Windows
# - PublishCoverageResults
# - PublishTestResults
- PublishToGitHubPages
secrets: inherit
if: needs.Prepare.outputs.is_release_tag == 'true'
permissions:
contents: write
actions: write
attestations: write
actions: write
with:
prerelease: true
replacements: |
poc=1.3.0
nightly_name: "v1.3.0"
nightly_description: |
poc=${{ needs.Prepare.outputs.version }}
tag: ${{ needs.Prepare.outputs.version }}
description: |
# The PoC-Library %poc%
inventory-json: "inventory.json"
inventory-version: "1.3.0"
inventory-version: ${{ needs.Prepare.outputs.version }}
assets: |

secrets: inherit
Loading