summaryrefslogtreecommitdiff
path: root/python/openvino/demo/ip/intel_ai_ip/verilog/dla_dot.sv
blob: 9cd9c63664d4ce7254ca8ee0f549b8088d335b5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
`pragma protect begin_protected
`pragma protect version=1
`pragma protect author="Intel Corporation"
`pragma protect encrypt_agent="Quartus Prime Pro Software"
`pragma protect encrypt_agent_info="17.1"

`pragma protect key_keyowner="Intel Corporation"
`pragma protect key_method="rsa"
`pragma protect key_keyname="Intel-FPGA-Quartus-RSA-1"
`pragma protect encoding=(enctype = "base64", line_length = 76, bytes = 256)
`pragma protect key_block
kAm5fFo7+pBTXJ9xhb1QNMdcE74A74cZu1fwPJhrG7Pgjd99FO4pPbyobk0lLmYjPy7BalTFcC/P
yjQzQ4wVVZbLSEM9nHuQBYB7oxIhUNpj+VmF21z6xGBf7q9w8rAW8l0z1j5gnz7GktXH1ZCgAm9g
s4B43AyC4mxSMKo42IcFDjQL60450kfjmC6todLlo1aluiO1xw6aB3yvG4JfYRLX3qoSpDYGJRfq
kZ9aIi/iX0usOn0kIyILicY4OKLflIGpP6L1u7UcOi45LHnuhzDYWCF5cTNH6tcpQPonLm6tDpeV
RKFyeVg3jfzGGs1+vQbAmEttqjkG7EBMd9FzQg==

`pragma protect data_method="aes128-cbc"
`pragma protect encoding=(enctype = "base64", line_length = 76, bytes = 12352)
`pragma protect data_block
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
`pragma protect end_protected