Skip to content

Commit 0057637

Browse files
PaebbelsweilanadAsif71Max Kraft-KuglerJonas Schreiner
authored
Uploads for v2.1.0
Co-authored-by: Adrian Weiland <adrian.weiland@plc2.de> Co-authored-by: Asif Iqbal <asif.iqbal@plc2.de> Co-authored-by: Max Kraft-Kugler <max.kraft-kugler@plc2.de> Co-authored-by: Jonas Schreiner <jonas.schreiner@plc2.de> Co-authored-by: Patrick Lehmann <patrick.lehmann@plc2.de> Co-authored-by: Patrick Lehmann <patrick.lehmann@tu-dresden.de> Co-authored-by: Patrick Lehmann <paebbels@gmail.com>
2 parents 7b58aeb + e148d61 commit 0057637

File tree

296 files changed

+3581
-9397
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

296 files changed

+3581
-9397
lines changed

.github/workflows/Pipeline.yml

Lines changed: 145 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,18 @@ on:
55
pull_request:
66

77
jobs:
8+
Prepare:
9+
uses: pyTooling/Actions/.github/workflows/PrepareJob.yml@dev
10+
811
Build-OSVVM:
912
name: Build OSVVM
13+
strategy:
14+
fail-fast: false
15+
matrix:
16+
include:
17+
- {simulator: 'nvc', backend: 'llvm', startScript: 'StartNVC.tcl'}
18+
- {simulator: 'ghdl', backend: 'mcode', startScript: 'StartGHDL.tcl'}
19+
- {simulator: 'ghdl', backend: 'llvm', startScript: 'StartGHDL.tcl'}
1020
runs-on: ubuntu-24.04
1121
steps:
1222
- name: ⏬ Checkout repository
@@ -18,34 +28,50 @@ jobs:
1828
- name: 🔧 Install tcllib
1929
run: sudo apt-get install -y --no-install-recommends tcllib
2030

21-
- name: Setup GHDL ${{ inputs.ghdl_backend }}
31+
- name: Setup GHDL ${{ matrix.backend }}
2232
uses: ghdl/setup-ghdl@v1
33+
if: matrix.simulator == 'ghdl'
34+
with:
35+
version: latest
36+
backend: ${{ matrix.backend }}
37+
38+
- name: Setup NVC
39+
uses: nickg/setup-nvc@v1
40+
if: matrix.simulator == 'nvc'
2341
with:
2442
version: latest
25-
backend: llvm
2643

2744
- name: Prepare
2845
run: |
29-
mkdir -p temp/ghdl
46+
mkdir -p temp/${{ matrix.simulator }}
3047
31-
- name: 🔨 Pre-compile OSVVM
48+
- name: 🔨 Prepare Script
3249
run: |
33-
cd temp/ghdl
50+
cd temp/${{ matrix.simulator }}
3451
3552
tee run.tcl <<EOF
36-
source ../../lib/OSVVM-Scripts/StartGHDL.tcl
53+
source ../../lib/OSVVM-Scripts/${{ matrix.startScript }}
3754
build ../../lib/OsvvmLibraries.pro OsvvmLibraries
3855
EOF
39-
printf "=================\n"
4056
57+
- name: Precompile OSVVM GHDL
58+
if: matrix.simulator == 'ghdl'
59+
run: |
60+
cd temp/${{ matrix.simulator }}
4161
tclsh run.tcl
4262
43-
- name: 📤 Upload 'GHDL-OSVVM-Report' artifacts
63+
- name: Precompile OSVVM NVC
64+
if: matrix.simulator == 'nvc'
65+
run: |
66+
cd temp/${{ matrix.simulator }}
67+
nvc --do run.tcl
68+
69+
- name: 📤 Upload '${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM-Report' artifacts
4470
uses: pyTooling/upload-artifact@v4
4571
continue-on-error: true
4672
with:
47-
name: GHDL-OSVVM-Report
48-
working-directory: temp/ghdl
73+
name: ${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM-Report
74+
working-directory: temp/${{ matrix.simulator }}
4975
path: |
5076
logs
5177
reports
@@ -54,27 +80,33 @@ jobs:
5480
*.yml
5581
retention-days: 1
5682

57-
- name: 📤 Upload 'GHDL-OSVVM' artifacts
83+
- name: 📤 Upload '${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM' artifacts
5884
uses: pyTooling/upload-artifact@v4
5985
with:
60-
name: GHDL-OSVVM
61-
working-directory: temp/ghdl
86+
name: ${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM
87+
working-directory: temp/${{ matrix.simulator }}
6288
path: |
6389
VHDL_LIBS
6490
retention-days: 1
6591

66-
- name: 📤 Upload 'GHDL-OSVVM-Generated' artifacts
92+
- name: 📤 Upload '${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM-Generated' artifacts
6793
uses: pyTooling/upload-artifact@v4
6894
continue-on-error: true
6995
with:
70-
name: GHDL-OSVVM-Generated
71-
# working-directory: temp/ghdl
96+
name: ${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM-Generated
7297
path: |
7398
lib/osvvm/*_generated.vhd
7499
retention-days: 1
75100

76101
Build-PoC:
77102
name: Build PoC
103+
strategy:
104+
fail-fast: false
105+
matrix:
106+
include:
107+
- {simulator: 'nvc', backend: 'llvm', startScript: 'StartNVC.tcl'}
108+
- {simulator: 'ghdl', backend: 'mcode', startScript: 'StartGHDL.tcl'}
109+
- {simulator: 'ghdl', backend: 'llvm', startScript: 'StartGHDL.tcl'}
78110
runs-on: ubuntu-24.04
79111
needs:
80112
- Build-OSVVM
@@ -88,148 +120,198 @@ jobs:
88120
- name: 🔧 Install tcllib
89121
run: sudo apt-get install -y --no-install-recommends tcllib
90122

91-
- name: Setup GHDL ${{ inputs.ghdl_backend }}
123+
- name: Setup GHDL ${{ matrix.backend }}
92124
uses: ghdl/setup-ghdl@v1
125+
if: matrix.simulator == 'ghdl'
126+
with:
127+
version: latest
128+
backend: ${{ matrix.backend }}
129+
130+
- name: Setup NVC
131+
uses: nickg/setup-nvc@v1
132+
if: matrix.simulator == 'nvc'
93133
with:
94134
version: latest
95-
backend: llvm
96135

97136
- name: Prepare
98137
run: |
99-
mkdir -p temp/ghdl
138+
mkdir -p temp/${{ matrix.simulator }}
100139
101140
mv src/common/my_project.vhdl.template tb/common/my_project.vhdl
102141
103-
- name: 📥 Download artifacts 'GHDL-OSVVM' from 'Build-OSVVM' job
142+
- name: 📥 Download artifacts '${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM' from 'Build-OSVVM' job
104143
uses: pyTooling/download-artifact@v4
105144
with:
106-
name: GHDL-OSVVM
107-
path: temp/ghdl
145+
name: ${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM
146+
path: temp/${{ matrix.simulator }}
108147

109-
- name: 📥 Download artifacts 'GHDL-OSVVM-Generated' from 'Build-OSVVM' job
148+
- name: 📥 Download artifacts '${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM-Generated' from 'Build-OSVVM' job
110149
uses: pyTooling/download-artifact@v4
111150
with:
112-
name: GHDL-OSVVM-Generated
113-
# path: temp/ghdl
151+
name: ${{ matrix.simulator }}-${{ matrix.backend }}-OSVVM-Generated
114152

115-
- name: 🔨 Pre-compile PoC
153+
- name: 🔨 Generate run.tcl for pre-compile
116154
run: |
117155
ls -lAh lib/osvvm/*_generated.vhd
118156
119-
cd temp/ghdl
157+
cd temp/${{ matrix.simulator }}
120158
121159
tee run.tcl <<EOF
122-
source ../../lib/OSVVM-Scripts/StartGHDL.tcl
160+
source ../../lib/OSVVM-Scripts/${{ matrix.startScript }}
123161
124162
namespace eval ::poc {
125163
variable myConfigFile "../tb/common/my_config_GENERIC.vhdl"
126164
variable myProjectFile "../tb/common/my_project.vhdl"
127165
variable vendor "GENERIC"; # GENERIC for vendor-less build; Xilinx, Altera,... for vendor specific build
128166
}
129167
130-
set ::osvvm::AnalyzeErrorStopCount 1
131-
SetExtendedAnalyzeOptions {-frelaxed -Wno-specs}
168+
if {$::osvvm::ToolName eq "GHDL"} {
169+
SetExtendedAnalyzeOptions {-frelaxed -Wno-specs -Wno-elaboration}
170+
}
171+
172+
if {$::osvvm::ToolName eq "NVC"} {
173+
SetExtendedAnalyzeOptions {--relaxed}
174+
}
132175
133176
build ../../src/PoC.pro PoC
134177
EOF
135178
136-
printf "=================\n"
179+
- name: Precompile PoC GHDL
180+
if: matrix.simulator == 'ghdl'
181+
run: |
182+
cd temp/${{ matrix.simulator }}
137183
tclsh run.tcl
138184
139-
- name: 📈 Simulate PoC
185+
- name: Precompile PoC NVC
186+
if: matrix.simulator == 'nvc'
140187
run: |
141-
cd temp/ghdl
188+
cd temp/${{ matrix.simulator }}
189+
nvc --do run.tcl
142190
143-
tee run.tcl <<EOF
144-
source ../../lib/OSVVM-Scripts/StartGHDL.tcl
191+
192+
- name: 📈 Generate run.tcl for simulate
193+
if: always()
194+
run: |
195+
cd temp/${{ matrix.simulator }}
196+
197+
tee run2.tcl <<EOF
198+
source ../../lib/OSVVM-Scripts/${{ matrix.startScript }}
145199
146200
namespace eval ::poc {
147201
variable myConfigFile "../tb/common/my_config_GENERIC.vhdl"
148202
variable myProjectFile "../tb/common/my_project.vhdl"
149203
variable vendor "GENERIC"; # GENERIC for vendor-less build; Xilinx, Altera,... for vendor specific build
150204
}
151205
152-
SetExtendedSimulateOptions {-frelaxed -Wno-specs -Wno-binding}
206+
if {$::osvvm::ToolName eq "GHDL"} {
207+
SetExtendedSimulateOptions {-frelaxed -Wno-specs -Wno-binding}
208+
}
209+
210+
if {$::osvvm::ToolName eq "NVC"} {
211+
}
153212
154213
build ../../tb/RunAllTests.pro
155214
EOF
156215
157-
printf "=================\n"
158-
tclsh run.tcl
216+
- name: Simulate PoC GHDL
217+
if: matrix.simulator == 'ghdl'
218+
run: |
219+
cd temp/${{ matrix.simulator }}
220+
tclsh run2.tcl
221+
222+
- name: Simulate PoC NVC
223+
if: always() && matrix.simulator == 'nvc'
224+
run: |
225+
cd temp/${{ matrix.simulator }}
226+
nvc --do run2.tcl
159227
160-
- name: 📤 Upload 'GHDL-PoC-Report' artifacts
228+
- name: 📤 Upload '${{ matrix.simulator }}-${{ matrix.backend }}-PoC-Report' artifacts
229+
if: always()
161230
uses: pyTooling/upload-artifact@v4
162231
continue-on-error: true
163232
with:
164-
name: GHDL-PoC-Report
165-
working-directory: temp/ghdl
233+
name: ${{ matrix.simulator }}-${{ matrix.backend }}-PoC-Report
234+
working-directory: temp/${{ matrix.simulator }}
166235
path: |
167236
logs
168237
reports
169238
*.html
170239
*.yml
171240
retention-days: 1
172241

173-
- name: 📤 Upload 'GHDL-PoC-Report-XML' artifacts
242+
- name: 📤 Upload '${{ matrix.simulator }}-${{ matrix.backend }}-PoC-Report-XML' artifacts
243+
if: always()
174244
uses: pyTooling/upload-artifact@v4
175245
continue-on-error: true
176246
with:
177-
name: GHDL-PoC-Report-XML
178-
working-directory: temp/ghdl
247+
name: ${{ matrix.simulator }}-${{ matrix.backend }}-PoC-Report-XML
248+
working-directory: temp/${{ matrix.simulator }}
179249
path: |
180250
*.xml
181251
retention-days: 1
182252

183-
- name: 📤 Upload 'GHDL-PoC' artifacts
253+
- name: 📤 Upload '${{ matrix.simulator }}-${{ matrix.backend }}-PoC' artifacts
254+
if: always()
184255
uses: pyTooling/upload-artifact@v4
185256
with:
186-
name: GHDL-PoC
187-
working-directory: temp/ghdl
257+
name: ${{ matrix.simulator }}-${{ matrix.backend }}-PoC
258+
working-directory: temp/${{ matrix.simulator }}
188259
path: |
189260
VHDL_LIBS
190261
retention-days: 1
191262

192263
Documentation:
193-
uses: pyTooling/Actions/.github/workflows/SphinxDocumentation.yml@r4
264+
uses: pyTooling/Actions/.github/workflows/SphinxDocumentation.yml@r5
194265
needs:
195266
- Build-PoC
267+
if: success() || failure()
196268
with:
197269
requirements: '-r docs/requirements.txt'
198270
doc_directory: 'docs'
199-
unittest_xml_artifact: 'GHDL-PoC-Report-XML'
271+
unittest_xml_artifact: 'ghdl-llvm-PoC-Report-XML'
200272
html_artifact: 'PoC-HTML'
201273
latex_artifact: 'PoC-LaTeX'
202274

203275
PublishToGitHubPages:
204-
uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@dev
276+
uses: pyTooling/Actions/.github/workflows/PublishToGitHubPages.yml@r5
205277
needs:
206278
- Documentation
207279
- Build-PoC
280+
if: success() || failure()
208281
with:
209282
doc: 'PoC-HTML'
210283
# coverage: 'PoC-Coverage-HTML'
211284

285+
AutoTag:
286+
uses: pyTooling/Actions/.github/workflows/TagReleaseCommit.yml@r5
287+
needs:
288+
- Prepare
289+
- PublishToGitHubPages
290+
if: needs.Prepare.outputs.is_release_commit && github.event_name != 'schedule'
291+
permissions:
292+
contents: write # required for create tag
293+
actions: write # required for trigger workflow
294+
with:
295+
version: ${{ needs.Prepare.output.version }}
296+
auto_tag: ${{ needs.Prepare.outputs.is_release_commit }}
297+
212298
Release:
213-
uses: pyTooling/Actions/.github/workflows/NightlyRelease.yml@r4
214-
if: startsWith(github.ref, 'refs/tags/v')
299+
uses: pyTooling/Actions/.github/workflows/PublishReleaseNotes.yml@r5
215300
needs:
216-
# - Ubuntu
217-
# - Windows
218-
# - PublishCoverageResults
219-
# - PublishTestResults
220301
- PublishToGitHubPages
221-
secrets: inherit
302+
if: needs.Prepare.outputs.is_release_tag == 'true'
222303
permissions:
223304
contents: write
224-
actions: write
225-
attestations: write
305+
actions: write
226306
with:
227307
prerelease: true
228308
replacements: |
229-
poc=1.3.0
230-
nightly_name: "v1.3.0"
231-
nightly_description: |
309+
poc=${{ needs.Prepare.outputs.version }}
310+
tag: ${{ needs.Prepare.outputs.version }}
311+
description: |
232312
# The PoC-Library %poc%
233313
inventory-json: "inventory.json"
234-
inventory-version: "1.3.0"
314+
inventory-version: ${{ needs.Prepare.outputs.version }}
235315
assets: |
316+
317+
secrets: inherit

0 commit comments

Comments
 (0)