edacation 0.5.1 → 0.6.0

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.
@@ -62,6 +62,7 @@ declare const schemaNextpnrOptions: z.ZodObject<{
62
62
  placedSvg: z.ZodOptional<z.ZodBoolean>;
63
63
  routedSvg: z.ZodOptional<z.ZodBoolean>;
64
64
  routedJson: z.ZodOptional<z.ZodBoolean>;
65
+ pinConfigFile: z.ZodOptional<z.ZodString>;
65
66
  }, z.core.$strip>;
66
67
  declare const schemaNextpnr: z.ZodObject<{
67
68
  arguments: z.ZodOptional<z.ZodObject<{
@@ -72,6 +73,7 @@ declare const schemaNextpnr: z.ZodObject<{
72
73
  placedSvg: z.ZodOptional<z.ZodBoolean>;
73
74
  routedSvg: z.ZodOptional<z.ZodBoolean>;
74
75
  routedJson: z.ZodOptional<z.ZodBoolean>;
76
+ pinConfigFile: z.ZodOptional<z.ZodString>;
75
77
  }, z.core.$strip>>;
76
78
  }, z.core.$strip>;
77
79
  declare const schemaNextpnrTarget: z.ZodObject<{
@@ -84,6 +86,7 @@ declare const schemaNextpnrTarget: z.ZodObject<{
84
86
  placedSvg: z.ZodOptional<z.ZodBoolean>;
85
87
  routedSvg: z.ZodOptional<z.ZodBoolean>;
86
88
  routedJson: z.ZodOptional<z.ZodBoolean>;
89
+ pinConfigFile: z.ZodOptional<z.ZodString>;
87
90
  }, z.core.$strip>>;
88
91
  }, z.core.$strip>;
89
92
  declare const schemaIVerilogOptions: z.ZodObject<{
@@ -108,6 +111,28 @@ declare const schemaIVerilogTarget: z.ZodObject<{
108
111
  testbenchFile: z.ZodOptional<z.ZodString>;
109
112
  }, z.core.$strip>>;
110
113
  }, z.core.$strip>;
114
+ declare const schemaFlasherOptions: z.ZodObject<{
115
+ board: z.ZodOptional<z.ZodString>;
116
+ }, z.core.$strip>;
117
+ declare const schemaFlasher: z.ZodObject<{
118
+ arguments: z.ZodOptional<z.ZodObject<{
119
+ useGenerated: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
120
+ values: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
121
+ }, z.core.$strip>>;
122
+ options: z.ZodOptional<z.ZodObject<{
123
+ board: z.ZodOptional<z.ZodString>;
124
+ }, z.core.$strip>>;
125
+ }, z.core.$strip>;
126
+ declare const schemaFlasherTarget: z.ZodObject<{
127
+ arguments: z.ZodOptional<z.ZodObject<{
128
+ useGenerated: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
129
+ values: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
130
+ useDefault: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
131
+ }, z.core.$strip>>;
132
+ options: z.ZodOptional<z.ZodObject<{
133
+ board: z.ZodOptional<z.ZodString>;
134
+ }, z.core.$strip>>;
135
+ }, z.core.$strip>;
111
136
  export declare const schemaProjectConfiguration: z.ZodObject<{
112
137
  defaults: z.ZodOptional<z.ZodObject<{
113
138
  yosys: z.ZodOptional<z.ZodObject<{
@@ -145,6 +170,7 @@ export declare const schemaProjectConfiguration: z.ZodObject<{
145
170
  placedSvg: z.ZodOptional<z.ZodBoolean>;
146
171
  routedSvg: z.ZodOptional<z.ZodBoolean>;
147
172
  routedJson: z.ZodOptional<z.ZodBoolean>;
173
+ pinConfigFile: z.ZodOptional<z.ZodString>;
148
174
  }, z.core.$strip>>;
149
175
  }, z.core.$strip>>;
150
176
  iverilog: z.ZodOptional<z.ZodObject<{
@@ -164,6 +190,23 @@ export declare const schemaProjectConfiguration: z.ZodObject<{
164
190
  testbenchFile: z.ZodOptional<z.ZodString>;
165
191
  }, z.core.$strip>>;
166
192
  }, z.core.$strip>>;
193
+ flasher: z.ZodOptional<z.ZodObject<{
194
+ inputFiles: z.ZodOptional<z.ZodObject<{
195
+ useGenerated: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
196
+ values: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
197
+ }, z.core.$strip>>;
198
+ outputFiles: z.ZodOptional<z.ZodObject<{
199
+ useGenerated: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
200
+ values: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
201
+ }, z.core.$strip>>;
202
+ arguments: z.ZodOptional<z.ZodObject<{
203
+ useGenerated: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
204
+ values: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
205
+ }, z.core.$strip>>;
206
+ options: z.ZodOptional<z.ZodObject<{
207
+ board: z.ZodOptional<z.ZodString>;
208
+ }, z.core.$strip>>;
209
+ }, z.core.$strip>>;
167
210
  }, z.core.$strip>>;
168
211
  targets: z.ZodArray<z.ZodObject<{
169
212
  id: z.ZodString;
@@ -214,6 +257,7 @@ export declare const schemaProjectConfiguration: z.ZodObject<{
214
257
  placedSvg: z.ZodOptional<z.ZodBoolean>;
215
258
  routedSvg: z.ZodOptional<z.ZodBoolean>;
216
259
  routedJson: z.ZodOptional<z.ZodBoolean>;
260
+ pinConfigFile: z.ZodOptional<z.ZodString>;
217
261
  }, z.core.$strip>>;
218
262
  }, z.core.$strip>>;
219
263
  iverilog: z.ZodOptional<z.ZodObject<{
@@ -236,14 +280,35 @@ export declare const schemaProjectConfiguration: z.ZodObject<{
236
280
  testbenchFile: z.ZodOptional<z.ZodString>;
237
281
  }, z.core.$strip>>;
238
282
  }, z.core.$strip>>;
283
+ flasher: z.ZodOptional<z.ZodObject<{
284
+ inputFiles: z.ZodOptional<z.ZodObject<{
285
+ useGenerated: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
286
+ values: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
287
+ useDefault: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
288
+ }, z.core.$strip>>;
289
+ outputFiles: z.ZodOptional<z.ZodObject<{
290
+ useGenerated: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
291
+ values: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
292
+ useDefault: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
293
+ }, z.core.$strip>>;
294
+ arguments: z.ZodOptional<z.ZodObject<{
295
+ useGenerated: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
296
+ values: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
297
+ useDefault: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
298
+ }, z.core.$strip>>;
299
+ options: z.ZodOptional<z.ZodObject<{
300
+ board: z.ZodOptional<z.ZodString>;
301
+ }, z.core.$strip>>;
302
+ }, z.core.$strip>>;
239
303
  }, z.core.$strip>>;
304
+ activeTargetId: z.ZodOptional<z.ZodString>;
240
305
  }, z.core.$strip>;
241
306
  export type ProjectConfiguration = z.infer<typeof schemaProjectConfiguration>;
242
307
  export type TargetDefaultsConfiguration = NonNullable<ProjectConfiguration['defaults']>;
243
308
  export type TargetConfiguration = ArrayElement<ProjectConfiguration['targets']>;
244
309
  export type ValueListConfiguration = z.infer<typeof schemaValueList>;
245
310
  export type ValueListConfigurationTarget = z.infer<typeof schemaValueListTarget>;
246
- export type WorkerId = 'yosys' | 'nextpnr' | 'iverilog';
311
+ export type WorkerId = 'yosys' | 'nextpnr' | 'iverilog' | 'flasher';
247
312
  export type WorkerConfiguration = z.infer<typeof schemaWorker>;
248
313
  export type WorkerTargetConfiguration = z.infer<typeof schemaWorkerTarget>;
249
314
  export type YosysOptions = z.infer<typeof schemaYosysOptions>;
@@ -255,10 +320,14 @@ export type NextpnrTargetConfiguration = z.infer<typeof schemaNextpnrTarget>;
255
320
  export type IVerilogOptions = z.infer<typeof schemaIVerilogOptions>;
256
321
  export type IVerilogConfiguration = z.infer<typeof schemaIVerilog>;
257
322
  export type IVerilogTargetConfiguration = z.infer<typeof schemaIVerilogTarget>;
323
+ export type FlasherOptions = z.infer<typeof schemaFlasherOptions>;
324
+ export type FlasherConfiguration = z.infer<typeof schemaFlasher>;
325
+ export type FlasherTargetConfiguration = z.infer<typeof schemaFlasherTarget>;
258
326
  export type TargetOptionTypes = {
259
327
  yosys: YosysOptions;
260
328
  nextpnr: NextpnrOptions;
261
329
  iverilog: IVerilogOptions;
330
+ flasher: FlasherOptions;
262
331
  };
263
332
  export interface WorkerStep {
264
333
  tool: string;
@@ -45,7 +45,8 @@ const schemaYosysTarget = zod_1.z.object({
45
45
  const schemaNextpnrOptions = zod_1.z.object({
46
46
  placedSvg: zod_1.z.boolean().optional(),
47
47
  routedSvg: zod_1.z.boolean().optional(),
48
- routedJson: zod_1.z.boolean().optional()
48
+ routedJson: zod_1.z.boolean().optional(),
49
+ pinConfigFile: zod_1.z.string().optional()
49
50
  });
50
51
  const schemaNextpnr = zod_1.z.object({
51
52
  arguments: schemaValueList.optional(),
@@ -66,16 +67,30 @@ const schemaIVerilogTarget = zod_1.z.object({
66
67
  arguments: schemaValueListTarget.optional(),
67
68
  options: schemaIVerilogOptions.optional()
68
69
  });
70
+ const schemaFlasherOptions = zod_1.z.object({
71
+ board: zod_1.z.string().optional()
72
+ });
73
+ const schemaFlasher = zod_1.z.object({
74
+ arguments: schemaValueList.optional(),
75
+ options: schemaFlasherOptions.optional()
76
+ });
77
+ const schemaFlasherTarget = zod_1.z.object({
78
+ arguments: schemaValueListTarget.optional(),
79
+ options: schemaFlasherOptions.optional()
80
+ });
69
81
  const schemaCombinedYosys = schemaWorker.merge(schemaYosys);
70
82
  const schemaCombinedYosysTarget = schemaWorkerTarget.merge(schemaYosysTarget);
71
83
  const schemaCombinedNextpnr = schemaWorker.merge(schemaNextpnr);
72
84
  const schemaCombinedNextpnrTarget = schemaWorkerTarget.merge(schemaNextpnrTarget);
73
85
  const schemaCombinedIVerilog = schemaWorker.merge(schemaIVerilog);
74
86
  const schemaCombinedIVerilogTarget = schemaWorkerTarget.merge(schemaIVerilogTarget);
87
+ const schemaCombinedFlasher = schemaWorker.merge(schemaFlasher);
88
+ const schemaCombinedFlasherTarget = schemaWorkerTarget.merge(schemaFlasherTarget);
75
89
  const schemaTargetDefaults = zod_1.z.object({
76
90
  yosys: schemaCombinedYosys.optional(),
77
91
  nextpnr: schemaCombinedNextpnr.optional(),
78
- iverilog: schemaCombinedIVerilog.optional()
92
+ iverilog: schemaCombinedIVerilog.optional(),
93
+ flasher: schemaCombinedFlasher.optional()
79
94
  });
80
95
  const schemaTarget = zod_1.z.object({
81
96
  id: zod_1.z.string(),
@@ -87,10 +102,12 @@ const schemaTarget = zod_1.z.object({
87
102
  directory: zod_1.z.string().optional(),
88
103
  yosys: schemaCombinedYosysTarget.optional(),
89
104
  nextpnr: schemaCombinedNextpnrTarget.optional(),
90
- iverilog: schemaCombinedIVerilogTarget.optional()
105
+ iverilog: schemaCombinedIVerilogTarget.optional(),
106
+ flasher: schemaCombinedFlasherTarget.optional()
91
107
  });
92
108
  exports.schemaProjectConfiguration = zod_1.z.object({
93
109
  defaults: schemaTargetDefaults.optional(),
94
- targets: zod_1.z.array(schemaTarget)
110
+ targets: zod_1.z.array(schemaTarget),
111
+ activeTargetId: zod_1.z.string().optional(),
95
112
  });
96
113
  //# sourceMappingURL=configuration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/project/configuration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/project/configuration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { FlasherOptions, ProjectConfiguration, WorkerOptions, WorkerStep } from './configuration.js';
2
+ import type { Project } from './project.js';
3
+ export type FlasherStep = WorkerStep;
4
+ export type FlasherWorkerOptions = WorkerOptions<FlasherStep, FlasherOptions>;
5
+ export declare const getFlasherDefaultOptions: (configuration: ProjectConfiguration) => FlasherOptions;
6
+ export declare const getFlasherOptions: (configuration: ProjectConfiguration, targetId: string) => FlasherOptions;
7
+ export declare const generateFlasherWorkerOptions: (configuration: ProjectConfiguration, targetId: string) => FlasherWorkerOptions;
8
+ export declare const parseFlasherArguments: (args: string[]) => string[];
9
+ export declare const getFlasherWorkerOptions: (project: Project, targetId: string) => FlasherWorkerOptions;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFlasherWorkerOptions = exports.parseFlasherArguments = exports.generateFlasherWorkerOptions = exports.getFlasherOptions = exports.getFlasherDefaultOptions = void 0;
4
+ const string_args_parser_1 = require("string-args-parser");
5
+ const target_js_1 = require("./target.js");
6
+ const devices_js_1 = require("./devices.js");
7
+ const DEFAULT_OPTIONS = {
8
+ board: undefined,
9
+ };
10
+ const getFlasherDefaultOptions = (configuration) => (0, target_js_1.getDefaultOptions)(configuration, 'flasher', DEFAULT_OPTIONS);
11
+ exports.getFlasherDefaultOptions = getFlasherDefaultOptions;
12
+ const getFlasherOptions = (configuration, targetId) => (0, target_js_1.getOptions)(configuration, targetId, 'flasher', DEFAULT_OPTIONS);
13
+ exports.getFlasherOptions = getFlasherOptions;
14
+ const generateFlasherWorkerOptions = (configuration, targetId) => {
15
+ const target = (0, target_js_1.getTarget)(configuration, targetId);
16
+ const options = (0, exports.getFlasherOptions)(configuration, targetId);
17
+ const vendor = devices_js_1.VENDORS[target.vendor];
18
+ const family = vendor.families[target.family];
19
+ const inputFiles = [];
20
+ const outputFiles = [];
21
+ const steps = [];
22
+ const flasherArgs = [];
23
+ if (options.board) {
24
+ flasherArgs.push('-b', options.board);
25
+ }
26
+ switch (family.architecture) {
27
+ case 'ecp5': {
28
+ const bitstreamFile = (0, target_js_1.getTargetFile)(target, `${family.architecture}.config`);
29
+ inputFiles.push(bitstreamFile);
30
+ const packedFile = (0, target_js_1.getTargetFile)(target, `${family.architecture}.bit`);
31
+ outputFiles.push(packedFile);
32
+ steps.push({ tool: 'ecppack', arguments: [bitstreamFile, packedFile] });
33
+ flasherArgs.push(packedFile);
34
+ break;
35
+ }
36
+ case 'ice40': {
37
+ const bitstreamFile = (0, target_js_1.getTargetFile)(target, `${family.architecture}.asc`);
38
+ inputFiles.push(bitstreamFile);
39
+ const packedFile = (0, target_js_1.getTargetFile)(target, `${family.architecture}.bin`);
40
+ outputFiles.push(packedFile);
41
+ steps.push({ tool: 'icepack', arguments: [bitstreamFile, packedFile] });
42
+ flasherArgs.push(packedFile);
43
+ break;
44
+ }
45
+ default: {
46
+ throw new Error(`Packing not supported for architecture "${family.architecture}"`);
47
+ }
48
+ }
49
+ steps.push({ tool: 'openFPGALoader', arguments: flasherArgs });
50
+ return {
51
+ inputFiles,
52
+ outputFiles,
53
+ target,
54
+ options,
55
+ steps
56
+ };
57
+ };
58
+ exports.generateFlasherWorkerOptions = generateFlasherWorkerOptions;
59
+ const parseFlasherArguments = (args) => args.flatMap((arg) => (0, string_args_parser_1.parseArgs)(arg));
60
+ exports.parseFlasherArguments = parseFlasherArguments;
61
+ const getFlasherWorkerOptions = (project, targetId) => {
62
+ const generated = (0, exports.generateFlasherWorkerOptions)(project.getConfiguration(), targetId);
63
+ const inputFiles = (0, target_js_1.getCombined)(project.getConfiguration(), targetId, 'flasher', 'inputFiles', generated.inputFiles).filter((f) => !!f);
64
+ const outputFiles = (0, target_js_1.getCombined)(project.getConfiguration(), targetId, 'flasher', 'outputFiles', generated.outputFiles).filter((f) => !!f);
65
+ const target = generated.target;
66
+ const options = generated.options;
67
+ const steps = generated.steps.map((step) => {
68
+ const tool = step.tool;
69
+ const args = (0, target_js_1.getCombined)(project.getConfiguration(), targetId, 'flasher', 'arguments', step.arguments, exports.parseFlasherArguments);
70
+ return { tool, arguments: args };
71
+ });
72
+ return {
73
+ inputFiles,
74
+ outputFiles,
75
+ target,
76
+ options,
77
+ steps
78
+ };
79
+ };
80
+ exports.getFlasherWorkerOptions = getFlasherWorkerOptions;
81
+ //# sourceMappingURL=flasher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flasher.js","sourceRoot":"","sources":["../../src/project/flasher.ts"],"names":[],"mappings":";;;AAAA,2DAA6C;AAI7C,2CAAiG;AACjG,6CAAuC;AAOvC,MAAM,eAAe,GAAmB;IACpC,KAAK,EAAE,SAAS;CACnB,CAAC;AAEK,MAAM,wBAAwB,GAAG,CAAC,aAAmC,EAAkB,EAAE,CAC5F,IAAA,6BAAiB,EAAC,aAAa,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AADpD,QAAA,wBAAwB,4BAC4B;AAE1D,MAAM,iBAAiB,GAAG,CAAC,aAAmC,EAAE,QAAgB,EAAkB,EAAE,CACvG,IAAA,sBAAU,EAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AADvD,QAAA,iBAAiB,qBACsC;AAE7D,MAAM,4BAA4B,GAAG,CACxC,aAAmC,EACnC,QAAgB,EACI,EAAE;IACtB,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,IAAA,yBAAiB,EAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,oBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE9C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,QAAQ,MAAM,CAAC,YAAY,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,CAAC,CAAC;YACV,MAAM,aAAa,GAAG,IAAA,yBAAa,EAAC,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,SAAS,CAAC,CAAC;YAC7E,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE/B,MAAM,UAAU,GAAG,IAAA,yBAAa,EAAC,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,MAAM,CAAC,CAAC;YACvE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE7B,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAC,CAAC,CAAC;YAEtE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7B,MAAM;QACV,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,MAAM,aAAa,GAAG,IAAA,yBAAa,EAAC,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,MAAM,CAAC,CAAC;YAC1E,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE/B,MAAM,UAAU,GAAG,IAAA,yBAAa,EAAC,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,MAAM,CAAC,CAAC;YACvE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAE7B,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,EAAC,CAAC,CAAC;YAEtE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7B,MAAM;QACV,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,2CAA2C,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;QACvF,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAC,CAAC,CAAC;IAE7D,OAAO;QACH,UAAU;QACV,WAAW;QACX,MAAM;QACN,OAAO;QACP,KAAK;KACR,CAAC;AACN,CAAC,CAAC;AA1DW,QAAA,4BAA4B,gCA0DvC;AAEK,MAAM,qBAAqB,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,8BAAS,EAAC,GAAG,CAAC,CAAC,CAAC;AAAlF,QAAA,qBAAqB,yBAA6D;AAExF,MAAM,uBAAuB,GAAG,CAAC,OAAgB,EAAE,QAAgB,EAAwB,EAAE;IAChG,MAAM,SAAS,GAAG,IAAA,oCAA4B,EAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,QAAQ,CAAC,CAAC;IAErF,MAAM,UAAU,GAAG,IAAA,uBAAW,EAC1B,OAAO,CAAC,gBAAgB,EAAE,EAC1B,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,SAAS,CAAC,UAAU,CACvB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,WAAW,GAAG,IAAA,uBAAW,EAC3B,OAAO,CAAC,gBAAgB,EAAE,EAC1B,QAAQ,EACR,SAAS,EACT,aAAa,EACb,SAAS,CAAC,WAAW,CACxB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAErB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAChC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,IAAI,GAAG,IAAA,uBAAW,EAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,6BAAqB,CAAC,CAAC;QAC9H,OAAO,EAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,OAAO;QACH,UAAU;QACV,WAAW;QACX,MAAM;QACN,OAAO;QACP,KAAK;KACR,CAAC;AACN,CAAC,CAAC;AAjCW,QAAA,uBAAuB,2BAiClC"}
@@ -1,5 +1,6 @@
1
1
  export * from './configuration.js';
2
2
  export * from './devices.js';
3
+ export * from './flasher.js';
3
4
  export * from './groups.js';
4
5
  export * from './iverilog.js';
5
6
  export * from './nextpnr.js';
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./configuration.js"), exports);
18
18
  __exportStar(require("./devices.js"), exports);
19
+ __exportStar(require("./flasher.js"), exports);
19
20
  __exportStar(require("./groups.js"), exports);
20
21
  __exportStar(require("./iverilog.js"), exports);
21
22
  __exportStar(require("./nextpnr.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/project/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,+CAA6B;AAC7B,8CAA4B;AAC5B,gDAA8B;AAC9B,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/project/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,+CAA6B;AAC7B,+CAA6B;AAC7B,8CAA4B;AAC5B,gDAA8B;AAC9B,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B"}
@@ -58,7 +58,7 @@ const getIVerilogWorkerOptions = (project, targetId) => {
58
58
  const options = generated.options;
59
59
  const steps = generated.steps.map((step) => {
60
60
  const tool = step.tool;
61
- const args = (0, target_js_1.getCombined)(project.getConfiguration(), targetId, 'iverilog', 'commands', step.arguments);
61
+ const args = (0, target_js_1.getCombined)(project.getConfiguration(), targetId, 'iverilog', 'arguments', step.arguments, exports.parseIVerilogArguments);
62
62
  return { tool, arguments: args };
63
63
  });
64
64
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"iverilog.js","sourceRoot":"","sources":["../../src/project/iverilog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iverilog.js","sourceRoot":"","sources":["../../src/project/iverilog.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,8 @@ const target_js_1 = require("./target.js");
7
7
  const DEFAULT_OPTIONS = {
8
8
  placedSvg: false,
9
9
  routedSvg: false,
10
- routedJson: true
10
+ routedJson: true,
11
+ pinConfigFile: undefined
11
12
  };
12
13
  const getNextpnrDefaultOptions = (configuration) => (0, target_js_1.getDefaultOptions)(configuration, 'nextpnr', DEFAULT_OPTIONS);
13
14
  exports.getNextpnrDefaultOptions = getNextpnrDefaultOptions;
@@ -27,6 +28,13 @@ const generateNextpnrWorkerOptions = (configuration, targetId) => {
27
28
  case 'ecp5': {
28
29
  args.push(`--${device.device}`);
29
30
  args.push('--package', target.package.toUpperCase());
31
+ if (options.pinConfigFile) {
32
+ args.push('--lpf', options.pinConfigFile);
33
+ }
34
+ // Write bitstream file
35
+ const file = (0, target_js_1.getTargetFile)(target, `${family.architecture}.config`);
36
+ outputFiles.push(file);
37
+ args.push('--textcfg', file);
30
38
  break;
31
39
  }
32
40
  case 'generic': {
@@ -39,10 +47,13 @@ const generateNextpnrWorkerOptions = (configuration, targetId) => {
39
47
  case 'ice40': {
40
48
  args.push(`--${device.device}`);
41
49
  args.push('--package', target.package);
42
- // Write ASC file by default
50
+ if (options.pinConfigFile) {
51
+ args.push('--pcf', options.pinConfigFile);
52
+ }
53
+ // Write ASC file
43
54
  const file = (0, target_js_1.getTargetFile)(target, `${family.architecture}.asc`);
44
55
  outputFiles.push(file);
45
- args.push('--asc', `${family.architecture}.asc`);
56
+ args.push('--asc', file);
46
57
  break;
47
58
  }
48
59
  case 'nexus': {
@@ -1 +1 @@
1
- {"version":3,"file":"nextpnr.js","sourceRoot":"","sources":["../../src/project/nextpnr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nextpnr.js","sourceRoot":"","sources":["../../src/project/nextpnr.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export type ProjectEvent = 'meta' | 'inputFiles' | 'outputFiles' | 'configuratio
9
9
  type EventCallback = (project: Project, events: ProjectEvent[]) => void;
10
10
  export interface ProjectInputFileState {
11
11
  path: string;
12
- type: 'design' | 'testbench';
12
+ type: 'design' | 'testbench' | 'pinconfig';
13
13
  }
14
14
  export declare class ProjectInputFile {
15
15
  private _project;
@@ -52,6 +52,8 @@ export declare class ProjectTarget {
52
52
  set id(newId: string);
53
53
  get name(): string;
54
54
  set name(newName: string);
55
+ get isActive(): boolean;
56
+ setActive(): void;
55
57
  get vendorId(): string;
56
58
  get availableVendors(): Record<string, Vendor>;
57
59
  get vendor(): Vendor | undefined;
@@ -70,7 +72,7 @@ export declare class ProjectTarget {
70
72
  setPackage(packageId: string): void;
71
73
  get config(): TargetConfiguration;
72
74
  setConfig<P extends PathArray<TargetConfiguration>>(path: P, value: PathArrayValue<TargetConfiguration, P>): void;
73
- getEffectiveOptions<W extends WorkerId>(workerId: WorkerId): TargetOptionTypes[W];
75
+ getEffectiveOptions<W extends WorkerId>(workerId: W): TargetOptionTypes[W];
74
76
  getEffectiveTextConfig(workerId: WorkerId, configId: string, generated: string[], parse?: (values: string[]) => string[]): string[];
75
77
  update(updates: Partial<TargetConfiguration>): void;
76
78
  serialize(): TargetConfiguration;
@@ -110,11 +112,16 @@ export declare class Project {
110
112
  removeOutputFiles(filePaths: string[]): void;
111
113
  expireOutputFiles(): void;
112
114
  setTopLevelModule(targetId: string, module: string): void;
113
- setTestbenchPath(targetId: string, testbenchPath?: string): void;
115
+ setActiveTestbenchPath(targetId: string, testbenchPath?: string): void;
116
+ getActiveTestbenchPath(targetId: string): string | undefined;
117
+ setActivePinConfigPath(targetId: string, pinConfigPath?: string): void;
118
+ getActivePinConfigPath(targetId: string): string | undefined;
114
119
  setInputFileType(filePath: string, type: ProjectInputFile['type']): void;
115
120
  getTargets(): ProjectTarget[];
116
121
  hasTarget(id: string): boolean;
117
122
  getTarget(id: string): ProjectTarget | null;
123
+ getActiveTarget(): ProjectTarget | null;
124
+ setActiveTarget(id: string | null): void;
118
125
  addTarget(id?: string, config?: Omit<TargetConfiguration, 'id'>): ProjectTarget;
119
126
  removeTarget(id: string): void;
120
127
  updateTarget(id: string, updates: Partial<TargetConfiguration>): void;
@@ -168,6 +175,7 @@ export declare class Project {
168
175
  placedSvg?: boolean | undefined;
169
176
  routedSvg?: boolean | undefined;
170
177
  routedJson?: boolean | undefined;
178
+ pinConfigFile?: string | undefined;
171
179
  } | undefined;
172
180
  } | undefined;
173
181
  iverilog?: {
@@ -190,6 +198,26 @@ export declare class Project {
190
198
  testbenchFile?: string | undefined;
191
199
  } | undefined;
192
200
  } | undefined;
201
+ flasher?: {
202
+ inputFiles?: {
203
+ useGenerated: boolean;
204
+ values: string[];
205
+ useDefault: boolean;
206
+ } | undefined;
207
+ outputFiles?: {
208
+ useGenerated: boolean;
209
+ values: string[];
210
+ useDefault: boolean;
211
+ } | undefined;
212
+ arguments?: {
213
+ useGenerated: boolean;
214
+ values: string[];
215
+ useDefault: boolean;
216
+ } | undefined;
217
+ options?: {
218
+ board?: string | undefined;
219
+ } | undefined;
220
+ } | undefined;
193
221
  }[];
194
222
  defaults?: {
195
223
  yosys?: {
@@ -227,6 +255,7 @@ export declare class Project {
227
255
  placedSvg?: boolean | undefined;
228
256
  routedSvg?: boolean | undefined;
229
257
  routedJson?: boolean | undefined;
258
+ pinConfigFile?: string | undefined;
230
259
  } | undefined;
231
260
  } | undefined;
232
261
  iverilog?: {
@@ -246,7 +275,25 @@ export declare class Project {
246
275
  testbenchFile?: string | undefined;
247
276
  } | undefined;
248
277
  } | undefined;
278
+ flasher?: {
279
+ inputFiles?: {
280
+ useGenerated: boolean;
281
+ values: string[];
282
+ } | undefined;
283
+ outputFiles?: {
284
+ useGenerated: boolean;
285
+ values: string[];
286
+ } | undefined;
287
+ arguments?: {
288
+ useGenerated: boolean;
289
+ values: string[];
290
+ } | undefined;
291
+ options?: {
292
+ board?: string | undefined;
293
+ } | undefined;
294
+ } | undefined;
249
295
  } | undefined;
296
+ activeTargetId?: string | undefined;
250
297
  };
251
298
  updateConfiguration(configuration: Partial<ProjectConfiguration>): void;
252
299
  protected importFromProject(other: Project, doTriggerEvent?: boolean): void;
@@ -255,7 +302,12 @@ export declare class Project {
255
302
  triggerConfigurationChanged(): void;
256
303
  protected emitEvents(...events: ProjectEvent[]): void;
257
304
  protected batchEvents<T>(func: () => T, ...events: ProjectEvent[]): T;
305
+ protected ignoreEvents<T>(func: () => T): T;
258
306
  protected static emitsEvents(...events: ProjectEvent[]): <T>(_target: object, _propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;
307
+ protected makeCorrections(): boolean;
308
+ private correctTestbenchPath;
309
+ private correctPinconfigPaths;
310
+ correctActiveTarget(): boolean;
259
311
  static serialize(project: Project): ProjectState;
260
312
  static deserialize(data: ProjectState, ..._args: unknown[]): Project;
261
313
  static loadFromData(rawData: Uint8Array): Project;
@@ -13,10 +13,30 @@ exports.Project = exports.ProjectTarget = exports.ProjectOutputFile = exports.Pr
13
13
  const util_js_1 = require("../util.js");
14
14
  const configuration_js_1 = require("./configuration.js");
15
15
  const devices_js_1 = require("./devices.js");
16
+ const flasher_js_1 = require("./flasher.js");
16
17
  const iverilog_js_1 = require("./iverilog.js");
17
18
  const nextpnr_js_1 = require("./nextpnr.js");
18
19
  const target_js_1 = require("./target.js");
19
20
  const yosys_js_1 = require("./yosys.js");
21
+ const guessInputFileType = (filePath) => {
22
+ // *_tb.<hdl_ext> -> testbench
23
+ // *.<pin_cfg_ext> -> pinconfig
24
+ // default: design
25
+ const baseName = filePath.split('/').pop() ?? filePath;
26
+ const lowerBase = baseName.toLowerCase();
27
+ const ext = lowerBase.split('.').pop() ?? '';
28
+ const hdlExts = util_js_1.FILE_EXTENSIONS_HDL.map(e => e.toLowerCase());
29
+ const pincfgExts = util_js_1.FILE_EXTENSIONS_PINCFG.map(e => e.toLowerCase());
30
+ if (hdlExts.some(e => lowerBase.endsWith(`_tb.${e}`)))
31
+ return 'testbench';
32
+ if (pincfgExts.includes(ext))
33
+ return 'pinconfig';
34
+ return 'design';
35
+ };
36
+ // Fallback clone to handle Proxy objects (structuredClone throws DataCloneError on Proxy)
37
+ const safeStructuredClone = (value) => {
38
+ return JSON.parse(JSON.stringify(value));
39
+ };
20
40
  class ProjectInputFile {
21
41
  constructor(_project, _path, _type) {
22
42
  this._project = _project;
@@ -134,6 +154,15 @@ class ProjectTarget {
134
154
  this._data.name = newName;
135
155
  this._project.triggerConfigurationChanged();
136
156
  }
157
+ get isActive() {
158
+ const activeTarget = this._project.getActiveTarget();
159
+ return activeTarget?.id === this.id;
160
+ }
161
+ setActive() {
162
+ if (this.isActive)
163
+ return;
164
+ this._project.setActiveTarget(this.id);
165
+ }
137
166
  get vendorId() {
138
167
  return this._data.vendor;
139
168
  }
@@ -251,6 +280,8 @@ class ProjectTarget {
251
280
  return (0, nextpnr_js_1.getNextpnrOptions)(this._project.getConfiguration(), this.id);
252
281
  else if (workerId === 'iverilog')
253
282
  return (0, iverilog_js_1.getIVerilogOptions)(this._project.getConfiguration(), this.id);
283
+ else if (workerId === 'flasher')
284
+ return (0, flasher_js_1.getFlasherOptions)(this._project.getConfiguration(), this.id);
254
285
  throw new Error(`Worker ID "${String(workerId)}" is not supported.`);
255
286
  }
256
287
  getEffectiveTextConfig(workerId, configId, generated, parse = target_js_1.defaultParse) {
@@ -263,7 +294,7 @@ class ProjectTarget {
263
294
  }
264
295
  this._data.id = updates.id;
265
296
  }
266
- Object.assign(this._data, structuredClone(updates));
297
+ Object.assign(this._data, safeStructuredClone(updates));
267
298
  this._project.triggerConfigurationChanged();
268
299
  }
269
300
  serialize() {
@@ -308,7 +339,8 @@ class Project {
308
339
  addInputFiles(files) {
309
340
  for (const file of files) {
310
341
  if (!this.hasInputFile(file.path)) {
311
- const inputFile = new ProjectInputFile(this, file.path, file.type ?? 'design');
342
+ const fileType = file.type ?? guessInputFileType(file.path);
343
+ const inputFile = new ProjectInputFile(this, file.path, fileType);
312
344
  this.inputFiles.push(inputFile);
313
345
  }
314
346
  }
@@ -376,7 +408,7 @@ class Project {
376
408
  cfg.yosys.options = {};
377
409
  cfg.yosys.options.topLevelModule = module;
378
410
  }
379
- setTestbenchPath(targetId, testbenchPath) {
411
+ setActiveTestbenchPath(targetId, testbenchPath) {
380
412
  const testbenchFiles = this.getInputFiles()
381
413
  .filter((file) => file.type === 'testbench')
382
414
  .map((file) => file.path);
@@ -385,12 +417,30 @@ class Project {
385
417
  const target = this.getTarget(targetId);
386
418
  if (!target)
387
419
  throw new Error(`Target "${targetId}" does not exist!`);
388
- const cfg = target.config;
389
- if (!cfg.iverilog)
390
- cfg.iverilog = {};
391
- if (!cfg.iverilog.options)
392
- cfg.iverilog.options = {};
393
- cfg.iverilog.options.testbenchFile = testbenchPath;
420
+ target.setConfig(['iverilog', 'options', 'testbenchFile'], testbenchPath);
421
+ }
422
+ getActiveTestbenchPath(targetId) {
423
+ const target = this.getTarget(targetId);
424
+ if (!target)
425
+ throw new Error(`Target "${targetId}" does not exist!`);
426
+ return target.getEffectiveOptions('iverilog').testbenchFile;
427
+ }
428
+ setActivePinConfigPath(targetId, pinConfigPath) {
429
+ const pinConfigFiles = this.getInputFiles()
430
+ .filter((file) => file.type === 'pinconfig')
431
+ .map((file) => file.path);
432
+ if (pinConfigPath && !pinConfigFiles.includes(pinConfigPath))
433
+ throw new Error(`Pin config file ${pinConfigPath} is not marked as such!`);
434
+ const target = this.getTarget(targetId);
435
+ if (!target)
436
+ throw new Error(`Target "${targetId}" does not exist!`);
437
+ target.setConfig(['nextpnr', 'options', 'pinConfigFile'], pinConfigPath);
438
+ }
439
+ getActivePinConfigPath(targetId) {
440
+ const target = this.getTarget(targetId);
441
+ if (!target)
442
+ throw new Error(`Target "${targetId}" does not exist!`);
443
+ return target.getEffectiveOptions('nextpnr').pinConfigFile;
394
444
  }
395
445
  setInputFileType(filePath, type) {
396
446
  const file = this.getInputFile(filePath);
@@ -410,6 +460,17 @@ class Project {
410
460
  const t = this.configuration.targets.find(t => t.id === id);
411
461
  return t ? new ProjectTarget(this, t) : null;
412
462
  }
463
+ getActiveTarget() {
464
+ if (!this.configuration.activeTargetId)
465
+ return null;
466
+ return this.getTarget(this.configuration.activeTargetId);
467
+ }
468
+ setActiveTarget(id) {
469
+ if (id !== null && !this.hasTarget(id)) {
470
+ throw new Error(`Target with ID "${id}" does not exist!`);
471
+ }
472
+ this.configuration.activeTargetId = id ?? undefined;
473
+ }
413
474
  addTarget(id, config) {
414
475
  if (!id) {
415
476
  // Generate a unique ID
@@ -422,7 +483,7 @@ class Project {
422
483
  throw new Error(`Target with ID "${id}" already exists!`);
423
484
  }
424
485
  const newTargetObj = {
425
- ...structuredClone(config || configuration_js_1.DEFAULT_TARGET),
486
+ ...safeStructuredClone(config || configuration_js_1.DEFAULT_TARGET),
426
487
  id
427
488
  };
428
489
  this.configuration.targets.push(newTargetObj);
@@ -464,7 +525,7 @@ class Project {
464
525
  this.name = other.getName();
465
526
  this.inputFiles = other.getInputFiles().map((file) => file.copy(this));
466
527
  this.outputFiles = other.getOutputFiles().map((file) => file.copy(this));
467
- this.configuration = structuredClone(other.getConfiguration());
528
+ this.configuration = safeStructuredClone(other.getConfiguration());
468
529
  if (doTriggerEvent)
469
530
  this.emitEvents('inputFiles', 'outputFiles', 'configuration', 'meta');
470
531
  }
@@ -487,6 +548,11 @@ class Project {
487
548
  // Do not emit events when batching
488
549
  if (this.batchCounter > 0)
489
550
  return;
551
+ // Make any corrections needed,
552
+ // and add 'configuration' event if any corrections were made
553
+ const didCorrect = this.makeCorrections();
554
+ if (didCorrect)
555
+ this.batchedEvents.add('configuration');
490
556
  // Emit new + batched events
491
557
  if (this.eventCallback)
492
558
  this.eventCallback(this, Array.from(this.batchedEvents));
@@ -499,6 +565,14 @@ class Project {
499
565
  this.emitEvents(...events);
500
566
  return res;
501
567
  }
568
+ ignoreEvents(func) {
569
+ // raise batch counter to ignore events,
570
+ // but don't actually emit them later
571
+ this.batchCounter += 1;
572
+ const res = func();
573
+ this.batchCounter -= 1;
574
+ return res;
575
+ }
502
576
  static emitsEvents(...events) {
503
577
  return function decorator(_target, _propertyKey, descriptor) {
504
578
  const originalMethod = descriptor.value;
@@ -511,6 +585,73 @@ class Project {
511
585
  return descriptor;
512
586
  };
513
587
  }
588
+ makeCorrections() {
589
+ return this.ignoreEvents(() => {
590
+ let didChange = false;
591
+ didChange = this.correctTestbenchPath() || didChange;
592
+ didChange = this.correctPinconfigPaths() || didChange;
593
+ didChange = this.correctActiveTarget() || didChange;
594
+ return didChange;
595
+ });
596
+ }
597
+ correctTestbenchPath() {
598
+ const testbenches = this.getInputFiles()
599
+ .filter((file) => file.type == 'testbench')
600
+ .map((file) => file.path);
601
+ let didChange = false;
602
+ for (const target of this.getTargets()) {
603
+ const tbPath = target.getEffectiveOptions('iverilog').testbenchFile;
604
+ if (tbPath && testbenches.includes(tbPath)) {
605
+ // testbench is configured and correct
606
+ continue;
607
+ }
608
+ else if (!tbPath && testbenches.length === 0) {
609
+ // no path configured but also no testbenches present, so ok
610
+ continue;
611
+ }
612
+ const newTb = testbenches.length === 0 ? undefined : testbenches[0];
613
+ this.setActiveTestbenchPath(target.id, newTb);
614
+ didChange = true;
615
+ }
616
+ return didChange;
617
+ }
618
+ correctPinconfigPaths() {
619
+ const pinconfigs = this.getInputFiles()
620
+ .filter((file) => file.type == 'pinconfig')
621
+ .map((file) => file.path);
622
+ let didChange = false;
623
+ for (const target of this.getTargets()) {
624
+ const pcPath = target.getEffectiveOptions('nextpnr').pinConfigFile;
625
+ if (pcPath && pinconfigs.includes(pcPath)) {
626
+ // pinconfig is configured and correct
627
+ continue;
628
+ }
629
+ else if (!pcPath && pinconfigs.length === 0) {
630
+ // no path configured but also no testbenches present, so ok
631
+ continue;
632
+ }
633
+ const newPc = pinconfigs.length === 0 ? undefined : pinconfigs[0];
634
+ this.setActivePinConfigPath(target.id, newPc);
635
+ didChange = true;
636
+ }
637
+ return didChange;
638
+ }
639
+ correctActiveTarget() {
640
+ const activeTarget = this.getActiveTarget();
641
+ if (activeTarget)
642
+ return false; // active target exists, so ok
643
+ const activeTargetId = this.configuration.activeTargetId;
644
+ if (activeTargetId && this.hasTarget(activeTargetId))
645
+ return false; // active target ID is valid, so ok
646
+ // No active target or invalid active target ID, so set to first target (if any)
647
+ if (this.configuration.targets.length > 0) {
648
+ this.configuration.activeTargetId = this.configuration.targets[0].id;
649
+ }
650
+ else {
651
+ this.configuration.activeTargetId = undefined;
652
+ }
653
+ return true;
654
+ }
514
655
  static serialize(project) {
515
656
  return {
516
657
  name: project.name,
@@ -584,13 +725,25 @@ __decorate([
584
725
  __metadata("design:type", Function),
585
726
  __metadata("design:paramtypes", [String, String]),
586
727
  __metadata("design:returntype", void 0)
587
- ], Project.prototype, "setTestbenchPath", null);
728
+ ], Project.prototype, "setActiveTestbenchPath", null);
729
+ __decorate([
730
+ Project.emitsEvents('configuration'),
731
+ __metadata("design:type", Function),
732
+ __metadata("design:paramtypes", [String, String]),
733
+ __metadata("design:returntype", void 0)
734
+ ], Project.prototype, "setActivePinConfigPath", null);
588
735
  __decorate([
589
736
  Project.emitsEvents('inputFiles'),
590
737
  __metadata("design:type", Function),
591
738
  __metadata("design:paramtypes", [String, Object]),
592
739
  __metadata("design:returntype", void 0)
593
740
  ], Project.prototype, "setInputFileType", null);
741
+ __decorate([
742
+ Project.emitsEvents('configuration'),
743
+ __metadata("design:type", Function),
744
+ __metadata("design:paramtypes", [Object]),
745
+ __metadata("design:returntype", void 0)
746
+ ], Project.prototype, "setActiveTarget", null);
594
747
  __decorate([
595
748
  Project.emitsEvents('configuration'),
596
749
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/project/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/project/project.ts"],"names":[],"mappings":"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"}
package/dist/util.d.ts CHANGED
@@ -6,4 +6,5 @@ export declare const decodeJSON: (input: NodeJS.ArrayBufferView | ArrayBuffer) =
6
6
  export declare const FILE_EXTENSIONS_VERILOG: string[];
7
7
  export declare const FILE_EXTENSIONS_VHDL: string[];
8
8
  export declare const FILE_EXTENSIONS_HDL: string[];
9
+ export declare const FILE_EXTENSIONS_PINCFG: string[];
9
10
  export declare const formatArguments: (args: string[]) => string[];
package/dist/util.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatArguments = exports.FILE_EXTENSIONS_HDL = exports.FILE_EXTENSIONS_VHDL = exports.FILE_EXTENSIONS_VERILOG = exports.decodeJSON = exports.decodeText = exports.encodeJSON = exports.encodeText = void 0;
3
+ exports.formatArguments = exports.FILE_EXTENSIONS_PINCFG = exports.FILE_EXTENSIONS_HDL = exports.FILE_EXTENSIONS_VHDL = exports.FILE_EXTENSIONS_VERILOG = exports.decodeJSON = exports.decodeText = exports.encodeJSON = exports.encodeText = void 0;
4
4
  const textEncoder = new TextEncoder();
5
5
  const textDecoder = new TextDecoder();
6
6
  const encodeText = (input) => textEncoder.encode(input.endsWith('\n') ? input : `${input}\n`);
@@ -14,6 +14,10 @@ exports.decodeJSON = decodeJSON;
14
14
  exports.FILE_EXTENSIONS_VERILOG = ['v', 'vh', 'sv', 'svh'];
15
15
  exports.FILE_EXTENSIONS_VHDL = ['vhd', 'vhdl'];
16
16
  exports.FILE_EXTENSIONS_HDL = [...exports.FILE_EXTENSIONS_VERILOG, ...exports.FILE_EXTENSIONS_VHDL];
17
+ exports.FILE_EXTENSIONS_PINCFG = [
18
+ 'pcf', // ice40
19
+ 'lpf', // ecp5
20
+ ];
17
21
  const formatArguments = (args) => args.reduce((prev, arg) => arg.startsWith('--')
18
22
  ? [...prev, arg]
19
23
  : [...prev.slice(0, prev.length - 1), `${prev[prev.length - 1]} ${arg}`], []);
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAIA,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAE/B,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AAAhG,QAAA,UAAU,cAAsF;AACtG,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,MAAM,GAAG,KAAK,EAAE,EAAE,CACzD,IAAA,kBAAU,EAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAD5D,QAAA,UAAU,cACkD;AAElE,MAAM,UAAU,GAAG,CAAC,KAA2C,EAAU,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAAhG,QAAA,UAAU,cAAsF;AACtG,MAAM,UAAU,GAAG,CAAC,KAA2C,EAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAC,CAAC;AAArG,QAAA,UAAU,cAA2F;AAErG,QAAA,uBAAuB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACnD,QAAA,oBAAoB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,QAAA,mBAAmB,GAAG,CAAC,GAAG,+BAAuB,EAAE,GAAG,4BAAoB,CAAC,CAAC;AAElF,MAAM,eAAe,GAAG,CAAC,IAAc,EAAE,EAAE,CAC9C,IAAI,CAAC,MAAM,CACP,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CACV,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC;IAChB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,EAChF,EAAc,CACjB,CAAC;AAPO,QAAA,eAAe,mBAOtB"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAIA,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAE/B,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AAAhG,QAAA,UAAU,cAAsF;AACtG,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,MAAM,GAAG,KAAK,EAAE,EAAE,CACzD,IAAA,kBAAU,EAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAD5D,QAAA,UAAU,cACkD;AAElE,MAAM,UAAU,GAAG,CAAC,KAA2C,EAAU,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAAhG,QAAA,UAAU,cAAsF;AACtG,MAAM,UAAU,GAAG,CAAC,KAA2C,EAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAC,CAAC;AAArG,QAAA,UAAU,cAA2F;AAErG,QAAA,uBAAuB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACnD,QAAA,oBAAoB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACvC,QAAA,mBAAmB,GAAG,CAAC,GAAG,+BAAuB,EAAE,GAAG,4BAAoB,CAAC,CAAC;AAC5E,QAAA,sBAAsB,GAAG;IAClC,KAAK,EAAG,QAAQ;IAChB,KAAK,EAAG,OAAO;CAClB,CAAC;AAEK,MAAM,eAAe,GAAG,CAAC,IAAc,EAAE,EAAE,CAC9C,IAAI,CAAC,MAAM,CACP,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CACV,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC;IAChB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,EAChF,EAAc,CACjB,CAAC;AAPO,QAAA,eAAe,mBAOtB"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "edacation",
3
3
  "description": "Library and CLI for interacting with Yosys and nextpnr.",
4
4
  "license": "MIT",
5
- "version": "0.5.1",
5
+ "version": "0.6.0",
6
6
  "contributors": [
7
7
  "Danielle Huisman <danielle@huisman.me> (https://github.com/DanielleHuisman)",
8
8
  "Mike Almeloo <git@mikealmel.ooo> (https://github.com/DismissedGuy)"