edacation
Version:
Library and CLI for interacting with Yosys and nextpnr.
205 lines (204 loc) • 7.7 kB
TypeScript
import { type ProjectConfiguration } from './configuration.js';
type ProjectTarget = ProjectConfiguration['targets'][number];
export interface ProjectInputFileState {
path: string;
type: 'design' | 'testbench';
}
export declare class ProjectInputFile {
private _path;
private _type;
constructor(_path: ProjectInputFileState['path'], _type: ProjectInputFileState['type']);
get path(): ProjectInputFileState['path'];
get type(): ProjectInputFileState['type'];
set type(type: ProjectInputFileState['type']);
static serialize(file: ProjectInputFile): ProjectInputFileState;
static deserialize(data: ProjectInputFileState | string, ..._args: unknown[]): ProjectInputFile;
}
export interface ProjectOutputFileState {
path: string;
targetId: string | null;
stale: boolean;
}
export declare class ProjectOutputFile {
private _project;
private _path;
private _targetId;
private _stale;
constructor(_project: Project, _path: ProjectOutputFileState['path'], _targetId?: ProjectOutputFileState['targetId'], _stale?: ProjectOutputFileState['stale']);
get path(): ProjectOutputFileState['path'];
get targetId(): ProjectOutputFileState['targetId'];
set targetId(id: ProjectOutputFileState['targetId']);
get target(): ProjectTarget | null;
get stale(): ProjectOutputFileState['stale'];
set stale(isStale: ProjectOutputFileState['stale']);
static serialize(file: ProjectOutputFile): ProjectOutputFileState;
static deserialize(project: Project, data: ProjectOutputFileState | string, ..._args: unknown[]): ProjectOutputFile;
}
export interface ProjectState {
name: string;
inputFiles: ProjectInputFileState[] | string[];
outputFiles: ProjectOutputFileState[] | string[];
configuration: ProjectConfiguration;
}
export declare class Project {
private name;
private inputFiles;
private outputFiles;
private configuration;
constructor(name: string, inputFiles?: ProjectInputFileState[] | string[], outputFiles?: ProjectOutputFileState[] | string[], configuration?: ProjectConfiguration);
getName(): string;
getInputFiles(): ProjectInputFile[];
hasInputFile(filePath: string): boolean;
getInputFile(filePath: string): ProjectInputFile | null;
addInputFiles(files: {
path: string;
type?: ProjectInputFileState['type'];
}[]): void;
removeInputFiles(filePaths: string[]): void;
getOutputFiles(): ProjectOutputFile[];
hasOutputFile(filePath: string): boolean;
getOutputFile(filePath: string): ProjectOutputFile | null;
addOutputFiles(files: {
path: string;
targetId: string;
}[]): void;
removeOutputFiles(filePaths: string[]): void;
expireOutputFiles(): void;
getConfiguration(): {
targets: {
id: string;
name: string;
vendor: string;
family: string;
device: string;
package: string;
yosys?: {
options?: {
optimize?: boolean | undefined;
topLevelModule?: string | undefined;
} | undefined;
inputFiles?: {
useGenerated: boolean;
values: string[];
useDefault: boolean;
} | undefined;
outputFiles?: {
useGenerated: boolean;
values: string[];
useDefault: boolean;
} | undefined;
commands?: {
useGenerated: boolean;
values: string[];
useDefault: boolean;
} | undefined;
} | undefined;
nextpnr?: {
options?: {
placedSvg?: boolean | undefined;
routedSvg?: boolean | undefined;
routedJson?: boolean | undefined;
} | undefined;
inputFiles?: {
useGenerated: boolean;
values: string[];
useDefault: boolean;
} | undefined;
outputFiles?: {
useGenerated: boolean;
values: string[];
useDefault: boolean;
} | undefined;
arguments?: {
useGenerated: boolean;
values: string[];
useDefault: boolean;
} | undefined;
} | undefined;
iverilog?: {
options?: {
testbenchFile?: string | undefined;
} | undefined;
inputFiles?: {
useGenerated: boolean;
values: string[];
useDefault: boolean;
} | undefined;
outputFiles?: {
useGenerated: boolean;
values: string[];
useDefault: boolean;
} | undefined;
arguments?: {
useGenerated: boolean;
values: string[];
useDefault: boolean;
} | undefined;
} | undefined;
directory?: string | undefined;
}[];
defaults?: {
yosys?: {
options?: {
optimize?: boolean | undefined;
topLevelModule?: string | undefined;
} | undefined;
inputFiles?: {
useGenerated: boolean;
values: string[];
} | undefined;
outputFiles?: {
useGenerated: boolean;
values: string[];
} | undefined;
commands?: {
useGenerated: boolean;
values: string[];
} | undefined;
} | undefined;
nextpnr?: {
options?: {
placedSvg?: boolean | undefined;
routedSvg?: boolean | undefined;
routedJson?: boolean | undefined;
} | undefined;
inputFiles?: {
useGenerated: boolean;
values: string[];
} | undefined;
outputFiles?: {
useGenerated: boolean;
values: string[];
} | undefined;
arguments?: {
useGenerated: boolean;
values: string[];
} | undefined;
} | undefined;
iverilog?: {
options?: {
testbenchFile?: string | undefined;
} | undefined;
inputFiles?: {
useGenerated: boolean;
values: string[];
} | undefined;
outputFiles?: {
useGenerated: boolean;
values: string[];
} | undefined;
arguments?: {
useGenerated: boolean;
values: string[];
} | undefined;
} | undefined;
} | undefined;
};
updateConfiguration(configuration: Partial<ProjectConfiguration>): void;
getTarget(id: string): ProjectTarget | null;
static serialize(project: Project): ProjectState;
static deserialize(data: ProjectState, ..._args: unknown[]): Project;
static loadFromData(rawData: Uint8Array): Project;
static storeToData(project: Project): Uint8Array;
}
export {};