esiaccel 0.1.5.dev71__cp312-cp312-win_amd64.whl → 0.1.5.dev104__cp312-cp312-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 CHANGED
Binary file
esiaccel/CosimBackend.lib CHANGED
Binary file
Binary file
Binary file
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
@@ -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
 
@@ -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
- void ensureValid(const std::any &obj) const override;
224
-
225
- MessageData serialize(const std::any &obj) const override;
226
-
227
- std::pair<std::any, std::span<const uint8_t>>
228
- deserialize(std::span<const uint8_t> data) const override;
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
- for cpp_type_cls, fn in __esi_mapping.items():
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 fn(cpp_type)
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 functions constructing the Python object
36
- # corresponding to that type.
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, cpp_type: cpp.Type):
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, cpp_type: cpp.BitsType):
114
- self.cpp_type: cpp.BitsType = cpp_type
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, cpp_type: cpp.IntegerType):
147
- self.cpp_type: cpp.IntegerType = cpp_type
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, cpp_type: cpp.StructType):
207
- self.cpp_type = cpp_type
208
- self.fields: List[Tuple[str, ESIType]] = [
209
- (name, _get_esi_type(ty)) for (name, ty) in cpp_type.fields
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
- for (fname, ftype) in reversed(self.fields):
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
- for (fname, ftype) in reversed(self.fields):
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, cpp_type: cpp.ArrayType):
256
- self.cpp_type = 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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: esiaccel
3
- Version: 0.1.5.dev71
3
+ Version: 0.1.5.dev104
4
4
  Summary: ESI accelerators runtime
5
5
  Author-email: John Demme <John.Demme@microsoft.com>
6
6
  License: ==============================================================================
@@ -1,19 +1,19 @@
1
- esiaccel/CosimBackend.dll,sha256=6i8cr_i9aBk_M5uDqeAR7gin0yuJfB-eLBtku-c_jWo,7152128
2
- esiaccel/CosimBackend.lib,sha256=S1wD7i3dUYU1AmrlONIqggtOUbt9oxOGVmzZwXaPQnk,4992914
3
- esiaccel/ESICppRuntime.dll,sha256=lzxARaXRQLKb6VGOjULuMZMlSWSFoT_-1xFsW3rJFCw,4068352
4
- esiaccel/ESICppRuntime.lib,sha256=bWRxqgq0CYXlsMuJQZNetNhRQiw9JJgfM-NLiaMHHqA,15124618
5
- esiaccel/EsiCosimDpiServer.dll,sha256=rFcPBt-2UvnIIQrBE6AfqmvDCzHJE2MBwQEVrvtNrh0,159744
1
+ esiaccel/CosimBackend.dll,sha256=RlSIvtBDE5dzjEF1jXUAx_gBNmU0SuluzFqzWpOC2SA,7150592
2
+ esiaccel/CosimBackend.lib,sha256=LtcEhVi75BqE9pNbUTxOoSFvcjI954tz7VmdsBTaoLY,4991556
3
+ esiaccel/ESICppRuntime.dll,sha256=uJlwV3UUIM0D1Lge2qT2a9ITPoGarMLmAH6IIhDwkrY,3722240
4
+ esiaccel/ESICppRuntime.lib,sha256=jIEtwRR_6zJuM_eXeRTQYjBwp4CPp2ghYt9gGNQFwyU,14530126
5
+ esiaccel/EsiCosimDpiServer.dll,sha256=T4URtspzmd2TU_6ZNGvOr_rrdA4JCBU8CSTvgLdy2TA,159744
6
6
  esiaccel/EsiCosimDpiServer.lib,sha256=bYBigD0RtRRSEiDxf4_gvpasLjD8fcUmC0CjRgQiQ0s,604164
7
- esiaccel/MtiPli.dll,sha256=3mGiklSpt-U5-gelGvXfosqcGljVgekRbZoNz40m2SY,14848
7
+ esiaccel/MtiPli.dll,sha256=xLnlKLEynXJbw8clNzNyWgVRPIQYLKjENsckwrrrCss,14848
8
8
  esiaccel/MtiPli.lib,sha256=X0PcXwheCUvBMgQ5BAawePxbXQSLNk5M1FFn6V56ydo,14570
9
- esiaccel/__init__.py,sha256=C0GLqCQuF5g5qTzmAkf_YAHmBV2XAyiJad3Qz7h8u1g,562
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.cp312-win_amd64.pyd,sha256=G0K6-DKgGIwNfgWTZk6IfQqiZCis7lycJ2fZS6DK930,467968
14
- esiaccel/esiquery.exe,sha256=7W6bc5Us8HIaPcoN3ct9qcEP5I6ELMwrWapANViM0Pg,441856
15
- esiaccel/types.py,sha256=xR7XbXQ8LqoiiniThYJhqphG813KBNi5d-yHm5bEXtg,17465
16
- esiaccel/utils.py,sha256=0_A8Jw3M7mjvjTHeV6u00tvRWxLnWKdFq_6NFKTgbVk,1296
13
+ esiaccel/esiCppAccel.cp312-win_amd64.pyd,sha256=PYuBuXHkscH2NLrlFvoj_D7ccyMeXqXtSPUVRUcFyoU,507904
14
+ esiaccel/esiquery.exe,sha256=7MhugVtsTGg4wEsdee7vZydWkJOBTQhGOmmYXioGWNs,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=IGJvAU72dlearXFbSmlXFFriy8aomirp7opEBjgewek,5775
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=ZfPCyeVSHIZ7_jwBl1SFd0XrkqFDEk3LvCcBKnGvjF4,8327
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.dev71.dist-info/licenses/LICENSE,sha256=vtnVnB8_lN1yPYcA5MeT56R8UsQtBhyzZLBvu_KMf7I,13468
39
- esiaccel-0.1.5.dev71.dist-info/METADATA,sha256=k7H3Z3P-PQ2EMvZlMYHPhNocpRQ_m-y_TG8nFW_tLqg,16147
40
- esiaccel-0.1.5.dev71.dist-info/WHEEL,sha256=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,101
41
- esiaccel-0.1.5.dev71.dist-info/entry_points.txt,sha256=_CuNLV0fyTURxRREFwpzGycifZW_-7-MyuJNEwKK9J8,137
42
- esiaccel-0.1.5.dev71.dist-info/top_level.txt,sha256=fYWTWMDK4PDu4ePQ9NtcFHas2k8-d1kWhTs2avPpgB4,9
43
- esiaccel-0.1.5.dev71.dist-info/RECORD,,
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=8UP9x9puWI0P1V_d7K2oMTBqfeLNm21CTzZ_Ptr0NXU,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,,