예제 #1
0
        private void CreateAndBindPath(Tn source, long depTime, Tn dest, long arrTime)
        {
            long delay = arrTime - depTime;
            Tp   pipe  = _a.AddPipe(source, dest, delay);

            _a.BindPipe(pipe, depTime, source, depTime);
        }
예제 #2
0
            public void Bind(long depTime)
            {
                long curTime = depTime;
                Tn   emitter = _a.Source[Segments[0].Inst];

                for (int i = 0; i < Segments.Length; i++)
                {
                    Tp   pipe = Segments[i].Realize(_a);
                    Tn   tmpEmitter;
                    long tmpDepTime;
                    if (_a.IsPipeBound(pipe, curTime, out tmpEmitter, out tmpDepTime))
                    {
                        Debug.Assert(object.Equals(emitter, tmpEmitter));
                        Debug.Assert(depTime == tmpDepTime);
                    }
                    else
                    {
                        _a.BindPipe(pipe, curTime, emitter, depTime);
                    }
                    curTime += _a.Delay[pipe];
                }
            }