Refactor readback mux implementation. Improves performance (#155) and eliminates illegal streaming operator usage (#165)

This commit is contained in:
Alex Mykyta
2025-12-10 23:17:33 -08:00
parent 4201ce975e
commit 9fc95b8769
24 changed files with 1116 additions and 634 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

View File

@@ -0,0 +1,242 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.0.3 Chrome/140.0.7339.249 Electron/38.7.0 Safari/537.36" version="29.0.3">
<diagram name="Page-1" id="2eHshj4V_V3cOmKikpwH">
<mxGraphModel dx="542" dy="940" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="eVcFmWNxBADlTckHnpvW-1" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="570" as="sourcePoint" />
<mxPoint x="400" y="570" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-2" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;size=10.009999999999991;" vertex="1" parent="1">
<mxGeometry x="369.98" y="590.03" width="80.01" height="19.98" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-3" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="590" as="sourcePoint" />
<mxPoint x="400" y="590" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-4" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="610.02" as="sourcePoint" />
<mxPoint x="400" y="610.02" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-5" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="630" as="sourcePoint" />
<mxPoint x="400" y="630" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-8" value="&amp;lt;reg1&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="560" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-9" value="&amp;lt;reg2&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="580" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-10" value="&amp;lt;reg3&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="600" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-11" value="&amp;lt;reg4&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="620" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-12" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="660" as="sourcePoint" />
<mxPoint x="400" y="660" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-13" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;size=10.009999999999991;" vertex="1" parent="1">
<mxGeometry x="369.98" y="680.03" width="80.01" height="19.98" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-14" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="680" as="sourcePoint" />
<mxPoint x="400" y="680" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-15" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="700.02" as="sourcePoint" />
<mxPoint x="400" y="700.02" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-16" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="720" as="sourcePoint" />
<mxPoint x="400" y="720" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-17" value="&amp;lt;reg5&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="650" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-18" value="&amp;lt;reg6&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="670" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-19" value="&amp;lt;reg7&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="690" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-20" value="&amp;lt;reg8&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="710" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-21" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="750" as="sourcePoint" />
<mxPoint x="400" y="750" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-22" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;size=10.009999999999991;" vertex="1" parent="1">
<mxGeometry x="369.98" y="770.03" width="80.01" height="19.98" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-23" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="770" as="sourcePoint" />
<mxPoint x="400" y="770" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-24" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="790.02" as="sourcePoint" />
<mxPoint x="400" y="790.02" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-25" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="810" as="sourcePoint" />
<mxPoint x="400" y="810" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-26" value="&amp;lt;reg9&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="740" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-27" value="&amp;lt;reg10&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="760" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-28" value="&amp;lt;reg11&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="780" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-29" value="&amp;lt;reg12&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="800" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-30" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="840" as="sourcePoint" />
<mxPoint x="400" y="840" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-31" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;size=10.009999999999991;" vertex="1" parent="1">
<mxGeometry x="369.98" y="860.03" width="80.01" height="19.98" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-32" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="860" as="sourcePoint" />
<mxPoint x="400" y="860" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-33" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="880.02" as="sourcePoint" />
<mxPoint x="400" y="880.02" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-34" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="900" as="sourcePoint" />
<mxPoint x="400" y="900" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-35" value="&amp;lt;reg13&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="830" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-36" value="&amp;lt;reg14&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="850" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-37" value="&amp;lt;reg15&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="870" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-38" value="&amp;lt;reg16&amp;gt;" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="890" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-42" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="eVcFmWNxBADlTckHnpvW-2">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="490" y="700" as="sourcePoint" />
<mxPoint x="520" y="700" as="targetPoint" />
<Array as="points">
<mxPoint x="490" y="600" />
<mxPoint x="490" y="700" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-43" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;size=10.009999999999991;" vertex="1" parent="1">
<mxGeometry x="490" y="720.02" width="80.01" height="19.98" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-44" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="420" y="690" as="sourcePoint" />
<mxPoint x="520" y="720" as="targetPoint" />
<Array as="points">
<mxPoint x="480" y="690" />
<mxPoint x="480" y="720" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-45" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="420" y="780" as="sourcePoint" />
<mxPoint x="520" y="740" as="targetPoint" />
<Array as="points">
<mxPoint x="480" y="780" />
<mxPoint x="480" y="740" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-46" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="420" y="870" as="sourcePoint" />
<mxPoint x="520" y="760" as="targetPoint" />
<Array as="points">
<mxPoint x="490" y="870" />
<mxPoint x="490" y="760" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-47" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="540" y="729.84" as="sourcePoint" />
<mxPoint x="560" y="730" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-48" value="if retime_read_fanin = True" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="369.98" y="920" width="160" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-49" value="addr" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" vertex="1" parent="1">
<mxGeometry x="290" y="510" width="50" height="20" as="geometry" />
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-50" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="eVcFmWNxBADlTckHnpvW-2">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="340" y="519.66" as="sourcePoint" />
<mxPoint x="400" y="519.66" as="targetPoint" />
<Array as="points">
<mxPoint x="410" y="520" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-51" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="eVcFmWNxBADlTckHnpvW-43">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="410" y="520" as="sourcePoint" />
<mxPoint x="530" y="565" as="targetPoint" />
<Array as="points">
<mxPoint x="530" y="520" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="eVcFmWNxBADlTckHnpvW-40" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1">
<mxGeometry x="440" y="500" width="20" height="420" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB