elk icon indicating copy to clipboard operation
elk copied to clipboard

Unfortunate hyperedge routing

Open le-cds opened this issue 7 years ago • 2 comments

Hyperedges with multiple sources and targets distributed over several layers are not always routed as well as possible. Consider the following example:

bildschirmfoto 2018-09-21 um 10 58 44

The wakeUsec edge has two sources (CtrlMotor and setSpeeds) and two targets (the pre(wakeUsec) register and SimTime). The algorithm decided that it would be a good idea to give the edge two horizontal segments: one each above and below CtrlMotor. That's bad, mkay?

le-cds avatar Sep 21 '18 10:09 le-cds

Wouldn't it make more sense to eliminate the vertical segment to the left of CtrlMotor?

Eliminating either of the horizontal segments would cause segments of the edges to have a both-way flow of direction.

dalu2104 avatar Oct 23 '18 10:10 dalu2104

Eliminating either of the horizontal segments would cause segments of the edges to have a both-way flow of direction.

That wouldn't have to be a problem; it's a hyperedge, after all. It just has to be understandable. One solution we thought about was based on giving a hyperedge only a single horizontal segment, as a sort of "backbone", and branch of from there. Might be a lot clearer, possibly at the expense of longer edges or more edge crossings.

le-cds avatar Dec 10 '18 15:12 le-cds