Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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");
 }