Added a basic description of the pipeline

This commit is contained in:
Andreas Traber 2016-02-11 15:58:29 +01:00
parent 6f3358adfd
commit a8987b5890
4 changed files with 695 additions and 0 deletions

View file

@ -0,0 +1,44 @@
\chapter{Pipeline}
\label{chap:pipeline}
\rvcore has a fully independent pipeline, meaning that whenever possible data
will propagate through the pipeline and therefor does not suffer from any
unneeded stalls.
The pipeline design is easily extendable to incorporate out-of-order
completion. E.g. it would be possible to complete an instruction that only
needs the EX stage before the WB stage, that is currently blocked waiting for
an rvalid, is ready.
Currently this is not done in \rvcore, but might be added in the future.
Figure~\ref{fig:pipeline} shows the control signals relevant for the pipeline
operation. Running from right to left are the main control signals, the
\signal{ready} signals of each pipeline stage.
Each pipeline stage has two control inputs: an enable and a clear. The enable
activates the pipeline stage and the core moves forward by one instruction. The
clear removes the instruction from the pipeline stage as it is completed.
At every pipeline stage, when the \signal{ready} coming from the stage to the
right is high, but the valid signal of the stage is low, the stage is cleared.
If the valid signal is high, it is enabled.
Going from right to left every stage is independent, no stage depends on the
stage on its left. Going from left to right every stage depends on its right
neighbor and can only continue when it is ready.
This means that in addition that a single stage has to be ready, also the stage
on its right has to be ready to move on.
\begin{figure}[H]
\centering
\includegraphics[width=0.9\textwidth]{./figures/pipeline}
\caption{\rvcore Pipeline.}
\label{fig:pipeline}
\end{figure}
\begin{boxnote}
In contrast to \orion there is no global stall controller any more, instead
every stage manages its own dependencies. The main controller of \rvcore is now
only responsible for control flow operations, i.e. flushing the pipe, branches,
jumps and exceptions.
\end{boxnote}

View file

@ -37,6 +37,7 @@
\input{./content/mac.tex}
\input{./content/aluext.tex}
\input{./content/hwloop.tex}
\input{./content/pipeline.tex}
\input{./content/rf.tex}
\input{./content/csr.tex}
\input{./content/perfcounters.tex}

View file

@ -0,0 +1,641 @@
%TGIF 4.2.5-QPL
state(0,37,100.000,0,0,0,32,1,16,2,2,1,0,0,0,1,1,'Helvetica-Bold',1,97920,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,1,1088,1408,1,0,5760,0).
%
% @(#)$Header$
% %W%
%
unit("1 pixel/pixel").
color_info(66,65535,0,[
"black", 0, 0, 0, 0, 0, 0, 1,
"white", 65535, 65535, 65535, 65535, 65535, 65535, 1,
"#F0F0F0", 61680, 61680, 61680, 61440, 61440, 61440, 1,
"#C8C8C8", 51400, 51400, 51400, 51200, 51200, 51200, 1,
"#505050", 20560, 20560, 20560, 20480, 20480, 20480, 1,
"#282828", 10280, 10280, 10280, 10240, 10240, 10240, 1,
"#FF0000", 65535, 0, 0, 65280, 0, 0, 1,
"#0000FF", 0, 0, 65535, 0, 0, 65280, 1,
"#00FF00", 0, 65535, 0, 0, 65280, 0, 1,
"#009000", 0, 37008, 0, 0, 36864, 0, 1,
"#1F407A", 7967, 16448, 31354, 7936, 16384, 31232, 1,
"#3C5A0F", 15420, 23130, 3855, 15360, 23040, 3840, 1,
"#0069B4", 0, 26985, 46260, 0, 26880, 46080, 1,
"#71791C", 29041, 31097, 7196, 28928, 30976, 7168, 1,
"#91056A", 37265, 1285, 27242, 37120, 1280, 27136, 1,
"#6F6F6E", 28527, 28527, 28270, 28416, 28416, 28160, 1,
"#A8322D", 43176, 12850, 11565, 43008, 12800, 11520, 1,
"#007A92", 0, 31354, 37522, 0, 31232, 37376, 1,
"#956013", 38293, 24672, 4883, 38144, 24576, 4864, 1,
"#82BE1E", 33410, 48830, 7710, 33280, 48640, 7680, 1,
"#758fbd", 30069, 36751, 48573, 29952, 36608, 48384, 1,
"#8eab63", 36494, 43947, 25443, 36352, 43776, 25344, 1,
"#6cacd9", 27756, 44204, 55769, 27648, 44032, 55552, 1,
"#b4ba72", 46260, 47802, 29298, 46080, 47616, 29184, 1,
"#c967ae", 51657, 26471, 44718, 51456, 26368, 44544, 1,
"#b8b8b6", 47288, 47288, 46774, 47104, 47104, 46592, 1,
"#d48985", 54484, 35209, 34181, 54272, 35072, 34048, 1,
"#65b9c9", 25957, 47545, 51657, 25856, 47360, 51456, 1,
"#c9a571", 51657, 42405, 29041, 51456, 42240, 28928, 1,
"#bbde81", 48059, 57054, 33153, 47872, 56832, 33024, 1,
"#a5b7d6", 42405, 47031, 54998, 42240, 46848, 54784, 1,
"#b8cc99", 47288, 52428, 39321, 47104, 52224, 39168, 1,
"#a2cbe8", 41634, 52171, 59624, 41472, 51968, 59392, 1,
"#d2d6a5", 53970, 54998, 42405, 53760, 54784, 42240, 1,
"#de9ecc", 57054, 40606, 52428, 56832, 40448, 52224, 1,
"#d4d4d2", 54484, 54484, 53970, 54272, 54272, 53760, 1,
"#e6b5b3", 59110, 46517, 46003, 58880, 46336, 45824, 1,
"#9bd3de", 39835, 54227, 57054, 39680, 54016, 56832, 1,
"#dec6a4", 57054, 50886, 42148, 56832, 50688, 41984, 1,
"#d5ebb0", 54741, 60395, 45232, 54528, 60160, 45056, 1,
"#b3cde3", 46003, 52685, 58339, 45824, 52480, 58112, 1,
"#bae4bc", 47802, 58596, 48316, 47616, 58368, 48128, 1,
"#edf8fb", 60909, 63736, 64507, 60672, 63488, 64256, 1,
"#ffffcc", 65535, 65535, 52428, 65280, 65280, 52224, 1,
"magenta", 65535, 0, 65535, 65535, 0, 65535, 1,
"#f0f9e8", 61680, 63993, 59624, 61440, 63744, 59392, 1,
"#feebe2", 65278, 60395, 58082, 65024, 60160, 57856, 1,
"cyan", 0, 65535, 65535, 0, 65535, 65535, 1,
"#fecc5c", 65278, 52428, 23644, 65024, 52224, 23552, 1,
"yellow", 65535, 65535, 0, 65535, 65535, 0, 1,
"red", 65535, 0, 0, 65535, 0, 0, 1,
"green", 0, 65535, 0, 0, 65535, 0, 1,
"blue", 0, 0, 65535, 0, 0, 65535, 1,
"pink", 65535, 49344, 52171, 65535, 49344, 52171, 1,
"CadetBlue", 24415, 40606, 41120, 24415, 40606, 41120, 1,
"DarkSlateGray", 12079, 20303, 20303, 12079, 20303, 20303, 1,
"#FF4D08", 65535, 19789, 2056, 65280, 19712, 2048, 1,
"#FF6437", 65535, 25700, 14135, 65280, 25600, 14080, 1,
"#7F321B", 32639, 12850, 6939, 32512, 12800, 6912, 1,
"#FF8080", 65535, 32896, 32896, 65280, 32768, 32768, 1,
"#FF8A7E", 65535, 35466, 32382, 65280, 35328, 32256, 1,
"#FFC37C", 65535, 50115, 31868, 65280, 49920, 31744, 1,
"#7F4A0D", 32639, 19018, 3341, 32512, 18944, 3328, 1,
"#DE82FF", 57054, 33410, 65535, 56832, 33280, 65280, 1,
"#EFB8FF", 61423, 47288, 65535, 61184, 47104, 65280, 1,
"#6F367F", 28527, 13878, 32639, 28416, 13824, 32512, 1
]).
script_frac("0.6").
fg_bg_colors('#A8322D','white').
dont_reencode("FFDingbests:ZapfDingbats").
objshadow_info('#c0c0c0',2,2).
rotate_pivot(0,0,0,0).
spline_tightness(1).
page(1,"",1,'').
box('#EFB8FF','',288,256,320,560,1,2,0,288070,0,0,0,0,0,'2',0,[
]).
box('#EFB8FF','',592,256,624,560,1,2,0,288062,0,0,0,0,0,'2',0,[
]).
box('#EFB8FF','',888,400,920,560,1,2,0,288031,0,0,0,0,0,'2',0,[
]).
rcbox('#f0f9e8','',332,256,580,616,1,1,0,0,16,287695,0,0,0,0,'1',0,[
]).
rcbox('#f0f9e8','',636,256,876,616,1,1,0,0,16,287722,0,0,0,0,'1',0,[
]).
rcbox('#f0f9e8','',932,256,1052,616,1,1,0,0,16,287742,0,0,0,0,'1',0,[
]).
rcbox('#f0f9e8','',24,256,276,616,1,1,0,0,16,287635,0,0,0,0,'1',0,[
]).
rcbox('#d4d4d2','',24,256,276,616,0,1,1,0,16,287685,0,0,0,0,'1',0,[
]).
poly('black','',2,[
820,280,820,192],1,1,1,286345,0,0,0,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
text('black',816,170,1,1,1,40,17,286346,14,3,0,0,0,0,2,40,17,0,0,"",0,0,0,0,184,'',[
minilines(40,17,0,0,1,0,0,[
mini_line(40,14,3,0,0,0,[
str_block(0,40,14,3,0,-1,0,0,0,[
str_seg('#0069B4','Courier-Bold',1,97920,40,14,3,0,-1,0,0,0,0,0,
"addr")])
])
])]).
text('black',960,170,1,1,1,60,17,286404,14,3,0,0,0,0,2,60,17,0,0,"",0,0,0,0,184,'',[
minilines(60,17,0,0,1,0,0,[
mini_line(60,14,3,0,0,0,[
str_block(0,60,14,3,0,-1,0,0,0,[
str_seg('#0069B4','Courier-Bold',1,97920,60,14,3,0,-1,0,0,0,0,0,
"rvalid")])
])
])]).
text('black',872,170,1,1,1,50,17,286468,14,3,0,0,0,0,2,50,17,0,0,"",0,0,0,0,184,'',[
minilines(50,17,0,0,1,0,0,[
mini_line(50,14,3,0,0,0,[
str_block(0,50,14,3,0,-1,0,0,0,[
str_seg('#0069B4','Courier-Bold',1,97920,50,14,3,0,-1,0,0,0,0,0,
"grant")])
])
])]).
rcbox('#0069B4','',784,136,1024,192,0,1,1,0,16,286710,0,0,0,0,'1',0,[
]).
text('black',888,142,1,1,1,127,23,286718,18,5,0,0,0,0,2,127,23,0,0,"",0,0,0,0,160,'',[
minilines(127,23,0,0,1,0,0,[
mini_line(127,18,5,0,0,0,[
str_block(0,127,18,5,0,-1,0,0,0,[
str_seg('#0069B4','Helvetica-Bold',1,115200,127,18,5,0,-1,0,0,0,0,0,
"Data Interface")])
])
])]).
box('black','',12,224,1064,664,0,1,1,286736,0,0,0,0,0,'1',0,[
]).
text('black',184,170,1,1,1,40,17,286355,14,3,0,0,0,0,2,40,17,0,0,"",0,0,0,0,184,'',[
minilines(40,17,0,0,1,0,0,[
mini_line(40,14,3,0,0,0,[
str_block(0,40,14,3,0,-1,0,0,0,[
str_seg('#0069B4','Courier-Bold',1,97920,40,14,3,0,-1,0,0,0,0,0,
"addr")])
])
])]).
text('black',120,170,1,1,1,60,17,286569,14,3,0,0,0,0,2,60,17,0,0,"",0,0,0,0,184,'',[
minilines(60,17,0,0,1,0,0,[
mini_line(60,14,3,0,0,0,[
str_block(0,60,14,3,0,-1,0,0,0,[
str_seg('#0069B4','Courier-Bold',1,97920,60,14,3,0,-1,0,0,0,0,0,
"rvalid")])
])
])]).
rcbox('#0069B4','',56,136,264,192,0,1,1,0,16,286711,0,0,0,0,'1',0,[
]).
text('black',160,142,1,1,1,181,23,286715,18,5,0,0,0,0,2,181,23,0,0,"",0,0,0,0,160,'',[
minilines(181,23,0,0,1,0,0,[
mini_line(181,18,5,0,0,0,[
str_block(0,181,18,5,0,-1,0,0,0,[
str_seg('#0069B4','Helvetica-Bold',1,115200,181,18,5,0,-1,0,0,0,0,0,
"Instruction Interface")])
])
])]).
box('#6F367F','',288,256,320,560,0,2,1,283037,0,0,0,0,0,'2',0,[
]).
text('black',294,415,2,0,1,20,35,283038,14,3,0,0,0,0,2,20,34,0,0,"",0,1,0,0,429,'',[
294,415,294,415,314,449,1000,0,0,1022.73,0,4,293,414,315,450],[
minilines(20,34,0,0,0,0,0,[
mini_line(20,14,3,0,0,0,[
str_block(0,20,14,3,0,-1,0,0,0,[
str_seg('black','Courier-Bold',1,97920,20,14,3,0,-1,0,0,0,0,0,
"IF")])
]),
mini_line(20,14,3,0,0,0,[
str_block(0,20,14,3,0,-1,0,0,0,[
str_seg('black','Courier-Bold',1,97920,20,14,3,0,-1,0,0,0,0,0,
"ID")])
])
])]).
box('#6F367F','',592,256,624,560,0,2,1,283031,0,0,0,0,0,'2',0,[
]).
text('black',598,415,2,0,1,20,34,283032,14,3,0,0,0,0,2,20,34,0,0,"",0,0,0,0,429,'',[
minilines(20,34,0,0,0,0,0,[
mini_line(20,14,3,0,0,0,[
str_block(0,20,14,3,0,-1,0,0,0,[
str_seg('black','Courier-Bold',1,97920,20,14,3,0,-1,0,0,0,0,0,
"ID")])
]),
mini_line(20,14,3,0,0,0,[
str_block(0,20,14,3,0,0,0,0,0,[
str_seg('black','Courier-Bold',1,97920,20,14,3,0,0,0,0,0,0,0,
"EX")])
])
])]).
box('#6F367F','',888,400,920,560,0,2,1,283042,0,0,0,0,0,'2',0,[
]).
text('black',894,415,2,0,1,20,34,283043,14,3,0,0,0,0,2,20,34,0,0,"",0,0,0,0,429,'',[
minilines(20,34,0,0,0,0,0,[
mini_line(20,14,3,0,0,0,[
str_block(0,20,14,3,0,0,0,0,0,[
str_seg('black','Courier-Bold',1,97920,20,14,3,0,0,0,0,0,0,0,
"EX")])
]),
mini_line(20,14,3,0,0,0,[
str_block(0,20,14,3,0,-1,0,0,0,[
str_seg('black','Courier-Bold',1,97920,20,14,3,0,-1,0,0,0,0,0,
"WB")])
])
])]).
poly('black','',2,[
172,280,172,192],1,1,1,287533,0,0,0,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
poly('black','',2,[
116,192,116,280],1,1,1,287631,0,0,0,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
rcbox('#d4d4d2','',332,256,580,616,0,1,1,0,16,287693,0,0,0,0,'1',0,[
]).
rcbox('#d4d4d2','',636,256,876,616,0,1,1,0,16,287738,0,0,0,0,'1',0,[
]).
rcbox('#d4d4d2','',932,256,1052,616,0,1,1,0,16,287749,0,0,0,0,'1',0,[
]).
poly('#6F367F','',3,[
296,560,304,548,312,560],0,2,1,288021,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('#6F367F','',3,[
600,560,608,548,616,560],0,2,1,288025,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('#6F367F','',3,[
896,560,904,548,912,560],0,2,1,288028,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
text('#6F367F',376,554,1,1,1,80,17,288303,14,3,0,0,0,0,-65534,80,17,0,0,"",0,0,0,0,568,'',[
minilines(80,17,0,0,1,0,0,[
mini_line(80,14,3,0,0,0,[
str_block(0,80,14,3,0,0,0,0,0,[
str_seg('black','Courier-Bold',1,97920,80,14,3,0,0,0,0,0,0,0,
"id_ready")])
])
])]).
text('#6F367F',680,554,1,1,1,80,17,288352,14,3,0,0,0,0,-65534,80,17,0,0,"",0,0,0,0,568,'',[
minilines(80,17,0,0,1,0,0,[
mini_line(80,14,3,0,0,0,[
str_block(0,80,14,3,0,0,0,0,0,[
str_seg('black','Courier-Bold',1,97920,80,14,3,0,0,0,0,0,0,0,
"ex_ready")])
])
])]).
text('#6F367F',980,554,1,1,1,80,17,288361,14,3,0,0,0,0,-65534,80,17,0,0,"",0,0,0,0,568,'',[
minilines(80,17,0,0,1,0,0,[
mini_line(80,14,3,0,0,0,[
str_block(0,80,14,3,0,0,0,0,0,[
str_seg('black','Courier-Bold',1,97920,80,14,3,0,0,0,0,0,0,0,
"wb_ready")])
])
])]).
poly('black','',3,[
496,384,496,560,472,560],1,2,1,288369,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('black','',2,[
728,576,472,576],1,2,1,288370,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
text('#6F367F',456,410,1,1,1,60,17,288372,14,3,0,0,0,0,-65534,60,17,0,0,"",0,0,0,0,424,'',[
minilines(60,17,0,0,1,0,0,[
mini_line(60,14,3,0,0,0,[
str_block(0,60,14,3,0,-1,0,0,0,[
str_seg('black','Courier-Bold',1,97920,60,14,3,0,-1,0,0,0,0,0,
"!stall")])
])
])]).
text('#6F367F',744,402,1,1,1,70,17,288380,14,3,0,0,0,0,-65534,70,17,0,0,"",0,0,0,0,416,'',[
minilines(70,17,0,0,1,0,0,[
mini_line(70,14,3,0,0,0,[
str_block(0,70,14,3,0,-1,0,0,0,[
str_seg('black','Courier-Bold',1,97920,70,14,3,0,-1,0,0,0,0,0,
"granted")])
])
])]).
text('#6F367F',988,402,1,1,1,60,17,288385,14,3,0,0,0,0,-65534,60,17,0,0,"",0,0,0,0,416,'',[
minilines(60,17,0,0,1,0,0,[
mini_line(60,14,3,0,0,0,[
str_block(0,60,14,3,0,-1,0,0,0,[
str_seg('black','Courier-Bold',1,97920,60,14,3,0,-1,0,0,0,0,0,
"rvalid")])
])
])]).
poly('black','',2,[
1028,576,776,576],1,2,1,288388,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('#3C5A0F','',3,[
424,576,424,608,464,608],0,2,1,288395,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('#3C5A0F','',4,[
448,608,568,608,568,520,592,520],1,2,1,288396,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
text('#6F367F',520,586,1,1,1,80,17,288398,14,3,0,0,0,0,-65534,80,17,0,0,"",0,0,0,0,600,'',[
minilines(80,17,0,0,1,0,0,[
mini_line(80,14,3,0,0,0,[
str_block(0,80,14,3,0,-1,0,0,0,[
str_seg('black','Courier-Bold',1,97920,80,14,3,0,-1,0,0,0,0,0,
"id_valid")])
])
])]).
poly('#3C5A0F','',3,[
728,576,728,608,752,608],0,2,1,288403,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('#3C5A0F','',4,[
736,608,864,608,864,520,888,520],1,2,1,288404,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
text('#6F367F',816,586,1,1,1,80,17,288405,14,3,0,0,0,0,-65534,80,17,0,0,"",0,0,0,0,600,'',[
minilines(80,17,0,0,1,0,0,[
mini_line(80,14,3,0,0,0,[
str_block(0,80,14,3,0,-1,0,0,0,[
str_seg('black','Courier-Bold',1,97920,80,14,3,0,-1,0,0,0,0,0,
"ex_valid")])
])
])]).
poly('#3C5A0F','',3,[
40,568,40,608,168,608],0,2,1,288407,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('#3C5A0F','',4,[
160,608,256,608,256,520,288,520],1,2,1,288408,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
text('#6F367F',208,586,1,1,1,80,17,288409,14,3,0,0,0,0,-65534,80,17,0,0,"",0,0,0,0,600,'',[
minilines(80,17,0,0,1,0,0,[
mini_line(80,14,3,0,0,0,[
str_block(0,80,14,3,0,-1,0,0,0,[
str_seg('black','Courier-Bold',1,97920,80,14,3,0,-1,0,0,0,0,0,
"if_valid")])
])
])]).
text('#6F367F',80,546,1,1,1,80,17,288418,14,3,0,0,0,0,-65534,80,17,0,0,"",0,0,0,0,560,'',[
minilines(80,17,0,0,1,0,0,[
mini_line(80,14,3,0,0,0,[
str_block(0,80,14,3,0,0,0,0,0,[
str_seg('black','Courier-Bold',1,97920,80,14,3,0,0,0,0,0,0,0,
"if_ready")])
])
])]).
rcbox('#bbde81','',80,280,208,432,1,2,0,0,10,288422,0,0,0,0,'2',0,[
]).
poly('#009000','',3,[
136,432,144,420,152,432],0,2,1,288423,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
text('black',144,296,2,1,1,101,58,288424,24,5,0,0,0,0,2,101,58,0,0,"",0,0,0,0,320,'',[
minilines(101,58,0,0,1,0,0,[
mini_line(101,24,5,0,0,0,[
str_block(0,101,24,5,0,-2,0,0,0,[
str_seg('black','Helvetica-Bold',1,138240,101,24,5,0,-2,0,0,0,0,0,
"Prefetch")])
]),
mini_line(75,24,5,0,0,0,[
str_block(0,75,24,5,0,-1,0,0,0,[
str_seg('black','Helvetica-Bold',1,138240,75,24,5,0,-1,0,0,0,0,0,
"Buffer")])
])
])]).
rcbox('#009000','',80,280,208,432,0,2,1,0,10,288425,0,0,0,0,'2',0,[
]).
text('#6F367F',152,458,1,1,1,50,17,288428,14,3,0,0,0,0,-65534,50,17,0,0,"",0,0,0,0,472,'',[
minilines(50,17,0,0,1,0,0,[
mini_line(50,14,3,0,0,0,[
str_block(0,50,14,3,0,-1,0,0,0,[
str_seg('black','Courier-Bold',1,97920,50,14,3,0,-1,0,0,0,0,0,
"valid")])
])
])]).
rcbox('#b8cc99','',432,328,560,384,1,2,1,0,10,288430,0,0,0,0,'2',0,[
]).
rcbox('#3C5A0F','',432,328,560,384,0,2,1,0,10,288431,0,0,0,0,'2',0,[
]).
text('black',496,337,2,1,1,104,46,288432,18,5,0,0,0,0,2,104,46,0,0,"",0,0,0,0,355,'',[
minilines(104,46,0,0,1,0,0,[
mini_line(104,18,5,0,0,0,[
str_block(0,104,18,5,0,-1,0,0,0,[
str_seg('black','Helvetica-Bold',1,115200,104,18,5,0,-1,0,0,0,0,0,
"Forwarding")])
]),
mini_line(67,18,5,0,0,0,[
str_block(0,67,18,5,0,-1,0,0,0,[
str_seg('black','Helvetica-Bold',1,115200,67,18,5,0,-1,0,0,0,0,0,
"Control")])
])
])]).
poly('black','',2,[
964,192,964,280],1,1,1,288438,0,0,0,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
rcbox('#a5b7d6','',768,280,1040,384,1,2,0,0,10,287905,0,0,0,0,'2',0,[
]).
rcbox('#1F407A','',768,280,1040,384,0,2,1,0,10,286743,0,0,0,0,'2',0,[
]).
text('black',824,288,1,1,1,51,29,286745,24,5,0,0,0,0,2,51,29,0,0,"",0,0,0,0,312,'',[
minilines(51,29,0,0,1,0,0,[
mini_line(51,24,5,0,0,0,[
str_block(0,51,24,5,0,-2,0,0,0,[
str_seg('black','Helvetica-Bold',1,138240,51,24,5,0,-2,0,0,0,0,0,
"LSU")])
])
])]).
poly('black','',2,[
904,280,904,384],0,2,1,288448,0,0,5,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('black','',2,[
868,192,868,280],1,1,1,288459,0,0,0,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
text('black',896,508,1,1,1,10,20,288462,16,4,0,0,0,0,-65534,10,20,0,0,"",0,0,0,0,524,'',[
minilines(10,20,0,0,1,0,0,[
mini_line(10,16,4,0,0,0,[
str_block(0,10,16,4,0,-1,0,0,0,[
str_seg('black','Helvetica-Bold',1,97920,10,16,4,0,-1,0,0,0,0,0,
"E")])
])
])]).
text('black',600,508,1,1,1,10,20,288494,16,4,0,0,0,0,-65534,10,20,0,0,"",0,0,0,0,524,'',[
minilines(10,20,0,0,1,0,0,[
mini_line(10,16,4,0,0,0,[
str_block(0,10,16,4,0,-1,0,0,0,[
str_seg('black','Helvetica-Bold',1,97920,10,16,4,0,-1,0,0,0,0,0,
"E")])
])
])]).
text('black',296,508,1,1,1,10,20,288498,16,4,0,0,0,0,-65534,10,20,0,0,"",0,0,0,0,524,'',[
minilines(10,20,0,0,1,0,0,[
mini_line(10,16,4,0,0,0,[
str_block(0,10,16,4,0,-1,0,0,0,[
str_seg('black','Helvetica-Bold',1,97920,10,16,4,0,-1,0,0,0,0,0,
"E")])
])
])]).
group([
arc('black','',0,2,1,0,744,552,760,568,760,552,760,584,0,32,32,5760,11520,288353,0,0,10,4,0,0,0,'2','10','4',0,[
]),
poly('black','',4,[
760,552,776,552,776,584,760,584],0,2,1,288354,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
])
],
288516,0,0,[
]).
poly('black','',3,[
744,568,728,568,728,576],0,2,1,288522,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('black','',3,[
792,384,792,560,776,560],1,2,1,288531,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('black','',4,[
1028,384,1028,520,1028,520,1028,576],0,2,1,288539,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
group([
arc('black','',0,2,1,0,440,552,456,568,456,552,456,584,0,32,32,5760,11520,288315,0,0,10,4,0,0,0,'2','10','4',0,[
]),
poly('black','',4,[
456,552,472,552,472,584,456,584],0,2,1,288314,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
])
],
288544,0,0,[
]).
poly('black','',2,[
424,576,160,576],1,2,1,288560,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('black','',3,[
440,568,424,568,424,576],0,2,1,288561,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
group([
arc('black','',0,2,1,0,128,552,144,568,144,552,144,584,0,32,32,5760,11520,288574,0,0,10,4,0,0,0,'2','10','4',0,[
]),
poly('black','',4,[
144,552,160,552,160,584,144,584],0,2,1,288573,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
])
],
288572,0,0,[
]).
poly('black','',3,[
184,432,184,560,160,560],1,2,1,288581,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('black','',2,[
128,568,40,568],0,2,1,288588,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
text('black',600,476,1,1,1,12,20,288598,16,4,0,0,0,0,-65534,12,20,0,0,"",0,0,0,0,492,'',[
minilines(12,20,0,0,1,0,0,[
mini_line(12,16,4,0,0,0,[
str_block(0,12,16,4,0,-1,0,0,0,[
str_seg('black','Helvetica-Bold',1,97920,12,16,4,0,-1,0,0,0,0,0,
"C")])
])
])]).
oval('#A8322D','',536,492,544,500,0,2,1,288611,0,0,0,0,0,'2',0,[
]).
group([
arc('#A8322D','',0,2,1,0,544,472,560,488,560,472,560,504,1,32,32,5760,-11520,288605,0,0,10,4,0,0,0,'2','10','4',0,[
]),
poly('#A8322D','',4,[
560,472,544,472,544,504,560,504],0,2,1,288604,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
])
],
288603,0,0,[
]).
poly('#A8322D','',3,[
512,576,512,480,544,480],0,2,1,288629,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('#3C5A0F','',4,[
568,520,528,520,528,496,536,496],0,2,1,288632,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('#A8322D','',2,[
576,488,592,488],0,2,1,288639,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
oval('#A8322D','',832,492,840,500,0,2,1,288653,0,0,0,0,0,'2',0,[
]).
group([
arc('#A8322D','',0,2,1,0,840,472,856,488,856,472,856,504,1,32,32,5760,-11520,288656,0,0,10,4,0,0,0,'2','10','4',0,[
]),
poly('#A8322D','',4,[
856,472,840,472,840,504,856,504],0,2,1,288655,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
])
],
288654,0,0,[
]).
poly('#A8322D','',3,[
808,576,808,480,840,480],0,2,1,288657,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('#A8322D','',2,[
872,488,888,488],0,2,1,288658,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('#3C5A0F','',4,[
864,520,824,520,824,496,832,496],0,2,1,288668,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
oval('#A8322D','',232,492,240,500,0,2,1,288675,0,0,0,0,0,'2',0,[
]).
group([
arc('#A8322D','',0,2,1,0,240,472,256,488,256,472,256,504,1,32,32,5760,-11520,288678,0,0,10,4,0,0,0,'2','10','4',0,[
]),
poly('#A8322D','',4,[
256,472,240,472,240,504,256,504],0,2,1,288677,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
])
],
288676,0,0,[
]).
poly('#A8322D','',3,[
208,576,208,480,240,480],0,2,1,288679,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('#A8322D','',2,[
272,488,288,488],0,2,1,288680,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
poly('#3C5A0F','',4,[
256,520,224,520,224,496,232,496],0,2,1,288682,0,0,0,0,0,0,0,'2',0,0,
"0","",[
0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[
]).
text('black',296,476,1,1,1,12,20,288685,16,4,0,0,0,0,-65534,12,20,0,0,"",0,0,0,0,492,'',[
minilines(12,20,0,0,1,0,0,[
mini_line(12,16,4,0,0,0,[
str_block(0,12,16,4,0,-1,0,0,0,[
str_seg('black','Helvetica-Bold',1,97920,12,16,4,0,-1,0,0,0,0,0,
"C")])
])
])]).
text('black',896,476,1,1,1,12,20,288687,16,4,0,0,0,0,-65534,12,20,0,0,"",0,0,0,0,492,'',[
minilines(12,20,0,0,1,0,0,[
mini_line(12,16,4,0,0,0,[
str_block(0,12,16,4,0,-1,0,0,0,[
str_seg('black','Helvetica-Bold',1,97920,12,16,4,0,-1,0,0,0,0,0,
"C")])
])
])]).

View file

@ -55,6 +55,8 @@
\usepackage{enumitem}
\usepackage{tcolorbox}
\usepackage{pdflscape}
@ -115,3 +117,10 @@
\textbf{Operation:} \texttt{#2}%
}
\newenvironment{boxnote}%
{%
\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black,title=Note]%
}%
{%
\end{tcolorbox}%
}%