Example #1
0
        public void Replace_NotLibraryGate_ThrowsInvalidOperationException()
        {
            var          portsMap       = new PortsMapping().AddMapping("a", "apricot").AddMapping("b", "banana");
            const string nonLibraryGate = "x_lut4_0xfefa";
            const string newModule      = "x_lut4_0xfefa_new";

            Assert.Throws <InvalidOperationException>(() => _target.Replace(DummyNetlist, nonLibraryGate, newModule, portsMap));
        }
Example #2
0
        private static PortsMapping MakePortMapping(List <string> oldModule, List <string> newModule)
        {
            var pm = new PortsMapping();

            for (int i = 1; i < oldModule.Count; i++)
            {
                pm.AddMapping(oldModule[i], newModule[i]);
            }
            return(pm);
        }
        public void Replace(string netlist, string gateToReplace, string newGate, PortsMapping portsMapping)
        {
            if (_moduleRepository.Exists(netlist, gateToReplace))
            {
                throw new InvalidOperationException("can replace only library gates");
            }

            var instances = _instanceRepository.GetByModuleName(netlist, gateToReplace);

            _instanceMutator.Take(instances)
            .MutateModuleName(newGate)
            .ReplacePorts(portsMapping);

            _instanceRepository.UpdateMany(instances);
        }
Example #4
0
        public void ReplacePorts_MappingForAllPorts_ReplaceAll()
        {
            var portsMap  = new PortsMapping().AddMapping("a", "apple").AddMapping("b", "banana");
            var instances = new List <Instance> {
                new InstanceBuilder("netlist", "host").New("name", "instName")
                .Add("a", "w1")
                .Add("b", "w2").Build()
            };

            _target.Take(instances).ReplacePorts(portsMap);

            Assert.That(instances[0].Net, Has.Count.EqualTo(2));
            Assert.That(instances[0].Net[0].Port, Is.EqualTo("apple"));
            Assert.That(instances[0].Net[0].Wire, Is.EqualTo("w1"));
            Assert.That(instances[0].Net[1].Port, Is.EqualTo("banana"));
            Assert.That(instances[0].Net[1].Wire, Is.EqualTo("w2"));
        }
Example #5
0
        public void Replace_LibraryGateWithMapping_ReplaceLibraryGateAndMapPorts()
        {
            // oai22 inst056453  ( .b2(n37), .b1(i3), .a2(n36), .a1(i1), .zn(o) );
            const string moduleToReplace = "oai22";
            const string newModule       = "oai22new";
            var          portsMap        = new PortsMapping().AddMapping("b2", "banana2").AddMapping("zn", "zinzana");

            _target.Replace(DummyNetlist, moduleToReplace, newModule, portsMap);

            var result = _instanceRepository.GetByModuleName(DummyNetlist, newModule).ToList();

            Assert.That(result, Has.Count.EqualTo(1));
            Assert.That(result[0].Net, Has.Exactly(1).Matches <PortWirePair>(pwp => pwp.Port == "banana2" & pwp.Wire == "n37"));
            Assert.That(result[0].Net, Has.Exactly(1).Matches <PortWirePair>(pwp => pwp.Port == "b1" & pwp.Wire == "i3"));
            Assert.That(result[0].Net, Has.Exactly(1).Matches <PortWirePair>(pwp => pwp.Port == "a2" & pwp.Wire == "n36"));
            Assert.That(result[0].Net, Has.Exactly(1).Matches <PortWirePair>(pwp => pwp.Port == "a1" & pwp.Wire == "i1"));
            Assert.That(result[0].Net, Has.Exactly(1).Matches <PortWirePair>(pwp => pwp.Port == "zinzana" & pwp.Wire == "o"));
        }
Example #6
0
        public void ReplacePorts_NoMapping_NoReplace()
        {
            var portsMap  = new PortsMapping();
            var instances = new List <Instance> {
                new Instance("netlist", "host", "name", "instName")
                {
                    Net = new List <PortWirePair>()
                    {
                        new PortWirePair("a", "w1"), new PortWirePair("b", "w2")
                    }
                }
            };

            _target.Take(instances).ReplacePorts(portsMap);

            Assert.That(instances[0].Net, Has.Count.EqualTo(2));
            Assert.That(instances[0].Net[0].Port, Is.EqualTo("a"));
            Assert.That(instances[0].Net[0].Wire, Is.EqualTo("w1"));
            Assert.That(instances[0].Net[1].Port, Is.EqualTo("b"));
            Assert.That(instances[0].Net[1].Wire, Is.EqualTo("w2"));
        }