public static KovchegScheme SynthesizeScheme(QuartusScheme quartusScheme) { PreProcess(quartusScheme); var context = new SynthesisContext(); var kovchegScheme = new KovchegScheme(new Module(quartusScheme.Module.Identifier)); kovchegScheme.Module.Nets.Add(new Net("gnd", NetType.Input)); kovchegScheme.Module.Nets.Add(new Net("vcc", NetType.Input)); foreach (var modulePort in quartusScheme.Module.Ports) { kovchegScheme.Module.Nets.Add(new Net(modulePort.Identifier, modulePort.NetType)); } foreach (var instance in quartusScheme.Module.Instances) { foreach (var converter in SynthesisRules.SynthesisRulesList) { var conversionResult = converter(instance, context); if (conversionResult == null) { continue; } kovchegScheme.Module.Instances.AddRange(conversionResult); break; } } return(kovchegScheme); }
private static void PreProcess(QuartusScheme quartusScheme) { quartusScheme.Module.Nets.RemoveAll(n => n.NetType != NetType.Input && n.NetType != NetType.Output && n.NetType != NetType.Wire || n.Identifier == "gnd" || n.Identifier == "vcc"); }