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