@modular-circuit/perc 0.0.54 → 0.0.57

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.
Files changed (45) hide show
  1. package/build/erc/connect_graph_visitor/index.js +1 -17
  2. package/build/erc/connect_graph_visitor/visitor.js +0 -2
  3. package/build/erc/context/connection_graph_builder_ctx.js +0 -2
  4. package/build/erc/context/error_severity.js +2 -5
  5. package/build/erc/context/graph.js +0 -2
  6. package/build/erc/context/graph_converter.js +0 -2
  7. package/build/erc/context/index.js +5 -21
  8. package/build/erc/context/pin_to_pin_test_ctx.js +0 -2
  9. package/build/erc/index.js +4 -20
  10. package/build/erc/netlist/constraints.js +9 -12
  11. package/build/erc/netlist/index.js +2 -18
  12. package/build/erc/netlist/tester.js +54 -35
  13. package/build/erc/parameter_propagation/error_code.js +37 -39
  14. package/build/erc/parameter_propagation/index.js +2 -18
  15. package/build/erc/parameter_propagation/link_testers/index.js +1 -17
  16. package/build/erc/parameter_propagation/link_testers/link_tester_base.js +101 -33
  17. package/build/erc/parameter_propagation/link_testers/tester_impl.js +953 -511
  18. package/build/erc/parameter_propagation/tester.js +195 -131
  19. package/build/erc/pin_compatibility_matrix/erc_setting.js +80 -82
  20. package/build/erc/pin_compatibility_matrix/error_code.js +2 -5
  21. package/build/erc/pin_compatibility_matrix/index.js +4 -20
  22. package/build/erc/pin_compatibility_matrix/pin_error.js +2 -5
  23. package/build/erc/pin_compatibility_matrix/tester.js +18 -21
  24. package/build/graphics/index.js +2 -18
  25. package/build/graphics/maker/index.js +3 -19
  26. package/build/graphics/maker/maker_base.js +0 -2
  27. package/build/graphics/maker/maker_type.js +2 -5
  28. package/build/graphics/maker/sch_maker.js +0 -2
  29. package/build/graphics/sch_erc_item.js +0 -2
  30. package/build/index.js +5 -21
  31. package/build/report/erc_report.js +9 -12
  32. package/build/report/erc_reporter.js +68 -88
  33. package/build/report/index.js +2 -18
  34. package/build/rule_check_item/erc_item.js +0 -2
  35. package/build/rule_check_item/index.js +2 -18
  36. package/build/rule_check_item/rc_item.js +0 -2
  37. package/build/tester/erc_tester.js +61 -27
  38. package/build/tester/graph/connection_graphs_builder.js +167 -84
  39. package/build/tester/graph/graph_erc.js +61 -12
  40. package/build/tester/graph/index.js +3 -19
  41. package/build/tester/graph/ir_graph_converter.js +254 -117
  42. package/build/tester/index.js +2 -18
  43. package/build/utils/get_dependent_modules_definition.js +141 -17
  44. package/build/utils/index.js +1 -17
  45. package/package.json +4 -4
@@ -1,10 +1,58 @@
1
- "use strict";
2
1
  // add the other testers following the AnalogLinkTester
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.Dvp8LinkTester = exports.UsbCcLinkTester = exports.UsbLinkTester = exports.UartLinkTester = exports.TouchLinkTester = exports.SpeakerLinkTester = exports.SpiLinkTester = exports.I2sLinkTester = exports.I2cLinkTester = exports.SwdLinkTester = exports.CrystalLinkTester = exports.CanDiffLinkTester = exports.CanLogicLinkTester = exports.GroundLinkTester = exports.VoltageLinkTester = exports.DigitalLinkTester = exports.AnalogLinkTester = void 0;
5
- const electronics_model_1 = require("@modular-circuit/electronics-model");
6
- const link_tester_base_1 = require("./link_tester_base");
7
- const report_1 = require("../../../report");
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __values = (this && this.__values) || function(o) {
18
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
19
+ if (m) return m.call(o);
20
+ if (o && typeof o.length === "number") return {
21
+ next: function () {
22
+ if (o && i >= o.length) o = void 0;
23
+ return { value: o && o[i++], done: !o };
24
+ }
25
+ };
26
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
27
+ };
28
+ var __read = (this && this.__read) || function (o, n) {
29
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
30
+ if (!m) return o;
31
+ var i = m.call(o), r, ar = [], e;
32
+ try {
33
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
34
+ }
35
+ catch (error) { e = { error: error }; }
36
+ finally {
37
+ try {
38
+ if (r && !r.done && (m = i["return"])) m.call(i);
39
+ }
40
+ finally { if (e) throw e.error; }
41
+ }
42
+ return ar;
43
+ };
44
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
45
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
46
+ if (ar || !(i in from)) {
47
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
48
+ ar[i] = from[i];
49
+ }
50
+ }
51
+ return to.concat(ar || Array.prototype.slice.call(from));
52
+ };
53
+ import { PortType, all_range_are_defined, contains, filter_defined_range, hull, interests, intersection, r_div, range_is_defined, sum, } from '@modular-circuit/electronics-model';
54
+ import { CompositePortLinkTesterBase, LinkTesterBase } from './link_tester_base';
55
+ import { PP_DUPLICATED_SOURCES, PP_ILLEGAL_CONNECTION, PP_IMPEDANCE_SIGNAL_INTEGRITY, PP_INCOMPATIBLE_DIGITAL_THRESHOLDS, PP_INCOMPATIBLE_SIGNAL_LEVELS, PP_INCOMPATIBLE_VOLTAGE_LEVELS, PP_NOT_DRIVEN, PP_OVER_DRIVEN, PP_REQUIRES_CONNECTED_SOURCE_OR_BIDIR, PP_SIGNAL_LEVELS_NOT_CONTAINED_WITHIN_VOLTAGE, } from '../../../report';
8
56
  /**
9
57
  self.assign(self.sink_impedance, 1 / (1 / self.sinks.map_extract(lambda x: x.impedance)).sum())
10
58
  self.require(self.source.impedance.upper() <= self.sink_impedance.lower() * 0.1) # about 10x for signal integrity
@@ -18,86 +66,102 @@ const report_1 = require("../../../report");
18
66
  self.assign(self.current_limits, self.source.current_limits)
19
67
  self.require(self.current_limits.contains(self.current_drawn), "overcurrent")
20
68
  */
21
- class AnalogLinkTester extends link_tester_base_1.LinkTesterBase {
22
- init_link() {
23
- const sources = [];
24
- const sinks = [];
25
- for (const v of this.ports) {
26
- switch (v.type) {
27
- case electronics_model_1.PortType.AnalogSource: {
28
- sources.push(v);
29
- break;
30
- }
31
- case electronics_model_1.PortType.AnalogSink: {
32
- sinks.push(v);
33
- break;
69
+ var AnalogLinkTester = /** @class */ (function (_super) {
70
+ __extends(AnalogLinkTester, _super);
71
+ function AnalogLinkTester() {
72
+ return _super !== null && _super.apply(this, arguments) || this;
73
+ }
74
+ AnalogLinkTester.prototype.init_link = function () {
75
+ var e_1, _a;
76
+ var sources = [];
77
+ var sinks = [];
78
+ try {
79
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
80
+ var v = _c.value;
81
+ switch (v.type) {
82
+ case PortType.AnalogSource: {
83
+ sources.push(v);
84
+ break;
85
+ }
86
+ case PortType.AnalogSink: {
87
+ sinks.push(v);
88
+ break;
89
+ }
34
90
  }
35
91
  }
36
92
  }
93
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
94
+ finally {
95
+ try {
96
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
97
+ }
98
+ finally { if (e_1) throw e_1.error; }
99
+ }
37
100
  if (sources.length === 0) {
38
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'Requires a connected analog source'));
101
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'Requires a connected analog source'));
39
102
  return false;
40
103
  }
41
104
  if (sources.length > 1) {
42
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'Multiple analog sources are not allowed'));
105
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'Multiple analog sources are not allowed'));
43
106
  return false;
44
107
  }
45
108
  this.link = {
46
109
  source: sources[0],
47
- sinks,
110
+ sinks: sinks,
48
111
  };
49
112
  return true;
50
- }
51
- check_parameter_propagation() {
113
+ };
114
+ AnalogLinkTester.prototype.check_parameter_propagation = function () {
52
115
  if (!this.link)
53
116
  return;
54
- const source = this.link.source;
55
- const sinks = this.link.sinks;
56
- const source_id = this.ctx.port_id.get(source);
57
- if ((0, electronics_model_1.range_is_defined)(source.impedance)) {
58
- const all_sinks_impedance = (0, electronics_model_1.filter_defined_range)(sinks.map((v) => v.impedance));
117
+ var source = this.link.source;
118
+ var sinks = this.link.sinks;
119
+ var source_id = this.ctx.port_id.get(source);
120
+ if (range_is_defined(source.impedance)) {
121
+ var all_sinks_impedance = filter_defined_range(sinks.map(function (v) { return v.impedance; }));
59
122
  if (all_sinks_impedance.length > 0) {
60
- const sink_impedance = (0, electronics_model_1.r_div)((0, electronics_model_1.sum)(all_sinks_impedance.map((v) => (0, electronics_model_1.r_div)(v, 1))), 1);
123
+ var sink_impedance = r_div(sum(all_sinks_impedance.map(function (v) { return r_div(v, 1); })), 1);
61
124
  if (source.impedance.upper > sink_impedance.lower * 0.1) {
62
- this.ctx.report.erc_errors.push((0, report_1.PP_IMPEDANCE_SIGNAL_INTEGRITY)(this.all_port_ids));
125
+ this.ctx.report.erc_errors.push(PP_IMPEDANCE_SIGNAL_INTEGRITY(this.all_port_ids));
63
126
  }
64
127
  }
65
128
  }
66
- if ((0, electronics_model_1.range_is_defined)(source.voltage_out)) {
67
- const all_voltage_limits = (0, electronics_model_1.filter_defined_range)(sinks.map((v) => v.voltage_limits));
129
+ if (range_is_defined(source.voltage_out)) {
130
+ var all_voltage_limits = filter_defined_range(sinks.map(function (v) { return v.voltage_limits; }));
68
131
  if (all_voltage_limits.length > 0) {
69
- const voltage_limits = (0, electronics_model_1.intersection)(all_voltage_limits);
70
- if (!(0, electronics_model_1.interests)(voltage_limits, source.voltage_out)) {
71
- this.ctx.report.erc_errors.push((0, report_1.PP_INCOMPATIBLE_VOLTAGE_LEVELS)(source_id));
132
+ var voltage_limits = intersection(all_voltage_limits);
133
+ if (!interests(voltage_limits, source.voltage_out)) {
134
+ this.ctx.report.erc_errors.push(PP_INCOMPATIBLE_VOLTAGE_LEVELS(source_id));
72
135
  }
73
136
  }
74
137
  }
75
- if ((0, electronics_model_1.all_range_are_defined)(source.signal_out, source.voltage_out)) {
76
- if (!(0, electronics_model_1.interests)(source.voltage_out, source.signal_out)) {
77
- this.ctx.report.erc_errors.push((0, report_1.PP_SIGNAL_LEVELS_NOT_CONTAINED_WITHIN_VOLTAGE)(source_id));
138
+ if (all_range_are_defined(source.signal_out, source.voltage_out)) {
139
+ if (!interests(source.voltage_out, source.signal_out)) {
140
+ this.ctx.report.erc_errors.push(PP_SIGNAL_LEVELS_NOT_CONTAINED_WITHIN_VOLTAGE(source_id));
78
141
  }
79
142
  }
80
- if ((0, electronics_model_1.range_is_defined)(source.signal_out)) {
81
- const all_sinks_signal_limits = (0, electronics_model_1.filter_defined_range)(sinks.map((v) => v.signal_limits));
143
+ if (range_is_defined(source.signal_out)) {
144
+ var all_sinks_signal_limits = filter_defined_range(sinks.map(function (v) { return v.signal_limits; }));
82
145
  if (all_sinks_signal_limits.length > 0) {
83
- const signal_limits = (0, electronics_model_1.intersection)(all_sinks_signal_limits);
84
- if (!(0, electronics_model_1.interests)(signal_limits, source.signal_out)) {
85
- this.ctx.report.erc_errors.push((0, report_1.PP_INCOMPATIBLE_SIGNAL_LEVELS)(source_id));
146
+ var signal_limits = intersection(all_sinks_signal_limits);
147
+ if (!interests(signal_limits, source.signal_out)) {
148
+ this.ctx.report.erc_errors.push(PP_INCOMPATIBLE_SIGNAL_LEVELS(source_id));
86
149
  }
87
150
  }
88
151
  }
89
- if ((0, electronics_model_1.range_is_defined)(source.current_limits)) {
90
- const all_sinks_current_drawn = (0, electronics_model_1.filter_defined_range)(sinks.map((v) => v.current_drawn));
152
+ if (range_is_defined(source.current_limits)) {
153
+ var all_sinks_current_drawn = filter_defined_range(sinks.map(function (v) { return v.current_drawn; }));
91
154
  if (all_sinks_current_drawn.length > 0) {
92
- const current_drawn = (0, electronics_model_1.sum)(all_sinks_current_drawn);
93
- if ((0, electronics_model_1.interests)(current_drawn, source.current_limits)) {
94
- this.ctx.report.erc_errors.push((0, report_1.PP_OVER_DRIVEN)([source_id], 'current'));
155
+ var current_drawn = sum(all_sinks_current_drawn);
156
+ if (interests(current_drawn, source.current_limits)) {
157
+ this.ctx.report.erc_errors.push(PP_OVER_DRIVEN([source_id], 'current'));
95
158
  }
96
159
  }
97
160
  }
98
- }
99
- }
100
- exports.AnalogLinkTester = AnalogLinkTester;
161
+ };
162
+ return AnalogLinkTester;
163
+ }(LinkTesterBase));
164
+ export { AnalogLinkTester };
101
165
  /**
102
166
 
103
167
  voltage_hull = self.bidirs.hull(lambda x: x.voltage_out)
@@ -160,79 +224,96 @@ exports.AnalogLinkTester = AnalogLinkTester;
160
224
 
161
225
 
162
226
  */
163
- class DigitalLinkTester extends link_tester_base_1.LinkTesterBase {
164
- init_link() {
165
- const sinks = [];
166
- const sources = [];
167
- const bidirs = [];
168
- for (const v of this.ports) {
169
- switch (v.type) {
170
- case electronics_model_1.PortType.DigitalSource: {
171
- sources.push(v);
172
- break;
173
- }
174
- case electronics_model_1.PortType.DigitalSink: {
175
- sinks.push(v);
176
- break;
177
- }
178
- case electronics_model_1.PortType.DigitalBidir: {
179
- bidirs.push(v);
180
- break;
227
+ var DigitalLinkTester = /** @class */ (function (_super) {
228
+ __extends(DigitalLinkTester, _super);
229
+ function DigitalLinkTester() {
230
+ return _super !== null && _super.apply(this, arguments) || this;
231
+ }
232
+ DigitalLinkTester.prototype.init_link = function () {
233
+ var e_2, _a;
234
+ var sinks = [];
235
+ var sources = [];
236
+ var bidirs = [];
237
+ try {
238
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
239
+ var v = _c.value;
240
+ switch (v.type) {
241
+ case PortType.DigitalSource: {
242
+ sources.push(v);
243
+ break;
244
+ }
245
+ case PortType.DigitalSink: {
246
+ sinks.push(v);
247
+ break;
248
+ }
249
+ case PortType.DigitalBidir: {
250
+ bidirs.push(v);
251
+ break;
252
+ }
181
253
  }
182
254
  }
183
255
  }
256
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
257
+ finally {
258
+ try {
259
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
260
+ }
261
+ finally { if (e_2) throw e_2.error; }
262
+ }
184
263
  this.link = {
185
- sources,
186
- sinks,
187
- bidirs,
264
+ sources: sources,
265
+ sinks: sinks,
266
+ bidirs: bidirs,
188
267
  };
189
268
  return true;
190
- }
191
- check_parameter_propagation() {
269
+ };
270
+ DigitalLinkTester.prototype.check_parameter_propagation = function () {
271
+ var _a, _b, _c;
192
272
  if (!this.link)
193
273
  return;
194
- const sources = this.link.sources ?? [];
195
- const sinks = this.link.sinks ?? [];
196
- const bidirs = this.link.bidirs ?? [];
197
- const all_defined_voltage = (0, electronics_model_1.filter_defined_range)(...bidirs.map((v) => v.voltage_out), ...sources.map((v) => v.voltage_out));
274
+ var sources = (_a = this.link.sources) !== null && _a !== void 0 ? _a : [];
275
+ var sinks = (_b = this.link.sinks) !== null && _b !== void 0 ? _b : [];
276
+ var bidirs = (_c = this.link.bidirs) !== null && _c !== void 0 ? _c : [];
277
+ var all_defined_voltage = filter_defined_range.apply(void 0, __spreadArray(__spreadArray([], __read(bidirs.map(function (v) { return v.voltage_out; })), false), __read(sources.map(function (v) { return v.voltage_out; })), false));
198
278
  if (all_defined_voltage.length > 0) {
199
- const voltage = (0, electronics_model_1.hull)(all_defined_voltage);
200
- const all_defined_voltage_limits = (0, electronics_model_1.filter_defined_range)(sinks.map((v) => v.voltage_limits));
279
+ var voltage = hull(all_defined_voltage);
280
+ var all_defined_voltage_limits = filter_defined_range(sinks.map(function (v) { return v.voltage_limits; }));
201
281
  if (all_defined_voltage_limits.length > 0) {
202
- const voltage_limits = (0, electronics_model_1.intersection)(all_defined_voltage_limits);
203
- if (!(0, electronics_model_1.contains)(voltage_limits, voltage)) {
204
- this.ctx.report.erc_errors.push((0, report_1.PP_OVER_DRIVEN)(this.all_port_ids, 'voltage'));
282
+ var voltage_limits = intersection(all_defined_voltage_limits);
283
+ if (!contains(voltage_limits, voltage)) {
284
+ this.ctx.report.erc_errors.push(PP_OVER_DRIVEN(this.all_port_ids, 'voltage'));
205
285
  }
206
286
  }
207
287
  }
208
- const all_defined_current_limits = (0, electronics_model_1.filter_defined_range)(...bidirs.map((v) => v.current_limits), ...sources.map((v) => v.current_limits));
288
+ var all_defined_current_limits = filter_defined_range.apply(void 0, __spreadArray(__spreadArray([], __read(bidirs.map(function (v) { return v.current_limits; })), false), __read(sources.map(function (v) { return v.current_limits; })), false));
209
289
  if (all_defined_current_limits.length > 0) {
210
- const current_limits = (0, electronics_model_1.sum)(all_defined_current_limits);
211
- const all_defined_current_drawn = (0, electronics_model_1.filter_defined_range)(sinks.map((v) => v.current_drawn));
290
+ var current_limits = sum(all_defined_current_limits);
291
+ var all_defined_current_drawn = filter_defined_range(sinks.map(function (v) { return v.current_drawn; }));
212
292
  if (all_defined_current_drawn.length > 0) {
213
- const current_drawn = (0, electronics_model_1.sum)(all_defined_current_drawn);
214
- if ((0, electronics_model_1.interests)(current_drawn, current_limits)) {
215
- this.ctx.report.erc_errors.push((0, report_1.PP_OVER_DRIVEN)(this.all_port_ids, 'current'));
293
+ var current_drawn = sum(all_defined_current_drawn);
294
+ if (interests(current_drawn, current_limits)) {
295
+ this.ctx.report.erc_errors.push(PP_OVER_DRIVEN(this.all_port_ids, 'current'));
216
296
  }
217
297
  }
218
298
  }
219
- const all_defined_output_thresholds = (0, electronics_model_1.filter_defined_range)(...bidirs.map((v) => v.output_thresholds), ...sources.map((v) => v.output_thresholds));
299
+ var all_defined_output_thresholds = filter_defined_range.apply(void 0, __spreadArray(__spreadArray([], __read(bidirs.map(function (v) { return v.output_thresholds; })), false), __read(sources.map(function (v) { return v.output_thresholds; })), false));
220
300
  if (all_defined_output_thresholds.length > 0) {
221
- const output_thresholds = (0, electronics_model_1.intersection)(all_defined_output_thresholds);
222
- const all_defined_input_thresholds = (0, electronics_model_1.filter_defined_range)(sinks.map((v) => v.input_thresholds));
301
+ var output_thresholds = intersection(all_defined_output_thresholds);
302
+ var all_defined_input_thresholds = filter_defined_range(sinks.map(function (v) { return v.input_thresholds; }));
223
303
  if (all_defined_input_thresholds.length > 0) {
224
- const input_thresholds = (0, electronics_model_1.hull)(all_defined_input_thresholds);
225
- if (!(0, electronics_model_1.contains)(output_thresholds, input_thresholds)) {
226
- this.ctx.report.erc_errors.push((0, report_1.PP_INCOMPATIBLE_DIGITAL_THRESHOLDS)(this.all_port_ids));
304
+ var input_thresholds = hull(all_defined_input_thresholds);
305
+ if (!contains(output_thresholds, input_thresholds)) {
306
+ this.ctx.report.erc_errors.push(PP_INCOMPATIBLE_DIGITAL_THRESHOLDS(this.all_port_ids));
227
307
  }
228
308
  }
229
309
  }
230
310
  if (!sources.length && !bidirs.length) {
231
- this.ctx.report.erc_errors.push((0, report_1.PP_REQUIRES_CONNECTED_SOURCE_OR_BIDIR)(this.all_port_ids));
311
+ this.ctx.report.erc_errors.push(PP_REQUIRES_CONNECTED_SOURCE_OR_BIDIR(this.all_port_ids));
232
312
  }
233
- }
234
- }
235
- exports.DigitalLinkTester = DigitalLinkTester;
313
+ };
314
+ return DigitalLinkTester;
315
+ }(LinkTesterBase));
316
+ export { DigitalLinkTester };
236
317
  /**
237
318
  self.assign(self.voltage, self.source.voltage_out)
238
319
  self.assign(self.voltage_limits, self.sinks.intersection(lambda x: x.voltage_limits))
@@ -242,60 +323,76 @@ exports.DigitalLinkTester = DigitalLinkTester;
242
323
  self.assign(self.current_drawn, self.sinks.sum(lambda x: x.current_draw))
243
324
  self.require(self.current_limits.contains(self.current_drawn), "overcurrent")
244
325
  */
245
- class VoltageLinkTester extends link_tester_base_1.LinkTesterBase {
246
- check_parameter_propagation() {
247
- const source = this.link.source;
248
- const sinks = this.link.sinks;
249
- if ((0, electronics_model_1.range_is_defined)(source.voltage_out)) {
250
- const all_voltage_limits = (0, electronics_model_1.filter_defined_range)(sinks.map((v) => v.voltage_limits));
326
+ var VoltageLinkTester = /** @class */ (function (_super) {
327
+ __extends(VoltageLinkTester, _super);
328
+ function VoltageLinkTester() {
329
+ return _super !== null && _super.apply(this, arguments) || this;
330
+ }
331
+ VoltageLinkTester.prototype.check_parameter_propagation = function () {
332
+ var source = this.link.source;
333
+ var sinks = this.link.sinks;
334
+ if (range_is_defined(source.voltage_out)) {
335
+ var all_voltage_limits = filter_defined_range(sinks.map(function (v) { return v.voltage_limits; }));
251
336
  if (all_voltage_limits.length > 0) {
252
- const voltage_limits = (0, electronics_model_1.intersection)(all_voltage_limits);
253
- if (!(0, electronics_model_1.interests)(voltage_limits, source.voltage_out)) {
254
- this.ctx.report.erc_errors.push((0, report_1.PP_OVER_DRIVEN)(this.all_port_ids, 'voltage'));
337
+ var voltage_limits = intersection(all_voltage_limits);
338
+ if (!interests(voltage_limits, source.voltage_out)) {
339
+ this.ctx.report.erc_errors.push(PP_OVER_DRIVEN(this.all_port_ids, 'voltage'));
255
340
  }
256
341
  }
257
342
  }
258
- if ((0, electronics_model_1.range_is_defined)(source.current_limits)) {
259
- const all_sinks_current_drawn = (0, electronics_model_1.filter_defined_range)(sinks.map((v) => v.current_drawn));
343
+ if (range_is_defined(source.current_limits)) {
344
+ var all_sinks_current_drawn = filter_defined_range(sinks.map(function (v) { return v.current_drawn; }));
260
345
  if (all_sinks_current_drawn.length > 0) {
261
- const current_drawn = (0, electronics_model_1.sum)(all_sinks_current_drawn);
262
- if ((0, electronics_model_1.interests)(current_drawn, source.current_limits)) {
263
- this.ctx.report.erc_errors.push((0, report_1.PP_OVER_DRIVEN)(this.all_port_ids, 'current'));
346
+ var current_drawn = sum(all_sinks_current_drawn);
347
+ if (interests(current_drawn, source.current_limits)) {
348
+ this.ctx.report.erc_errors.push(PP_OVER_DRIVEN(this.all_port_ids, 'current'));
264
349
  }
265
350
  }
266
351
  }
267
- }
268
- init_link() {
269
- const sources = [];
270
- const sinks = [];
271
- for (const v of this.ports) {
272
- switch (v.type) {
273
- case electronics_model_1.PortType.VoltageSource: {
274
- sources.push(v);
275
- break;
276
- }
277
- case electronics_model_1.PortType.VoltageSink: {
278
- sinks.push(v);
279
- break;
352
+ };
353
+ VoltageLinkTester.prototype.init_link = function () {
354
+ var e_3, _a;
355
+ var sources = [];
356
+ var sinks = [];
357
+ try {
358
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
359
+ var v = _c.value;
360
+ switch (v.type) {
361
+ case PortType.VoltageSource: {
362
+ sources.push(v);
363
+ break;
364
+ }
365
+ case PortType.VoltageSink: {
366
+ sinks.push(v);
367
+ break;
368
+ }
280
369
  }
281
370
  }
282
371
  }
372
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
373
+ finally {
374
+ try {
375
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
376
+ }
377
+ finally { if (e_3) throw e_3.error; }
378
+ }
283
379
  if (sources.length === 0) {
284
- this.ctx.report.erc_errors.push((0, report_1.PP_NOT_DRIVEN)(this.all_port_ids));
380
+ this.ctx.report.erc_errors.push(PP_NOT_DRIVEN(this.all_port_ids));
285
381
  return false;
286
382
  }
287
383
  if (sources.length > 1) {
288
- this.ctx.report.erc_errors.push((0, report_1.PP_DUPLICATED_SOURCES)(this.all_port_ids));
384
+ this.ctx.report.erc_errors.push(PP_DUPLICATED_SOURCES(this.all_port_ids));
289
385
  return false;
290
386
  }
291
387
  this.link = {
292
388
  source: sources[0],
293
- sinks,
389
+ sinks: sinks,
294
390
  };
295
391
  return true;
296
- }
297
- }
298
- exports.VoltageLinkTester = VoltageLinkTester;
392
+ };
393
+ return VoltageLinkTester;
394
+ }(LinkTesterBase));
395
+ export { VoltageLinkTester };
299
396
  /*
300
397
  self.description = DescriptionString(
301
398
  "<b>voltage</b>: ", DescriptionString.FormatUnits(self.voltage, "V"),
@@ -307,182 +404,267 @@ exports.VoltageLinkTester = VoltageLinkTester;
307
404
  self.assign(self.voltage_limits, self.gnds.intersection(lambda x: x.voltage_limits))
308
405
  self.require(self.voltage_limits.contains(self.voltage), "overvoltage")
309
406
  */
310
- class GroundLinkTester extends link_tester_base_1.LinkTesterBase {
311
- check_parameter_propagation() {
407
+ var GroundLinkTester = /** @class */ (function (_super) {
408
+ __extends(GroundLinkTester, _super);
409
+ function GroundLinkTester() {
410
+ return _super !== null && _super.apply(this, arguments) || this;
411
+ }
412
+ GroundLinkTester.prototype.check_parameter_propagation = function () {
312
413
  if (!this.link)
313
414
  return;
314
- const ref = this.link.ref;
315
- const gnds = this.link.gnds;
316
- let voltage = ref?.voltage_out;
317
- if (!voltage || !(0, electronics_model_1.range_is_defined)(voltage))
415
+ var ref = this.link.ref;
416
+ var gnds = this.link.gnds;
417
+ var voltage = ref === null || ref === void 0 ? void 0 : ref.voltage_out;
418
+ if (!voltage || !range_is_defined(voltage))
318
419
  voltage = { lower: 0, upper: 0 };
319
- const all_defined_voltage_limits = (0, electronics_model_1.filter_defined_range)(gnds.map((v) => v.voltage_limits));
420
+ var all_defined_voltage_limits = filter_defined_range(gnds.map(function (v) { return v.voltage_limits; }));
320
421
  if (all_defined_voltage_limits.length > 0) {
321
- const voltage_limits = (0, electronics_model_1.intersection)(all_defined_voltage_limits);
322
- if (!(0, electronics_model_1.interests)(voltage_limits, voltage)) {
323
- this.ctx.report.erc_errors.push((0, report_1.PP_OVER_DRIVEN)(this.all_port_ids, 'voltage'));
422
+ var voltage_limits = intersection(all_defined_voltage_limits);
423
+ if (!interests(voltage_limits, voltage)) {
424
+ this.ctx.report.erc_errors.push(PP_OVER_DRIVEN(this.all_port_ids, 'voltage'));
324
425
  }
325
426
  }
326
- }
327
- init_link() {
328
- const refs = [];
329
- const gnds = [];
330
- for (const v of this.ports) {
331
- switch (v.type) {
332
- case electronics_model_1.PortType.GroundReference: {
333
- refs.push(v);
334
- break;
335
- }
336
- case electronics_model_1.PortType.Ground: {
337
- gnds.push(v);
338
- break;
427
+ };
428
+ GroundLinkTester.prototype.init_link = function () {
429
+ var e_4, _a;
430
+ var refs = [];
431
+ var gnds = [];
432
+ try {
433
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
434
+ var v = _c.value;
435
+ switch (v.type) {
436
+ case PortType.GroundReference: {
437
+ refs.push(v);
438
+ break;
439
+ }
440
+ case PortType.Ground: {
441
+ gnds.push(v);
442
+ break;
443
+ }
339
444
  }
340
445
  }
341
446
  }
447
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
448
+ finally {
449
+ try {
450
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
451
+ }
452
+ finally { if (e_4) throw e_4.error; }
453
+ }
342
454
  if (refs.length > 1) {
343
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'Cannot connect multiple ground references to a ground.'));
455
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'Cannot connect multiple ground references to a ground.'));
344
456
  return false;
345
457
  }
346
458
  this.link = {
347
459
  ref: refs[0],
348
- gnds,
460
+ gnds: gnds,
349
461
  };
350
462
  return true;
351
- }
352
- }
353
- exports.GroundLinkTester = GroundLinkTester;
463
+ };
464
+ return GroundLinkTester;
465
+ }(LinkTesterBase));
466
+ export { GroundLinkTester };
354
467
  /**
355
468
  self.txd = self.connect(self.controller.txd, self.transceiver.txd, self.passive.map_extract(lambda port: port.txd),
356
469
  flatten=True)
357
470
  self.rxd = self.connect(self.controller.rxd, self.transceiver.rxd, self.passive.map_extract(lambda port: port.rxd),
358
471
  flatten=True)
359
472
  */
360
- class CanLogicLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
361
- check_parameter_propagation() {
473
+ var CanLogicLinkTester = /** @class */ (function (_super) {
474
+ __extends(CanLogicLinkTester, _super);
475
+ function CanLogicLinkTester() {
476
+ return _super !== null && _super.apply(this, arguments) || this;
477
+ }
478
+ CanLogicLinkTester.prototype.check_parameter_propagation = function () {
479
+ var e_5, _a;
362
480
  if (!this.link)
363
481
  return;
364
- const txd_tester = new DigitalLinkTester(this.ctx, [
482
+ var txd_tester = new DigitalLinkTester(this.ctx, __spreadArray([
365
483
  this.link.controller.txd,
366
- this.link.transceiver.rxd,
367
- ...this.link.passive.map((port) => port.rxd),
368
- ]);
369
- const rxd_tester = new DigitalLinkTester(this.ctx, [
484
+ this.link.transceiver.rxd
485
+ ], __read(this.link.passive.map(function (port) { return port.rxd; })), false));
486
+ var rxd_tester = new DigitalLinkTester(this.ctx, __spreadArray([
370
487
  this.link.controller.rxd,
371
- this.link.transceiver.txd,
372
- ...this.link.passive.map((port) => port.txd),
373
- ]);
374
- for (const tst of [txd_tester, rxd_tester])
375
- tst.test();
376
- }
377
- init_link() {
378
- const controllers = [];
379
- const transceivers = [];
380
- const passive = [];
381
- for (const v of this.ports) {
382
- switch (v.type) {
383
- case electronics_model_1.PortType.CanControllerPort: {
384
- controllers.push(v);
385
- break;
386
- }
387
- case electronics_model_1.PortType.CanTransceiverPort: {
388
- transceivers.push(v);
389
- break;
390
- }
391
- case electronics_model_1.PortType.CanPassivePort: {
392
- passive.push(v);
393
- break;
488
+ this.link.transceiver.txd
489
+ ], __read(this.link.passive.map(function (port) { return port.txd; })), false));
490
+ try {
491
+ for (var _b = __values([txd_tester, rxd_tester]), _c = _b.next(); !_c.done; _c = _b.next()) {
492
+ var tst = _c.value;
493
+ tst.test();
494
+ }
495
+ }
496
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
497
+ finally {
498
+ try {
499
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
500
+ }
501
+ finally { if (e_5) throw e_5.error; }
502
+ }
503
+ };
504
+ CanLogicLinkTester.prototype.init_link = function () {
505
+ var e_6, _a;
506
+ var controllers = [];
507
+ var transceivers = [];
508
+ var passive = [];
509
+ try {
510
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
511
+ var v = _c.value;
512
+ switch (v.type) {
513
+ case PortType.CanControllerPort: {
514
+ controllers.push(v);
515
+ break;
516
+ }
517
+ case PortType.CanTransceiverPort: {
518
+ transceivers.push(v);
519
+ break;
520
+ }
521
+ case PortType.CanPassivePort: {
522
+ passive.push(v);
523
+ break;
524
+ }
394
525
  }
395
526
  }
396
527
  }
528
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
529
+ finally {
530
+ try {
531
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
532
+ }
533
+ finally { if (e_6) throw e_6.error; }
534
+ }
397
535
  if (controllers.length !== 1) {
398
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one controller port.'));
536
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one controller port.'));
399
537
  return false;
400
538
  }
401
539
  if (transceivers.length !== 1) {
402
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one transceiver port.'));
540
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one transceiver port.'));
403
541
  return false;
404
542
  }
405
543
  this.link = {
406
544
  controller: controllers[0],
407
545
  transceiver: transceivers[0],
408
- passive,
546
+ passive: passive,
409
547
  };
410
548
  return true;
411
- }
412
- }
413
- exports.CanLogicLinkTester = CanLogicLinkTester;
549
+ };
550
+ return CanLogicLinkTester;
551
+ }(CompositePortLinkTesterBase));
552
+ export { CanLogicLinkTester };
414
553
  /**
415
554
  self.canh = self.connect(self.nodes.map_extract(lambda node: node.canh),
416
555
  flatten=True)
417
556
  self.canl = self.connect(self.nodes.map_extract(lambda node: node.canl),
418
557
  flatten=True)
419
558
  */
420
- class CanDiffLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
421
- check_parameter_propagation() {
559
+ var CanDiffLinkTester = /** @class */ (function (_super) {
560
+ __extends(CanDiffLinkTester, _super);
561
+ function CanDiffLinkTester() {
562
+ return _super !== null && _super.apply(this, arguments) || this;
563
+ }
564
+ CanDiffLinkTester.prototype.check_parameter_propagation = function () {
565
+ var e_7, _a;
422
566
  if (!this.link)
423
567
  return;
424
- const canh_tester = new DigitalLinkTester(this.ctx, this.link.nodes.map((node) => node.canh));
425
- const canl_tester = new DigitalLinkTester(this.ctx, this.link.nodes.map((node) => node.canl));
426
- for (const tst of [canh_tester, canl_tester])
427
- tst.test();
428
- }
429
- init_link() {
430
- const nodes = [];
431
- for (const v of this.ports) {
432
- if (v.type === electronics_model_1.PortType.CanDiffPort) {
433
- nodes.push(v);
568
+ var canh_tester = new DigitalLinkTester(this.ctx, this.link.nodes.map(function (node) { return node.canh; }));
569
+ var canl_tester = new DigitalLinkTester(this.ctx, this.link.nodes.map(function (node) { return node.canl; }));
570
+ try {
571
+ for (var _b = __values([canh_tester, canl_tester]), _c = _b.next(); !_c.done; _c = _b.next()) {
572
+ var tst = _c.value;
573
+ tst.test();
574
+ }
575
+ }
576
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
577
+ finally {
578
+ try {
579
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
580
+ }
581
+ finally { if (e_7) throw e_7.error; }
582
+ }
583
+ };
584
+ CanDiffLinkTester.prototype.init_link = function () {
585
+ var e_8, _a;
586
+ var nodes = [];
587
+ try {
588
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
589
+ var v = _c.value;
590
+ if (v.type === PortType.CanDiffPort) {
591
+ nodes.push(v);
592
+ }
434
593
  }
435
594
  }
595
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
596
+ finally {
597
+ try {
598
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
599
+ }
600
+ finally { if (e_8) throw e_8.error; }
601
+ }
436
602
  if (nodes.length === 0) {
437
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'Requires at least one CAN differential port'));
603
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'Requires at least one CAN differential port'));
438
604
  return false;
439
605
  }
440
606
  this.link = {
441
- nodes,
607
+ nodes: nodes,
442
608
  };
443
609
  return true;
444
- }
445
- }
446
- exports.CanDiffLinkTester = CanDiffLinkTester;
610
+ };
611
+ return CanDiffLinkTester;
612
+ }(CompositePortLinkTesterBase));
613
+ export { CanDiffLinkTester };
447
614
  /**
448
615
  self.require(self.driver.frequency_limits.contains(self.frequency))
449
616
 
450
617
  self.xi = self.connect(self.driver.xtal_in, self.crystal.xtal_in)
451
618
  self.xo = self.connect(self.driver.xtal_out, self.crystal.xtal_out)
452
619
  */
453
- class CrystalLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
454
- check_parameter_propagation() {
620
+ var CrystalLinkTester = /** @class */ (function (_super) {
621
+ __extends(CrystalLinkTester, _super);
622
+ function CrystalLinkTester() {
623
+ return _super !== null && _super.apply(this, arguments) || this;
624
+ }
625
+ CrystalLinkTester.prototype.check_parameter_propagation = function () {
455
626
  if (!this.link)
456
627
  return;
457
- const driver = this.link.driver;
458
- const crystal = this.link.crystal;
459
- if ((0, electronics_model_1.all_range_are_defined)(driver.frequency_limits, crystal.frequency)) {
460
- if (!(0, electronics_model_1.contains)(driver.frequency_limits, crystal.frequency)) {
461
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'Frequency out of range'));
628
+ var driver = this.link.driver;
629
+ var crystal = this.link.crystal;
630
+ if (all_range_are_defined(driver.frequency_limits, crystal.frequency)) {
631
+ if (!contains(driver.frequency_limits, crystal.frequency)) {
632
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'Frequency out of range'));
462
633
  }
463
634
  }
464
- }
465
- init_link() {
466
- const drivers = [];
467
- const crystals = [];
468
- for (const v of this.ports) {
469
- switch (v.type) {
470
- case electronics_model_1.PortType.CrystalDriver: {
471
- drivers.push(v);
472
- break;
473
- }
474
- case electronics_model_1.PortType.CrystalPort: {
475
- crystals.push(v);
476
- break;
635
+ };
636
+ CrystalLinkTester.prototype.init_link = function () {
637
+ var e_9, _a;
638
+ var drivers = [];
639
+ var crystals = [];
640
+ try {
641
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
642
+ var v = _c.value;
643
+ switch (v.type) {
644
+ case PortType.CrystalDriver: {
645
+ drivers.push(v);
646
+ break;
647
+ }
648
+ case PortType.CrystalPort: {
649
+ crystals.push(v);
650
+ break;
651
+ }
477
652
  }
478
653
  }
479
654
  }
655
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
656
+ finally {
657
+ try {
658
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
659
+ }
660
+ finally { if (e_9) throw e_9.error; }
661
+ }
480
662
  if (drivers.length !== 1) {
481
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one crystal driver port.'));
663
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one crystal driver port.'));
482
664
  return false;
483
665
  }
484
666
  if (crystals.length !== 1) {
485
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one crystal port.'));
667
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one crystal port.'));
486
668
  return false;
487
669
  }
488
670
  this.link = {
@@ -490,69 +672,96 @@ class CrystalLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
490
672
  crystal: crystals[0],
491
673
  };
492
674
  return true;
493
- }
494
- }
495
- exports.CrystalLinkTester = CrystalLinkTester;
675
+ };
676
+ return CrystalLinkTester;
677
+ }(CompositePortLinkTesterBase));
678
+ export { CrystalLinkTester };
496
679
  /**
497
680
  self.swdio = self.connect(self.host.swdio, self.device.swdio, self.pull.map_extract(lambda port: port.swdio),
498
681
  flatten=True)
499
682
  self.swclk = self.connect(self.host.swclk, self.device.swclk, self.pull.map_extract(lambda port: port.swclk),
500
683
  flatten=True)
501
684
  */
502
- class SwdLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
503
- check_parameter_propagation() {
685
+ var SwdLinkTester = /** @class */ (function (_super) {
686
+ __extends(SwdLinkTester, _super);
687
+ function SwdLinkTester() {
688
+ return _super !== null && _super.apply(this, arguments) || this;
689
+ }
690
+ SwdLinkTester.prototype.check_parameter_propagation = function () {
691
+ var e_10, _a;
504
692
  if (!this.link)
505
693
  return;
506
- const swdio_tester = new DigitalLinkTester(this.ctx, [
694
+ var swdio_tester = new DigitalLinkTester(this.ctx, __spreadArray([
507
695
  this.link.host.swdio,
508
- this.link.device.swdio,
509
- ...this.link.pull.map((port) => port.swdio),
510
- ]);
511
- const swclk_tester = new DigitalLinkTester(this.ctx, [
696
+ this.link.device.swdio
697
+ ], __read(this.link.pull.map(function (port) { return port.swdio; })), false));
698
+ var swclk_tester = new DigitalLinkTester(this.ctx, __spreadArray([
512
699
  this.link.host.swclk,
513
- this.link.device.swclk,
514
- ...this.link.pull.map((port) => port.swclk),
515
- ]);
516
- for (const tst of [swdio_tester, swclk_tester])
517
- tst.test();
518
- }
519
- init_link() {
520
- const hosts = [];
521
- const devices = [];
522
- const pull = [];
523
- for (const v of this.ports) {
524
- switch (v.type) {
525
- case electronics_model_1.PortType.SwdHostPort: {
526
- hosts.push(v);
527
- break;
528
- }
529
- case electronics_model_1.PortType.SwdTargetPort: {
530
- devices.push(v);
531
- break;
532
- }
533
- case electronics_model_1.PortType.SwdPullPort: {
534
- pull.push(v);
535
- break;
700
+ this.link.device.swclk
701
+ ], __read(this.link.pull.map(function (port) { return port.swclk; })), false));
702
+ try {
703
+ for (var _b = __values([swdio_tester, swclk_tester]), _c = _b.next(); !_c.done; _c = _b.next()) {
704
+ var tst = _c.value;
705
+ tst.test();
706
+ }
707
+ }
708
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
709
+ finally {
710
+ try {
711
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
712
+ }
713
+ finally { if (e_10) throw e_10.error; }
714
+ }
715
+ };
716
+ SwdLinkTester.prototype.init_link = function () {
717
+ var e_11, _a;
718
+ var hosts = [];
719
+ var devices = [];
720
+ var pull = [];
721
+ try {
722
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
723
+ var v = _c.value;
724
+ switch (v.type) {
725
+ case PortType.SwdHostPort: {
726
+ hosts.push(v);
727
+ break;
728
+ }
729
+ case PortType.SwdTargetPort: {
730
+ devices.push(v);
731
+ break;
732
+ }
733
+ case PortType.SwdPullPort: {
734
+ pull.push(v);
735
+ break;
736
+ }
536
737
  }
537
738
  }
538
739
  }
740
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
741
+ finally {
742
+ try {
743
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
744
+ }
745
+ finally { if (e_11) throw e_11.error; }
746
+ }
539
747
  if (hosts.length !== 1) {
540
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one SWD host port.'));
748
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one SWD host port.'));
541
749
  return false;
542
750
  }
543
751
  if (devices.length !== 1) {
544
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one SWD target port.'));
752
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one SWD target port.'));
545
753
  return false;
546
754
  }
547
755
  this.link = {
548
756
  host: hosts[0],
549
757
  device: devices[0],
550
- pull,
758
+ pull: pull,
551
759
  };
552
760
  return true;
553
- }
554
- }
555
- exports.SwdLinkTester = SwdLinkTester;
761
+ };
762
+ return SwdLinkTester;
763
+ }(CompositePortLinkTesterBase));
764
+ export { SwdLinkTester };
556
765
  /**
557
766
  self.require(self.pull.any_connected() | self.controller.has_pullup)
558
767
  self.require(self.pull.length() <= 1, "at most one pullup")
@@ -564,109 +773,160 @@ exports.SwdLinkTester = SwdLinkTester;
564
773
  self.controller.sda, self.targets.map_extract(lambda device: device.sda),
565
774
  flatten=True)
566
775
  */
567
- class I2cLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
568
- check_parameter_propagation() {
776
+ var I2cLinkTester = /** @class */ (function (_super) {
777
+ __extends(I2cLinkTester, _super);
778
+ function I2cLinkTester() {
779
+ return _super !== null && _super.apply(this, arguments) || this;
780
+ }
781
+ I2cLinkTester.prototype.check_parameter_propagation = function () {
782
+ var e_12, _a;
569
783
  if (!this.link)
570
784
  return;
571
- const scl_tester = new DigitalLinkTester(this.ctx, [
572
- ...this.link.pull.map((device) => device.scl),
573
- this.link.controller.scl,
574
- ...this.link.targets.map((device) => device.scl),
575
- ]);
576
- const sda_tester = new DigitalLinkTester(this.ctx, [
577
- ...this.link.pull.map((device) => device.sda),
578
- this.link.controller.sda,
579
- ...this.link.targets.map((device) => device.sda),
580
- ]);
581
- for (const tst of [scl_tester, sda_tester])
582
- tst.test();
785
+ var scl_tester = new DigitalLinkTester(this.ctx, __spreadArray(__spreadArray(__spreadArray([], __read(this.link.pull.map(function (device) { return device.scl; })), false), [
786
+ this.link.controller.scl
787
+ ], false), __read(this.link.targets.map(function (device) { return device.scl; })), false));
788
+ var sda_tester = new DigitalLinkTester(this.ctx, __spreadArray(__spreadArray(__spreadArray([], __read(this.link.pull.map(function (device) { return device.sda; })), false), [
789
+ this.link.controller.sda
790
+ ], false), __read(this.link.targets.map(function (device) { return device.sda; })), false));
791
+ try {
792
+ for (var _b = __values([scl_tester, sda_tester]), _c = _b.next(); !_c.done; _c = _b.next()) {
793
+ var tst = _c.value;
794
+ tst.test();
795
+ }
796
+ }
797
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
798
+ finally {
799
+ try {
800
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
801
+ }
802
+ finally { if (e_12) throw e_12.error; }
803
+ }
583
804
  if (!this.link.pull.length && !this.link.controller.has_pullup) {
584
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'Requires at least one pullup'));
805
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'Requires at least one pullup'));
585
806
  }
586
807
  if (this.link.pull.length > 1) {
587
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'At most one pullup allowed'));
808
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'At most one pullup allowed'));
588
809
  }
589
- const addresses = this.link.targets.map((target) => target.addresses);
810
+ var addresses = this.link.targets.map(function (target) { return target.addresses; });
590
811
  if (new Set(addresses).size !== addresses.length) {
591
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'Conflicting addresses on I2C bus'));
812
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'Conflicting addresses on I2C bus'));
592
813
  }
593
- }
594
- init_link() {
595
- const pull = [];
596
- const controllers = [];
597
- const targets = [];
598
- for (const v of this.ports) {
599
- switch (v.type) {
600
- case electronics_model_1.PortType.I2cPullupPort: {
601
- pull.push(v);
602
- break;
603
- }
604
- case electronics_model_1.PortType.I2cController: {
605
- controllers.push(v);
606
- break;
607
- }
608
- case electronics_model_1.PortType.I2cTarget: {
609
- targets.push(v);
610
- break;
814
+ };
815
+ I2cLinkTester.prototype.init_link = function () {
816
+ var e_13, _a;
817
+ var pull = [];
818
+ var controllers = [];
819
+ var targets = [];
820
+ try {
821
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
822
+ var v = _c.value;
823
+ switch (v.type) {
824
+ case PortType.I2cPullupPort: {
825
+ pull.push(v);
826
+ break;
827
+ }
828
+ case PortType.I2cController: {
829
+ controllers.push(v);
830
+ break;
831
+ }
832
+ case PortType.I2cTarget: {
833
+ targets.push(v);
834
+ break;
835
+ }
611
836
  }
612
837
  }
613
838
  }
839
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
840
+ finally {
841
+ try {
842
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
843
+ }
844
+ finally { if (e_13) throw e_13.error; }
845
+ }
614
846
  if (controllers.length !== 1) {
615
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one I2C controller port.'));
847
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one I2C controller port.'));
616
848
  return false;
617
849
  }
618
850
  if (targets.length === 0) {
619
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be at least one I2C target port.'));
851
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be at least one I2C target port.'));
620
852
  return false;
621
853
  }
622
854
  this.link = {
623
- pull,
855
+ pull: pull,
624
856
  controller: controllers[0],
625
- targets,
857
+ targets: targets,
626
858
  };
627
859
  return true;
628
- }
629
- }
630
- exports.I2cLinkTester = I2cLinkTester;
860
+ };
861
+ return I2cLinkTester;
862
+ }(CompositePortLinkTesterBase));
863
+ export { I2cLinkTester };
631
864
  /**
632
865
  self.sck = self.connect(self.controller.sck, self.target_receiver.sck)
633
866
  self.ws = self.connect(self.controller.ws, self.target_receiver.ws)
634
867
  self.sd = self.connect(self.controller.sd, self.target_receiver.sd)
635
868
 
636
869
  */
637
- class I2sLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
638
- check_parameter_propagation() {
870
+ var I2sLinkTester = /** @class */ (function (_super) {
871
+ __extends(I2sLinkTester, _super);
872
+ function I2sLinkTester() {
873
+ return _super !== null && _super.apply(this, arguments) || this;
874
+ }
875
+ I2sLinkTester.prototype.check_parameter_propagation = function () {
876
+ var e_14, _a;
639
877
  if (!this.link)
640
878
  return;
641
- const controller = this.link.controller;
642
- const target_receiver = this.link.target_receiver;
643
- const sck_tester = new DigitalLinkTester(this.ctx, [controller.sck, target_receiver.sck]);
644
- const ws_tester = new DigitalLinkTester(this.ctx, [controller.ws, target_receiver.ws]);
645
- const sd_tester = new DigitalLinkTester(this.ctx, [controller.sd, target_receiver.sd]);
646
- for (const tst of [sck_tester, ws_tester, sd_tester])
647
- tst.test();
648
- }
649
- init_link() {
650
- const controllers = [];
651
- const target_receivers = [];
652
- for (const v of this.ports) {
653
- switch (v.type) {
654
- case electronics_model_1.PortType.I2sController: {
655
- controllers.push(v);
656
- break;
657
- }
658
- case electronics_model_1.PortType.I2sTargetReceiver: {
659
- target_receivers.push(v);
660
- break;
879
+ var controller = this.link.controller;
880
+ var target_receiver = this.link.target_receiver;
881
+ var sck_tester = new DigitalLinkTester(this.ctx, [controller.sck, target_receiver.sck]);
882
+ var ws_tester = new DigitalLinkTester(this.ctx, [controller.ws, target_receiver.ws]);
883
+ var sd_tester = new DigitalLinkTester(this.ctx, [controller.sd, target_receiver.sd]);
884
+ try {
885
+ for (var _b = __values([sck_tester, ws_tester, sd_tester]), _c = _b.next(); !_c.done; _c = _b.next()) {
886
+ var tst = _c.value;
887
+ tst.test();
888
+ }
889
+ }
890
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
891
+ finally {
892
+ try {
893
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
894
+ }
895
+ finally { if (e_14) throw e_14.error; }
896
+ }
897
+ };
898
+ I2sLinkTester.prototype.init_link = function () {
899
+ var e_15, _a;
900
+ var controllers = [];
901
+ var target_receivers = [];
902
+ try {
903
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
904
+ var v = _c.value;
905
+ switch (v.type) {
906
+ case PortType.I2sController: {
907
+ controllers.push(v);
908
+ break;
909
+ }
910
+ case PortType.I2sTargetReceiver: {
911
+ target_receivers.push(v);
912
+ break;
913
+ }
661
914
  }
662
915
  }
663
916
  }
917
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
918
+ finally {
919
+ try {
920
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
921
+ }
922
+ finally { if (e_15) throw e_15.error; }
923
+ }
664
924
  if (controllers.length !== 1) {
665
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one I2S controller port.'));
925
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one I2S controller port.'));
666
926
  return false;
667
927
  }
668
928
  if (target_receivers.length !== 1) {
669
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one I2S target receiver port.'));
929
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one I2S target receiver port.'));
670
930
  return false;
671
931
  }
672
932
  this.link = {
@@ -674,9 +934,10 @@ class I2sLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
674
934
  target_receiver: target_receivers[0],
675
935
  };
676
936
  return true;
677
- }
678
- }
679
- exports.I2sLinkTester = I2sLinkTester;
937
+ };
938
+ return I2sLinkTester;
939
+ }(CompositePortLinkTesterBase));
940
+ export { I2sLinkTester };
680
941
  /**
681
942
  self.sck = self.connect(self.controller.sck, self.peripherals.map_extract(lambda device: device.sck),
682
943
  flatten=True)
@@ -686,83 +947,138 @@ exports.I2sLinkTester = I2sLinkTester;
686
947
  flatten=True)
687
948
 
688
949
  */
689
- class SpiLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
690
- check_parameter_propagation() {
950
+ var SpiLinkTester = /** @class */ (function (_super) {
951
+ __extends(SpiLinkTester, _super);
952
+ function SpiLinkTester() {
953
+ return _super !== null && _super.apply(this, arguments) || this;
954
+ }
955
+ SpiLinkTester.prototype.check_parameter_propagation = function () {
956
+ var e_16, _a;
691
957
  if (!this.link)
692
958
  return;
693
- const controller = this.link.controller;
694
- const peripherals = this.link.peripherals;
695
- const sck_tester = new DigitalLinkTester(this.ctx, [controller.sck, ...peripherals.map((device) => device.sck)]);
696
- const miso_tester = new DigitalLinkTester(this.ctx, [controller.miso, ...peripherals.map((device) => device.miso)]);
697
- const mosi_tester = new DigitalLinkTester(this.ctx, [controller.mosi, ...peripherals.map((device) => device.mosi)]);
698
- for (const tst of [sck_tester, miso_tester, mosi_tester])
699
- tst.test();
700
- }
701
- init_link() {
702
- const controllers = [];
703
- const peripherals = [];
704
- for (const v of this.ports) {
705
- switch (v.type) {
706
- case electronics_model_1.PortType.SpiController: {
707
- controllers.push(v);
708
- break;
709
- }
710
- case electronics_model_1.PortType.SpiPeripheral: {
711
- peripherals.push(v);
712
- break;
959
+ var controller = this.link.controller;
960
+ var peripherals = this.link.peripherals;
961
+ var sck_tester = new DigitalLinkTester(this.ctx, __spreadArray([controller.sck], __read(peripherals.map(function (device) { return device.sck; })), false));
962
+ var miso_tester = new DigitalLinkTester(this.ctx, __spreadArray([controller.miso], __read(peripherals.map(function (device) { return device.miso; })), false));
963
+ var mosi_tester = new DigitalLinkTester(this.ctx, __spreadArray([controller.mosi], __read(peripherals.map(function (device) { return device.mosi; })), false));
964
+ try {
965
+ for (var _b = __values([sck_tester, miso_tester, mosi_tester]), _c = _b.next(); !_c.done; _c = _b.next()) {
966
+ var tst = _c.value;
967
+ tst.test();
968
+ }
969
+ }
970
+ catch (e_16_1) { e_16 = { error: e_16_1 }; }
971
+ finally {
972
+ try {
973
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
974
+ }
975
+ finally { if (e_16) throw e_16.error; }
976
+ }
977
+ };
978
+ SpiLinkTester.prototype.init_link = function () {
979
+ var e_17, _a;
980
+ var controllers = [];
981
+ var peripherals = [];
982
+ try {
983
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
984
+ var v = _c.value;
985
+ switch (v.type) {
986
+ case PortType.SpiController: {
987
+ controllers.push(v);
988
+ break;
989
+ }
990
+ case PortType.SpiPeripheral: {
991
+ peripherals.push(v);
992
+ break;
993
+ }
713
994
  }
714
995
  }
715
996
  }
997
+ catch (e_17_1) { e_17 = { error: e_17_1 }; }
998
+ finally {
999
+ try {
1000
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1001
+ }
1002
+ finally { if (e_17) throw e_17.error; }
1003
+ }
716
1004
  if (controllers.length !== 1) {
717
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one SPI controller port.'));
1005
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one SPI controller port.'));
718
1006
  return false;
719
1007
  }
720
1008
  if (peripherals.length === 0) {
721
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be at least one SPI peripheral port.'));
1009
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be at least one SPI peripheral port.'));
722
1010
  return false;
723
1011
  }
724
1012
  this.link = {
725
1013
  controller: controllers[0],
726
- peripherals,
1014
+ peripherals: peripherals,
727
1015
  };
728
1016
  return true;
729
- }
730
- }
731
- exports.SpiLinkTester = SpiLinkTester;
1017
+ };
1018
+ return SpiLinkTester;
1019
+ }(CompositePortLinkTesterBase));
1020
+ export { SpiLinkTester };
732
1021
  /**
733
1022
  self.a = self.connect(self.source.a, self.sink.a)
734
1023
  self.b = self.connect(self.source.b, self.sink.b)
735
1024
  */
736
- class SpeakerLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
737
- check_parameter_propagation() {
1025
+ var SpeakerLinkTester = /** @class */ (function (_super) {
1026
+ __extends(SpeakerLinkTester, _super);
1027
+ function SpeakerLinkTester() {
1028
+ return _super !== null && _super.apply(this, arguments) || this;
1029
+ }
1030
+ SpeakerLinkTester.prototype.check_parameter_propagation = function () {
1031
+ var e_18, _a;
738
1032
  if (!this.link)
739
1033
  return;
740
- const a_tester = new AnalogLinkTester(this.ctx, [this.link.source.a, this.link.sink.a]);
741
- const b_tester = new AnalogLinkTester(this.ctx, [this.link.source.b, this.link.sink.b]);
742
- for (const tst of [a_tester, b_tester])
743
- tst.test();
744
- }
745
- init_link() {
746
- const sources = [];
747
- const sinks = [];
748
- for (const v of this.ports) {
749
- switch (v.type) {
750
- case electronics_model_1.PortType.SpeakerDriverPort: {
751
- sources.push(v);
752
- break;
753
- }
754
- case electronics_model_1.PortType.SpeakerPort: {
755
- sinks.push(v);
756
- break;
1034
+ var a_tester = new AnalogLinkTester(this.ctx, [this.link.source.a, this.link.sink.a]);
1035
+ var b_tester = new AnalogLinkTester(this.ctx, [this.link.source.b, this.link.sink.b]);
1036
+ try {
1037
+ for (var _b = __values([a_tester, b_tester]), _c = _b.next(); !_c.done; _c = _b.next()) {
1038
+ var tst = _c.value;
1039
+ tst.test();
1040
+ }
1041
+ }
1042
+ catch (e_18_1) { e_18 = { error: e_18_1 }; }
1043
+ finally {
1044
+ try {
1045
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1046
+ }
1047
+ finally { if (e_18) throw e_18.error; }
1048
+ }
1049
+ };
1050
+ SpeakerLinkTester.prototype.init_link = function () {
1051
+ var e_19, _a;
1052
+ var sources = [];
1053
+ var sinks = [];
1054
+ try {
1055
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
1056
+ var v = _c.value;
1057
+ switch (v.type) {
1058
+ case PortType.SpeakerDriverPort: {
1059
+ sources.push(v);
1060
+ break;
1061
+ }
1062
+ case PortType.SpeakerPort: {
1063
+ sinks.push(v);
1064
+ break;
1065
+ }
757
1066
  }
758
1067
  }
759
1068
  }
1069
+ catch (e_19_1) { e_19 = { error: e_19_1 }; }
1070
+ finally {
1071
+ try {
1072
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1073
+ }
1074
+ finally { if (e_19) throw e_19.error; }
1075
+ }
760
1076
  if (sources.length !== 1) {
761
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one speaker driver port.'));
1077
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one speaker driver port.'));
762
1078
  return false;
763
1079
  }
764
1080
  if (sinks.length !== 1) {
765
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one speaker port.'));
1081
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one speaker port.'));
766
1082
  return false;
767
1083
  }
768
1084
  this.link = {
@@ -770,35 +1086,51 @@ class SpeakerLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
770
1086
  sink: sinks[0],
771
1087
  };
772
1088
  return true;
773
- }
774
- }
775
- exports.SpeakerLinkTester = SpeakerLinkTester;
1089
+ };
1090
+ return SpeakerLinkTester;
1091
+ }(CompositePortLinkTesterBase));
1092
+ export { SpeakerLinkTester };
776
1093
  /**
777
1094
  self.driver = self.Port(TouchDriver())
778
1095
  self.pad = self.Port(TouchPadPort())
779
1096
  */
780
- class TouchLinkTester extends link_tester_base_1.LinkTesterBase {
781
- init_link() {
782
- const drivers = [];
783
- const pads = [];
784
- for (const v of this.ports) {
785
- switch (v.type) {
786
- case electronics_model_1.PortType.TouchDriver: {
787
- drivers.push(v);
788
- break;
789
- }
790
- case electronics_model_1.PortType.TouchPadPort: {
791
- pads.push(v);
792
- break;
1097
+ var TouchLinkTester = /** @class */ (function (_super) {
1098
+ __extends(TouchLinkTester, _super);
1099
+ function TouchLinkTester() {
1100
+ return _super !== null && _super.apply(this, arguments) || this;
1101
+ }
1102
+ TouchLinkTester.prototype.init_link = function () {
1103
+ var e_20, _a;
1104
+ var drivers = [];
1105
+ var pads = [];
1106
+ try {
1107
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
1108
+ var v = _c.value;
1109
+ switch (v.type) {
1110
+ case PortType.TouchDriver: {
1111
+ drivers.push(v);
1112
+ break;
1113
+ }
1114
+ case PortType.TouchPadPort: {
1115
+ pads.push(v);
1116
+ break;
1117
+ }
793
1118
  }
794
1119
  }
795
1120
  }
1121
+ catch (e_20_1) { e_20 = { error: e_20_1 }; }
1122
+ finally {
1123
+ try {
1124
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1125
+ }
1126
+ finally { if (e_20) throw e_20.error; }
1127
+ }
796
1128
  if (drivers.length !== 1) {
797
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one touch driver port.'));
1129
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one touch driver port.'));
798
1130
  return false;
799
1131
  }
800
1132
  if (pads.length !== 1) {
801
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one touch pad port.'));
1133
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one touch pad port.'));
802
1134
  return false;
803
1135
  }
804
1136
  this.link = {
@@ -806,35 +1138,63 @@ class TouchLinkTester extends link_tester_base_1.LinkTesterBase {
806
1138
  pad: pads[0],
807
1139
  };
808
1140
  return true;
809
- }
810
- check_parameter_propagation() {
1141
+ };
1142
+ TouchLinkTester.prototype.check_parameter_propagation = function () {
811
1143
  return;
812
- }
813
- }
814
- exports.TouchLinkTester = TouchLinkTester;
1144
+ };
1145
+ return TouchLinkTester;
1146
+ }(LinkTesterBase));
1147
+ export { TouchLinkTester };
815
1148
  /**
816
1149
  self.a_tx = self.connect(self.a.tx, self.b.rx)
817
1150
  self.b_tx = self.connect(self.b.tx, self.a.rx)
818
1151
 
819
1152
  */
820
- class UartLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
821
- check_parameter_propagation() {
1153
+ var UartLinkTester = /** @class */ (function (_super) {
1154
+ __extends(UartLinkTester, _super);
1155
+ function UartLinkTester() {
1156
+ return _super !== null && _super.apply(this, arguments) || this;
1157
+ }
1158
+ UartLinkTester.prototype.check_parameter_propagation = function () {
1159
+ var e_21, _a;
822
1160
  if (!this.link)
823
1161
  return;
824
- const tx_tester = new DigitalLinkTester(this.ctx, [this.link.a.tx, this.link.b.rx]);
825
- const rx_tester = new DigitalLinkTester(this.ctx, [this.link.b.tx, this.link.a.rx]);
826
- for (const tst of [tx_tester, rx_tester])
827
- tst.test();
828
- }
829
- init_link() {
830
- const ports = [];
831
- for (const v of this.ports) {
832
- if (v.type === electronics_model_1.PortType.UartPort) {
833
- ports.push(v);
1162
+ var tx_tester = new DigitalLinkTester(this.ctx, [this.link.a.tx, this.link.b.rx]);
1163
+ var rx_tester = new DigitalLinkTester(this.ctx, [this.link.b.tx, this.link.a.rx]);
1164
+ try {
1165
+ for (var _b = __values([tx_tester, rx_tester]), _c = _b.next(); !_c.done; _c = _b.next()) {
1166
+ var tst = _c.value;
1167
+ tst.test();
1168
+ }
1169
+ }
1170
+ catch (e_21_1) { e_21 = { error: e_21_1 }; }
1171
+ finally {
1172
+ try {
1173
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1174
+ }
1175
+ finally { if (e_21) throw e_21.error; }
1176
+ }
1177
+ };
1178
+ UartLinkTester.prototype.init_link = function () {
1179
+ var e_22, _a;
1180
+ var ports = [];
1181
+ try {
1182
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
1183
+ var v = _c.value;
1184
+ if (v.type === PortType.UartPort) {
1185
+ ports.push(v);
1186
+ }
1187
+ }
1188
+ }
1189
+ catch (e_22_1) { e_22 = { error: e_22_1 }; }
1190
+ finally {
1191
+ try {
1192
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
834
1193
  }
1194
+ finally { if (e_22) throw e_22.error; }
835
1195
  }
836
1196
  if (ports.length !== 2) {
837
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly two UART ports.'));
1197
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly two UART ports.'));
838
1198
  return false;
839
1199
  }
840
1200
  this.link = {
@@ -842,9 +1202,10 @@ class UartLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
842
1202
  b: ports[1],
843
1203
  };
844
1204
  return true;
845
- }
846
- }
847
- exports.UartLinkTester = UartLinkTester;
1205
+ };
1206
+ return UartLinkTester;
1207
+ }(CompositePortLinkTesterBase));
1208
+ export { UartLinkTester };
848
1209
  /**
849
1210
 
850
1211
  self.d_P = self.connect(self.host.dp, self.device.dp, self.passive.map_extract(lambda port: port.dp),
@@ -852,83 +1213,136 @@ exports.UartLinkTester = UartLinkTester;
852
1213
  self.d_N = self.connect(self.host.dm, self.device.dm, self.passive.map_extract(lambda port: port.dm),
853
1214
  flatten=True)
854
1215
  */
855
- class UsbLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
856
- check_parameter_propagation() {
1216
+ var UsbLinkTester = /** @class */ (function (_super) {
1217
+ __extends(UsbLinkTester, _super);
1218
+ function UsbLinkTester() {
1219
+ return _super !== null && _super.apply(this, arguments) || this;
1220
+ }
1221
+ UsbLinkTester.prototype.check_parameter_propagation = function () {
1222
+ var e_23, _a;
857
1223
  if (!this.link)
858
1224
  return;
859
- const dp_tester = new DigitalLinkTester(this.ctx, [
1225
+ var dp_tester = new DigitalLinkTester(this.ctx, __spreadArray([
860
1226
  this.link.host.dp,
861
- this.link.device.dp,
862
- ...this.link.passive.map((port) => port.dp),
863
- ]);
864
- const dm_tester = new DigitalLinkTester(this.ctx, [
1227
+ this.link.device.dp
1228
+ ], __read(this.link.passive.map(function (port) { return port.dp; })), false));
1229
+ var dm_tester = new DigitalLinkTester(this.ctx, __spreadArray([
865
1230
  this.link.host.dm,
866
- this.link.device.dm,
867
- ...this.link.passive.map((port) => port.dm),
868
- ]);
869
- for (const tst of [dp_tester, dm_tester])
870
- tst.test();
871
- }
872
- init_link() {
873
- const hosts = [];
874
- const devices = [];
875
- const passive = [];
876
- for (const v of this.ports) {
877
- switch (v.type) {
878
- case electronics_model_1.PortType.UsbHostPort: {
879
- hosts.push(v);
880
- break;
881
- }
882
- case electronics_model_1.PortType.UsbDevicePort: {
883
- devices.push(v);
884
- break;
885
- }
886
- case electronics_model_1.PortType.UsbPassivePort: {
887
- passive.push(v);
888
- break;
1231
+ this.link.device.dm
1232
+ ], __read(this.link.passive.map(function (port) { return port.dm; })), false));
1233
+ try {
1234
+ for (var _b = __values([dp_tester, dm_tester]), _c = _b.next(); !_c.done; _c = _b.next()) {
1235
+ var tst = _c.value;
1236
+ tst.test();
1237
+ }
1238
+ }
1239
+ catch (e_23_1) { e_23 = { error: e_23_1 }; }
1240
+ finally {
1241
+ try {
1242
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1243
+ }
1244
+ finally { if (e_23) throw e_23.error; }
1245
+ }
1246
+ };
1247
+ UsbLinkTester.prototype.init_link = function () {
1248
+ var e_24, _a;
1249
+ var hosts = [];
1250
+ var devices = [];
1251
+ var passive = [];
1252
+ try {
1253
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
1254
+ var v = _c.value;
1255
+ switch (v.type) {
1256
+ case PortType.UsbHostPort: {
1257
+ hosts.push(v);
1258
+ break;
1259
+ }
1260
+ case PortType.UsbDevicePort: {
1261
+ devices.push(v);
1262
+ break;
1263
+ }
1264
+ case PortType.UsbPassivePort: {
1265
+ passive.push(v);
1266
+ break;
1267
+ }
889
1268
  }
890
1269
  }
891
1270
  }
1271
+ catch (e_24_1) { e_24 = { error: e_24_1 }; }
1272
+ finally {
1273
+ try {
1274
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1275
+ }
1276
+ finally { if (e_24) throw e_24.error; }
1277
+ }
892
1278
  if (hosts.length !== 1) {
893
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one USB host port.'));
1279
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one USB host port.'));
894
1280
  return false;
895
1281
  }
896
1282
  if (devices.length !== 1) {
897
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one USB device port.'));
1283
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one USB device port.'));
898
1284
  return false;
899
1285
  }
900
1286
  this.link = {
901
1287
  host: hosts[0],
902
1288
  device: devices[0],
903
- passive,
1289
+ passive: passive,
904
1290
  };
905
1291
  return true;
906
- }
907
- }
908
- exports.UsbLinkTester = UsbLinkTester;
1292
+ };
1293
+ return UsbLinkTester;
1294
+ }(CompositePortLinkTesterBase));
1295
+ export { UsbLinkTester };
909
1296
  /**
910
1297
  self.cc1 = self.Port(DigitalBidir(pullup_capable=pullup_capable))
911
1298
  self.cc2 = self.Port(DigitalBidir(pullup_capable=pullup_capable))
912
1299
 
913
1300
  */
914
- class UsbCcLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
915
- check_parameter_propagation() {
1301
+ var UsbCcLinkTester = /** @class */ (function (_super) {
1302
+ __extends(UsbCcLinkTester, _super);
1303
+ function UsbCcLinkTester() {
1304
+ return _super !== null && _super.apply(this, arguments) || this;
1305
+ }
1306
+ UsbCcLinkTester.prototype.check_parameter_propagation = function () {
1307
+ var e_25, _a;
916
1308
  if (!this.link)
917
1309
  return;
918
- const cc1_tester = new DigitalLinkTester(this.ctx, [this.link.a.cc1, this.link.b.cc1]);
919
- const cc2_tester = new DigitalLinkTester(this.ctx, [this.link.a.cc2, this.link.b.cc2]);
920
- for (const tst of [cc1_tester, cc2_tester])
921
- tst.test();
922
- }
923
- init_link() {
924
- const nodes = [];
925
- for (const v of this.ports) {
926
- if (v.type === electronics_model_1.PortType.UsbCcPort) {
927
- nodes.push(v);
1310
+ var cc1_tester = new DigitalLinkTester(this.ctx, [this.link.a.cc1, this.link.b.cc1]);
1311
+ var cc2_tester = new DigitalLinkTester(this.ctx, [this.link.a.cc2, this.link.b.cc2]);
1312
+ try {
1313
+ for (var _b = __values([cc1_tester, cc2_tester]), _c = _b.next(); !_c.done; _c = _b.next()) {
1314
+ var tst = _c.value;
1315
+ tst.test();
1316
+ }
1317
+ }
1318
+ catch (e_25_1) { e_25 = { error: e_25_1 }; }
1319
+ finally {
1320
+ try {
1321
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1322
+ }
1323
+ finally { if (e_25) throw e_25.error; }
1324
+ }
1325
+ };
1326
+ UsbCcLinkTester.prototype.init_link = function () {
1327
+ var e_26, _a;
1328
+ var nodes = [];
1329
+ try {
1330
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
1331
+ var v = _c.value;
1332
+ if (v.type === PortType.UsbCcPort) {
1333
+ nodes.push(v);
1334
+ }
928
1335
  }
929
1336
  }
1337
+ catch (e_26_1) { e_26 = { error: e_26_1 }; }
1338
+ finally {
1339
+ try {
1340
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1341
+ }
1342
+ finally { if (e_26) throw e_26.error; }
1343
+ }
930
1344
  if (nodes.length !== 2) {
931
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly two CC ports.'));
1345
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly two CC ports.'));
932
1346
  return false;
933
1347
  }
934
1348
  this.link = {
@@ -936,9 +1350,10 @@ class UsbCcLinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
936
1350
  b: nodes[1],
937
1351
  };
938
1352
  return true;
939
- }
940
- }
941
- exports.UsbCcLinkTester = UsbCcLinkTester;
1353
+ };
1354
+ return UsbCcLinkTester;
1355
+ }(CompositePortLinkTesterBase));
1356
+ export { UsbCcLinkTester };
942
1357
  /**
943
1358
 
944
1359
  self.xclk = self.connect(self.host.xclk, self.cam.xclk)
@@ -956,13 +1371,18 @@ exports.UsbCcLinkTester = UsbCcLinkTester;
956
1371
  self.y7 = self.connect(self.host.y7, self.cam.y7)
957
1372
 
958
1373
  */
959
- class Dvp8LinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
960
- check_parameter_propagation() {
1374
+ var Dvp8LinkTester = /** @class */ (function (_super) {
1375
+ __extends(Dvp8LinkTester, _super);
1376
+ function Dvp8LinkTester() {
1377
+ return _super !== null && _super.apply(this, arguments) || this;
1378
+ }
1379
+ Dvp8LinkTester.prototype.check_parameter_propagation = function () {
1380
+ var e_27, _a;
961
1381
  if (!this.link)
962
1382
  return;
963
- const host = this.link.host;
964
- const cam = this.link.cam;
965
- const digitalLinks = [
1383
+ var host = this.link.host;
1384
+ var cam = this.link.cam;
1385
+ var digitalLinks = [
966
1386
  [host.xclk, cam.xclk],
967
1387
  [host.pclk, cam.pclk],
968
1388
  [host.href, cam.href],
@@ -976,32 +1396,53 @@ class Dvp8LinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
976
1396
  [host.y6, cam.y6],
977
1397
  [host.y7, cam.y7],
978
1398
  ];
979
- for (const [hostPort, camPort] of digitalLinks) {
980
- const tester = new DigitalLinkTester(this.ctx, [hostPort, camPort]);
981
- tester.test();
1399
+ try {
1400
+ for (var digitalLinks_1 = __values(digitalLinks), digitalLinks_1_1 = digitalLinks_1.next(); !digitalLinks_1_1.done; digitalLinks_1_1 = digitalLinks_1.next()) {
1401
+ var _b = __read(digitalLinks_1_1.value, 2), hostPort = _b[0], camPort = _b[1];
1402
+ var tester = new DigitalLinkTester(this.ctx, [hostPort, camPort]);
1403
+ tester.test();
1404
+ }
982
1405
  }
983
- }
984
- init_link() {
985
- const hosts = [];
986
- const cams = [];
987
- for (const v of this.ports) {
988
- switch (v.type) {
989
- case electronics_model_1.PortType.Dvp8Host: {
990
- hosts.push(v);
991
- break;
992
- }
993
- case electronics_model_1.PortType.Dvp8Camera: {
994
- cams.push(v);
995
- break;
1406
+ catch (e_27_1) { e_27 = { error: e_27_1 }; }
1407
+ finally {
1408
+ try {
1409
+ if (digitalLinks_1_1 && !digitalLinks_1_1.done && (_a = digitalLinks_1.return)) _a.call(digitalLinks_1);
1410
+ }
1411
+ finally { if (e_27) throw e_27.error; }
1412
+ }
1413
+ };
1414
+ Dvp8LinkTester.prototype.init_link = function () {
1415
+ var e_28, _a;
1416
+ var hosts = [];
1417
+ var cams = [];
1418
+ try {
1419
+ for (var _b = __values(this.ports), _c = _b.next(); !_c.done; _c = _b.next()) {
1420
+ var v = _c.value;
1421
+ switch (v.type) {
1422
+ case PortType.Dvp8Host: {
1423
+ hosts.push(v);
1424
+ break;
1425
+ }
1426
+ case PortType.Dvp8Camera: {
1427
+ cams.push(v);
1428
+ break;
1429
+ }
996
1430
  }
997
1431
  }
998
1432
  }
1433
+ catch (e_28_1) { e_28 = { error: e_28_1 }; }
1434
+ finally {
1435
+ try {
1436
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1437
+ }
1438
+ finally { if (e_28) throw e_28.error; }
1439
+ }
999
1440
  if (hosts.length !== 1) {
1000
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one DVP8 host port.'));
1441
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one DVP8 host port.'));
1001
1442
  return false;
1002
1443
  }
1003
1444
  if (cams.length !== 1) {
1004
- this.ctx.report.erc_errors.push((0, report_1.PP_ILLEGAL_CONNECTION)(this.all_port_ids, 'There must be exactly one DVP8 camera port.'));
1445
+ this.ctx.report.erc_errors.push(PP_ILLEGAL_CONNECTION(this.all_port_ids, 'There must be exactly one DVP8 camera port.'));
1005
1446
  return false;
1006
1447
  }
1007
1448
  this.link = {
@@ -1009,6 +1450,7 @@ class Dvp8LinkTester extends link_tester_base_1.CompositePortLinkTesterBase {
1009
1450
  cam: cams[0],
1010
1451
  };
1011
1452
  return true;
1012
- }
1013
- }
1014
- exports.Dvp8LinkTester = Dvp8LinkTester;
1453
+ };
1454
+ return Dvp8LinkTester;
1455
+ }(CompositePortLinkTesterBase));
1456
+ export { Dvp8LinkTester };