Skip to content

Commit b3ab097

Browse files
authored
Merge pull request #31 from gatecat/wire-general-routing
Add Wire types and categories
2 parents 5208d79 + 04bc92a commit b3ab097

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

interchange/DeviceResources.capnp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,14 @@ struct WireRef {
5858
annotation wireRef(*) :WireRef;
5959
using WireIdx = UInt32;
6060

61+
struct WireTypeRef {
62+
type @0 :Ref.ReferenceType = parent;
63+
field @1 :Text = "wireTypes";
64+
depth @2 :Int32 = 1;
65+
}
66+
annotation wireTypeRef(*) :WireTypeRef;
67+
using WireTypeIdx = UInt32;
68+
6169
using WireIDInTileType = UInt32; # ID in Tile Type
6270
using SitePinIdx = UInt32;
6371

@@ -89,6 +97,7 @@ struct Device {
8997
constraints @13 : Constraints;
9098
lutDefinitions @14 : LutDefinitions;
9199
parameterDefs @15 : ParameterDefinitions;
100+
wireTypes @16 : List(WireType);
92101

93102
#######################################
94103
# Placement definition objects
@@ -203,9 +212,29 @@ struct Device {
203212
######################################
204213
# Inter-site routing resources
205214
######################################
215+
206216
struct Wire {
207217
tile @0 : StringIdx $stringRef();
208218
wire @1 : StringIdx $stringRef();
219+
type @2 : WireTypeIdx $wireTypeRef();
220+
}
221+
222+
enum WireCategory {
223+
# general interconnect, usually with many uphill and downhill pips and spanning multiple tiles
224+
general @0;
225+
# pin/local wires, carry chains, dedicated paths, everything else
226+
special @1;
227+
# the global clock network
228+
global @2;
229+
}
230+
231+
# This is used to distinguish between different types of wires, in order to provide extra hints
232+
# during routing, such as the category of wires. It is also intended to be able to describe
233+
# complex routing requirements, such as global routing which requires a series of different types
234+
# of wires to be used in succession
235+
struct WireType {
236+
name @0 : StringIdx $stringRef();
237+
category @1 : WireCategory;
209238
}
210239

211240
struct Node {

0 commit comments

Comments
 (0)