Skip to content

Commit 09eda2d

Browse files
authored
v1.0.0
2 parents 91754be + 53e072a commit 09eda2d

39 files changed

+2516
-1
lines changed

.editorconfig

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
# end_of_line = lf
6+
insert_final_newline = true
7+
trim_trailing_whitespace = true
8+
indent_style = tab
9+
indent_size = 2
10+
tab_width = 2
11+
12+
13+
[*.py]
14+
indent_style = tab
15+
indent_size = 2
16+
17+
[*.{yml,yaml}]
18+
indent_style = space
19+
indent_size = 2
20+
21+
[*.{json,ini}]
22+
indent_style = tab
23+
indent_size = 2
24+
25+
[*.md]
26+
trim_trailing_whitespace = false
27+
28+
[*.rst]
29+
indent_style = space
30+
indent_size = 3

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.sh text eol=lf

.github/workflows/Pipeline.yml

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
name: Regression Testing
2+
3+
on:
4+
push:
5+
pull_request:
6+
workflow_dispatch:
7+
schedule:
8+
- cron: '0 15 * * *'
9+
10+
jobs:
11+
NVC:
12+
name: ${{ matrix.icon }}${{ matrix.name }} - NVC
13+
runs-on: ${{ matrix.image }}
14+
strategy:
15+
fail-fast: false
16+
matrix:
17+
include:
18+
- {icon: "🐧", name: "Ubuntu", image: "ubuntu-24.04", shell: "bash"}
19+
## - {icon: "🪟", name: "Windows", image: "windows-2022", shell: "powershell"} # Scripting is Bash-based
20+
- {icon: "🪟🟨", name: "Windows", image: "windows-2022", shell: "msys2 {0}"} # Installation in Windows via MSI, but called from UCRT64.
21+
22+
defaults:
23+
run:
24+
shell: ${{ matrix.shell }}
25+
26+
steps:
27+
- name: ⏬ Checkout repository
28+
uses: actions/checkout@v4
29+
with:
30+
submodules: recursive
31+
32+
- name: ${{ matrix.icon }} Setup MSYS2 for UCRT64
33+
uses: msys2/setup-msys2@v2
34+
if: matrix.name == 'Windows' && startsWith(matrix.shell, 'msys2')
35+
with:
36+
msystem: ucrt64
37+
update: true
38+
39+
- name: 🔧 Install NVC
40+
uses: nickg/setup-nvc-ci@v1
41+
with:
42+
version: latest
43+
44+
- name: 🚧 Run tests on Ubuntu
45+
if: matrix.name == 'Ubuntu'
46+
run: |
47+
mkdir -p temp
48+
cd temp
49+
50+
../scripts/NVC.sh
51+
52+
- name: 🚧 Run tests on Windows + MSYS2/UCRT64
53+
if: matrix.name == 'Windows' && startsWith(matrix.shell, 'msys2')
54+
run: |
55+
export PATH="/c/Program Files/NVC/bin:$PATH"
56+
57+
mkdir -p temp
58+
cd temp
59+
60+
../scripts/NVC.sh
61+
62+
- name: 🚧 Inspect Ant+JUnit Unittest Summary XML
63+
# if: matrix.name == 'Ubuntu'
64+
run: |
65+
cat temp/*.xml
66+
67+
- name: '📤 Upload artifact: logs'
68+
uses: actions/upload-artifact@v4
69+
with:
70+
name: junit-${{ matrix.name }}-nvc
71+
include-hidden-files: true
72+
path: |
73+
temp/*.xml
74+
if-no-files-found: error
75+
retention-days: 1
76+
77+
PublishTestResults:
78+
uses: pyTooling/Actions/.github/workflows/PublishTestResults.yml@r5
79+
needs:
80+
- NVC
81+
with:
82+
unittest_artifacts_pattern: "junit-*"
83+
testsuite-summary-name: "Interfaces"
84+
dorny: true
85+
# codecov: true
86+
secrets: inherit

.gitignore

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,12 @@
1-
/temp
1+
# Python cache and object files
2+
__pycache__/
3+
*.py[cod]
4+
5+
# Sphinx documentation
6+
/doc/_build
7+
8+
# PyCharm project
9+
/.idea/workspace.xml
10+
11+
# Temperary generated outputs from scripts
12+
/temp

AMBA/AXI/v4/AXI4.vhdl

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
-- =============================================================================
2+
-- Authors:
3+
-- Rob Gaddi
4+
-- Patrick Lehmann
5+
--
6+
-- Package:
7+
-- VHDL-2019 Axi4 interface descriptions
8+
--
9+
-- Description:
10+
-- Undocumented
11+
--
12+
-- License:
13+
-- =============================================================================
14+
-- Copyright 2016-2025 Open Source VHDL Group
15+
--
16+
-- Licensed under the Apache License, Version 2.0 (the "License");
17+
-- you may not use this file except in compliance with the License.
18+
-- You may obtain a copy of the License at
19+
--
20+
-- http://www.apache.org/licenses/LICENSE-2.0
21+
--
22+
-- Unless required by applicable law or agreed to in writing, software
23+
-- distributed under the License is distributed on an "AS IS" BASIS,
24+
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25+
-- See the License for the specific language governing permissions and
26+
-- limitations under the License.
27+
-- =============================================================================
28+
29+
library IEEE;
30+
use IEEE.std_logic_1164.all;
31+
use IEEE.numeric_std.all;
32+
33+
use work.Axi4Common.all;
34+
35+
36+
package Axi4 is
37+
type Axi4_Address_Interface is record
38+
-- Handshake signals
39+
Valid : std_ulogic;
40+
Ready : std_ulogic;
41+
42+
-- Payload signals
43+
ID : ID_Type;
44+
Address : Address_Type;
45+
Length : Length_Type;
46+
Size : Size_Type;
47+
Burst : Burst_Type;
48+
Lock : Lock_Type;
49+
QoS : QoS_Type;
50+
Region : Region_Type;
51+
Cache : Cache_Type;
52+
Protect : Protect_Type;
53+
54+
User : User_Type;
55+
end record;
56+
type Axi4_Address_Interface_Vector is array(natural range <>) of Axi4_Address_Interface;
57+
58+
59+
type Axi4_WriteData_Interface is record
60+
-- Handshake signals
61+
Valid : std_ulogic;
62+
Ready : std_ulogic;
63+
64+
-- Payload signals
65+
Data : Data_Type;
66+
Strobe : Strobe_Type;
67+
Last : std_ulogic;
68+
69+
User : User_Type;
70+
end record;
71+
type Axi4_WriteData_Interface_Vector is array(natural range <>) of Axi4_WriteData_Interface;
72+
73+
type Axi4_WriteResponse_Interface is record
74+
-- Handshake signals
75+
Valid : std_ulogic;
76+
Ready : std_ulogic;
77+
78+
-- Payload signals
79+
ID : ID_Type;
80+
Response : Response_Type;
81+
82+
User : User_Type;
83+
end record;
84+
type Axi4_WriteResponse_Interface_Vector is array(natural range <>) of Axi4_WriteResponse_Interface;
85+
86+
type Axi4_ReadData_Interface is record
87+
-- Handshake signals
88+
Valid : std_ulogic;
89+
Ready : std_ulogic;
90+
91+
-- Payload signals
92+
ID : ID_Type;
93+
Response : Response_Type;
94+
95+
Data : Data_Type;
96+
Last : std_ulogic;
97+
98+
User : User_Type;
99+
end record;
100+
type Axi4_ReadData_Interface_Vector is array(natural range <>) of Axi4_ReadData_Interface;
101+
102+
type Axi4_Interface is record
103+
WriteAddress : Axi4_Address_Interface;
104+
WriteData : Axi4_WriteData_Interface;
105+
WriteResponse : Axi4_WriteResponse_Interface;
106+
ReadAddress : Axi4_Address_Interface;
107+
ReadData : Axi4_ReadData_Interface;
108+
end record;
109+
type Axi4_Interface_Vector is array(natural range <>) of Axi4_Interface;
110+
111+
-- All lower-level views are defined from the driver's point of view.
112+
view Axi4_Address_ManagerView of Axi4_Address_Interface is
113+
-- Handshake signals
114+
Valid : out;
115+
Ready : in;
116+
117+
-- Payload signals
118+
ID : out;
119+
Address : out;
120+
Length : out;
121+
Size : out;
122+
Burst : out;
123+
Lock : out;
124+
QoS : out;
125+
Region : out;
126+
Cache : out;
127+
Protect : out;
128+
User : out;
129+
end view;
130+
alias Axi4_Address_SubordinateView is Axi4_Address_ManagerView'converse;
131+
132+
view Axi4_WriteData_ManagerView of Axi4_WriteData_Interface is
133+
-- Handshake signals
134+
Valid : out;
135+
Ready : in;
136+
137+
-- Payload signals
138+
Data : out;
139+
Strobe : out;
140+
Last : out;
141+
User : out;
142+
end view;
143+
alias Axi4_WriteData_SubordinateView is Axi4_WriteData_ManagerView'converse;
144+
145+
view Axi4_WriteResponse_ManagerView of Axi4_WriteResponse_Interface is
146+
-- Handshake signals
147+
Valid : in;
148+
Ready : out;
149+
150+
-- Payload signals
151+
ID : in;
152+
Response : in;
153+
User : in;
154+
end view;
155+
alias Axi4_WriteResponse_SubordinateView is Axi4_WriteResponse_ManagerView'converse;
156+
157+
view Axi4_ReadData_ManagerView of Axi4_ReadData_Interface is
158+
-- Handshake signals
159+
Valid : in;
160+
Ready : out;
161+
162+
-- Payload signals
163+
ID : in;
164+
Response : in;
165+
Data : in;
166+
Last : in;
167+
User : in;
168+
end view;
169+
alias Axi4_ReadData_SubordinateView is Axi4_ReadData_ManagerView'converse;
170+
171+
view Axi4_ManagerView of Axi4_Interface is
172+
WriteAddress : view Axi4_Address_ManagerView;
173+
WriteData : view Axi4_WriteData_ManagerView;
174+
WriteResponse : view Axi4_WriteResponse_ManagerView;
175+
ReadAddress : view Axi4_Address_ManagerView;
176+
ReadData : view Axi4_ReadData_ManagerView;
177+
end view;
178+
alias Axi4_SubordinateView is Axi4_ManagerView'converse;
179+
180+
end package;

0 commit comments

Comments
 (0)