Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
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
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
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
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
208 changes: 145 additions & 63 deletions .github/workflows/Pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,18 @@ on:
pull_request:

jobs:
Prepare:
uses: pyTooling/Actions/.github/workflows/PrepareJob.yml@dev

Build-OSVVM:
name: Build OSVVM
strategy:
fail-fast: false
matrix:
include:
- {simulator: 'nvc', backend: 'llvm', startScript: 'StartNVC.tcl'}
- {simulator: 'ghdl', backend: 'mcode', startScript: 'StartGHDL.tcl'}
- {simulator: 'ghdl', backend: 'llvm', startScript: 'StartGHDL.tcl'}
runs-on: ubuntu-24.04
steps:
- name: ⏬ Checkout repository
Expand All @@ -18,34 +28,50 @@ jobs:
- name: 🔧 Install tcllib
run: sudo apt-get install -y --no-install-recommends tcllib

- name: Setup GHDL ${{ inputs.ghdl_backend }}
- name: Setup GHDL ${{ matrix.backend }}
uses: ghdl/setup-ghdl@v1
if: matrix.simulator == 'ghdl'
with:
version: latest
backend: ${{ matrix.backend }}

- name: Setup NVC
uses: nickg/setup-nvc@v1
if: matrix.simulator == 'nvc'
with:
version: latest
backend: llvm

- name: Prepare
run: |
mkdir -p temp/ghdl
mkdir -p temp/${{ matrix.simulator }}

- name: 🔨 Pre-compile OSVVM
- name: 🔨 Prepare Script
run: |
cd temp/ghdl
cd temp/${{ matrix.simulator }}

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

- name: Precompile OSVVM GHDL
if: matrix.simulator == 'ghdl'
run: |
cd temp/${{ matrix.simulator }}
tclsh run.tcl

- name: 📤 Upload 'GHDL-OSVVM-Report' artifacts
- name: Precompile OSVVM NVC
if: matrix.simulator == 'nvc'
run: |
cd temp/${{ matrix.simulator }}
nvc --do run.tcl

- name: 📤 Upload '${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM-Report' artifacts
uses: pyTooling/upload-artifact@v4
continue-on-error: true
with:
name: GHDL-OSVVM-Report
working-directory: temp/ghdl
name: ${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM-Report
working-directory: temp/${{ matrix.simulator }}
path: |
logs
reports
Expand All @@ -54,27 +80,33 @@ jobs:
*.yml
retention-days: 1

- name: 📤 Upload 'GHDL-OSVVM' artifacts
- name: 📤 Upload '${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM' artifacts
uses: pyTooling/upload-artifact@v4
with:
name: GHDL-OSVVM
working-directory: temp/ghdl
name: ${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM
working-directory: temp/${{ matrix.simulator }}
path: |
VHDL_LIBS
retention-days: 1

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

Build-PoC:
name: Build PoC
strategy:
fail-fast: false
matrix:
include:
- {simulator: 'nvc', backend: 'llvm', startScript: 'StartNVC.tcl'}
- {simulator: 'ghdl', backend: 'mcode', startScript: 'StartGHDL.tcl'}
- {simulator: 'ghdl', backend: 'llvm', startScript: 'StartGHDL.tcl'}
runs-on: ubuntu-24.04
needs:
- Build-OSVVM
Expand All @@ -88,148 +120,198 @@ jobs:
- name: 🔧 Install tcllib
run: sudo apt-get install -y --no-install-recommends tcllib

- name: Setup GHDL ${{ inputs.ghdl_backend }}
- name: Setup GHDL ${{ matrix.backend }}
uses: ghdl/setup-ghdl@v1
if: matrix.simulator == 'ghdl'
with:
version: latest
backend: ${{ matrix.backend }}

- name: Setup NVC
uses: nickg/setup-nvc@v1
if: matrix.simulator == 'nvc'
with:
version: latest
backend: llvm

- name: Prepare
run: |
mkdir -p temp/ghdl
mkdir -p temp/${{ matrix.simulator }}

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

- name: 📥 Download artifacts 'GHDL-OSVVM' from 'Build-OSVVM' job
- name: 📥 Download artifacts '${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM' from 'Build-OSVVM' job
uses: pyTooling/download-artifact@v4
with:
name: GHDL-OSVVM
path: temp/ghdl
name: ${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM
path: temp/${{ matrix.simulator }}

- name: 📥 Download artifacts 'GHDL-OSVVM-Generated' from 'Build-OSVVM' job
- name: 📥 Download artifacts '${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM-Generated' from 'Build-OSVVM' job
uses: pyTooling/download-artifact@v4
with:
name: GHDL-OSVVM-Generated
# path: temp/ghdl
name: ${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM-Generated

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

cd temp/ghdl
cd temp/${{ matrix.simulator }}

tee run.tcl <<EOF
source ../../lib/OSVVM-Scripts/StartGHDL.tcl
source ../../lib/OSVVM-Scripts/${{ matrix.startScript }}

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}
if {$::osvvm::ToolName eq "GHDL"} {
SetExtendedAnalyzeOptions {-frelaxed -Wno-specs -Wno-elaboration}
}

if {$::osvvm::ToolName eq "NVC"} {
SetExtendedAnalyzeOptions {--relaxed}
}

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

printf "=================\n"
- name: Precompile PoC GHDL
if: matrix.simulator == 'ghdl'
run: |
cd temp/${{ matrix.simulator }}
tclsh run.tcl

- name: 📈 Simulate PoC
- name: Precompile PoC NVC
if: matrix.simulator == 'nvc'
run: |
cd temp/ghdl
cd temp/${{ matrix.simulator }}
nvc --do run.tcl

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

- name: 📈 Generate run.tcl for simulate
if: always()
run: |
cd temp/${{ matrix.simulator }}

tee run2.tcl <<EOF
source ../../lib/OSVVM-Scripts/${{ matrix.startScript }}

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}
if {$::osvvm::ToolName eq "GHDL"} {
SetExtendedSimulateOptions {-frelaxed -Wno-specs -Wno-binding}
}

if {$::osvvm::ToolName eq "NVC"} {
}

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

printf "=================\n"
tclsh run.tcl
- name: Simulate PoC GHDL
if: matrix.simulator == 'ghdl'
run: |
cd temp/${{ matrix.simulator }}
tclsh run2.tcl

- name: Simulate PoC NVC
if: always() && matrix.simulator == 'nvc'
run: |
cd temp/${{ matrix.simulator }}
nvc --do run2.tcl

- name: 📤 Upload 'GHDL-PoC-Report' artifacts
- name: 📤 Upload '${{ matrix.simulator }}-${{ matrix.backend }}-PoC-Report' artifacts
if: always()
uses: pyTooling/upload-artifact@v4
continue-on-error: true
with:
name: GHDL-PoC-Report
working-directory: temp/ghdl
name: ${{ matrix.simulator }}-${{ matrix.backend }}-PoC-Report
working-directory: temp/${{ matrix.simulator }}
path: |
logs
reports
*.html
*.yml
retention-days: 1

- name: 📤 Upload 'GHDL-PoC-Report-XML' artifacts
- name: 📤 Upload '${{ matrix.simulator }}-${{ matrix.backend }}-PoC-Report-XML' artifacts
if: always()
uses: pyTooling/upload-artifact@v4
continue-on-error: true
with:
name: GHDL-PoC-Report-XML
working-directory: temp/ghdl
name: ${{ matrix.simulator }}-${{ matrix.backend }}-PoC-Report-XML
working-directory: temp/${{ matrix.simulator }}
path: |
*.xml
retention-days: 1

- name: 📤 Upload 'GHDL-PoC' artifacts
- name: 📤 Upload '${{ matrix.simulator }}-${{ matrix.backend }}-PoC' artifacts
if: always()
uses: pyTooling/upload-artifact@v4
with:
name: GHDL-PoC
working-directory: temp/ghdl
name: ${{ matrix.simulator }}-${{ matrix.backend }}-PoC
working-directory: temp/${{ matrix.simulator }}
path: |
VHDL_LIBS
retention-days: 1

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

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

AutoTag:
uses: pyTooling/Actions/.github/workflows/TagReleaseCommit.yml@r5
needs:
- Prepare
- PublishToGitHubPages
if: needs.Prepare.outputs.is_release_commit && 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@r5
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
Loading