@celox-sim/celox 0.1.5 → 0.1.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"napi-helpers.js","sourceRoot":"","sources":["../src/napi-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"napi-helpers.js","sourceRoot":"","sources":["../src/napi-helpers.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Wraps a NativeSimulationHandle and provides a high-level TypeScript API
5
5
  * for clock-driven simulation with automatic scheduling.
6
6
  */
7
- import type { CreateResult, ModuleDefinition, NativeSimulationHandle, SimulatorOptions } from "./types.js";
7
+ import type { CreateResult, FourStateValue, ModuleDefinition, NativeSimulationHandle, SimulatorOptions } from "./types.js";
8
8
  /**
9
9
  * Placeholder for the NAPI binding's `createSimulation()`.
10
10
  * Stream B will provide the real implementation.
@@ -21,6 +21,9 @@ export declare class Simulation<P = Record<string, unknown>> {
21
21
  private readonly _dut;
22
22
  private readonly _events;
23
23
  private readonly _state;
24
+ private readonly _buffer;
25
+ private readonly _layout;
26
+ private readonly _clocks;
24
27
  private _disposed;
25
28
  private constructor();
26
29
  /**
@@ -90,9 +93,14 @@ export declare class Simulation<P = Record<string, unknown>> {
90
93
  /**
91
94
  * Run the simulation until the given time.
92
95
  * Processes all scheduled events up to and including `endTime`.
93
- * evalComb is called internally; dirty is cleared on return.
96
+ *
97
+ * When `maxSteps` is provided, steps are counted in TS and a
98
+ * `SimulationTimeoutError` is thrown if the budget is exhausted before
99
+ * reaching `endTime`. Without `maxSteps` the fast Rust path is used.
94
100
  */
95
- runUntil(endTime: number): void;
101
+ runUntil(endTime: number, opts?: {
102
+ maxSteps?: number;
103
+ }): void;
96
104
  /**
97
105
  * Advance to the next scheduled event.
98
106
  *
@@ -101,6 +109,54 @@ export declare class Simulation<P = Record<string, unknown>> {
101
109
  step(): number | null;
102
110
  /** Current simulation time. */
103
111
  time(): number;
112
+ /**
113
+ * Peek at the time of the next scheduled event without advancing.
114
+ *
115
+ * @returns The time of the next event, or `null` if no events are scheduled.
116
+ */
117
+ nextEventTime(): number | null;
118
+ /**
119
+ * Step until `condition()` returns true.
120
+ *
121
+ * @returns The simulation time when the condition became true.
122
+ * @throws SimulationTimeoutError if `maxSteps` is exceeded.
123
+ */
124
+ waitUntil(condition: () => boolean, opts?: {
125
+ maxSteps?: number;
126
+ }): number;
127
+ /**
128
+ * Wait for `count` rising edges of the given clock.
129
+ *
130
+ * Detects actual 0→1 transitions by reading the clock signal directly
131
+ * from the shared buffer (clock ports are excluded from the DUT proxy).
132
+ * The clock must have been registered via `addClock`.
133
+ *
134
+ * @returns The simulation time after the edges are observed.
135
+ * @throws SimulationTimeoutError if `maxSteps` is exceeded.
136
+ */
137
+ waitForCycles(clock: string, count: number, opts?: {
138
+ maxSteps?: number;
139
+ }): number;
140
+ /**
141
+ * Assert and release a reset signal.
142
+ *
143
+ * The active level is determined automatically from the Veryl type:
144
+ * - `reset` / `reset_async_high` / `reset_sync_high` → active-high (1)
145
+ * - `reset_async_low` / `reset_sync_low` → active-low (0)
146
+ *
147
+ * For sync resets (with an associated clock from FfDeclaration), advances
148
+ * `activeCycles` worth of the associated clock's period using `runUntil`.
149
+ * For async resets without an associated clock, `duration` must be specified.
150
+ * An explicit `duration` overrides cycle-based calculation for either type.
151
+ */
152
+ reset(signal: string, opts?: {
153
+ activeCycles?: number;
154
+ duration?: number;
155
+ }): void;
156
+ /**
157
+ * Read the raw 4-state (value + mask) pair for the named port.
158
+ */
159
+ fourState(portName: string): FourStateValue;
104
160
  /** Write current signal values to VCD at the given timestamp. */
105
161
  dump(timestamp: number): void;
106
162
  /** Release native resources. */
@@ -1 +1 @@
1
- {"version":3,"file":"simulation.d.ts","sourceRoot":"","sources":["../src/simulation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AASpB;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gBAAgB,KACtB,YAAY,CAAC,sBAAsB,CAAC,CAAC;AAI1C;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,wBAAwB,GAAG,IAAI,CAE5E;AAMD,qBAAa,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAI;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO;IAYP;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,EACb,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GAAG;QAC3B,cAAc,CAAC,EAAE,wBAAwB,CAAC;KAC3C,GACA,UAAU,CAAC,CAAC,CAAC;IA6BhB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,gBAAgB,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GACxD,UAAU,CAAC,CAAC,CAAC;IAmBhB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,gBAAgB,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GACxD,UAAU,CAAC,CAAC,CAAC;IAmBhB,sEAAsE;IACtE,IAAI,GAAG,IAAI,CAAC,CAEX;IAED;;;;;OAKG;IACH,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,IAAI;IAMP;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAMnE;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM/B;;;;OAIG;IACH,IAAI,IAAI,MAAM,GAAG,IAAI;IAOrB,+BAA+B;IAC/B,IAAI,IAAI,MAAM;IAKd,iEAAiE;IACjE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAK7B,gCAAgC;IAChC,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,WAAW;CAKpB"}
1
+ {"version":3,"file":"simulation.d.ts","sourceRoot":"","sources":["../src/simulation.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,9 @@
4
4
  * Wraps a NativeSimulationHandle and provides a high-level TypeScript API
5
5
  * for clock-driven simulation with automatic scheduling.
6
6
  */
7
- import { createDut } from "./dut.js";
8
- import { loadNativeAddon, parseNapiLayout, buildPortsFromLayout, wrapDirectSimulationHandle, } from "./napi-helpers.js";
7
+ import { SimulationTimeoutError } from "./types.js";
8
+ import { createDut, readFourState } from "./dut.js";
9
+ import { loadNativeAddon, parseNapiLayout, parseHierarchyLayout, buildPortsFromLayout, wrapDirectSimulationHandle, buildNapiOpts, } from "./napi-helpers.js";
9
10
  let _nativeCreate;
10
11
  /**
11
12
  * Register the NAPI binding at module load time.
@@ -22,12 +23,17 @@ export class Simulation {
22
23
  _dut;
23
24
  _events;
24
25
  _state;
26
+ _buffer;
27
+ _layout;
28
+ _clocks = new Map();
25
29
  _disposed = false;
26
- constructor(handle, dut, events, state) {
30
+ constructor(handle, dut, events, state, buffer, layout) {
27
31
  this._handle = handle;
28
32
  this._dut = dut;
29
33
  this._events = events;
30
34
  this._state = state;
35
+ this._buffer = buffer;
36
+ this._layout = layout;
31
37
  }
32
38
  /**
33
39
  * Create a Simulation for the given module.
@@ -48,11 +54,11 @@ export class Simulation {
48
54
  throw new Error("Native simulator binding not loaded. " +
49
55
  "Ensure @celox-sim/celox-napi is installed.");
50
56
  }
51
- const { fourState, vcd } = options ?? {};
52
- const result = createFn(module.source, module.name, { fourState, vcd });
57
+ const { fourState, vcd, optimize, falseLoops, trueLoops, clockType, resetType } = options ?? {};
58
+ const result = createFn(module.source, module.name, { fourState, vcd, optimize, falseLoops, trueLoops, clockType, resetType });
53
59
  const state = { dirty: false };
54
- const dut = createDut(result.buffer, result.layout, module.ports, result.handle, state);
55
- return new Simulation(result.handle, dut, result.events, state);
60
+ const dut = createDut(result.buffer, result.layout, module.ports, result.handle, state, result.hierarchy);
61
+ return new Simulation(result.handle, dut, result.events, state, result.buffer, result.layout);
56
62
  }
57
63
  /**
58
64
  * Create a Simulation directly from Veryl source code.
@@ -68,16 +74,17 @@ export class Simulation {
68
74
  */
69
75
  static fromSource(source, top, options) {
70
76
  const addon = loadNativeAddon(options?.nativeAddonPath);
71
- const napiOpts = options?.fourState ? { fourState: options.fourState } : undefined;
77
+ const napiOpts = buildNapiOpts(options);
72
78
  const raw = new addon.NativeSimulationHandle(source, top, napiOpts);
73
79
  const layout = parseNapiLayout(raw.layoutJson);
74
80
  const events = JSON.parse(raw.eventsJson);
81
+ const hierarchy = parseHierarchyLayout(raw.hierarchyJson, events);
75
82
  const ports = buildPortsFromLayout(layout.signals, events);
76
83
  const buf = raw.sharedMemory().buffer;
77
84
  const state = { dirty: false };
78
85
  const handle = wrapDirectSimulationHandle(raw);
79
- const dut = createDut(buf, layout.forDut, ports, handle, state);
80
- return new Simulation(handle, dut, events, state);
86
+ const dut = createDut(buf, layout.forDut, ports, handle, state, hierarchy);
87
+ return new Simulation(handle, dut, events, state, buf, layout.signals);
81
88
  }
82
89
  /**
83
90
  * Create a Simulation from a Veryl project directory.
@@ -93,16 +100,17 @@ export class Simulation {
93
100
  */
94
101
  static fromProject(projectPath, top, options) {
95
102
  const addon = loadNativeAddon(options?.nativeAddonPath);
96
- const napiOpts = options?.fourState ? { fourState: options.fourState } : undefined;
103
+ const napiOpts = buildNapiOpts(options);
97
104
  const raw = addon.NativeSimulationHandle.fromProject(projectPath, top, napiOpts);
98
105
  const layout = parseNapiLayout(raw.layoutJson);
99
106
  const events = JSON.parse(raw.eventsJson);
107
+ const hierarchy = parseHierarchyLayout(raw.hierarchyJson, events);
100
108
  const ports = buildPortsFromLayout(layout.signals, events);
101
109
  const buf = raw.sharedMemory().buffer;
102
110
  const state = { dirty: false };
103
111
  const handle = wrapDirectSimulationHandle(raw);
104
- const dut = createDut(buf, layout.forDut, ports, handle, state);
105
- return new Simulation(handle, dut, events, state);
112
+ const dut = createDut(buf, layout.forDut, ports, handle, state, hierarchy);
113
+ return new Simulation(handle, dut, events, state, buf, layout.signals);
106
114
  }
107
115
  /** The DUT accessor object — read/write ports as plain properties. */
108
116
  get dut() {
@@ -118,6 +126,7 @@ export class Simulation {
118
126
  this.ensureAlive();
119
127
  const eventId = this.resolveEvent(name);
120
128
  this._handle.addClock(eventId, opts.period, opts.initialDelay ?? 0);
129
+ this._clocks.set(name, { period: opts.period, eventId });
121
130
  }
122
131
  /**
123
132
  * Schedule a one-shot value change for a signal.
@@ -133,11 +142,30 @@ export class Simulation {
133
142
  /**
134
143
  * Run the simulation until the given time.
135
144
  * Processes all scheduled events up to and including `endTime`.
136
- * evalComb is called internally; dirty is cleared on return.
145
+ *
146
+ * When `maxSteps` is provided, steps are counted in TS and a
147
+ * `SimulationTimeoutError` is thrown if the budget is exhausted before
148
+ * reaching `endTime`. Without `maxSteps` the fast Rust path is used.
137
149
  */
138
- runUntil(endTime) {
150
+ runUntil(endTime, opts) {
139
151
  this.ensureAlive();
140
- this._handle.runUntil(endTime);
152
+ if (opts?.maxSteps == null) {
153
+ this._handle.runUntil(endTime);
154
+ this._state.dirty = false;
155
+ return;
156
+ }
157
+ const max = opts.maxSteps;
158
+ let steps = 0;
159
+ while (this._handle.time() < endTime) {
160
+ const t = this._handle.step();
161
+ if (t == null)
162
+ break;
163
+ steps++;
164
+ if (steps >= max) {
165
+ this._state.dirty = false;
166
+ throw new SimulationTimeoutError(`runUntil: exceeded ${max} steps at time ${this._handle.time()} (target ${endTime})`, this._handle.time(), steps);
167
+ }
168
+ }
141
169
  this._state.dirty = false;
142
170
  }
143
171
  /**
@@ -156,6 +184,124 @@ export class Simulation {
156
184
  this.ensureAlive();
157
185
  return this._handle.time();
158
186
  }
187
+ /**
188
+ * Peek at the time of the next scheduled event without advancing.
189
+ *
190
+ * @returns The time of the next event, or `null` if no events are scheduled.
191
+ */
192
+ nextEventTime() {
193
+ this.ensureAlive();
194
+ return this._handle.nextEventTime();
195
+ }
196
+ /**
197
+ * Step until `condition()` returns true.
198
+ *
199
+ * @returns The simulation time when the condition became true.
200
+ * @throws SimulationTimeoutError if `maxSteps` is exceeded.
201
+ */
202
+ waitUntil(condition, opts) {
203
+ this.ensureAlive();
204
+ const max = opts?.maxSteps ?? 100_000;
205
+ let steps = 0;
206
+ while (!condition()) {
207
+ const t = this._handle.step();
208
+ this._state.dirty = false;
209
+ if (t == null)
210
+ break;
211
+ steps++;
212
+ if (steps >= max) {
213
+ throw new SimulationTimeoutError(`waitUntil: condition not met after ${max} steps at time ${this._handle.time()}`, this._handle.time(), steps);
214
+ }
215
+ }
216
+ return this._handle.time();
217
+ }
218
+ /**
219
+ * Wait for `count` rising edges of the given clock.
220
+ *
221
+ * Detects actual 0→1 transitions by reading the clock signal directly
222
+ * from the shared buffer (clock ports are excluded from the DUT proxy).
223
+ * The clock must have been registered via `addClock`.
224
+ *
225
+ * @returns The simulation time after the edges are observed.
226
+ * @throws SimulationTimeoutError if `maxSteps` is exceeded.
227
+ */
228
+ waitForCycles(clock, count, opts) {
229
+ this.ensureAlive();
230
+ if (!this._clocks.has(clock)) {
231
+ throw new Error(`No clock registered for '${clock}'. Call addClock() first.`);
232
+ }
233
+ const sig = this._layout[clock];
234
+ if (!sig) {
235
+ throw new Error(`No layout entry for clock '${clock}'.`);
236
+ }
237
+ const view = new DataView(this._buffer);
238
+ const readClk = () => view.getUint8(sig.offset);
239
+ let prev = readClk();
240
+ let remaining = count;
241
+ return this.waitUntil(() => {
242
+ const curr = readClk();
243
+ if (prev === 0 && curr !== 0)
244
+ remaining--;
245
+ prev = curr;
246
+ return remaining <= 0;
247
+ }, opts);
248
+ }
249
+ /**
250
+ * Assert and release a reset signal.
251
+ *
252
+ * The active level is determined automatically from the Veryl type:
253
+ * - `reset` / `reset_async_high` / `reset_sync_high` → active-high (1)
254
+ * - `reset_async_low` / `reset_sync_low` → active-low (0)
255
+ *
256
+ * For sync resets (with an associated clock from FfDeclaration), advances
257
+ * `activeCycles` worth of the associated clock's period using `runUntil`.
258
+ * For async resets without an associated clock, `duration` must be specified.
259
+ * An explicit `duration` overrides cycle-based calculation for either type.
260
+ */
261
+ reset(signal, opts) {
262
+ this.ensureAlive();
263
+ const sig = this._layout[signal];
264
+ if (!sig) {
265
+ throw new Error(`Unknown port '${signal}'. Available: ${Object.keys(this._layout).join(", ")}`);
266
+ }
267
+ const typeKind = sig.typeKind ?? "";
268
+ if (!typeKind.startsWith("reset")) {
269
+ throw new Error(`Port '${signal}' is not a reset signal (type_kind: '${typeKind}').`);
270
+ }
271
+ const isActiveLow = typeKind === "reset_async_low" || typeKind === "reset_sync_low";
272
+ const activeValue = isActiveLow ? 0 : 1;
273
+ const inactiveValue = isActiveLow ? 1 : 0;
274
+ const dut = this._dut;
275
+ dut[signal] = activeValue;
276
+ const associatedClock = sig.associatedClock;
277
+ if (opts?.duration != null) {
278
+ // Explicit duration (works for both sync and async resets)
279
+ this._handle.runUntil(this._handle.time() + opts.duration);
280
+ }
281
+ else if (associatedClock) {
282
+ // Clock-associated reset → advance by activeCycles
283
+ const cycles = opts?.activeCycles ?? 2;
284
+ this.waitForCycles(associatedClock, cycles);
285
+ }
286
+ else {
287
+ // No associated clock and no explicit duration → error
288
+ throw new Error(`Reset '${signal}' has no associated clock. Specify opts.duration.`);
289
+ }
290
+ dut[signal] = inactiveValue;
291
+ this._state.dirty = false;
292
+ }
293
+ /**
294
+ * Read the raw 4-state (value + mask) pair for the named port.
295
+ */
296
+ fourState(portName) {
297
+ this.ensureAlive();
298
+ const sig = this._layout[portName];
299
+ if (!sig) {
300
+ throw new Error(`Unknown port '${portName}'. Available: ${Object.keys(this._layout).join(", ")}`);
301
+ }
302
+ const [value, mask] = readFourState(this._buffer, sig);
303
+ return { __fourState: true, value, mask };
304
+ }
159
305
  /** Write current signal values to VCD at the given timestamp. */
160
306
  dump(timestamp) {
161
307
  this.ensureAlive();
@@ -1 +1 @@
1
- {"version":3,"file":"simulation.js","sourceRoot":"","sources":["../src/simulation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simulation.js","sourceRoot":"","sources":["../src/simulation.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Wraps a NativeSimulatorHandle and provides a high-level TypeScript API
5
5
  * for manually controlling clock edges via `tick()`.
6
6
  */
7
- import type { CreateResult, EventHandle, ModuleDefinition, NativeSimulatorHandle, SimulatorOptions } from "./types.js";
7
+ import type { CreateResult, EventHandle, FourStateValue, ModuleDefinition, NativeSimulatorHandle, SimulatorOptions } from "./types.js";
8
8
  /**
9
9
  * Placeholder for the NAPI binding's `createSimulator()`.
10
10
  * Stream B will provide the real implementation; until then tests can
@@ -25,6 +25,8 @@ export declare class Simulator<P = Record<string, unknown>> {
25
25
  private readonly _events;
26
26
  private readonly _defaultEventId;
27
27
  private readonly _state;
28
+ private readonly _buffer;
29
+ private readonly _layout;
28
30
  private _disposed;
29
31
  private constructor();
30
32
  /**
@@ -83,6 +85,10 @@ export declare class Simulator<P = Record<string, unknown>> {
83
85
  tick(count?: number): void;
84
86
  /** Resolve an event name to a handle for use with `tick()`. */
85
87
  event(name: string): EventHandle;
88
+ /**
89
+ * Read the raw 4-state (value + mask) pair for the named port.
90
+ */
91
+ fourState(portName: string): FourStateValue;
86
92
  /** Write current signal values to VCD at the given timestamp. */
87
93
  dump(timestamp: number): void;
88
94
  /** Release native resources. */
@@ -1 +1 @@
1
- {"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../src/simulator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AASpB;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gBAAgB,KACtB,YAAY,CAAC,qBAAqB,CAAC,CAAC;AAIzC;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAEjE;AAMD,qBAAa,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAI;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO;IAcP;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,EACb,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GAAG;QAC3B,iEAAiE;QACjE,cAAc,CAAC,EAAE,cAAc,CAAC;KACjC,GACA,SAAS,CAAC,CAAC,CAAC;IA6Bf;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,gBAAgB,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GACxD,SAAS,CAAC,CAAC,CAAC;IAmBf;;;;;;;;;;OAUG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,gBAAgB,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GACxD,SAAS,CAAC,CAAC,CAAC;IAmBf,sEAAsE;IACtE,IAAI,GAAG,IAAI,CAAC,CAEX;IAED;;;;;;OAMG;IACH,IAAI,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IACxD,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAgC1B,+DAA+D;IAC/D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAUhC,iEAAiE;IACjE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAK7B,gCAAgC;IAChC,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,WAAW;CAKpB"}
1
+ {"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../src/simulator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EAErB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAWpB;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gBAAgB,KACtB,YAAY,CAAC,qBAAqB,CAAC,CAAC;AAIzC;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAEjE;AAMD,qBAAa,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAI;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO;IAkBP;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,EACb,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC3B,OAAO,CAAC,EAAE,gBAAgB,GAAG;QAC3B,iEAAiE;QACjE,cAAc,CAAC,EAAE,cAAc,CAAC;KACjC,GACA,SAAS,CAAC,CAAC,CAAC;IA8Bf;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,gBAAgB,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GACxD,SAAS,CAAC,CAAC,CAAC;IAoBf;;;;;;;;;;OAUG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,gBAAgB,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GACxD,SAAS,CAAC,CAAC,CAAC;IAoBf,sEAAsE;IACtE,IAAI,GAAG,IAAI,CAAC,CAEX;IAED;;;;;;OAMG;IACH,IAAI,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IACxD,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAgC1B,+DAA+D;IAC/D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAUhC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAY3C,iEAAiE;IACjE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAK7B,gCAAgC;IAChC,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,WAAW;CAKpB"}
package/dist/simulator.js CHANGED
@@ -4,8 +4,8 @@
4
4
  * Wraps a NativeSimulatorHandle and provides a high-level TypeScript API
5
5
  * for manually controlling clock edges via `tick()`.
6
6
  */
7
- import { createDut } from "./dut.js";
8
- import { loadNativeAddon, parseNapiLayout, buildPortsFromLayout, wrapDirectSimulatorHandle, } from "./napi-helpers.js";
7
+ import { createDut, readFourState } from "./dut.js";
8
+ import { loadNativeAddon, parseNapiLayout, parseHierarchyLayout, buildPortsFromLayout, wrapDirectSimulatorHandle, buildNapiOpts, } from "./napi-helpers.js";
9
9
  let _nativeCreate;
10
10
  /**
11
11
  * Register the NAPI binding at module load time.
@@ -24,12 +24,16 @@ export class Simulator {
24
24
  _events;
25
25
  _defaultEventId;
26
26
  _state;
27
+ _buffer;
28
+ _layout;
27
29
  _disposed = false;
28
- constructor(handle, dut, events, state) {
30
+ constructor(handle, dut, events, state, buffer, layout) {
29
31
  this._handle = handle;
30
32
  this._dut = dut;
31
33
  this._events = events;
32
34
  this._state = state;
35
+ this._buffer = buffer;
36
+ this._layout = layout;
33
37
  const keys = Object.keys(events);
34
38
  this._defaultEventId = keys.length > 0 ? events[keys[0]] : -1;
35
39
  }
@@ -51,11 +55,11 @@ export class Simulator {
51
55
  throw new Error("Native simulator binding not loaded. " +
52
56
  "Ensure @celox-sim/celox-napi is installed.");
53
57
  }
54
- const { fourState, vcd } = options ?? {};
55
- const result = createFn(module.source, module.name, { fourState, vcd });
58
+ const { fourState, vcd, optimize, falseLoops, trueLoops, clockType, resetType } = options ?? {};
59
+ const result = createFn(module.source, module.name, { fourState, vcd, optimize, falseLoops, trueLoops, clockType, resetType });
56
60
  const state = { dirty: false };
57
- const dut = createDut(result.buffer, result.layout, module.ports, result.handle, state);
58
- return new Simulator(result.handle, dut, result.events, state);
61
+ const dut = createDut(result.buffer, result.layout, module.ports, result.handle, state, result.hierarchy);
62
+ return new Simulator(result.handle, dut, result.events, state, result.buffer, result.layout);
59
63
  }
60
64
  /**
61
65
  * Create a Simulator directly from Veryl source code.
@@ -73,16 +77,17 @@ export class Simulator {
73
77
  */
74
78
  static fromSource(source, top, options) {
75
79
  const addon = loadNativeAddon(options?.nativeAddonPath);
76
- const napiOpts = options?.fourState ? { fourState: options.fourState } : undefined;
80
+ const napiOpts = buildNapiOpts(options);
77
81
  const raw = new addon.NativeSimulatorHandle(source, top, napiOpts);
78
82
  const layout = parseNapiLayout(raw.layoutJson);
79
83
  const events = JSON.parse(raw.eventsJson);
84
+ const hierarchy = parseHierarchyLayout(raw.hierarchyJson, events);
80
85
  const ports = buildPortsFromLayout(layout.signals, events);
81
86
  const buf = raw.sharedMemory().buffer;
82
87
  const state = { dirty: false };
83
88
  const handle = wrapDirectSimulatorHandle(raw);
84
- const dut = createDut(buf, layout.forDut, ports, handle, state);
85
- return new Simulator(handle, dut, events, state);
89
+ const dut = createDut(buf, layout.forDut, ports, handle, state, hierarchy);
90
+ return new Simulator(handle, dut, events, state, buf, layout.forDut);
86
91
  }
87
92
  /**
88
93
  * Create a Simulator from a Veryl project directory.
@@ -97,16 +102,17 @@ export class Simulator {
97
102
  */
98
103
  static fromProject(projectPath, top, options) {
99
104
  const addon = loadNativeAddon(options?.nativeAddonPath);
100
- const napiOpts = options?.fourState ? { fourState: options.fourState } : undefined;
105
+ const napiOpts = buildNapiOpts(options);
101
106
  const raw = addon.NativeSimulatorHandle.fromProject(projectPath, top, napiOpts);
102
107
  const layout = parseNapiLayout(raw.layoutJson);
103
108
  const events = JSON.parse(raw.eventsJson);
109
+ const hierarchy = parseHierarchyLayout(raw.hierarchyJson, events);
104
110
  const ports = buildPortsFromLayout(layout.signals, events);
105
111
  const buf = raw.sharedMemory().buffer;
106
112
  const state = { dirty: false };
107
113
  const handle = wrapDirectSimulatorHandle(raw);
108
- const dut = createDut(buf, layout.forDut, ports, handle, state);
109
- return new Simulator(handle, dut, events, state);
114
+ const dut = createDut(buf, layout.forDut, ports, handle, state, hierarchy);
115
+ return new Simulator(handle, dut, events, state, buf, layout.forDut);
110
116
  }
111
117
  /** The DUT accessor object — read/write ports as plain properties. */
112
118
  get dut() {
@@ -147,6 +153,18 @@ export class Simulator {
147
153
  }
148
154
  return { name, id };
149
155
  }
156
+ /**
157
+ * Read the raw 4-state (value + mask) pair for the named port.
158
+ */
159
+ fourState(portName) {
160
+ this.ensureAlive();
161
+ const sig = this._layout[portName];
162
+ if (!sig) {
163
+ throw new Error(`Unknown port '${portName}'. Available: ${Object.keys(this._layout).join(", ")}`);
164
+ }
165
+ const [value, mask] = readFourState(this._buffer, sig);
166
+ return { __fourState: true, value, mask };
167
+ }
150
168
  /** Write current signal values to VCD at the given timestamp. */
151
169
  dump(timestamp) {
152
170
  this.ensureAlive();
@@ -1 +1 @@
1
- {"version":3,"file":"simulator.js","sourceRoot":"","sources":["../src/simulator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simulator.js","sourceRoot":"","sources":["../src/simulator.ts"],"names":[],"mappings":"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"}