private IEnumerable<TAVerb> Do(ISignalSource<StdLogicVector> a, ISignalSource<StdLogicVector> b, In<StdLogicVector> rs, ISignalSink<StdLogicVector> r) { if (_host.PipelineDepth == 0) { yield return Verb(ETVMode.Locked, _host.A.Dual.Drive(a) .Par(_host.B.Dual.Drive(b)) .Par(r.Comb.Connect(rs.AsSignalSource()))); } else { yield return Verb(ETVMode.Locked, _host.A.Dual.Drive(a) .Par(_host.B.Dual.Drive(b))); for (int i = 1; i < _host.PipelineDepth; i++) { yield return Verb(ETVMode.Shared); } yield return Verb(ETVMode.Shared, r.Comb.Connect(rs.AsSignalSource())); } }