This commit is contained in:
Paul Pan 2021-08-23 21:46:36 +08:00
parent 74b5af1852
commit 44d64ca579
57 changed files with 0 additions and 3115 deletions

View File

@ -1,11 +0,0 @@
digraph ICache{
splines=ortho
compound=true
node [shape=Mrecord]
edge [arrowhead=normal]
IDLE->LOOKUP[xlabel="req" weight=5 color=green]
LOOKUP->REPLACE[xlabel="~hit" color=blue]
LOOKUP->IDLE[xlabel="hit" color=red]
REPLACE->IDLE[xlabel="refilled" color=orange]
}

View File

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (0)
-->
<!-- Title: ICache Pages: 1 -->
<svg width="137pt" height="191pt"
viewBox="0.00 0.00 136.50 191.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 187)">
<title>ICache</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-187 132.5,-187 132.5,4 -4,4"/>
<!-- IDLE -->
<g id="node1" class="node">
<title>IDLE</title>
<path fill="none" stroke="black" d="M20.5,-146.5C20.5,-146.5 50.5,-146.5 50.5,-146.5 56.5,-146.5 62.5,-152.5 62.5,-158.5 62.5,-158.5 62.5,-170.5 62.5,-170.5 62.5,-176.5 56.5,-182.5 50.5,-182.5 50.5,-182.5 20.5,-182.5 20.5,-182.5 14.5,-182.5 8.5,-176.5 8.5,-170.5 8.5,-170.5 8.5,-158.5 8.5,-158.5 8.5,-152.5 14.5,-146.5 20.5,-146.5"/>
<text text-anchor="middle" x="35.5" y="-160.8" font-family="Times,serif" font-size="14.00">IDLE</text>
</g>
<!-- LOOKUP -->
<g id="node2" class="node">
<title>LOOKUP</title>
<path fill="none" stroke="black" d="M12,-73.5C12,-73.5 59,-73.5 59,-73.5 65,-73.5 71,-79.5 71,-85.5 71,-85.5 71,-97.5 71,-97.5 71,-103.5 65,-109.5 59,-109.5 59,-109.5 12,-109.5 12,-109.5 6,-109.5 0,-103.5 0,-97.5 0,-97.5 0,-85.5 0,-85.5 0,-79.5 6,-73.5 12,-73.5"/>
<text text-anchor="middle" x="35.5" y="-87.8" font-family="Times,serif" font-size="14.00">LOOKUP</text>
</g>
<!-- IDLE&#45;&gt;LOOKUP -->
<g id="edge1" class="edge">
<title>IDLE&#45;&gt;LOOKUP</title>
<path fill="none" stroke="green" d="M26.5,-146.46C26.5,-146.46 26.5,-119.59 26.5,-119.59"/>
<polygon fill="green" stroke="green" points="30,-119.59 26.5,-109.59 23,-119.59 30,-119.59"/>
<text text-anchor="middle" x="17.5" y="-121.82" font-family="Times,serif" font-size="14.00">req</text>
</g>
<!-- LOOKUP&#45;&gt;IDLE -->
<g id="edge3" class="edge">
<title>LOOKUP&#45;&gt;IDLE</title>
<path fill="none" stroke="red" d="M44.5,-109.54C44.5,-109.54 44.5,-136.41 44.5,-136.41"/>
<polygon fill="red" stroke="red" points="41,-136.41 44.5,-146.41 48,-136.41 41,-136.41"/>
<text text-anchor="middle" x="37" y="-126.78" font-family="Times,serif" font-size="14.00">hit</text>
</g>
<!-- REPLACE -->
<g id="node3" class="node">
<title>REPLACE</title>
<path fill="none" stroke="black" d="M41,-0.5C41,-0.5 94,-0.5 94,-0.5 100,-0.5 106,-6.5 106,-12.5 106,-12.5 106,-24.5 106,-24.5 106,-30.5 100,-36.5 94,-36.5 94,-36.5 41,-36.5 41,-36.5 35,-36.5 29,-30.5 29,-24.5 29,-24.5 29,-12.5 29,-12.5 29,-6.5 35,-0.5 41,-0.5"/>
<text text-anchor="middle" x="67.5" y="-14.8" font-family="Times,serif" font-size="14.00">REPLACE</text>
</g>
<!-- LOOKUP&#45;&gt;REPLACE -->
<g id="edge2" class="edge">
<title>LOOKUP&#45;&gt;REPLACE</title>
<path fill="none" stroke="blue" d="M50,-73.46C50,-73.46 50,-46.59 50,-46.59"/>
<polygon fill="blue" stroke="blue" points="53.5,-46.59 50,-36.59 46.5,-46.59 53.5,-46.59"/>
<text text-anchor="middle" x="39" y="-48.82" font-family="Times,serif" font-size="14.00">~hit</text>
</g>
<!-- REPLACE&#45;&gt;IDLE -->
<g id="edge4" class="edge">
<title>REPLACE&#45;&gt;IDLE</title>
<path fill="none" stroke="orange" d="M88.5,-36.63C88.5,-75.64 88.5,-164 88.5,-164 88.5,-164 72.62,-164 72.62,-164"/>
<polygon fill="orange" stroke="orange" points="72.62,-160.5 62.62,-164 72.62,-167.5 72.62,-160.5"/>
<text text-anchor="middle" x="108.5" y="-112.06" font-family="Times,serif" font-size="14.00">refilled</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -1,23 +0,0 @@
digraph drState{
splines=polyline
compound=true
node [shape=Mrecord]
edge [arrowhead=normal]
IDLE -> REFILL [label=<write <br/> ~cached or hit>]
IDLE -> IDLE [label=<cached <br/> &amp; hit>]
IDLE -> WA [label=<cached <br/> ~hit <br/> ~axi.addr_ok>]
IDLE -> WD1 [label=<cached <br/> ~hit <br/> axi.addr_ok>]
WA -> WA [label="~axi.addr_ok"]
WA -> WD1 [label="~axi.rvalid"]
WA -> WD2 [label=<axi.rvalid <br/>&amp; cached>]
WA -> IDLE [label=<axi.rvalid <br/>&amp; ~cached>]
WD1 -> IDLE [label="axi.rvalid & ~cached"]
WD1 -> WD2 [label="axi.rvalid & cached"]
WD2 -> WD3 [label="axi.rvalid"]
WD3 -> WD4 [label="axi.rvalid"]
WD4 -> REFILL [label="axi.rvalid"]
REFILL -> IDLE [label="sync with dwState"]
}

View File

@ -1,161 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (0)
-->
<!-- Title: drState Pages: 1 -->
<svg width="505pt" height="611pt"
viewBox="0.00 0.00 505.00 611.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 607)">
<title>drState</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-607 501,-607 501,4 -4,4"/>
<!-- IDLE -->
<g id="node1" class="node">
<title>IDLE</title>
<path fill="none" stroke="black" d="M185,-566.5C185,-566.5 215,-566.5 215,-566.5 221,-566.5 227,-572.5 227,-578.5 227,-578.5 227,-590.5 227,-590.5 227,-596.5 221,-602.5 215,-602.5 215,-602.5 185,-602.5 185,-602.5 179,-602.5 173,-596.5 173,-590.5 173,-590.5 173,-578.5 173,-578.5 173,-572.5 179,-566.5 185,-566.5"/>
<text text-anchor="middle" x="200" y="-580.8" font-family="Times,serif" font-size="14.00">IDLE</text>
</g>
<!-- IDLE&#45;&gt;IDLE -->
<g id="edge2" class="edge">
<title>IDLE&#45;&gt;IDLE</title>
<path fill="none" stroke="black" d="M227.24,-595.36C237.02,-595.6 245,-591.98 245,-584.5 245,-579.83 241.88,-576.66 237.16,-575"/>
<polygon fill="black" stroke="black" points="237.62,-571.53 227.24,-573.64 236.67,-578.47 237.62,-571.53"/>
<text text-anchor="start" x="245" y="-588.3" font-family="Times,serif" font-size="14.00">cached </text>
<text text-anchor="start" x="249" y="-573.3" font-family="Times,serif" font-size="14.00"> &amp; hit</text>
</g>
<!-- REFILL -->
<g id="node2" class="node">
<title>REFILL</title>
<path fill="none" stroke="black" d="M99,-0.5C99,-0.5 137,-0.5 137,-0.5 143,-0.5 149,-6.5 149,-12.5 149,-12.5 149,-24.5 149,-24.5 149,-30.5 143,-36.5 137,-36.5 137,-36.5 99,-36.5 99,-36.5 93,-36.5 87,-30.5 87,-24.5 87,-24.5 87,-12.5 87,-12.5 87,-6.5 93,-0.5 99,-0.5"/>
<text text-anchor="middle" x="118" y="-14.8" font-family="Times,serif" font-size="14.00">REFILL</text>
</g>
<!-- IDLE&#45;&gt;REFILL -->
<g id="edge1" class="edge">
<title>IDLE&#45;&gt;REFILL</title>
<path fill="none" stroke="black" d="M172.75,-573.42C144.37,-562.93 104,-548 104,-548 104,-548 0,-463.5 0,-463.5 0,-463.5 0,-463.5 0,-105.5 0,-105.5 50.96,-68.36 85.91,-42.89"/>
<polygon fill="black" stroke="black" points="88.38,-45.42 94.4,-36.7 84.26,-39.76 88.38,-45.42"/>
<text text-anchor="start" x="25" y="-286.3" font-family="Times,serif" font-size="14.00">write </text>
<text text-anchor="start" x="0" y="-271.3" font-family="Times,serif" font-size="14.00"> ~cached or hit</text>
</g>
<!-- WA -->
<g id="node3" class="node">
<title>WA</title>
<path fill="none" stroke="black" d="M158,-444.5C158,-444.5 188,-444.5 188,-444.5 194,-444.5 200,-450.5 200,-456.5 200,-456.5 200,-468.5 200,-468.5 200,-474.5 194,-480.5 188,-480.5 188,-480.5 158,-480.5 158,-480.5 152,-480.5 146,-474.5 146,-468.5 146,-468.5 146,-456.5 146,-456.5 146,-450.5 152,-444.5 158,-444.5"/>
<text text-anchor="middle" x="173" y="-458.8" font-family="Times,serif" font-size="14.00">WA</text>
</g>
<!-- IDLE&#45;&gt;WA -->
<g id="edge3" class="edge">
<title>IDLE&#45;&gt;WA</title>
<path fill="none" stroke="black" d="M176.84,-566.37C164.57,-557.3 152,-548 152,-548 152,-548 152,-503 152,-503 152,-503 155.15,-497.07 159.01,-489.81"/>
<polygon fill="black" stroke="black" points="162.12,-491.41 163.73,-480.94 155.94,-488.13 162.12,-491.41"/>
<text text-anchor="start" x="169" y="-536.8" font-family="Times,serif" font-size="14.00">cached </text>
<text text-anchor="start" x="175" y="-521.8" font-family="Times,serif" font-size="14.00"> ~hit </text>
<text text-anchor="start" x="152" y="-506.8" font-family="Times,serif" font-size="14.00"> ~axi.addr_ok</text>
</g>
<!-- WD1 -->
<g id="node4" class="node">
<title>WD1</title>
<path fill="none" stroke="black" d="M284,-352.5C284,-352.5 314,-352.5 314,-352.5 320,-352.5 326,-358.5 326,-364.5 326,-364.5 326,-376.5 326,-376.5 326,-382.5 320,-388.5 314,-388.5 314,-388.5 284,-388.5 284,-388.5 278,-388.5 272,-382.5 272,-376.5 272,-376.5 272,-364.5 272,-364.5 272,-358.5 278,-352.5 284,-352.5"/>
<text text-anchor="middle" x="299" y="-366.8" font-family="Times,serif" font-size="14.00">WD1</text>
</g>
<!-- IDLE&#45;&gt;WD1 -->
<g id="edge4" class="edge">
<title>IDLE&#45;&gt;WD1</title>
<path fill="none" stroke="black" d="M227.4,-573.04C254.83,-562.57 293,-548 293,-548 293,-548 311,-422 311,-422 311,-422 311,-407 311,-407 311,-407 309.79,-403.42 308.14,-398.54"/>
<polygon fill="black" stroke="black" points="311.38,-397.19 304.86,-388.83 304.75,-399.43 311.38,-397.19"/>
<text text-anchor="start" x="321.5" y="-473.8" font-family="Times,serif" font-size="14.00">cached </text>
<text text-anchor="start" x="327.5" y="-458.8" font-family="Times,serif" font-size="14.00"> ~hit </text>
<text text-anchor="start" x="308" y="-443.8" font-family="Times,serif" font-size="14.00"> axi.addr_ok</text>
</g>
<!-- REFILL&#45;&gt;IDLE -->
<g id="edge14" class="edge">
<title>REFILL&#45;&gt;IDLE</title>
<path fill="none" stroke="black" d="M118,-36.9C118,-62.03 118,-105.5 118,-105.5 118,-463.5 118,-463.5 118,-463.5 118,-463.5 148,-548 148,-548 148,-548 156.48,-553.79 166.59,-560.69"/>
<polygon fill="black" stroke="black" points="164.68,-563.63 174.91,-566.37 168.63,-557.84 164.68,-563.63"/>
<text text-anchor="middle" x="168" y="-278.8" font-family="Times,serif" font-size="14.00">sync with dwState</text>
</g>
<!-- WA&#45;&gt;IDLE -->
<g id="edge8" class="edge">
<title>WA&#45;&gt;IDLE</title>
<path fill="none" stroke="black" d="M196.96,-480.71C211.79,-491.35 228,-503 228,-503 228,-503 228,-548 228,-548 228,-548 224.59,-552.33 220.14,-557.96"/>
<polygon fill="black" stroke="black" points="217.12,-556.15 213.67,-566.17 222.61,-560.48 217.12,-556.15"/>
<text text-anchor="start" x="230.5" y="-529.3" font-family="Times,serif" font-size="14.00">axi.rvalid </text>
<text text-anchor="start" x="228" y="-514.3" font-family="Times,serif" font-size="14.00">&amp; ~cached</text>
</g>
<!-- WA&#45;&gt;WA -->
<g id="edge5" class="edge">
<title>WA&#45;&gt;WA</title>
<path fill="none" stroke="black" d="M200.24,-471.49C210.02,-471.68 218,-468.69 218,-462.5 218,-458.73 215.04,-456.14 210.51,-454.74"/>
<polygon fill="black" stroke="black" points="210.59,-451.23 200.24,-453.51 209.75,-458.18 210.59,-451.23"/>
<text text-anchor="middle" x="254.5" y="-458.8" font-family="Times,serif" font-size="14.00">~axi.addr_ok</text>
</g>
<!-- WA&#45;&gt;WD1 -->
<g id="edge6" class="edge">
<title>WA&#45;&gt;WD1</title>
<path fill="none" stroke="black" d="M197,-444.36C216.79,-430.22 245.05,-410.04 266.81,-394.49"/>
<polygon fill="black" stroke="black" points="268.99,-397.24 275.09,-388.58 264.92,-391.54 268.99,-397.24"/>
<text text-anchor="middle" x="277" y="-410.8" font-family="Times,serif" font-size="14.00">~axi.rvalid</text>
</g>
<!-- WD2 -->
<g id="node5" class="node">
<title>WD2</title>
<path fill="none" stroke="black" d="M248,-264.5C248,-264.5 278,-264.5 278,-264.5 284,-264.5 290,-270.5 290,-276.5 290,-276.5 290,-288.5 290,-288.5 290,-294.5 284,-300.5 278,-300.5 278,-300.5 248,-300.5 248,-300.5 242,-300.5 236,-294.5 236,-288.5 236,-288.5 236,-276.5 236,-276.5 236,-270.5 242,-264.5 248,-264.5"/>
<text text-anchor="middle" x="263" y="-278.8" font-family="Times,serif" font-size="14.00">WD2</text>
</g>
<!-- WA&#45;&gt;WD2 -->
<g id="edge7" class="edge">
<title>WA&#45;&gt;WD2</title>
<path fill="none" stroke="black" d="M178.31,-444.39C187.88,-413.59 207,-352 207,-352 207,-352 226.53,-328.11 242.52,-308.55"/>
<polygon fill="black" stroke="black" points="245.25,-310.74 248.87,-300.79 239.83,-306.31 245.25,-310.74"/>
<text text-anchor="start" x="207" y="-374.3" font-family="Times,serif" font-size="14.00">axi.rvalid </text>
<text text-anchor="start" x="208.5" y="-359.3" font-family="Times,serif" font-size="14.00">&amp; cached</text>
</g>
<!-- WD1&#45;&gt;IDLE -->
<g id="edge9" class="edge">
<title>WD1&#45;&gt;IDLE</title>
<path fill="none" stroke="black" d="M319.69,-388.79C343.98,-409.08 381,-440 381,-440 381,-440 381,-485 381,-485 381,-485 310,-548 310,-548 310,-548 268.74,-561.31 236.76,-571.64"/>
<polygon fill="black" stroke="black" points="235.63,-568.32 227.19,-574.72 237.78,-574.98 235.63,-568.32"/>
<text text-anchor="middle" x="439" y="-458.8" font-family="Times,serif" font-size="14.00">axi.rvalid &amp; ~cached</text>
</g>
<!-- WD1&#45;&gt;WD2 -->
<g id="edge10" class="edge">
<title>WD1&#45;&gt;WD2</title>
<path fill="none" stroke="black" d="M291.71,-352.1C286.66,-340.01 279.82,-323.68 274.09,-309.99"/>
<polygon fill="black" stroke="black" points="277.24,-308.46 270.15,-300.58 270.78,-311.16 277.24,-308.46"/>
<text text-anchor="middle" x="337.5" y="-322.8" font-family="Times,serif" font-size="14.00">axi.rvalid &amp; cached</text>
</g>
<!-- WD3 -->
<g id="node6" class="node">
<title>WD3</title>
<path fill="none" stroke="black" d="M203,-176.5C203,-176.5 233,-176.5 233,-176.5 239,-176.5 245,-182.5 245,-188.5 245,-188.5 245,-200.5 245,-200.5 245,-206.5 239,-212.5 233,-212.5 233,-212.5 203,-212.5 203,-212.5 197,-212.5 191,-206.5 191,-200.5 191,-200.5 191,-188.5 191,-188.5 191,-182.5 197,-176.5 203,-176.5"/>
<text text-anchor="middle" x="218" y="-190.8" font-family="Times,serif" font-size="14.00">WD3</text>
</g>
<!-- WD2&#45;&gt;WD3 -->
<g id="edge11" class="edge">
<title>WD2&#45;&gt;WD3</title>
<path fill="none" stroke="black" d="M253.89,-264.1C247.51,-251.89 238.86,-235.37 231.65,-221.59"/>
<polygon fill="black" stroke="black" points="234.68,-219.82 226.94,-212.58 228.47,-223.07 234.68,-219.82"/>
<text text-anchor="middle" x="269" y="-234.8" font-family="Times,serif" font-size="14.00">axi.rvalid</text>
</g>
<!-- WD4 -->
<g id="node7" class="node">
<title>WD4</title>
<path fill="none" stroke="black" d="M158,-88.5C158,-88.5 188,-88.5 188,-88.5 194,-88.5 200,-94.5 200,-100.5 200,-100.5 200,-112.5 200,-112.5 200,-118.5 194,-124.5 188,-124.5 188,-124.5 158,-124.5 158,-124.5 152,-124.5 146,-118.5 146,-112.5 146,-112.5 146,-100.5 146,-100.5 146,-94.5 152,-88.5 158,-88.5"/>
<text text-anchor="middle" x="173" y="-102.8" font-family="Times,serif" font-size="14.00">WD4</text>
</g>
<!-- WD3&#45;&gt;WD4 -->
<g id="edge12" class="edge">
<title>WD3&#45;&gt;WD4</title>
<path fill="none" stroke="black" d="M208.89,-176.1C202.51,-163.89 193.86,-147.37 186.65,-133.59"/>
<polygon fill="black" stroke="black" points="189.68,-131.82 181.94,-124.58 183.47,-135.07 189.68,-131.82"/>
<text text-anchor="middle" x="224" y="-146.8" font-family="Times,serif" font-size="14.00">axi.rvalid</text>
</g>
<!-- WD4&#45;&gt;REFILL -->
<g id="edge13" class="edge">
<title>WD4&#45;&gt;REFILL</title>
<path fill="none" stroke="black" d="M161.87,-88.1C153.99,-75.78 143.29,-59.05 134.43,-45.2"/>
<polygon fill="black" stroke="black" points="137.26,-43.12 128.93,-36.58 131.37,-46.89 137.26,-43.12"/>
<text text-anchor="middle" x="174" y="-58.8" font-family="Times,serif" font-size="14.00">axi.rvalid</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,29 +0,0 @@
digraph dwState{
splines=polyline
compound=true
node [shape=Mrecord]
edge [arrowhead=normal]
IDLE -> WD1 [label="~axi.wready"]
IDLE -> WD2 [label=<axi.wready <br/> &amp; cached>]
IDLE -> WB [label=<axi.wready <br/> &amp; ~cached <br/> &amp; ~axi.data_ok>]
IDLE -> WAITR [label="sync with drState"]
WD1 -> WD2 [label=<axi.wready <br/> &amp; cached>]
WD1 -> WB [label=<axi.wready <br/> &amp; ~cached <br/> &amp; ~axi.data_ok>]
WD1 -> IDLE [label=<axi.wready <br/> &amp; ~cached <br/> &amp; axi.data_ok>]
WD2 -> WD3 [label="axi.wready"]
WD3 -> WD4 [label="axi.wready"]
WD4 -> WB [label=<axi.wready<br/> &amp; ~axi.data_ok>]
WD4 -> IDLE [label="sync with drState"]
WD4 -> WAITR [label="sync with drState"]
WB -> IDLE [label="sync with drState"]
WB -> IDLE [label="sync with drState"]
WB -> WAITR [label="sync with drState"]
WAITR -> IDLE [label="sync with drState"]
}

View File

@ -1,176 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (0)
-->
<!-- Title: dwState Pages: 1 -->
<svg width="877pt" height="671pt"
viewBox="0.00 0.00 877.00 671.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 667)">
<title>dwState</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-667 873,-667 873,4 -4,4"/>
<!-- IDLE -->
<g id="node1" class="node">
<title>IDLE</title>
<path fill="none" stroke="black" d="M359,-626.5C359,-626.5 389,-626.5 389,-626.5 395,-626.5 401,-632.5 401,-638.5 401,-638.5 401,-650.5 401,-650.5 401,-656.5 395,-662.5 389,-662.5 389,-662.5 359,-662.5 359,-662.5 353,-662.5 347,-656.5 347,-650.5 347,-650.5 347,-638.5 347,-638.5 347,-632.5 353,-626.5 359,-626.5"/>
<text text-anchor="middle" x="374" y="-640.8" font-family="Times,serif" font-size="14.00">IDLE</text>
</g>
<!-- WD1 -->
<g id="node2" class="node">
<title>WD1</title>
<path fill="none" stroke="black" d="M345,-508.5C345,-508.5 375,-508.5 375,-508.5 381,-508.5 387,-514.5 387,-520.5 387,-520.5 387,-532.5 387,-532.5 387,-538.5 381,-544.5 375,-544.5 375,-544.5 345,-544.5 345,-544.5 339,-544.5 333,-538.5 333,-532.5 333,-532.5 333,-520.5 333,-520.5 333,-514.5 339,-508.5 345,-508.5"/>
<text text-anchor="middle" x="360" y="-522.8" font-family="Times,serif" font-size="14.00">WD1</text>
</g>
<!-- IDLE&#45;&gt;WD1 -->
<g id="edge1" class="edge">
<title>IDLE&#45;&gt;WD1</title>
<path fill="none" stroke="black" d="M371.93,-626.38C369.66,-607.54 365.97,-576.97 363.3,-554.8"/>
<polygon fill="black" stroke="black" points="366.75,-554.19 362.07,-544.69 359.8,-555.03 366.75,-554.19"/>
<text text-anchor="middle" x="403" y="-581.8" font-family="Times,serif" font-size="14.00">~axi.wready</text>
</g>
<!-- WD2 -->
<g id="node3" class="node">
<title>WD2</title>
<path fill="none" stroke="black" d="M554,-405.5C554,-405.5 584,-405.5 584,-405.5 590,-405.5 596,-411.5 596,-417.5 596,-417.5 596,-429.5 596,-429.5 596,-435.5 590,-441.5 584,-441.5 584,-441.5 554,-441.5 554,-441.5 548,-441.5 542,-435.5 542,-429.5 542,-429.5 542,-417.5 542,-417.5 542,-411.5 548,-405.5 554,-405.5"/>
<text text-anchor="middle" x="569" y="-419.8" font-family="Times,serif" font-size="14.00">WD2</text>
</g>
<!-- IDLE&#45;&gt;WD2 -->
<g id="edge2" class="edge">
<title>IDLE&#45;&gt;WD2</title>
<path fill="none" stroke="black" d="M401.02,-633.61C429.72,-623.11 471,-608 471,-608 471,-608 555,-490 555,-490 555,-490 559.35,-469.63 563.21,-451.61"/>
<polygon fill="black" stroke="black" points="566.65,-452.22 565.32,-441.71 559.81,-450.76 566.65,-452.22"/>
<text text-anchor="start" x="541" y="-530.3" font-family="Times,serif" font-size="14.00">axi.wready </text>
<text text-anchor="start" x="544.5" y="-515.3" font-family="Times,serif" font-size="14.00"> &amp; cached</text>
</g>
<!-- WB -->
<g id="node4" class="node">
<title>WB</title>
<path fill="none" stroke="black" d="M356,-88.5C356,-88.5 386,-88.5 386,-88.5 392,-88.5 398,-94.5 398,-100.5 398,-100.5 398,-112.5 398,-112.5 398,-118.5 392,-124.5 386,-124.5 386,-124.5 356,-124.5 356,-124.5 350,-124.5 344,-118.5 344,-112.5 344,-112.5 344,-100.5 344,-100.5 344,-94.5 350,-88.5 356,-88.5"/>
<text text-anchor="middle" x="371" y="-102.8" font-family="Times,serif" font-size="14.00">WB</text>
</g>
<!-- IDLE&#45;&gt;WB -->
<g id="edge3" class="edge">
<title>IDLE&#45;&gt;WB</title>
<path fill="none" stroke="black" d="M346.83,-637.15C303.1,-626.94 222,-608 222,-608 222,-608 123,-527.5 123,-527.5 123,-527.5 123,-527.5 123,-208.5 123,-208.5 222,-143 222,-143 222,-143 289.7,-126.87 333.83,-116.36"/>
<polygon fill="black" stroke="black" points="334.75,-119.73 343.67,-114.01 333.13,-112.92 334.75,-119.73"/>
<text text-anchor="start" x="136" y="-375.8" font-family="Times,serif" font-size="14.00">axi.wready </text>
<text text-anchor="start" x="134" y="-360.8" font-family="Times,serif" font-size="14.00"> &amp; ~cached </text>
<text text-anchor="start" x="123" y="-345.8" font-family="Times,serif" font-size="14.00"> &amp; ~axi.data_ok</text>
</g>
<!-- WAITR -->
<g id="node5" class="node">
<title>WAITR</title>
<path fill="none" stroke="black" d="M545,-0.5C545,-0.5 581,-0.5 581,-0.5 587,-0.5 593,-6.5 593,-12.5 593,-12.5 593,-24.5 593,-24.5 593,-30.5 587,-36.5 581,-36.5 581,-36.5 545,-36.5 545,-36.5 539,-36.5 533,-30.5 533,-24.5 533,-24.5 533,-12.5 533,-12.5 533,-6.5 539,-0.5 545,-0.5"/>
<text text-anchor="middle" x="563" y="-14.8" font-family="Times,serif" font-size="14.00">WAITR</text>
</g>
<!-- IDLE&#45;&gt;WAITR -->
<g id="edge4" class="edge">
<title>IDLE&#45;&gt;WAITR</title>
<path fill="none" stroke="black" d="M346.81,-638.86C290.43,-629.24 166,-608 166,-608 166,-608 0,-527.5 0,-527.5 0,-527.5 0,-527.5 0,-105.5 0,-105.5 393.36,-45.41 522.48,-25.69"/>
<polygon fill="black" stroke="black" points="523.37,-29.09 532.73,-24.12 522.32,-22.17 523.37,-29.09"/>
<text text-anchor="middle" x="47.5" y="-297.8" font-family="Times,serif" font-size="14.00">sync with drState</text>
</g>
<!-- WD1&#45;&gt;IDLE -->
<g id="edge7" class="edge">
<title>WD1&#45;&gt;IDLE</title>
<path fill="none" stroke="black" d="M332.7,-539.32C308.84,-549.65 278,-563 278,-563 278,-563 278,-608 278,-608 278,-608 310.02,-619.84 337.07,-629.84"/>
<polygon fill="black" stroke="black" points="336.15,-633.24 346.75,-633.42 338.58,-626.67 336.15,-633.24"/>
<text text-anchor="start" x="287" y="-596.8" font-family="Times,serif" font-size="14.00">axi.wready </text>
<text text-anchor="start" x="285" y="-581.8" font-family="Times,serif" font-size="14.00"> &amp; ~cached </text>
<text text-anchor="start" x="278" y="-566.8" font-family="Times,serif" font-size="14.00"> &amp; axi.data_ok</text>
</g>
<!-- WD1&#45;&gt;WD2 -->
<g id="edge5" class="edge">
<title>WD1&#45;&gt;WD2</title>
<path fill="none" stroke="black" d="M387.14,-511.93C425.51,-492.74 491,-460 491,-460 491,-460 512.23,-450.34 532.53,-441.1"/>
<polygon fill="black" stroke="black" points="534.07,-444.24 541.72,-436.92 531.17,-437.87 534.07,-444.24"/>
<text text-anchor="start" x="491" y="-478.8" font-family="Times,serif" font-size="14.00">axi.wready </text>
<text text-anchor="start" x="494.5" y="-463.8" font-family="Times,serif" font-size="14.00"> &amp; cached</text>
</g>
<!-- WD1&#45;&gt;WB -->
<g id="edge6" class="edge">
<title>WD1&#45;&gt;WB</title>
<path fill="none" stroke="black" d="M359.4,-508.32C357.71,-459.59 353,-324 353,-324 353,-324 353,-279 353,-279 353,-279 363.07,-183.02 368.15,-134.66"/>
<polygon fill="black" stroke="black" points="371.65,-134.88 369.21,-124.57 364.68,-134.15 371.65,-134.88"/>
<text text-anchor="start" x="366" y="-312.8" font-family="Times,serif" font-size="14.00">axi.wready </text>
<text text-anchor="start" x="364" y="-297.8" font-family="Times,serif" font-size="14.00"> &amp; ~cached </text>
<text text-anchor="start" x="353" y="-282.8" font-family="Times,serif" font-size="14.00"> &amp; ~axi.data_ok</text>
</g>
<!-- WD3 -->
<g id="node6" class="node">
<title>WD3</title>
<path fill="none" stroke="black" d="M560,-283.5C560,-283.5 590,-283.5 590,-283.5 596,-283.5 602,-289.5 602,-295.5 602,-295.5 602,-307.5 602,-307.5 602,-313.5 596,-319.5 590,-319.5 590,-319.5 560,-319.5 560,-319.5 554,-319.5 548,-313.5 548,-307.5 548,-307.5 548,-295.5 548,-295.5 548,-289.5 554,-283.5 560,-283.5"/>
<text text-anchor="middle" x="575" y="-297.8" font-family="Times,serif" font-size="14.00">WD3</text>
</g>
<!-- WD2&#45;&gt;WD3 -->
<g id="edge8" class="edge">
<title>WD2&#45;&gt;WD3</title>
<path fill="none" stroke="black" d="M569.86,-405.31C570.84,-385.61 572.47,-353.08 573.63,-329.89"/>
<polygon fill="black" stroke="black" points="577.14,-329.82 574.14,-319.66 570.15,-329.47 577.14,-329.82"/>
<text text-anchor="middle" x="602.5" y="-360.8" font-family="Times,serif" font-size="14.00">axi.wready</text>
</g>
<!-- WB&#45;&gt;IDLE -->
<g id="edge13" class="edge">
<title>WB&#45;&gt;IDLE</title>
<path fill="none" stroke="black" d="M348.1,-124.63C309.58,-153.45 236,-208.5 236,-208.5 236,-527.5 236,-527.5 236,-527.5 236,-527.5 274,-608 274,-608 274,-608 308.67,-620.31 337.18,-630.43"/>
<polygon fill="black" stroke="black" points="336.34,-633.85 346.94,-633.89 338.69,-627.25 336.34,-633.85"/>
<text text-anchor="middle" x="283.5" y="-360.8" font-family="Times,serif" font-size="14.00">sync with drState</text>
</g>
<!-- WB&#45;&gt;IDLE -->
<g id="edge14" class="edge">
<title>WB&#45;&gt;IDLE</title>
<path fill="none" stroke="black" d="M385.59,-124.63C410.12,-153.45 457,-208.5 457,-208.5 457,-527.5 457,-527.5 457,-527.5 457,-527.5 441,-608 441,-608 441,-608 426.19,-615.85 410.49,-624.17"/>
<polygon fill="black" stroke="black" points="408.45,-621.29 401.25,-629.06 411.73,-627.47 408.45,-621.29"/>
<text text-anchor="middle" x="504.5" y="-360.8" font-family="Times,serif" font-size="14.00">sync with drState</text>
</g>
<!-- WB&#45;&gt;WAITR -->
<g id="edge15" class="edge">
<title>WB&#45;&gt;WAITR</title>
<path fill="none" stroke="black" d="M398.1,-93.36C430.74,-78.74 485.85,-54.06 523.29,-37.29"/>
<polygon fill="black" stroke="black" points="525.18,-40.28 532.87,-32.99 522.32,-33.89 525.18,-40.28"/>
<text text-anchor="middle" x="525.5" y="-58.8" font-family="Times,serif" font-size="14.00">sync with drState</text>
</g>
<!-- WAITR&#45;&gt;IDLE -->
<g id="edge16" class="edge">
<title>WAITR&#45;&gt;IDLE</title>
<path fill="none" stroke="black" d="M593.23,-31.82C651.57,-55.6 774,-105.5 774,-105.5 774,-527.5 774,-527.5 774,-527.5 774,-527.5 554,-608 554,-608 554,-608 464.08,-625.73 411.35,-636.13"/>
<polygon fill="black" stroke="black" points="410.47,-632.74 401.34,-638.11 411.83,-639.61 410.47,-632.74"/>
<text text-anchor="middle" x="821.5" y="-297.8" font-family="Times,serif" font-size="14.00">sync with drState</text>
</g>
<!-- WD4 -->
<g id="node7" class="node">
<title>WD4</title>
<path fill="none" stroke="black" d="M570,-191.5C570,-191.5 600,-191.5 600,-191.5 606,-191.5 612,-197.5 612,-203.5 612,-203.5 612,-215.5 612,-215.5 612,-221.5 606,-227.5 600,-227.5 600,-227.5 570,-227.5 570,-227.5 564,-227.5 558,-221.5 558,-215.5 558,-215.5 558,-203.5 558,-203.5 558,-197.5 564,-191.5 570,-191.5"/>
<text text-anchor="middle" x="585" y="-205.8" font-family="Times,serif" font-size="14.00">WD4</text>
</g>
<!-- WD3&#45;&gt;WD4 -->
<g id="edge9" class="edge">
<title>WD3&#45;&gt;WD4</title>
<path fill="none" stroke="black" d="M575.32,-283.26C575.61,-267.29 576,-246 576,-246 576,-246 576.91,-242.42 578.14,-237.54"/>
<polygon fill="black" stroke="black" points="581.54,-238.39 580.61,-227.83 574.76,-236.67 581.54,-238.39"/>
<text text-anchor="middle" x="606.5" y="-249.8" font-family="Times,serif" font-size="14.00">axi.wready</text>
</g>
<!-- WD4&#45;&gt;IDLE -->
<g id="edge11" class="edge">
<title>WD4&#45;&gt;IDLE</title>
<path fill="none" stroke="black" d="M610.09,-227.63C623.38,-236.7 637,-246 637,-246 637,-246 651,-300.5 651,-300.5 651,-527.5 651,-527.5 651,-527.5 651,-527.5 500,-608 500,-608 500,-608 448.24,-622.58 411.07,-633.06"/>
<polygon fill="black" stroke="black" points="409.71,-629.8 401.03,-635.88 411.6,-636.54 409.71,-629.8"/>
<text text-anchor="middle" x="698.5" y="-419.8" font-family="Times,serif" font-size="14.00">sync with drState</text>
</g>
<!-- WD4&#45;&gt;WB -->
<g id="edge10" class="edge">
<title>WD4&#45;&gt;WB</title>
<path fill="none" stroke="black" d="M557.81,-198.23C530.05,-187.75 491,-173 491,-173 491,-173 468,-143 468,-143 468,-143 434.97,-130.91 407.46,-120.84"/>
<polygon fill="black" stroke="black" points="408.61,-117.54 398.02,-117.39 406.21,-124.11 408.61,-117.54"/>
<text text-anchor="start" x="505.5" y="-161.8" font-family="Times,serif" font-size="14.00">axi.wready</text>
<text text-anchor="start" x="491" y="-146.8" font-family="Times,serif" font-size="14.00"> &amp; ~axi.data_ok</text>
</g>
<!-- WD4&#45;&gt;WAITR -->
<g id="edge12" class="edge">
<title>WD4&#45;&gt;WAITR</title>
<path fill="none" stroke="black" d="M584.11,-191.49C582.03,-151.52 577,-55 577,-55 577,-55 575.52,-51.24 573.52,-46.17"/>
<polygon fill="black" stroke="black" points="576.76,-44.85 569.84,-36.83 570.25,-47.42 576.76,-44.85"/>
<text text-anchor="middle" x="627.5" y="-102.8" font-family="Times,serif" font-size="14.00">sync with drState</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,9 +0,0 @@
digraph dwaState{
splines=polyline
compound=true
node [shape=Mrecord]
edge [arrowhead=normal]
IDLE -> WA [label=<req <br/> &amp; ~axi.addr_ok>]
WA -> IDLE [label="axi.addr_ok"]
}

View File

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (0)
-->
<!-- Title: dwaState Pages: 1 -->
<svg width="164pt" height="148pt"
viewBox="0.00 0.00 164.00 148.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 144)">
<title>dwaState</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-144 160,-144 160,4 -4,4"/>
<!-- IDLE -->
<g id="node1" class="node">
<title>IDLE</title>
<path fill="none" stroke="black" d="M41,-103.5C41,-103.5 71,-103.5 71,-103.5 77,-103.5 83,-109.5 83,-115.5 83,-115.5 83,-127.5 83,-127.5 83,-133.5 77,-139.5 71,-139.5 71,-139.5 41,-139.5 41,-139.5 35,-139.5 29,-133.5 29,-127.5 29,-127.5 29,-115.5 29,-115.5 29,-109.5 35,-103.5 41,-103.5"/>
<text text-anchor="middle" x="56" y="-117.8" font-family="Times,serif" font-size="14.00">IDLE</text>
</g>
<!-- WA -->
<g id="node2" class="node">
<title>WA</title>
<path fill="none" stroke="black" d="M41,-0.5C41,-0.5 71,-0.5 71,-0.5 77,-0.5 83,-6.5 83,-12.5 83,-12.5 83,-24.5 83,-24.5 83,-30.5 77,-36.5 71,-36.5 71,-36.5 41,-36.5 41,-36.5 35,-36.5 29,-30.5 29,-24.5 29,-24.5 29,-12.5 29,-12.5 29,-6.5 35,-0.5 41,-0.5"/>
<text text-anchor="middle" x="56" y="-14.8" font-family="Times,serif" font-size="14.00">WA</text>
</g>
<!-- IDLE&#45;&gt;WA -->
<g id="edge1" class="edge">
<title>IDLE&#45;&gt;WA</title>
<path fill="none" stroke="black" d="M28.98,-103.37C14.66,-94.3 0,-85 0,-85 0,-85 0,-55 0,-55 0,-55 9.31,-49.1 20.34,-42.11"/>
<polygon fill="black" stroke="black" points="22.41,-44.94 28.98,-36.63 18.66,-39.02 22.41,-44.94"/>
<text text-anchor="start" x="34.5" y="-73.8" font-family="Times,serif" font-size="14.00">req </text>
<text text-anchor="start" x="0" y="-58.8" font-family="Times,serif" font-size="14.00"> &amp; ~axi.addr_ok</text>
</g>
<!-- WA&#45;&gt;IDLE -->
<g id="edge2" class="edge">
<title>WA&#45;&gt;IDLE</title>
<path fill="none" stroke="black" d="M73.09,-36.83C81.97,-45.85 91,-55 91,-55 91,-55 91,-85 91,-85 91,-85 86.34,-89.73 80.42,-95.74"/>
<polygon fill="black" stroke="black" points="77.62,-93.59 73.09,-103.17 82.6,-98.5 77.62,-93.59"/>
<text text-anchor="middle" x="123.5" y="-66.3" font-family="Times,serif" font-size="14.00">axi.addr_ok</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -1,20 +0,0 @@
digraph iState{
splines=polyline
compound=true
node [shape=Mrecord]
edge [arrowhead=normal]
IDLE -> WA [label=<cached <br/>&amp; ~hit <br/>&amp; ~axi.addr_ok>]
IDLE -> WD1 [label=<cached <br/>&amp; ~hit <br/>&amp; axi.addr_ok>]
WA -> WD1 [label=<axi.addr_ok<br/>&amp;~axi.rvalid>]
WA -> WD2 [label=<axi.addr_ok<br/>&amp;axi.rvalid>]
WD1 -> WD2 [label="axi.rvalid"]
WD2 -> WD3 [label=<axi.rvalid <br/>&amp; cached>]
WD2 -> IDLE [label=<axi.rvalid <br/>&amp; ~cached>]
WD3 -> WD8 [style=dashed label="axi.rvalid"]
WD8 -> REFILL [label="sync with dwState"]
REFILL -> IDLE
}

View File

@ -1,132 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.48.0 (0)
-->
<!-- Title: iState Pages: 1 -->
<svg width="322pt" height="641pt"
viewBox="0.00 0.00 322.00 641.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 637)">
<title>iState</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-637 318,-637 318,4 -4,4"/>
<!-- IDLE -->
<g id="node1" class="node">
<title>IDLE</title>
<path fill="none" stroke="black" d="M169,-596.5C169,-596.5 199,-596.5 199,-596.5 205,-596.5 211,-602.5 211,-608.5 211,-608.5 211,-620.5 211,-620.5 211,-626.5 205,-632.5 199,-632.5 199,-632.5 169,-632.5 169,-632.5 163,-632.5 157,-626.5 157,-620.5 157,-620.5 157,-608.5 157,-608.5 157,-602.5 163,-596.5 169,-596.5"/>
<text text-anchor="middle" x="184" y="-610.8" font-family="Times,serif" font-size="14.00">IDLE</text>
</g>
<!-- WA -->
<g id="node2" class="node">
<title>WA</title>
<path fill="none" stroke="black" d="M12,-474.5C12,-474.5 42,-474.5 42,-474.5 48,-474.5 54,-480.5 54,-486.5 54,-486.5 54,-498.5 54,-498.5 54,-504.5 48,-510.5 42,-510.5 42,-510.5 12,-510.5 12,-510.5 6,-510.5 0,-504.5 0,-498.5 0,-498.5 0,-486.5 0,-486.5 0,-480.5 6,-474.5 12,-474.5"/>
<text text-anchor="middle" x="27" y="-488.8" font-family="Times,serif" font-size="14.00">WA</text>
</g>
<!-- IDLE&#45;&gt;WA -->
<g id="edge1" class="edge">
<title>IDLE&#45;&gt;WA</title>
<path fill="none" stroke="black" d="M156.83,-607.32C112.13,-597.15 28,-578 28,-578 28,-578 27.62,-545.59 27.32,-520.92"/>
<polygon fill="black" stroke="black" points="30.82,-520.56 27.2,-510.6 23.82,-520.64 30.82,-520.56"/>
<text text-anchor="start" x="51" y="-566.8" font-family="Times,serif" font-size="14.00">cached </text>
<text text-anchor="start" x="51.5" y="-551.8" font-family="Times,serif" font-size="14.00">&amp; ~hit </text>
<text text-anchor="start" x="28" y="-536.8" font-family="Times,serif" font-size="14.00">&amp; ~axi.addr_ok</text>
</g>
<!-- WD1 -->
<g id="node3" class="node">
<title>WD1</title>
<path fill="none" stroke="black" d="M115,-367.5C115,-367.5 145,-367.5 145,-367.5 151,-367.5 157,-373.5 157,-379.5 157,-379.5 157,-391.5 157,-391.5 157,-397.5 151,-403.5 145,-403.5 145,-403.5 115,-403.5 115,-403.5 109,-403.5 103,-397.5 103,-391.5 103,-391.5 103,-379.5 103,-379.5 103,-373.5 109,-367.5 115,-367.5"/>
<text text-anchor="middle" x="130" y="-381.8" font-family="Times,serif" font-size="14.00">WD1</text>
</g>
<!-- IDLE&#45;&gt;WD1 -->
<g id="edge2" class="edge">
<title>IDLE&#45;&gt;WD1</title>
<path fill="none" stroke="black" d="M177.03,-596.34C165.57,-568.12 144,-515 144,-515 144,-515 137.1,-451.64 132.99,-413.91"/>
<polygon fill="black" stroke="black" points="136.42,-413.13 131.86,-403.56 129.46,-413.88 136.42,-413.13"/>
<text text-anchor="start" x="163" y="-503.8" font-family="Times,serif" font-size="14.00">cached </text>
<text text-anchor="start" x="163.5" y="-488.8" font-family="Times,serif" font-size="14.00">&amp; ~hit </text>
<text text-anchor="start" x="144" y="-473.8" font-family="Times,serif" font-size="14.00">&amp; axi.addr_ok</text>
</g>
<!-- WA&#45;&gt;WD1 -->
<g id="edge3" class="edge">
<title>WA&#45;&gt;WD1</title>
<path fill="none" stroke="black" d="M31.45,-474.32C36.78,-453.74 45,-422 45,-422 45,-422 70.33,-411.42 93.33,-401.81"/>
<polygon fill="black" stroke="black" points="94.76,-405.01 102.64,-397.93 92.06,-398.55 94.76,-405.01"/>
<text text-anchor="start" x="48" y="-440.8" font-family="Times,serif" font-size="14.00">axi.addr_ok</text>
<text text-anchor="start" x="45" y="-425.8" font-family="Times,serif" font-size="14.00">&amp;~axi.rvalid</text>
</g>
<!-- WD2 -->
<g id="node4" class="node">
<title>WD2</title>
<path fill="none" stroke="black" d="M157,-279.5C157,-279.5 187,-279.5 187,-279.5 193,-279.5 199,-285.5 199,-291.5 199,-291.5 199,-303.5 199,-303.5 199,-309.5 193,-315.5 187,-315.5 187,-315.5 157,-315.5 157,-315.5 151,-315.5 145,-309.5 145,-303.5 145,-303.5 145,-291.5 145,-291.5 145,-285.5 151,-279.5 157,-279.5"/>
<text text-anchor="middle" x="172" y="-293.8" font-family="Times,serif" font-size="14.00">WD2</text>
</g>
<!-- WA&#45;&gt;WD2 -->
<g id="edge4" class="edge">
<title>WA&#45;&gt;WD2</title>
<path fill="none" stroke="black" d="M27.27,-474.45C27.82,-440.35 29,-367 29,-367 29,-367 93.2,-336.25 135.57,-315.95"/>
<polygon fill="black" stroke="black" points="137.26,-319.02 144.77,-311.55 134.24,-312.71 137.26,-319.02"/>
<text text-anchor="start" x="29" y="-389.3" font-family="Times,serif" font-size="14.00">axi.addr_ok</text>
<text text-anchor="start" x="29.5" y="-374.3" font-family="Times,serif" font-size="14.00">&amp;axi.rvalid</text>
</g>
<!-- WD1&#45;&gt;WD2 -->
<g id="edge5" class="edge">
<title>WD1&#45;&gt;WD2</title>
<path fill="none" stroke="black" d="M138.5,-367.1C144.46,-354.89 152.53,-338.37 159.26,-324.59"/>
<polygon fill="black" stroke="black" points="162.41,-326.11 163.66,-315.58 156.12,-323.03 162.41,-326.11"/>
<text text-anchor="middle" x="179" y="-337.8" font-family="Times,serif" font-size="14.00">axi.rvalid</text>
</g>
<!-- WD2&#45;&gt;IDLE -->
<g id="edge7" class="edge">
<title>WD2&#45;&gt;IDLE</title>
<path fill="none" stroke="black" d="M190.07,-315.83C199.46,-324.85 209,-334 209,-334 209,-334 224,-470 224,-470 224,-470 224,-515 224,-515 224,-515 206.59,-557.88 194.74,-587.06"/>
<polygon fill="black" stroke="black" points="191.49,-585.76 190.97,-596.34 197.97,-588.39 191.49,-585.76"/>
<text text-anchor="start" x="223.5" y="-440.8" font-family="Times,serif" font-size="14.00">axi.rvalid </text>
<text text-anchor="start" x="221" y="-425.8" font-family="Times,serif" font-size="14.00">&amp; ~cached</text>
</g>
<!-- WD3 -->
<g id="node5" class="node">
<title>WD3</title>
<path fill="none" stroke="black" d="M178,-176.5C178,-176.5 208,-176.5 208,-176.5 214,-176.5 220,-182.5 220,-188.5 220,-188.5 220,-200.5 220,-200.5 220,-206.5 214,-212.5 208,-212.5 208,-212.5 178,-212.5 178,-212.5 172,-212.5 166,-206.5 166,-200.5 166,-200.5 166,-188.5 166,-188.5 166,-182.5 172,-176.5 178,-176.5"/>
<text text-anchor="middle" x="193" y="-190.8" font-family="Times,serif" font-size="14.00">WD3</text>
</g>
<!-- WD2&#45;&gt;WD3 -->
<g id="edge6" class="edge">
<title>WD2&#45;&gt;WD3</title>
<path fill="none" stroke="black" d="M175.56,-279.37C178.79,-263.84 183.6,-240.7 187.35,-222.66"/>
<polygon fill="black" stroke="black" points="190.81,-223.22 189.42,-212.72 183.96,-221.8 190.81,-223.22"/>
<text text-anchor="start" x="185" y="-249.8" font-family="Times,serif" font-size="14.00">axi.rvalid </text>
<text text-anchor="start" x="186.5" y="-234.8" font-family="Times,serif" font-size="14.00">&amp; cached</text>
</g>
<!-- WD8 -->
<g id="node6" class="node">
<title>WD8</title>
<path fill="none" stroke="black" d="M183,-88.5C183,-88.5 213,-88.5 213,-88.5 219,-88.5 225,-94.5 225,-100.5 225,-100.5 225,-112.5 225,-112.5 225,-118.5 219,-124.5 213,-124.5 213,-124.5 183,-124.5 183,-124.5 177,-124.5 171,-118.5 171,-112.5 171,-112.5 171,-100.5 171,-100.5 171,-94.5 177,-88.5 183,-88.5"/>
<text text-anchor="middle" x="198" y="-102.8" font-family="Times,serif" font-size="14.00">WD8</text>
</g>
<!-- WD3&#45;&gt;WD8 -->
<g id="edge8" class="edge">
<title>WD3&#45;&gt;WD8</title>
<path fill="none" stroke="black" stroke-dasharray="5,2" d="M194.01,-176.1C194.7,-164.25 195.63,-148.32 196.41,-134.79"/>
<polygon fill="black" stroke="black" points="199.92,-134.77 197.01,-124.58 192.93,-134.36 199.92,-134.77"/>
<text text-anchor="middle" x="221" y="-146.8" font-family="Times,serif" font-size="14.00">axi.rvalid</text>
</g>
<!-- REFILL -->
<g id="node7" class="node">
<title>REFILL</title>
<path fill="none" stroke="black" d="M237,-0.5C237,-0.5 275,-0.5 275,-0.5 281,-0.5 287,-6.5 287,-12.5 287,-12.5 287,-24.5 287,-24.5 287,-30.5 281,-36.5 275,-36.5 275,-36.5 237,-36.5 237,-36.5 231,-36.5 225,-30.5 225,-24.5 225,-24.5 225,-12.5 225,-12.5 225,-6.5 231,-0.5 237,-0.5"/>
<text text-anchor="middle" x="256" y="-14.8" font-family="Times,serif" font-size="14.00">REFILL</text>
</g>
<!-- WD8&#45;&gt;REFILL -->
<g id="edge9" class="edge">
<title>WD8&#45;&gt;REFILL</title>
<path fill="none" stroke="black" d="M198.68,-88.4C199.26,-73.75 200,-55 200,-55 200,-55 209.31,-49.1 220.34,-42.11"/>
<polygon fill="black" stroke="black" points="222.41,-44.94 228.98,-36.63 218.66,-39.02 222.41,-44.94"/>
<text text-anchor="middle" x="250" y="-58.8" font-family="Times,serif" font-size="14.00">sync with dwState</text>
</g>
<!-- REFILL&#45;&gt;IDLE -->
<g id="edge10" class="edge">
<title>REFILL&#45;&gt;IDLE</title>
<path fill="none" stroke="black" d="M277.23,-36.63C288.48,-45.7 300,-55 300,-55 300,-55 314,-105.5 314,-105.5 314,-493.5 314,-493.5 314,-493.5 314,-493.5 248.26,-554.19 210.28,-589.25"/>
<polygon fill="black" stroke="black" points="207.6,-586.95 202.63,-596.31 212.35,-592.1 207.6,-586.95"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 8.8 KiB

View File

@ -1,7 +0,0 @@
.idea/
obj/
*.a
*.o
bin.lds
convert
compile_commands.json

View File

@ -1,69 +0,0 @@
CROSS_COMPILE ?= mipsel-linux-gnu-
CC = ${CROSS_COMPILE}gcc
LD = ${CROSS_COMPILE}ld
OBJCOPY = ${CROSS_COMPILE}objcopy
OBJDUMP = ${CROSS_COMPILE}objdump
AR = ${CROSS_COMPILE}ar
CFLAGS = -O3 -fno-pic -mno-branch-likely -mno-abicalls -msoft-float -fno-builtin -mno-shared -mips1 -EL -nostdinc -nostdlib
OBJ_DIR = obj
USER_DIR = src
USER_OBJ_DIR = obj/user
USER_SRC = $(wildcard $(USER_DIR)/*.S) $(wildcard $(USER_DIR)/*.c)
USER_OBJ := $(patsubst $(USER_DIR)/%.S, $(USER_OBJ_DIR)/%.o, $(USER_SRC))
USER_OBJ := $(patsubst $(USER_DIR)/%.c, $(USER_OBJ_DIR)/%.o, $(USER_OBJ))
TINY_C_DIR = lib
TINY_C_OBJ_DIR = obj/tinyc
TINY_C_SRC = $(wildcard $(TINY_C_DIR)/*.S) $(wildcard $(TINY_C_DIR)/*.c)
TINY_C_OBJ := $(patsubst $(TINY_C_DIR)/%.S, $(TINY_C_OBJ_DIR)/%.o, $(TINY_C_SRC))
TINY_C_OBJ := $(patsubst $(TINY_C_DIR)/%.c, $(TINY_C_OBJ_DIR)/%.o, $(TINY_C_OBJ))
TINY_C_TARGET = $(TINY_C_OBJ_DIR)/libtinyc.a
default: all
%.o : %.S
$(CC) -c -I include $(CFLAGS) -o $@ $<
%.o : %.c
$(CC) -c -I include $(CFLAGS) -o $@ $<
$(TINY_C_TARGET): $(TINY_C_OBJ)
$(AR) -cr $@ $^
bin.lds: bin.lds.S
$(CC) -EL -E -P -o $@ $<
main.elf: start.o bin.lds $(TINY_C_TARGET) $(USER_OBJ)
$(LD) -g -EL -T bin.lds start.o $(USER_OBJ) $(TINY_C_TARGET) -o $(OBJ_DIR)/$@
$(OBJDUMP) -alD $(OBJ_DIR)/$@ > $(OBJ_DIR)/test.s
axi_ram.bin: main.elf
$(OBJCOPY) -O binary -j .text -j .data $(OBJ_DIR)/$< $(OBJ_DIR)/$@
all: env convert axi_ram.bin
./convert axi_ram.bin $(OBJ_DIR)/
convert: convert.c
clang -o convert convert.c
env:
mkdir -p $(USER_OBJ_DIR)
mkdir -p $(TINY_C_OBJ_DIR)
clean:
rm -f *.o *.bin *.elf *.a testbin *.s *.vlog *.coe *.data *.mif
rm -f bin.lds convert
rm -rf obj
help:
@echo "####################################################################"
@echo "### help for compiling our awesome project ###"
@echo "####################################################################"
@echo "### options: ###"
@echo "### make : get compiled result, which is saved in ./obj ###"
@echo "### make clean: remove *.o, *.a, and ./obj ###"
@echo "### make help : show help information ###"
@echo "####################################################################"

View File

@ -1,54 +0,0 @@
ENTRY(_init)
OUTPUT("main.elf")
OUTPUT_ARCH("mips:isa32r2")
OUTPUT_FORMAT("elf32-tradlittlemips")
PROVIDE(MEM_SIZE = 0x88000000);
SECTIONS
{
/* SPI-FLASH mapped to bfc0_0000 */
. = 0x80000000;
.text : {
*(.text.init)
. = 0x380;
*(.text.exception)
. = 0x1000;
_text_ebase_begin = .;
*(.text.ebase)
_text_ebase_end = .;
. = ALIGN(0x1000);
_text_code_begin = .;
*(.text)
_text_code_end = .;
}
/* . = 0x807F0000; */
.data : {
*(.rodata*)
*(.data)
_gp = ALIGN(16) + 0x7ff0;
*(.got.plt) *(.got)
*(.sdata) *(.sdata.*) *(.lit8) *(.lit4)
. = ALIGN(16);
}
.bss : {
_sbss = .;
*(.bss)
*(COMMON)
. = ALIGN(4);
_ebss = .;
}
. = ALIGN(0x1000);
_heap = . ;
_stack = MEM_SIZE - 4;
/DISCARD/ : {
*(.MIPS.abiflags)
}
}

View File

@ -1,84 +0,0 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void binary_out(FILE* out,unsigned char* mem)
{
char tmp;
unsigned char num[8];
num[0] = 1;
num[1] = 2;
num[2] = 4;
num[3] = 8;
num[4] = 16;
num[5] = 32;
num[6] = 64;
num[7] = 128;
for(int i=3;i>=0;i--)
{
for(int j=7;j>=0;j--)
{
if( (mem[i] & num[j] ) != 0)
tmp = '1';
else
tmp = '0';
fprintf(out,"%c",tmp);
}
}
fprintf(out,"\n");
return;
}
int main(int argc, char** argv)
{
FILE *in;
FILE *out;
if(argc < 3){
fprintf(stderr, "Usage: convert main.bin main.data directory\n");
return 1;
}
char str_bin[256];
char str_coe[256], str_mif[256];
strncpy(str_bin, argv[2], 256);
strncpy(str_coe, argv[2], 256);
strncpy(str_mif, argv[2], 256);
strncat(str_bin, argv[1], 256);
strncat(str_coe, "axi_ram.coe", 256);
strncat(str_mif, "axi_ram.mif", 256);
//printf("%s\n%s\n%s\n%s\n%s\n%s\n", str_bin, str_data, str_inst_coe, str_inst_mif, str_data_coe, str_data_mif);
int i,j,k;
unsigned char mem[32];
in = fopen(str_bin, "rb");
out = fopen(str_coe,"w");
fprintf(out, "memory_initialization_radix = 16;\n");
fprintf(out, "memory_initialization_vector =\n");
while(!feof(in)) {
if(fread(mem,1,4,in)!=4) {
fprintf(out, "%02x%02x%02x%02x\n", mem[3], mem[2], mem[1], mem[0]);
break;
}
fprintf(out, "%02x%02x%02x%02x\n", mem[3], mem[2], mem[1],mem[0]);
}
fclose(in);
fclose(out);
in = fopen(str_bin, "rb");
out = fopen(str_mif,"w");
while(!feof(in)) {
if(fread(mem,1,4,in)!=4) {
binary_out(out,mem);
break;
}
binary_out(out,mem);
}
fclose(in);
fclose(out);
return 0;
}

View File

@ -1,254 +0,0 @@
/* $OpenBSD: asm.h,v 1.2 1998/03/16 09:03:02 pefo Exp $ */
/*
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Ralph Campbell.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* Copyright (C) 1989 Digital Equipment Corporation.
* Permission to use, copy, modify, and distribute this software and
* its documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appears in all copies.
* Digital Equipment Corporation makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*/
#ifndef _MIPS_ASM_H
#define _MIPS_ASM_H
#include <asm/regdef.h>
#ifndef ABICALLS
#define ABICALLS .abicalls
#endif
#if defined(ABICALLS) && !defined(_KERNEL)
ABICALLS
#endif
#define RCSID(x)
/*
* Define how to access unaligned data word
*/
#if defined(__MIPSEL__)
#define LWLO lwl
#define LWHI lwr
#define SWLO swl
#define SWHI swr
#else
#if defined(__MIPSEB__)
#define LWLO lwr
#define LWHI lwl
#define SWLO swr
#define SWHI swl
#else
#error "__MIPSEL__ or __MIPSEB__ must be defined"
#endif
#endif
/*
* Code for setting gp reg if abicalls are used.
*/
#if defined(ABICALLS) && !defined(_KERNEL)
#define ABISETUP \
.set noreorder; \
.cpload t9; \
.set reorder;
#else
#define ABISETUP
#endif
/*
* Define -pg profile entry code.
*/
#if defined(GPROF) || defined(PROF)
#define MCOUNT \
subu sp, sp, 32; \
.cprestore 16; \
sw ra, 28(sp); \
sw gp, 24(sp); \
.set noat; \
.set noreorder; \
move AT, ra; \
jal _mcount; \
subu sp, sp, 8; \
lw ra, 28(sp); \
addu sp, sp, 32; \
.set reorder; \
.set at;
#else
#define MCOUNT
#endif
/*
* LEAF(x)
*
* Declare a leaf routine.
*/
#define LEAF(x) \
.align 3; \
.globl x; \
.ent x, 0; \
x: ; \
.frame sp, 0, ra; \
ABISETUP \
MCOUNT
#define ALEAF(x) \
.globl x; \
x:
/*
* NLEAF(x)
*
* Declare a non-profiled leaf routine.
*/
#define NLEAF(x) \
.align 3; \
.globl x; \
.ent x, 0; \
x: ; \
.frame sp, 0, ra; \
ABISETUP
/*
* NON_LEAF(x)
*
* Declare a non-leaf routine (a routine that makes other C calls).
*/
#define NON_LEAF(x, fsize, retpc) \
.align 3; \
.globl x; \
.ent x, 0; \
x: ; \
.frame sp, fsize, retpc; \
ABISETUP \
MCOUNT
/*
* NNON_LEAF(x)
*
* Declare a non-profiled non-leaf routine
* (a routine that makes other C calls).
*/
#define NNON_LEAF(x, fsize, retpc) \
.align 3; \
.globl x; \
.ent x, 0; \
x: ; \
.frame sp, fsize, retpc \
ABISETUP
/*
* END(x)
*
* Mark end of a procedure.
*/
#define END(x) \
.end x
/*
* Macros to panic and printf from assembly language.
*/
#define PANIC(msg) \
la a0, 9f; \
jal panic; \
MSG(msg)
#define PRINTF(msg) \
la a0, 9f; \
jal printf; \
MSG(msg)
#define MSG(msg) \
.rdata; \
9: .asciiz msg; \
.text
#define ASMSTR(str) \
.asciiz str; \
.align 3
#if (_MIPS_SZPTR == 32)
#define PTR_ADD add
#define PTR_ADDU addu
#define PTR_ADDI addi
#define PTR_ADDIU addiu
#define PTR_SUB sub
#define PTR_SUBU subu
#define PTR_L lw
#define PTR_S sw
#define PTR_LA la
#define PTR_LI li
#define PTR_SLL sll
#define PTR_SLLV sllv
#define PTR_SRL srl
#define PTR_SRLV srlv
#define PTR_SRA sra
#define PTR_SRAV srav
#define PTR_SCALESHIFT 2
#define PTR .word
#define PTRSIZE 4
#define PTRLOG 2
#endif
#if (_MIPS_SZPTR == 64)
#define PTR_ADD dadd
#define PTR_ADDU daddu
#define PTR_ADDI daddi
#define PTR_ADDIU daddiu
#define PTR_SUB dsub
#define PTR_SUBU dsubu
#define PTR_L ld
#define PTR_S sd
#define PTR_LA dla
#define PTR_LI dli
#define PTR_SLL dsll
#define PTR_SLLV dsllv
#define PTR_SRL dsrl
#define PTR_SRLV dsrlv
#define PTR_SRA dsra
#define PTR_SRAV dsrav
#define PTR_SCALESHIFT 3
#define PTR .dword
#define PTRSIZE 8
#define PTRLOG 3
#endif
#endif /* !_MIPS_ASM_H */

File diff suppressed because it is too large Load Diff

View File

@ -1,113 +0,0 @@
/* $OpenBSD: regdef.h,v 1.3 1999/01/27 04:46:06 imp Exp $ */
/*
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Ralph Campbell. This file is derived from the MIPS RISC
* Architecture book by Gerry Kane.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)regdef.h 8.1 (Berkeley) 6/10/93
*/
#ifndef _MIPS_REGDEF_H_
#define _MIPS_REGDEF_H_
#define zero $0 /* always zero */
#define AT $at /* assembler temp */
#define v0 $2 /* return value */
#define v1 $3
#define a0 $4 /* argument registers */
#define a1 $5
#define a2 $6
#define a3 $7
#define t0 $8 /* temp registers (not saved across subroutine calls) */
#define t1 $9
#define t2 $10
#define t3 $11
#define t4 $12
#define t5 $13
#define t6 $14
#define t7 $15
#define s0 $16 /* saved across subroutine calls (callee saved) */
#define s1 $17
#define s2 $18
#define s3 $19
#define s4 $20
#define s5 $21
#define s6 $22
#define s7 $23
#define t8 $24 /* two more temp registers */
#define t9 $25
#define k0 $26 /* kernel temporary */
#define k1 $27
#define gp $28 /* global pointer */
#define sp $29 /* stack pointer */
#define s8 $30 /* one more callee saved */
#define ra $31 /* return address */
#define fp $30
#define c0_index $0
#define c0_random $1
#define c0_entrylo0 $2
#define c0_entrylo1 $3
#define c0_conf $3
#define c0_context $4
#define c0_pagemask $5
#define c0_wired $6
#define c0_info $7
#define c0_badvaddr $8
#define c0_count $9
#define c0_entryhi $10
#define c0_compare $11
#define c0_status $12
#define c0_cause $13
#define c0_epc $14
#define c0_prid $15
#define c0_config $16
#define c0_lladdr $17
#define c0_watchlo $18
#define c0_watchhi $19
#define c0_xcontext $20
#define c0_framemask $21
#define c0_diagnostic $22
#define c0_debug $23
#define c0_depc $24
#define c0_performance $25
#define c0_ecc $26
#define c0_cacheerr $27
#define c0_taglo $28
#define c0_taghi $29
#define c0_errorepc $30
#define c0_desave $31
#endif /* !_MIPS_REGDEF_H_ */

View File

@ -1,35 +0,0 @@
//soc confreg
#define CONFREG_CR0 0xbfd00000
#define CONFREG_CR1 0xbfd00004
#define CONFREG_CR2 0xbfd00008
#define CONFREG_CR3 0xbfd0000c
#define CONFREG_CR4 0xbfd00010
#define CONFREG_CR5 0xbfd00014
#define CONFREG_CR6 0xbfd00018
#define CONFREG_CR7 0xbfd0001c
#define UART_ADDR 0xbfe40000
#define LED_ADDR 0xbfd0f000
#define LED_RG0_ADDR 0xbfd0f004
#define LED_RG1_ADDR 0xbfd0f008
#define NUM_ADDR 0xbfd0f010
#define SWITCH_ADDR 0xbfd0f020
#define BTN_KEY_ADDR 0xbfd0f024
#define BTN_STEP_ADDR 0xbfd0f028
#define TIMER_ADDR 0xbfd0e000
#define SOC_LED (* (volatile unsigned *) LED_ADDR )
#define SOC_LED_RG0 (* (volatile unsigned *) LED_RG0_ADDR )
#define SOC_LED_RG1 (* (volatile unsigned *) LED_RG1_ADDR )
#define SOC_NUM (* (volatile unsigned *) NUM_ADDR )
#define SOC_SWITCHE (* (volatile unsigned *) SWITCH_ADDR )
#define SOC_BTN_KEY (* (volatile unsigned *) BTN_KEY_ADDR )
#define SOC_BTN_STEP (* (volatile unsigned *) BTN_STEP_ADDR )
#define SOC_TIMER (* (volatile unsigned *) TIMER_ADDR )
#define write_confreg_cr(num,data) *((volatile int *)(CONFREG_CR0+4*num)) = data
#define read_confreg_cr(num,data) data=*((volatile int *)(CONFREG_CR0+4*num))
#define NOP addu zero, zero, zero
#define LI(reg, imm) \
li reg, imm

View File

@ -1,13 +0,0 @@
#ifndef PROJECT_INCLUDE_TINY_H_
#define PROJECT_INCLUDE_TINY_H_
void WRITESERIAL(char);
char READSERIAL();
unsigned READSERIALWORD();
char* itoa(int num, char* str, int base);
int putchar(char c);
int vsprintf(char* buf, const char* fmt, va_list args);
int printf(const char* fmt, ...);
#endif //PROJECT_INCLUDE_TINY_H_

View File

@ -1,79 +0,0 @@
#include <asm/asm.h>
#include <asm/regdef.h>
#include <cpu_cde.h>
.text
.set noreorder
.set noat
.p2align 2
.global WRITESERIAL
.global READSERIAL
.global READSERIALWORD
WRITESERIAL: // a0
li t1, UART_ADDR
.TESTW:
lb t0, 5(t1) // , LSR
andi t0, t0, 0x20 // , TXRDY
beq t0, zero, .TESTW //
nop
.WSERIAL: //
sb a0, 0(t1) // , DATA
jr ra
nop
READSERIAL: // v0
li t1, UART_ADDR
.TESTR:
lb t0, 5(t1) // , LSR
andi t0, t0, 0x01 // , RXRDY
bne t0, zero, .RSERIAL //
nop
j .TESTR //
nop
.RSERIAL:
lb v0, 0(t1) // , DATA
jr ra
nop
READSERIALWORD:
addiu sp, sp, -0x14 // ra,s0
sw ra, 0x0(sp)
sw s0, 0x4(sp)
sw s1, 0x8(sp)
sw s2, 0xC(sp)
sw s3, 0x10(sp)
jal READSERIAL //
nop
or s0, zero, v0 // s0
jal READSERIAL //
nop
or s1, zero, v0 // s1
jal READSERIAL //
nop
or s2, zero, v0 // s2
jal READSERIAL //
nop
or s3, zero, v0 // s3
andi s0, s0, 0x00FF //
andi s3, s3, 0x00FF
andi s2, s2, 0x00FF
andi s1, s1, 0x00FF
or v0, zero, s3 //
sll v0, v0, 8 //
or v0, v0, s2 //
sll v0, v0, 8 //
or v0, v0, s1 //
sll v0, v0, 8 //
or v0, v0, s0 //
lw ra, 0x0(sp) // ra,s0
lw s0, 0x4(sp)
lw s1, 0x8(sp)
lw s2, 0xC(sp)
lw s3, 0x10(sp)
addiu sp, sp, 0x14
jr ra
nop

View File

@ -1,110 +0,0 @@
#include "tiny.h"
int putchar(char c)
{
WRITESERIAL(c);
return c;
}
char* itoa(int num, char* str, int base)
{
if (num == 0 || base <= 1)
{
str[0] = '0';
str[1] = '\0';
return str;
}
int neg = 0, i = 0;
if (num < 0 && base == 10)
{
neg = 1;
num = -num;
}
while (num != 0)
{
int rem = num % base;
str[i] = (rem > 9) ? (rem - 10) + 'A' : rem + '0';
num /= base;
i++;
}
if (neg == 1)
{
str[i++] = '-';
str[i] = '\0';
}
else
str[i] = '\0';
i--;
int start = 0;
while (start < i)
{
char tmp = *(str + i);
*(str + i) = *(str + start);
*(str + start) = tmp;
start++;
i--;
}
return str;
}
int vsprintf(char* buf, const char* fmt, va_list args)
{
char* p;
char tmp[256];
va_list p_next_arg = args;
for (p = buf; *fmt; fmt++)
{
if (*fmt != '%')
{
*p++ = *fmt;
continue;
}
fmt++;
switch (*fmt)
{
case 'x':
// itoa(tmp, *((int *)p_next_arg));
itox(*((int*)p_next_arg), tmp, 16);
strcpy(p, tmp);
p_next_arg += 4;
p += strlen(tmp);
break;
case 'd':
itox(*((int*)p_next_arg), tmp, 10);
strcpy(p, tmp);
p_next_arg += 4;
p += strlen(tmp);
break;
case 's':
strcpy(p, (char*)(*((unsigned*)p_next_arg)));
p += strlen((char*)(*((unsigned*)p_next_arg)));
p_next_arg += 4;
break;
default:
break;
}
}
return (p - buf);
}
int printf(const char* fmt, ...)
{
int i;
char buf[256];
va_list arg = (va_list)((char*)(&fmt) + 4); /*4是参数fmt所占堆栈中的大小*/
i = vsprintf(buf, fmt, arg);
write(buf, i);
return i;
}

View File

@ -1,6 +0,0 @@
#include "soc.h"
int main()
{
return 0;
}

View File

@ -1,6 +0,0 @@
#ifndef PROJECT_SRC_SOC_H_
#define PROJECT_SRC_SOC_H_
#include "cpu_cde.h"
#endif //PROJECT_SRC_SOC_H_

View File

@ -1,39 +0,0 @@
#include <asm/asm.h>
#include <asm/regdef.h>
#include <cpu_cde.h>
.set noreorder
.section .text.init
.globl _init
_init:
lui t2, 0x0040
mtc0 t2, c0_status # turn off timer interrupt
mtc0 zero, c0_cause # clear cause
la sp, _stack # setup stack
la gp, _gp # setup small data
# Copy text to a000_0000 -> 8000_0000
la t0, _text_code_begin
la t1, _text_code_end
li t2, 0xa0000000
or t0, t0, t2
or t1, t1, t2
li t2, 0xbfc00000
or t2, t2, t0
copy:
lw t3, 0(t2)
addiu t2, t2, 4
sw t3, 0(t0)
addiu t0, t0, 4
bne t0, t1, copy
nop
lui k0, %hi(main)
addiu k0, %lo(main)
jr k0
nop
.section .text.exception
_EXCEPTION:
b _EXCEPTION
nop