NetlistSchematicAdapter.fromJson constructor
- String netlistJson, {
- HierarchyService? externalHierarchy,
Parse a Yosys-compatible JSON netlist into hierarchy and schematic data.
Implementation
factory NetlistSchematicAdapter.fromJson(
String netlistJson, {
HierarchyService? externalHierarchy,
}) {
final decoded = jsonDecode(netlistJson) as Map<String, dynamic>;
final creator = _readMetadataString(decoded['creator']);
final version = _readMetadataString(decoded['version']);
final modulesJson = decoded['modules'] as Map<String, dynamic>?;
if (modulesJson == null || modulesJson.isEmpty) {
throw const FormatException('Yosys JSON contained no modules');
}
final modules = <String, _YosysModule>{};
for (final entry in modulesJson.entries) {
modules[entry.key] = _YosysModule(entry.key, entry.value);
}
final topName = _topModuleName(modules);
final builder = _SchematicBuilder(
modules: modules,
externalHierarchy: externalHierarchy,
);
final result = builder.build(topName);
return NetlistSchematicAdapter._(
hierarchy: externalHierarchy ?? result.hierarchy,
schematic: result.graph,
embeddedFlcData: FlcData.fromNetlistJson(decoded),
netlistCreator: creator,
netlistVersion: version,
);
}