Description
The newly implemented switch override feature for custom switch blocks currently works by overriding the switch type for specific edges while building the switchblock portion of the RR graph. This leads to the scenario pictured bellow (circled in red):
I understand that outgoing edges of a track should be able to support multiple different edge types (circled in blue) especially when modeling different architectures, but I don't see how allowing multiple different switch types on the receiving track makes much electrical sense, especially if one of the switch types being used happens to be a short. In hardware, if the sink of a connection has a delay-less switch I don't think its possible for another track to connect to that same sink using a different switch type (though I could be forgetting a particular case). Now we might want to keep this even if it doesn't make sense electrically so as to add different delays in the edges for connections between different wire types. As it stands I see three options:
- Keep the current method for switch override and place the responsibility on the user to understand whether they want their design to make sense electrically or they want to experiment with different modeling methods.
- Change the current implementation to override the arch_wire_switch attribute of the sink track. This method would force all edges going to a particular wire type to have the same switch.
- Do (2) but only when a user specifies that the override switch they want to use is a short.
@vaughnbetz, @jgoeders would love to get your opinions on this.