From 7c8b110e575cfefdd30ac203e09c1beebda919ba Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 30 Dec 2025 18:45:57 +0000 Subject: [PATCH 1/2] Initial plan From 4733650df2371ef1f21f78e9dd67d895f501efae Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 30 Dec 2025 19:07:33 +0000 Subject: [PATCH 2/2] fix: render recursion svg feedback loop Co-authored-by: sletz <1430487+sletz@users.noreply.github.com> --- compiler/draw/schema/recSchema.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/compiler/draw/schema/recSchema.cpp b/compiler/draw/schema/recSchema.cpp index 3166d33fd9..bce972f13d 100644 --- a/compiler/draw/schema/recSchema.cpp +++ b/compiler/draw/schema/recSchema.cpp @@ -166,7 +166,8 @@ void recSchema::collectTraits(collector& c) // draw the feedback connections to each fSchema2 input for (unsigned int i = 0; i < fSchema2->inputs(); i++) { - collectFeedback(c, fSchema1->outputPoint(i), fSchema2->inputPoint(i), i * dWire, + double offset = (i + 1) * dWire; + collectFeedback(c, fSchema1->outputPoint(i), fSchema2->inputPoint(i), -offset, outputPoint(i)); } @@ -187,7 +188,8 @@ void recSchema::collectTraits(collector& c) // draw the feedfront connections from each fSchema2 output for (unsigned int i = 0; i < fSchema2->outputs(); i++) { - collectFeedfront(c, fSchema2->outputPoint(i), fSchema1->inputPoint(i), i * dWire); + double offset = (i + 1) * dWire; + collectFeedfront(c, fSchema2->outputPoint(i), fSchema1->inputPoint(i), offset); } } @@ -204,6 +206,9 @@ void recSchema::collectFeedback(collector& c, const point& src, const point& dst point up(ox, src.y - ct); point br(ox + ct / 2.0, src.y); + c.addOutput(src); + c.addInput(dst); + c.addOutput(point(ox, dst.y)); c.addOutput(up); c.addOutput(br); c.addInput(br); @@ -222,6 +227,10 @@ void recSchema::collectFeedfront(collector& c, const point& src, const point& ds { double ox = src.x + ((orientation() == kLeftRight) ? -dx : dx); + c.addOutput(src); + c.addInput(dst); + c.addOutput(point(ox, src.y)); + c.addInput(point(ox, dst.y)); c.addTrait(trait(point(src.x, src.y), point(ox, src.y))); c.addTrait(trait(point(ox, src.y), point(ox, dst.y))); c.addTrait(trait(point(ox, dst.y), point(dst.x, dst.y)));