UNPKG

edacation

Version:

Library and CLI for interacting with Yosys and nextpnr.

219 lines (218 loc) 8.65 kB
import { type ProjectConfiguration } from './configuration.js'; type ProjectTarget = ProjectConfiguration['targets'][number]; export type ProjectEvent = 'inputFiles' | 'outputFiles' | 'configuration'; type EventCallback = (project: Project, events: ProjectEvent[]) => void; 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']); serialize(): ProjectInputFileState; static deserialize(data: ProjectInputFileState | string, ..._args: unknown[]): ProjectInputFile; copy(): 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']); serialize(): ProjectOutputFileState; static deserialize(project: Project, data: ProjectOutputFileState | string, ..._args: unknown[]): ProjectOutputFile; copy(project: Project): 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; private eventCallback?; private batchedEvents; private batchCounter; constructor(name: string, inputFiles?: ProjectInputFileState[] | string[], outputFiles?: ProjectOutputFileState[] | string[], configuration?: ProjectConfiguration, eventCallback?: EventCallback); 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; setTopLevelModule(targetId: string, module: string): void; setTestbenchPath(targetId: string, testbenchPath?: string): void; setInputFileType(filePath: string, type: ProjectInputFile['type']): void; getTarget(id: string): ProjectTarget | null; 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; protected importFromProject(other: Project, doTriggerEvent?: boolean): void; protected emitEvents(...events: ProjectEvent[]): void; protected batchEvents<T>(func: () => T, ...events: ProjectEvent[]): T; protected static emitsEvents<T extends Project>(...events: ProjectEvent[]): (_target: object, _propertyKey: string, descriptor: TypedPropertyDescriptor<(...args: any[]) => unknown>) => TypedPropertyDescriptor<(...args: any[]) => unknown>; static serialize(project: Project): ProjectState; static deserialize(data: ProjectState, ..._args: unknown[]): Project; static loadFromData(rawData: Uint8Array): Project; static storeToData(project: Project): Uint8Array; } export {};