diff --git a/docs/datasheet/content/pipeline.tex b/docs/datasheet/content/pipeline.tex new file mode 100644 index 00000000..0a9f02af --- /dev/null +++ b/docs/datasheet/content/pipeline.tex @@ -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} diff --git a/docs/datasheet/datasheet.tex b/docs/datasheet/datasheet.tex index f36aa660..308cbca1 100644 --- a/docs/datasheet/datasheet.tex +++ b/docs/datasheet/datasheet.tex @@ -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} diff --git a/docs/datasheet/figures_raw/pipeline.obj b/docs/datasheet/figures_raw/pipeline.obj new file mode 100644 index 00000000..a4be00c6 --- /dev/null +++ b/docs/datasheet/figures_raw/pipeline.obj @@ -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")]) +]) +])]). diff --git a/docs/datasheet/preamble/preamble.tex b/docs/datasheet/preamble/preamble.tex index 08b75508..1cfc425c 100644 --- a/docs/datasheet/preamble/preamble.tex +++ b/docs/datasheet/preamble/preamble.tex @@ -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}% +}%