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)); }
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); }
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")); }
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")); }
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")); }