esiaccel 0.1.5.dev71__cp310-cp310-win_amd64.whl → 0.1.5.dev104__cp310-cp310-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of esiaccel might be problematic. Click here for more details.
- esiaccel/CosimBackend.dll +0 -0
- esiaccel/CosimBackend.lib +0 -0
- esiaccel/ESICppRuntime.dll +0 -0
- esiaccel/ESICppRuntime.lib +0 -0
- esiaccel/EsiCosimDpiServer.dll +0 -0
- esiaccel/MtiPli.dll +0 -0
- esiaccel/__init__.py +10 -1
- esiaccel/esiCppAccel.cp310-win_amd64.pyd +0 -0
- esiaccel/esiquery.exe +0 -0
- esiaccel/include/esi/Common.h +0 -6
- esiaccel/include/esi/Types.h +15 -88
- esiaccel/types.py +60 -22
- esiaccel/utils.py +11 -1
- {esiaccel-0.1.5.dev71.dist-info → esiaccel-0.1.5.dev104.dist-info}/METADATA +1 -1
- {esiaccel-0.1.5.dev71.dist-info → esiaccel-0.1.5.dev104.dist-info}/RECORD +19 -19
- {esiaccel-0.1.5.dev71.dist-info → esiaccel-0.1.5.dev104.dist-info}/WHEEL +0 -0
- {esiaccel-0.1.5.dev71.dist-info → esiaccel-0.1.5.dev104.dist-info}/entry_points.txt +0 -0
- {esiaccel-0.1.5.dev71.dist-info → esiaccel-0.1.5.dev104.dist-info}/licenses/LICENSE +0 -0
- {esiaccel-0.1.5.dev71.dist-info → esiaccel-0.1.5.dev104.dist-info}/top_level.txt +0 -0
esiaccel/CosimBackend.dll
CHANGED
|
Binary file
|
esiaccel/CosimBackend.lib
CHANGED
|
Binary file
|
esiaccel/ESICppRuntime.dll
CHANGED
|
Binary file
|
esiaccel/ESICppRuntime.lib
CHANGED
|
Binary file
|
esiaccel/EsiCosimDpiServer.dll
CHANGED
|
Binary file
|
esiaccel/MtiPli.dll
CHANGED
|
Binary file
|
esiaccel/__init__.py
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
2
2
|
# See https://llvm.org/LICENSE.txt for license information.
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
4
|
-
|
|
4
|
+
import sys
|
|
5
|
+
import os
|
|
5
6
|
from .accelerator import AcceleratorConnection
|
|
6
7
|
|
|
7
8
|
from .esiCppAccel import (AppID, Type, BundleType, ChannelType, ArrayType,
|
|
@@ -11,3 +12,11 @@ __all__ = [
|
|
|
11
12
|
"AcceleratorConnection", "AppID", "Type", "BundleType", "ChannelType",
|
|
12
13
|
"ArrayType", "StructType", "BitsType", "UIntType", "SIntType"
|
|
13
14
|
]
|
|
15
|
+
|
|
16
|
+
if sys.platform == "win32":
|
|
17
|
+
"""Ensure that ESI libraries are in the dll path on Windows. Necessary to
|
|
18
|
+
call when users build against the esiaccel-provided prebuilt CMake/prebuilt
|
|
19
|
+
libraries, before they are loaded via. python.
|
|
20
|
+
"""
|
|
21
|
+
from .utils import get_dll_dir
|
|
22
|
+
os.add_dll_directory(str(get_dll_dir()))
|
|
Binary file
|
esiaccel/esiquery.exe
CHANGED
|
Binary file
|
esiaccel/include/esi/Common.h
CHANGED
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
#include <cstdint>
|
|
21
21
|
#include <map>
|
|
22
22
|
#include <optional>
|
|
23
|
-
#include <span>
|
|
24
23
|
#include <stdexcept>
|
|
25
24
|
#include <string>
|
|
26
25
|
#include <vector>
|
|
@@ -116,11 +115,6 @@ public:
|
|
|
116
115
|
/// Get the data as a vector of bytes.
|
|
117
116
|
const std::vector<uint8_t> &getData() const { return data; }
|
|
118
117
|
|
|
119
|
-
/// Implicit conversion to a vector/span of bytes, to play nice with other
|
|
120
|
-
/// APIs that accept bytearray-like things.
|
|
121
|
-
operator const std::vector<uint8_t> &() const { return data; }
|
|
122
|
-
operator std::span<const uint8_t>() const { return data; }
|
|
123
|
-
|
|
124
118
|
/// Move the data out of this object.
|
|
125
119
|
std::vector<uint8_t> takeData() { return std::move(data); }
|
|
126
120
|
|
esiaccel/include/esi/Types.h
CHANGED
|
@@ -16,17 +16,11 @@
|
|
|
16
16
|
#ifndef ESI_TYPES_H
|
|
17
17
|
#define ESI_TYPES_H
|
|
18
18
|
|
|
19
|
-
#include <algorithm>
|
|
20
|
-
#include <any>
|
|
21
19
|
#include <cstdint>
|
|
22
20
|
#include <map>
|
|
23
|
-
#include <span>
|
|
24
|
-
#include <stdexcept>
|
|
25
21
|
#include <string>
|
|
26
22
|
#include <vector>
|
|
27
23
|
|
|
28
|
-
#include "esi/Common.h"
|
|
29
|
-
|
|
30
24
|
namespace esi {
|
|
31
25
|
|
|
32
26
|
/// Root class of the ESI type system.
|
|
@@ -39,37 +33,6 @@ public:
|
|
|
39
33
|
ID getID() const { return id; }
|
|
40
34
|
virtual std::ptrdiff_t getBitWidth() const { return -1; }
|
|
41
35
|
|
|
42
|
-
/// Serialize an object to MessageData. The object should be passed as a
|
|
43
|
-
/// std::any to provide type erasure. Returns a MessageData containing the
|
|
44
|
-
/// serialized representation.
|
|
45
|
-
virtual MessageData serialize(const std::any &obj) const {
|
|
46
|
-
throw std::runtime_error("Serialization not implemented for type " + id);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/// Deserialize from a span of bytes to an object. Returns the deserialized
|
|
50
|
-
/// object as a std::any and a span to the remaining bytes.
|
|
51
|
-
virtual std::pair<std::any, std::span<const uint8_t>>
|
|
52
|
-
deserialize(std::span<const uint8_t> data) const {
|
|
53
|
-
throw std::runtime_error("Deserialization not implemented for type " + id);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/// Ensure that a std::any object is valid for this type. Throws
|
|
57
|
-
/// std::runtime_error if the object is not valid.
|
|
58
|
-
virtual void ensureValid(const std::any &obj) const {
|
|
59
|
-
throw std::runtime_error("Validation not implemented for type " + id);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Check if a std::any object is valid for this type. Returns an optional
|
|
63
|
-
// error message if the object is not valid, else, std::nullopt.
|
|
64
|
-
std::optional<std::string> isValid(const std::any &obj) const {
|
|
65
|
-
try {
|
|
66
|
-
ensureValid(obj);
|
|
67
|
-
return std::nullopt;
|
|
68
|
-
} catch (const std::runtime_error &e) {
|
|
69
|
-
return e.what();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
36
|
protected:
|
|
74
37
|
ID id;
|
|
75
38
|
};
|
|
@@ -91,7 +54,12 @@ public:
|
|
|
91
54
|
const ChannelVector &getChannels() const { return channels; }
|
|
92
55
|
std::ptrdiff_t getBitWidth() const override { return -1; };
|
|
93
56
|
|
|
94
|
-
std::pair<const Type *, Direction> findChannel(std::string name) const
|
|
57
|
+
std::pair<const Type *, Direction> findChannel(std::string name) const {
|
|
58
|
+
for (auto [channelName, dir, type] : channels)
|
|
59
|
+
if (channelName == name)
|
|
60
|
+
return std::make_pair(type, dir);
|
|
61
|
+
throw std::runtime_error("Channel '" + name + "' not found in bundle");
|
|
62
|
+
}
|
|
95
63
|
|
|
96
64
|
protected:
|
|
97
65
|
ChannelVector channels;
|
|
@@ -105,13 +73,6 @@ public:
|
|
|
105
73
|
const Type *getInner() const { return inner; }
|
|
106
74
|
std::ptrdiff_t getBitWidth() const override { return inner->getBitWidth(); };
|
|
107
75
|
|
|
108
|
-
void ensureValid(const std::any &obj) const override;
|
|
109
|
-
|
|
110
|
-
MessageData serialize(const std::any &obj) const override;
|
|
111
|
-
|
|
112
|
-
std::pair<std::any, std::span<const uint8_t>>
|
|
113
|
-
deserialize(std::span<const uint8_t> data) const override;
|
|
114
|
-
|
|
115
76
|
private:
|
|
116
77
|
const Type *inner;
|
|
117
78
|
};
|
|
@@ -122,13 +83,6 @@ public:
|
|
|
122
83
|
VoidType(const ID &id) : Type(id) {}
|
|
123
84
|
// 'void' is 1 bit by convention.
|
|
124
85
|
std::ptrdiff_t getBitWidth() const override { return 1; };
|
|
125
|
-
|
|
126
|
-
void ensureValid(const std::any &obj) const override;
|
|
127
|
-
|
|
128
|
-
MessageData serialize(const std::any &obj) const override;
|
|
129
|
-
|
|
130
|
-
std::pair<std::any, std::span<const uint8_t>>
|
|
131
|
-
deserialize(std::span<const uint8_t> data) const override;
|
|
132
86
|
};
|
|
133
87
|
|
|
134
88
|
/// The "any" type is a special type which can be used to represent any type, as
|
|
@@ -158,13 +112,6 @@ private:
|
|
|
158
112
|
class BitsType : public BitVectorType {
|
|
159
113
|
public:
|
|
160
114
|
using BitVectorType::BitVectorType;
|
|
161
|
-
|
|
162
|
-
void ensureValid(const std::any &obj) const override;
|
|
163
|
-
|
|
164
|
-
MessageData serialize(const std::any &obj) const override;
|
|
165
|
-
|
|
166
|
-
std::pair<std::any, std::span<const uint8_t>>
|
|
167
|
-
deserialize(std::span<const uint8_t> data) const override;
|
|
168
115
|
};
|
|
169
116
|
|
|
170
117
|
/// Integers are bit vectors which may be signed or unsigned and are interpreted
|
|
@@ -178,26 +125,12 @@ public:
|
|
|
178
125
|
class SIntType : public IntegerType {
|
|
179
126
|
public:
|
|
180
127
|
using IntegerType::IntegerType;
|
|
181
|
-
|
|
182
|
-
void ensureValid(const std::any &obj) const override;
|
|
183
|
-
|
|
184
|
-
MessageData serialize(const std::any &obj) const override;
|
|
185
|
-
|
|
186
|
-
std::pair<std::any, std::span<const uint8_t>>
|
|
187
|
-
deserialize(std::span<const uint8_t> data) const override;
|
|
188
128
|
};
|
|
189
129
|
|
|
190
130
|
/// Unsigned integer.
|
|
191
131
|
class UIntType : public IntegerType {
|
|
192
132
|
public:
|
|
193
133
|
using IntegerType::IntegerType;
|
|
194
|
-
|
|
195
|
-
void ensureValid(const std::any &obj) const override;
|
|
196
|
-
|
|
197
|
-
MessageData serialize(const std::any &obj) const override;
|
|
198
|
-
|
|
199
|
-
std::pair<std::any, std::span<const uint8_t>>
|
|
200
|
-
deserialize(std::span<const uint8_t> data) const override;
|
|
201
134
|
};
|
|
202
135
|
|
|
203
136
|
/// Structs are an ordered collection of fields, each with a name and a type.
|
|
@@ -205,8 +138,8 @@ class StructType : public Type {
|
|
|
205
138
|
public:
|
|
206
139
|
using FieldVector = std::vector<std::pair<std::string, const Type *>>;
|
|
207
140
|
|
|
208
|
-
StructType(const ID &id, const FieldVector &fields)
|
|
209
|
-
: Type(id), fields(fields) {}
|
|
141
|
+
StructType(const ID &id, const FieldVector &fields, bool reverse = true)
|
|
142
|
+
: Type(id), fields(fields), reverse(reverse) {}
|
|
210
143
|
|
|
211
144
|
const FieldVector &getFields() const { return fields; }
|
|
212
145
|
std::ptrdiff_t getBitWidth() const override {
|
|
@@ -220,15 +153,16 @@ public:
|
|
|
220
153
|
return size;
|
|
221
154
|
}
|
|
222
155
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
156
|
+
// Returns whether this struct type should be reversed when
|
|
157
|
+
// serializing/deserializing.
|
|
158
|
+
// By default, a truthy value here makes StructType's compatible with system
|
|
159
|
+
// verilog, which has reversed struct field ordering, wrt. C/software struct
|
|
160
|
+
// ordering.
|
|
161
|
+
bool isReverse() const { return reverse; }
|
|
229
162
|
|
|
230
163
|
private:
|
|
231
164
|
FieldVector fields;
|
|
165
|
+
bool reverse;
|
|
232
166
|
};
|
|
233
167
|
|
|
234
168
|
/// Arrays have a compile time specified (static) size and an element type.
|
|
@@ -246,13 +180,6 @@ public:
|
|
|
246
180
|
return elementSize * size;
|
|
247
181
|
}
|
|
248
182
|
|
|
249
|
-
void ensureValid(const std::any &obj) const override;
|
|
250
|
-
|
|
251
|
-
MessageData serialize(const std::any &obj) const override;
|
|
252
|
-
|
|
253
|
-
std::pair<std::any, std::span<const uint8_t>>
|
|
254
|
-
deserialize(std::span<const uint8_t> data) const override;
|
|
255
|
-
|
|
256
183
|
private:
|
|
257
184
|
const Type *elementType;
|
|
258
185
|
uint64_t size;
|
esiaccel/types.py
CHANGED
|
@@ -15,6 +15,7 @@ from __future__ import annotations
|
|
|
15
15
|
from . import esiCppAccel as cpp
|
|
16
16
|
|
|
17
17
|
from typing import TYPE_CHECKING
|
|
18
|
+
|
|
18
19
|
if TYPE_CHECKING:
|
|
19
20
|
from .accelerator import HWModule
|
|
20
21
|
|
|
@@ -26,22 +27,33 @@ import traceback
|
|
|
26
27
|
|
|
27
28
|
def _get_esi_type(cpp_type: cpp.Type):
|
|
28
29
|
"""Get the wrapper class for a C++ type."""
|
|
29
|
-
|
|
30
|
+
if isinstance(cpp_type, cpp.ChannelType):
|
|
31
|
+
return _get_esi_type(cpp_type.inner)
|
|
32
|
+
|
|
33
|
+
for cpp_type_cls, wrapper_cls in __esi_mapping.items():
|
|
30
34
|
if isinstance(cpp_type, cpp_type_cls):
|
|
31
|
-
return
|
|
32
|
-
return ESIType(cpp_type)
|
|
35
|
+
return wrapper_cls.wrap_cpp(cpp_type)
|
|
36
|
+
return ESIType.wrap_cpp(cpp_type)
|
|
33
37
|
|
|
34
38
|
|
|
35
|
-
# Mapping from C++ types to
|
|
36
|
-
|
|
37
|
-
__esi_mapping: Dict[Type, Callable] = {
|
|
38
|
-
cpp.ChannelType: lambda cpp_type: _get_esi_type(cpp_type.inner)
|
|
39
|
-
}
|
|
39
|
+
# Mapping from C++ types to wrapper classes
|
|
40
|
+
__esi_mapping: Dict[Type, Type] = {}
|
|
40
41
|
|
|
41
42
|
|
|
42
43
|
class ESIType:
|
|
43
44
|
|
|
44
|
-
def __init__(self,
|
|
45
|
+
def __init__(self, id: str):
|
|
46
|
+
self._init_from_cpp(cpp.Type(id))
|
|
47
|
+
|
|
48
|
+
@classmethod
|
|
49
|
+
def wrap_cpp(cls, cpp_type: cpp.Type):
|
|
50
|
+
"""Wrap a C++ ESI type with its corresponding Python ESI Type."""
|
|
51
|
+
instance = cls.__new__(cls)
|
|
52
|
+
instance._init_from_cpp(cpp_type)
|
|
53
|
+
return instance
|
|
54
|
+
|
|
55
|
+
def _init_from_cpp(self, cpp_type: cpp.Type):
|
|
56
|
+
"""Initialize instance attributes from a C++ type object."""
|
|
45
57
|
self.cpp_type = cpp_type
|
|
46
58
|
|
|
47
59
|
@property
|
|
@@ -86,6 +98,9 @@ class ESIType:
|
|
|
86
98
|
|
|
87
99
|
class VoidType(ESIType):
|
|
88
100
|
|
|
101
|
+
def __init__(self, id: str):
|
|
102
|
+
self._init_from_cpp(cpp.VoidType(id))
|
|
103
|
+
|
|
89
104
|
def is_valid(self, obj) -> Tuple[bool, Optional[str]]:
|
|
90
105
|
if obj is not None:
|
|
91
106
|
return (False, f"void type cannot must represented by None, not {obj}")
|
|
@@ -110,8 +125,8 @@ __esi_mapping[cpp.VoidType] = VoidType
|
|
|
110
125
|
|
|
111
126
|
class BitsType(ESIType):
|
|
112
127
|
|
|
113
|
-
def __init__(self,
|
|
114
|
-
self.
|
|
128
|
+
def __init__(self, id: str, width: int):
|
|
129
|
+
self._init_from_cpp(cpp.BitsType(id, width))
|
|
115
130
|
|
|
116
131
|
def is_valid(self, obj) -> Tuple[bool, Optional[str]]:
|
|
117
132
|
if not isinstance(obj, (bytearray, bytes, list)):
|
|
@@ -143,8 +158,8 @@ __esi_mapping[cpp.BitsType] = BitsType
|
|
|
143
158
|
|
|
144
159
|
class IntType(ESIType):
|
|
145
160
|
|
|
146
|
-
def __init__(self,
|
|
147
|
-
self.
|
|
161
|
+
def __init__(self, id: str, width: int):
|
|
162
|
+
self._init_from_cpp(cpp.IntegerType(id, width))
|
|
148
163
|
|
|
149
164
|
@property
|
|
150
165
|
def bit_width(self) -> int:
|
|
@@ -153,6 +168,9 @@ class IntType(ESIType):
|
|
|
153
168
|
|
|
154
169
|
class UIntType(IntType):
|
|
155
170
|
|
|
171
|
+
def __init__(self, id: str, width: int):
|
|
172
|
+
self._init_from_cpp(cpp.UIntType(id, width))
|
|
173
|
+
|
|
156
174
|
def is_valid(self, obj) -> Tuple[bool, Optional[str]]:
|
|
157
175
|
if not isinstance(obj, int):
|
|
158
176
|
return (False, f"must be an int, not {type(obj)}")
|
|
@@ -176,6 +194,9 @@ __esi_mapping[cpp.UIntType] = UIntType
|
|
|
176
194
|
|
|
177
195
|
class SIntType(IntType):
|
|
178
196
|
|
|
197
|
+
def __init__(self, id: str, width: int):
|
|
198
|
+
self._init_from_cpp(cpp.SIntType(id, width))
|
|
199
|
+
|
|
179
200
|
def is_valid(self, obj) -> Tuple[bool, Optional[str]]:
|
|
180
201
|
if not isinstance(obj, int):
|
|
181
202
|
return (False, f"must be an int, not {type(obj)}")
|
|
@@ -203,11 +224,16 @@ __esi_mapping[cpp.SIntType] = SIntType
|
|
|
203
224
|
|
|
204
225
|
class StructType(ESIType):
|
|
205
226
|
|
|
206
|
-
def __init__(self,
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
227
|
+
def __init__(self, id: str, fields: List[Tuple[str, "ESIType"]]):
|
|
228
|
+
# Convert Python ESIType fields to cpp Type fields
|
|
229
|
+
cpp_fields = [(name, field_type.cpp_type) for name, field_type in fields]
|
|
230
|
+
self._init_from_cpp(cpp.StructType(id, cpp_fields))
|
|
231
|
+
|
|
232
|
+
def _init_from_cpp(self, cpp_type: cpp.StructType):
|
|
233
|
+
"""Initialize instance attributes from a C++ type object."""
|
|
234
|
+
super()._init_from_cpp(cpp_type)
|
|
235
|
+
# For wrap_cpp path, we need to convert C++ fields back to Python
|
|
236
|
+
self.fields = [(name, _get_esi_type(ty)) for (name, ty) in cpp_type.fields]
|
|
211
237
|
|
|
212
238
|
@property
|
|
213
239
|
def bit_width(self) -> int:
|
|
@@ -219,6 +245,8 @@ class StructType(ESIType):
|
|
|
219
245
|
def is_valid(self, obj) -> Tuple[bool, Optional[str]]:
|
|
220
246
|
fields_count = 0
|
|
221
247
|
if not isinstance(obj, dict):
|
|
248
|
+
if not hasattr(obj, "__dict__"):
|
|
249
|
+
return (False, "must be a dict or have __dict__ attribute")
|
|
222
250
|
obj = obj.__dict__
|
|
223
251
|
|
|
224
252
|
for (fname, ftype) in self.fields:
|
|
@@ -234,14 +262,20 @@ class StructType(ESIType):
|
|
|
234
262
|
|
|
235
263
|
def serialize(self, obj) -> bytearray:
|
|
236
264
|
ret = bytearray()
|
|
237
|
-
|
|
265
|
+
if not isinstance(obj, dict):
|
|
266
|
+
obj = obj.__dict__
|
|
267
|
+
ordered_fields = reversed(
|
|
268
|
+
self.fields) if self.cpp_type.reverse else self.fields
|
|
269
|
+
for (fname, ftype) in ordered_fields:
|
|
238
270
|
fval = obj[fname]
|
|
239
271
|
ret.extend(ftype.serialize(fval))
|
|
240
272
|
return ret
|
|
241
273
|
|
|
242
274
|
def deserialize(self, data: bytearray) -> Tuple[Dict[str, Any], bytearray]:
|
|
243
275
|
ret = {}
|
|
244
|
-
|
|
276
|
+
ordered_fields = reversed(
|
|
277
|
+
self.fields) if self.cpp_type.reverse else self.fields
|
|
278
|
+
for (fname, ftype) in ordered_fields:
|
|
245
279
|
(fval, data) = ftype.deserialize(data)
|
|
246
280
|
ret[fname] = fval
|
|
247
281
|
return (ret, data)
|
|
@@ -252,8 +286,12 @@ __esi_mapping[cpp.StructType] = StructType
|
|
|
252
286
|
|
|
253
287
|
class ArrayType(ESIType):
|
|
254
288
|
|
|
255
|
-
def __init__(self,
|
|
256
|
-
self.cpp_type
|
|
289
|
+
def __init__(self, id: str, element_type: "ESIType", size: int):
|
|
290
|
+
self._init_from_cpp(cpp.ArrayType(id, element_type.cpp_type, size))
|
|
291
|
+
|
|
292
|
+
def _init_from_cpp(self, cpp_type: cpp.ArrayType):
|
|
293
|
+
"""Initialize instance attributes from a C++ type object."""
|
|
294
|
+
super()._init_from_cpp(cpp_type)
|
|
257
295
|
self.element_type = _get_esi_type(cpp_type.element)
|
|
258
296
|
self.size = cpp_type.size
|
|
259
297
|
|
esiaccel/utils.py
CHANGED
|
@@ -40,5 +40,15 @@ def run_cppgen():
|
|
|
40
40
|
return codegen.run()
|
|
41
41
|
|
|
42
42
|
|
|
43
|
-
def get_cmake_dir():
|
|
43
|
+
def get_cmake_dir() -> Path:
|
|
44
44
|
return _thisdir / "cmake"
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def get_dll_dir() -> Path:
|
|
48
|
+
"""Return the directory where the ESI dll's are located"""
|
|
49
|
+
import sys
|
|
50
|
+
import os
|
|
51
|
+
if sys.platform == "win32":
|
|
52
|
+
return _thisdir
|
|
53
|
+
else:
|
|
54
|
+
return _thisdir / "lib"
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
esiaccel/CosimBackend.dll,sha256=
|
|
2
|
-
esiaccel/CosimBackend.lib,sha256=
|
|
3
|
-
esiaccel/ESICppRuntime.dll,sha256=
|
|
4
|
-
esiaccel/ESICppRuntime.lib,sha256=
|
|
5
|
-
esiaccel/EsiCosimDpiServer.dll,sha256=
|
|
1
|
+
esiaccel/CosimBackend.dll,sha256=5wHUFRaqVI0FlWM6NF-PLJXTw67-96wiEHqn3PDxK2g,7150592
|
|
2
|
+
esiaccel/CosimBackend.lib,sha256=LtcEhVi75BqE9pNbUTxOoSFvcjI954tz7VmdsBTaoLY,4991556
|
|
3
|
+
esiaccel/ESICppRuntime.dll,sha256=l7pwCT6ELe86CKhEtu-MnzKGCWIKZ54BTPEUUIh7JLc,3722240
|
|
4
|
+
esiaccel/ESICppRuntime.lib,sha256=jIEtwRR_6zJuM_eXeRTQYjBwp4CPp2ghYt9gGNQFwyU,14530126
|
|
5
|
+
esiaccel/EsiCosimDpiServer.dll,sha256=NO3jBGlWwcGYu0pzwZQobnaPtG6X8HDs4cFLNjIDzOI,159744
|
|
6
6
|
esiaccel/EsiCosimDpiServer.lib,sha256=bYBigD0RtRRSEiDxf4_gvpasLjD8fcUmC0CjRgQiQ0s,604164
|
|
7
|
-
esiaccel/MtiPli.dll,sha256=
|
|
7
|
+
esiaccel/MtiPli.dll,sha256=jObzMutjzWubCeQzewNN17aFdG_Sz5DjQNJ7ReV-GKA,14848
|
|
8
8
|
esiaccel/MtiPli.lib,sha256=X0PcXwheCUvBMgQ5BAawePxbXQSLNk5M1FFn6V56ydo,14570
|
|
9
|
-
esiaccel/__init__.py,sha256=
|
|
9
|
+
esiaccel/__init__.py,sha256=65xXWHwJwRePsyhWk837NpzuN0qsNhoAX29TOiSYKGc,905
|
|
10
10
|
esiaccel/accelerator.py,sha256=BcXPsUqcQV3YsVVyYbz9P6JnZLlcnuageFbJwID9_3s,3318
|
|
11
11
|
esiaccel/codegen.py,sha256=uoYELtnIabVvgLeCABj-mWras0BvmSKABPH-cd9nDFk,6560
|
|
12
12
|
esiaccel/esi-cosim.py,sha256=GwYfNh4aagypheAhGf0EIX6ojkLYKkc5OMlFR9pfXe8,14381
|
|
13
|
-
esiaccel/esiCppAccel.cp310-win_amd64.pyd,sha256=
|
|
14
|
-
esiaccel/esiquery.exe,sha256=
|
|
15
|
-
esiaccel/types.py,sha256=
|
|
16
|
-
esiaccel/utils.py,sha256=
|
|
13
|
+
esiaccel/esiCppAccel.cp310-win_amd64.pyd,sha256=XPSxzEYLOBtEcgjsQX0fcSRpmN0C3ORnG6yRBSBI398,497152
|
|
14
|
+
esiaccel/esiquery.exe,sha256=5IsO8a1271Cdei9Qre39lkFgDzIt4tNOmDFloDrts0A,441856
|
|
15
|
+
esiaccel/types.py,sha256=LFLzUCvtYF6FLsmKet6eJTMq2ija2Z5kxd5Ks6tkS4U,19044
|
|
16
|
+
esiaccel/utils.py,sha256=q-8fmgJ9tUvmBsIvqZiZ7u845IJhOjvjYTQLhhrNYl0,1515
|
|
17
17
|
esiaccel/cmake/esiaccelConfig.cmake,sha256=u2aW99k1lEcmYTG1P3BTJqtmDrj53wUUaBz_jzw8kYY,565
|
|
18
18
|
esiaccel/cosim/Cosim_DpiPkg.sv,sha256=9qGn1VyAVrzBP5At1thV6xrovg0WghICD01Zz9J221E,3458
|
|
19
19
|
esiaccel/cosim/Cosim_Endpoint.sv,sha256=ri1fHdkiphe8S2-vm6Ru16rBGYiDiS1c8qeCAsl1diU,6498
|
|
@@ -22,7 +22,7 @@ esiaccel/cosim/driver.cpp,sha256=DrEKkSN7Y_Hu7wcaUulH5mbC2L4yB9xLClRMeRUpzHM,384
|
|
|
22
22
|
esiaccel/cosim/driver.sv,sha256=ro-j9GM164A1W0MDPkqYfEn3TUKHSqVvgjO31fnloQI,1428
|
|
23
23
|
esiaccel/include/esi/Accelerator.h,sha256=RhkZ2HeMZ0iHc5BkHdDWXoeg9J9lyPQciH5bWq5Qc_w,9772
|
|
24
24
|
esiaccel/include/esi/CLI.h,sha256=Nn8tHn_xtEfkrD7USE2tao6ktYOJ6xcbnhZkS9-ox0A,2540
|
|
25
|
-
esiaccel/include/esi/Common.h,sha256=
|
|
25
|
+
esiaccel/include/esi/Common.h,sha256=pR2cqBEgKRYeJsHatjE7MC5WAw9SGbcO-JOyIGjIwF8,5503
|
|
26
26
|
esiaccel/include/esi/Context.h,sha256=Tk_4nBDtTeVY62GfX4Cs_ZMIQstjSgrWHddN_PKANEA,2396
|
|
27
27
|
esiaccel/include/esi/Design.h,sha256=mU8OwpCYijiWSdDq17l45LMzZxBca93nosudWCXNHfQ,4922
|
|
28
28
|
esiaccel/include/esi/Engines.h,sha256=bbGbhXjYMpIpXh_DR0OS57zyGQUIDXh_S7xHX3su0Y0,4831
|
|
@@ -30,14 +30,14 @@ esiaccel/include/esi/Logging.h,sha256=sHqMcpp0lNIHkIEyvSm-BBWx4zXXh6NOATCgZpgzYI
|
|
|
30
30
|
esiaccel/include/esi/Manifest.h,sha256=j3v9UA0ogtJQBlv6k5s4j_3sCsq-gwF9btVg5dKTBlg,2244
|
|
31
31
|
esiaccel/include/esi/Ports.h,sha256=T2WbPBViUSvFbO5Jjxlcp_eGq9jMitguvNnz3O0564U,10543
|
|
32
32
|
esiaccel/include/esi/Services.h,sha256=H7Iq3F3LivSZHblFJmrC8RAU_MftfKAPDtyGBfJ2nP4,14815
|
|
33
|
-
esiaccel/include/esi/Types.h,sha256=
|
|
33
|
+
esiaccel/include/esi/Types.h,sha256=05nnhCXvStzCy436UM4LA6Z6N9jHgHUJgGcP5CWHQY0,5859
|
|
34
34
|
esiaccel/include/esi/Utils.h,sha256=KPd75GajIFeTBVJocXBjwsJqhbZg-ShWZCIe3oQdBss,3061
|
|
35
35
|
esiaccel/include/esi/backends/Cosim.h,sha256=s7vYd0ra6m1nvk-n37MjvBoGVI-CCUKBt0DU4PKlaHM,2838
|
|
36
36
|
esiaccel/include/esi/backends/RpcServer.h,sha256=WMwnhwU2qnrcglGNeiKg9QQHpkDx1QE1JydKYDK4jqE,1856
|
|
37
37
|
esiaccel/include/esi/backends/Trace.h,sha256=kx4wwLH3a0ndmRUdaDyYGZ1SP83zlpFrk30Nw8ZrJJA,3286
|
|
38
|
-
esiaccel-0.1.5.
|
|
39
|
-
esiaccel-0.1.5.
|
|
40
|
-
esiaccel-0.1.5.
|
|
41
|
-
esiaccel-0.1.5.
|
|
42
|
-
esiaccel-0.1.5.
|
|
43
|
-
esiaccel-0.1.5.
|
|
38
|
+
esiaccel-0.1.5.dev104.dist-info/licenses/LICENSE,sha256=vtnVnB8_lN1yPYcA5MeT56R8UsQtBhyzZLBvu_KMf7I,13468
|
|
39
|
+
esiaccel-0.1.5.dev104.dist-info/METADATA,sha256=swcP5O3aZB-EDQxTAXzd7KNZDFebItz5aaHCmwicAMo,16148
|
|
40
|
+
esiaccel-0.1.5.dev104.dist-info/WHEEL,sha256=KUuBC6lxAbHCKilKua8R9W_TM71_-9Sg5uEP3uDWcoU,101
|
|
41
|
+
esiaccel-0.1.5.dev104.dist-info/entry_points.txt,sha256=_CuNLV0fyTURxRREFwpzGycifZW_-7-MyuJNEwKK9J8,137
|
|
42
|
+
esiaccel-0.1.5.dev104.dist-info/top_level.txt,sha256=fYWTWMDK4PDu4ePQ9NtcFHas2k8-d1kWhTs2avPpgB4,9
|
|
43
|
+
esiaccel-0.1.5.dev104.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|