edacation 0.1.4 → 0.1.5
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.
- package/dist/cli/index.js +7 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/project/nextpnr.d.ts +7 -1
- package/dist/project/nextpnr.js +31 -21
- package/dist/project/nextpnr.js.map +1 -1
- package/dist/project/yosys.d.ts +7 -1
- package/dist/project/yosys.js +23 -13
- package/dist/project/yosys.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import path from 'path';
|
|
|
3
3
|
import { readFile, writeFile, unlink, mkdir } from 'fs/promises';
|
|
4
4
|
import yargs from 'yargs/yargs';
|
|
5
5
|
import { hideBin } from 'yargs/helpers';
|
|
6
|
-
import { Project, VENDORS,
|
|
6
|
+
import { Project, VENDORS, getNextpnrWorkerOptions, getYosysWorkerOptions } from '../project/index.js';
|
|
7
7
|
import { executeTool } from './tool.js';
|
|
8
8
|
import { exists } from './util.js';
|
|
9
9
|
console.log('EDAcation CLI');
|
|
@@ -114,8 +114,9 @@ if (shouldExecute) {
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
if (command === 'yosys') {
|
|
117
|
-
const workerOptions =
|
|
118
|
-
console.log(workerOptions);
|
|
117
|
+
const workerOptions = getYosysWorkerOptions(project, target.id);
|
|
118
|
+
console.log([workerOptions.tool, ''].concat(workerOptions.commands).join('\n'));
|
|
119
|
+
console.log();
|
|
119
120
|
if (shouldExecute) {
|
|
120
121
|
const designFilePath = path.join(cwd, 'design.ys');
|
|
121
122
|
await writeFile(designFilePath, workerOptions.commands.concat(['']).join('\n'), { encoding: 'utf-8' });
|
|
@@ -124,8 +125,9 @@ if (command === 'yosys') {
|
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
127
|
else if (command === 'nextpnr') {
|
|
127
|
-
const workerOptions =
|
|
128
|
-
console.log(workerOptions);
|
|
128
|
+
const workerOptions = getNextpnrWorkerOptions(project, target.id);
|
|
129
|
+
console.log([workerOptions.tool].concat(workerOptions.arguments).join(' '));
|
|
130
|
+
console.log();
|
|
129
131
|
if (shouldExecute) {
|
|
130
132
|
await executeTool(workerOptions.tool, workerOptions.arguments, cwd);
|
|
131
133
|
}
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAC,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAC,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAC,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAC,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAErG,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AACtC,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AAEjC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC7B,OAAO,CAAC,GAAG,EAAE,CAAC;AAEd,MAAM,gBAAgB,GAAG,CAAC,KAAW,EAAE,EAAE;IACrC,OAAO,KAAK;SACP,UAAU,CAAC,SAAS,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iDAAiD;KACjE,CAAC;SACD,UAAU,CAAC,QAAQ,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,YAAY;KAC5B,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACf,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,GAAG;KACb,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,kBAAkB;AAClB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1C,UAAU,CAAC,WAAW,CAAC;KACvB,OAAO,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,CAAC,KAAK,EAAE,EAAE;IAC3D,OAAO,KAAK;SACP,UAAU,CAAC,SAAS,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iDAAiD;KACjE,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,yCAAyC;KACzD,CAAC,CAAC;AACX,CAAC,CAAC;KACD,OAAO,CAAC,0BAA0B,EAAE,uBAAuB,EAAE,gBAAgB,CAAC;KAC9E,OAAO,CAAC,4BAA4B,EAAE,8BAA8B,EAAE,gBAAgB,CAAC;KACvF,aAAa,EAAE;KACf,iBAAiB,EAAE;KACnB,MAAM,EAAE;KACR,IAAI,EAAE;KACN,KAAK,EAAE,CAAC;AAEb,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1B,mBAAmB;AACnB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,OAAiB,CAAC;AACzC,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AAElD,IAAI,OAAO,KAAK,MAAM,EAAE;IACpB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;QACtC,WAAW,GAAG,GAAG,WAAW,aAAa,CAAC;QAC1C,WAAW,GAAG,GAAG,WAAW,aAAa,CAAC;KAC7C;IAED,IAAI,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE;QAC3B,OAAO,CAAC,KAAK,CAAC,YAAY,WAAW,wBAAwB,OAAO,IAAI,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;IAED,IAAI,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE;QACP,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;KAChE;IAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAE3D,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,SAAS,WAAW,IAAI,CAAC,CAAC;IAE9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACnB;AAED,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE;IAC9B,IAAI,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;QACrC,OAAO,CAAC,KAAK,CAAC,YAAY,WAAW,4BAA4B,OAAO,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;SAAM;QACH,WAAW,GAAG,GAAG,WAAW,aAAa,CAAC;QAE1C,IAAI,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,YAAY,WAAW,SAAS,WAAW,uCAAuC,OAAO,IAAI,CAAC,CAAC;YAC7G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACnB;KACJ;CACJ;AAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAEtC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAkB,CAAC;AAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAgB,CAAC;AAEvC,eAAe;AACf,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAChE,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;AAEjD,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAEtD,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAExC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,KAAK,YAAY,CAAC,CAAC;AACnH,IAAI,CAAC,MAAM,EAAE;IACT,MAAM,WAAW,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAChI,OAAO,CAAC,KAAK,CAAC,WAAW,QAAQ,4CAA4C,WAAW,EAAE,CAAC,CAAC;IAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACnB;AAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;AAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;AAEd,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/E,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACtG,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC3E,OAAO,CAAC,GAAG,EAAE,CAAC;AAEd,uCAAuC;AACvC,IAAI,aAAa,EAAE;IACf,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC;IAChE,IAAI,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE;QAChC,MAAM,KAAK,CAAC,eAAe,EAAE;YACzB,SAAS,EAAE,IAAI;SAClB,CAAC,CAAC;KACN;CACJ;AAED,IAAI,OAAO,KAAK,OAAO,EAAE;IACrB,MAAM,aAAa,GAAG,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,EAAE,CAAC;IAGd,IAAI,aAAa,EAAE;QACf,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACnD,MAAM,SAAS,CAAC,cAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAC,CAAC,CAAC;QAErG,MAAM,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;QAE1D,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;KAChC;CACJ;KAAM,IAAI,OAAO,KAAK,SAAS,EAAE;IAC9B,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAElE,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,aAAa,EAAE;QACf,MAAM,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;KACvE;CACJ;KAAM;IACH,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,IAAI,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CACnB"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { Project } from './project.js';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const generateNextpnrWorkerOptions: (project: Project, targetId: string) => {
|
|
3
|
+
inputFiles: string[];
|
|
4
|
+
outputFiles: string[];
|
|
5
|
+
tool: string;
|
|
6
|
+
arguments: string[];
|
|
7
|
+
};
|
|
8
|
+
export declare const getNextpnrWorkerOptions: (project: Project, targetId: string) => {
|
|
3
9
|
inputFiles: any[];
|
|
4
10
|
outputFiles: any[];
|
|
5
11
|
tool: string;
|
package/dist/project/nextpnr.js
CHANGED
|
@@ -5,33 +5,34 @@ const DEFAULT_OPTIONS = {
|
|
|
5
5
|
routedSvg: true,
|
|
6
6
|
routedJson: true
|
|
7
7
|
};
|
|
8
|
-
export const
|
|
8
|
+
export const generateNextpnrWorkerOptions = (project, targetId) => {
|
|
9
9
|
const target = getTarget(project.getConfiguration(), targetId);
|
|
10
10
|
const options = getOptions(project.getConfiguration(), targetId, 'nextpnr', DEFAULT_OPTIONS);
|
|
11
11
|
const vendor = VENDORS[target.vendor];
|
|
12
12
|
const family = vendor.families[target.family];
|
|
13
13
|
const device = family.devices[target.device];
|
|
14
|
-
const
|
|
14
|
+
const inputFiles = [
|
|
15
15
|
getTargetFile(target, `${family.architecture}.json`)
|
|
16
16
|
];
|
|
17
|
-
const
|
|
18
|
-
const
|
|
17
|
+
const outputFiles = [];
|
|
18
|
+
const tool = `nextpnr-${family.architecture}`;
|
|
19
|
+
const args = [];
|
|
19
20
|
switch (family.architecture) {
|
|
20
21
|
case 'ecp5': {
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
args.push(`--${device.device}`);
|
|
23
|
+
args.push('--package', target.package.toUpperCase());
|
|
23
24
|
break;
|
|
24
25
|
}
|
|
25
26
|
case 'generic': {
|
|
26
27
|
break;
|
|
27
28
|
}
|
|
28
29
|
case 'gowin': {
|
|
29
|
-
|
|
30
|
+
args.push('--device', `${device.device.replace('-', '-UV')}${target.package}C5/I4`);
|
|
30
31
|
break;
|
|
31
32
|
}
|
|
32
33
|
case 'ice40': {
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
args.push(`--${device.device}`);
|
|
35
|
+
args.push('--package', target.package);
|
|
35
36
|
break;
|
|
36
37
|
}
|
|
37
38
|
case 'nexus': {
|
|
@@ -46,33 +47,42 @@ export const generateNextpnrWorker = (project, targetId) => {
|
|
|
46
47
|
if (target.package in packageLookup) {
|
|
47
48
|
throw new Error(`Package "${target.package}" is currenty not supported.`);
|
|
48
49
|
}
|
|
49
|
-
|
|
50
|
+
args.push('--device', `${device.device}-7${packageLookup[target.package]}C`);
|
|
50
51
|
break;
|
|
51
52
|
}
|
|
52
53
|
default: {
|
|
53
54
|
throw new Error(`Architecture "${family.architecture}" is currently not supported.`);
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
|
-
|
|
57
|
+
args.push('--json', inputFiles[0]);
|
|
57
58
|
if (options.placedSvg) {
|
|
58
59
|
const file = getTargetFile(target, 'placed.svg');
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
outputFiles.push(file);
|
|
61
|
+
args.push('--placed-svg', file);
|
|
61
62
|
}
|
|
62
63
|
if (options.routedSvg) {
|
|
63
64
|
const file = getTargetFile(target, 'routed.svg');
|
|
64
|
-
|
|
65
|
-
|
|
65
|
+
outputFiles.push(file);
|
|
66
|
+
args.push('--routed-svg', file);
|
|
66
67
|
}
|
|
67
68
|
if (options.routedJson) {
|
|
68
69
|
const file = getTargetFile(target, 'routed.nextpnr.json');
|
|
69
|
-
|
|
70
|
-
|
|
70
|
+
outputFiles.push(file);
|
|
71
|
+
args.push('--write', file);
|
|
71
72
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
return {
|
|
74
|
+
inputFiles,
|
|
75
|
+
outputFiles,
|
|
76
|
+
tool,
|
|
77
|
+
arguments: args
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
export const getNextpnrWorkerOptions = (project, targetId) => {
|
|
81
|
+
const generated = generateNextpnrWorkerOptions(project, targetId);
|
|
82
|
+
const inputFiles = getCombined(project.getConfiguration(), targetId, 'nextpnr', 'inputFiles', generated.inputFiles);
|
|
83
|
+
const outputFiles = getCombined(project.getConfiguration(), targetId, 'nextpnr', 'outputFiles', generated.outputFiles);
|
|
84
|
+
const tool = generated.tool;
|
|
85
|
+
const args = getCombined(project.getConfiguration(), targetId, 'nextpnr', 'arguments', generated.arguments);
|
|
76
86
|
return {
|
|
77
87
|
inputFiles,
|
|
78
88
|
outputFiles,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextpnr.js","sourceRoot":"","sources":["../../src/project/nextpnr.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAS,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAE9E,MAAM,eAAe,GAAmB;IACpC,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"nextpnr.js","sourceRoot":"","sources":["../../src/project/nextpnr.ts"],"names":[],"mappings":"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"}
|
package/dist/project/yosys.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { Project } from './project.js';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const generateYosysWorkerOptions: (project: Project, targetId: string) => {
|
|
3
|
+
inputFiles: string[];
|
|
4
|
+
outputFiles: string[];
|
|
5
|
+
tool: string;
|
|
6
|
+
commands: string[];
|
|
7
|
+
};
|
|
8
|
+
export declare const getYosysWorkerOptions: (project: Project, targetId: string) => {
|
|
3
9
|
inputFiles: any[];
|
|
4
10
|
outputFiles: any[];
|
|
5
11
|
tool: string;
|
package/dist/project/yosys.js
CHANGED
|
@@ -5,33 +5,43 @@ import { getCombined, getOptions, getTarget, getTargetFile } from './target.js';
|
|
|
5
5
|
const DEFAULT_OPTIONS = {
|
|
6
6
|
optimize: true
|
|
7
7
|
};
|
|
8
|
-
export const
|
|
8
|
+
export const generateYosysWorkerOptions = (project, targetId) => {
|
|
9
9
|
const target = getTarget(project.getConfiguration(), targetId);
|
|
10
10
|
const options = getOptions(project.getConfiguration(), targetId, 'yosys', DEFAULT_OPTIONS);
|
|
11
11
|
const vendor = VENDORS[target.vendor];
|
|
12
12
|
const family = vendor.families[target.family];
|
|
13
|
-
const
|
|
14
|
-
const
|
|
13
|
+
const inputFiles = project.getInputFiles().filter((inputFile) => FILE_EXTENSIONS_HDL.includes(path.extname(inputFile).substring(1)));
|
|
14
|
+
const outputFiles = [
|
|
15
15
|
getTargetFile(target, `${family.architecture}.json`)
|
|
16
16
|
];
|
|
17
|
-
const
|
|
18
|
-
|
|
17
|
+
const tool = 'yosys';
|
|
18
|
+
const commands = [
|
|
19
|
+
...inputFiles.map((file) => `read_verilog ${file}`),
|
|
19
20
|
'proc;'
|
|
20
21
|
];
|
|
21
22
|
if (options.optimize) {
|
|
22
|
-
|
|
23
|
+
commands.push('opt;');
|
|
23
24
|
}
|
|
24
25
|
if (family.architecture === 'generic') {
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
commands.push('synth;');
|
|
27
|
+
commands.push(`write_json ${outputFiles[0]};`);
|
|
27
28
|
}
|
|
28
29
|
else {
|
|
29
|
-
|
|
30
|
+
commands.push(`synth_${family.architecture} -json ${outputFiles[0]};`);
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
return {
|
|
33
|
+
inputFiles: inputFiles,
|
|
34
|
+
outputFiles: outputFiles,
|
|
35
|
+
tool,
|
|
36
|
+
commands: commands
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
export const getYosysWorkerOptions = (project, targetId) => {
|
|
40
|
+
const generated = generateYosysWorkerOptions(project, targetId);
|
|
41
|
+
const inputFiles = getCombined(project.getConfiguration(), targetId, 'yosys', 'inputFiles', generated.inputFiles);
|
|
42
|
+
const outputFiles = getCombined(project.getConfiguration(), targetId, 'yosys', 'outputFiles', generated.outputFiles);
|
|
43
|
+
const tool = generated.tool;
|
|
44
|
+
const commands = getCombined(project.getConfiguration(), targetId, 'yosys', 'commands', generated.commands);
|
|
35
45
|
return {
|
|
36
46
|
inputFiles,
|
|
37
47
|
outputFiles,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yosys.js","sourceRoot":"","sources":["../../src/project/yosys.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAC,uBAAuB,EAAE,mBAAmB,EAAC,MAAM,YAAY,CAAC;AAExE,OAAO,EAAC,OAAO,EAAS,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAI9E,MAAM,eAAe,GAAiB;IAClC,QAAQ,EAAE,IAAI;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"yosys.js","sourceRoot":"","sources":["../../src/project/yosys.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED