public static Slice GetSliceFromRawSlice(Tile containingTile, RawSlice rawSlice)
        {
            Slice s = GetSlice(containingTile, rawSlice.Name, rawSlice.Type);

            s.m_X   = rawSlice.X;
            s.m_Y   = rawSlice.Y;
            s.Usage = FPGATypes.SliceUsage.Free;
            s.InPortOutPortMappingHashCode = rawSlice.InPortOutPortMappingHasCode;
            s.m_attributes.Clear();
            // do not call init here to save memory
            // if a slices attribute is get or set, the InitAttributes will be called
            //s.InitAttributes();

            s.ExtractXYCoordindates();
            // vivado onyl
            if (rawSlice.Bels != null)
            {
                foreach (string b in rawSlice.Bels)
                {
                    s.AddBel(b);
                }
            }

            return(s);
        }
Exemple #2
0
        public RawTile(Tile tile)
        {
            TileKeyX                 = tile.TileKey.X;
            TileKeyY                 = tile.TileKey.Y;
            TileLocationString       = tile.Location;
            SwitchMatrixHashCode     = tile.SwitchMatrixHashCode;
            WireListHashCode         = tile.WireListHashCode;
            IncomingWireListHashCode = tile.IncomingWireListHashCode;
            ClockRegion              = tile.ClockRegion;
            foreach (Slice slice in tile.Slices)
            {
                RawSlice rawSlice = new RawSlice(slice);
                RawSlices.Add(rawSlice);
            }

            foreach (string excludedPort in tile.GetAllBlockedPorts(Tile.BlockReason.ExcludedFromBlocking))
            {
                PortsToExcludeFromBlocking.Add(excludedPort);
            }
            foreach (string port in tile.GetAllBlockedPorts(Tile.BlockReason.Stopover))
            {
                PortsOnArcsWithStopovers.Add(port);
            }

            // Time Data
            if (tile.TimeData != null)
            {
                foreach (var data in tile.TimeData)
                {
                    TimingData_Pairs_1.Add(data.Key[0]);
                    TimingData_Pairs_2.Add(data.Key[1]);
                    int index = -1;
                    index = Tile.GetIndexForTimeAttribute(Tile.TimeAttributes.Attribute1);
                    if (index > -1)
                    {
                        TimingData_Times_1.Add(data.Value[index]);
                    }
                    index = Tile.GetIndexForTimeAttribute(Tile.TimeAttributes.Attribute2);
                    if (index > -1)
                    {
                        TimingData_Times_2.Add(data.Value[index]);
                    }
                    index = Tile.GetIndexForTimeAttribute(Tile.TimeAttributes.Attribute3);
                    if (index > -1)
                    {
                        TimingData_Times_3.Add(data.Value[index]);
                    }
                    index = Tile.GetIndexForTimeAttribute(Tile.TimeAttributes.Attribute4);
                    if (index > -1)
                    {
                        TimingData_Times_4.Add(data.Value[index]);
                    }
                }
            }

            if (tile.WiresTrajectoriesData != null)
            {
                foreach (var data in tile.WiresTrajectoriesData)
                {
                    WiresTrajectoriesData_keys.Add(data.Key);
                    string vals = "";
                    foreach (uint u in data.Value)
                    {
                        vals += u.ToString() + " ";
                    }
                    vals = vals.TrimEnd(' ');
                    WiresTrajectoriesData_vals.Add(vals);
                }
            }
        }