@@ -174,8 +174,8 @@ void add_segment_with_default_values(t_segment_inf& seg, std::string name) {
174
174
seg.name = name;
175
175
seg.length = 1 ;
176
176
seg.frequency = 1 ;
177
- seg.Rmetal = 1e-12 ;
178
- seg.Cmetal = 1e-12 ;
177
+ seg.Rmetal = 1e2 ;
178
+ seg.Cmetal = 1e-15 ;
179
179
seg.parallel_axis = BOTH_AXIS;
180
180
181
181
// TODO: Only bi-directional segments are created, but it the interchange format
@@ -2250,12 +2250,29 @@ struct ArchReader {
2250
2250
void process_segments () {
2251
2251
// Segment names will be taken from wires connected to pips
2252
2252
// They are good representation for nodes
2253
+
2254
+ auto wires = ar_.getWires ();
2255
+ auto wire_types = ar_.getWireTypes ();
2256
+
2257
+ std::unordered_map<size_t , Device::WireCategory> wire_map;
2258
+ for (auto wire : wires) {
2259
+ auto type = wire_types[wire.getType ()];
2260
+ wire_map.emplace (wire.getWire (), type.getCategory ());
2261
+ }
2262
+
2253
2263
std::set<uint32_t > wire_names;
2254
2264
for (auto tile_type : ar_.getTileTypeList ()) {
2255
- auto wires = tile_type.getWires ();
2265
+ auto tile_wires = tile_type.getWires ();
2266
+
2256
2267
for (auto pip : tile_type.getPips ()) {
2257
- wire_names.insert (wires[pip.getWire0 ()]);
2258
- wire_names.insert (wires[pip.getWire1 ()]);
2268
+ auto wire0 = tile_wires[pip.getWire0 ()];
2269
+ auto wire1 = tile_wires[pip.getWire1 ()];
2270
+
2271
+ if (wire_map[wire0] == Device::WireCategory::GENERAL)
2272
+ wire_names.insert (wire0);
2273
+
2274
+ if (wire_map[wire1] == Device::WireCategory::GENERAL)
2275
+ wire_names.insert (wire1);
2259
2276
}
2260
2277
}
2261
2278
0 commit comments