diff --git a/docs/datasheet/content/aluext.tex b/docs/datasheet/content/aluext.tex new file mode 100644 index 00000000..e67e2a9a --- /dev/null +++ b/docs/datasheet/content/aluext.tex @@ -0,0 +1,2 @@ +\chapter{PULP ALU Extensions} +\label{chap:aluext} diff --git a/docs/datasheet/content/csr.tex b/docs/datasheet/content/csr.tex index 8716dafe..502cd8e3 100644 --- a/docs/datasheet/content/csr.tex +++ b/docs/datasheet/content/csr.tex @@ -1,7 +1,108 @@ \chapter{Control and Status Registers} +\label{chap:csr} -\rvcore does not implement all control and status registers specified in the +\rvcore does not implement all control and status registers specified in the \riscv privileged specifications, but is limited to the registers that were needed for the PULP system. The reason for this is that we wanted to keep the footprint of the core as low as possible and avoid any overhead that we do not explicitely need. + +\begin{landscape} +\begin{table}[H] + \caption{Control and Status Register Map} + \label{tab:csr_map} + \centering\begin{tabularx}{\linewidth}{@{}|cccc|c|l|l|X|@{}} \toprule + \multicolumn{4}{|c|}{\textbf{CSR Address}} & \textbf{Hex} & \textbf{Name} & \textbf{Access} & \textbf{Description} \\ \hline + \textbf{[11:10]} & \textbf{[9:8]} & \textbf{[7:6]} & \textbf{[5:0]} & & & & \\ \toprule + 00 & 11 & 00 & 000000 & 0x300 & MSTATUS & R/W & Machine Status Register \\ \hline + 00 & 11 & 01 & 000000 & 0x340 & MSCRATCH & R/W & Scratch Register for machine trap handlers \\ \hline + 00 & 11 & 01 & 000001 & 0x341 & MEPC & R/W & Machine exception program counter \\ \hline + 00 & 11 & 01 & 000010 & 0x342 & MCAUSE & R/W & Machine trap cause \\ \hline + 01 & 11 & 00 & 0XXXXX & 0x780 - 0x79F & PCCRs & R/W & Performance Counter Counter Registers \\ \hline + 01 & 11 & 10 & 200000 & 0x7A0 & PCER & R/W & Performance Counter Enable Register \\ \hline + 01 & 11 & 10 & 100001 & 0x7A1 & PCMR & R/W & Performance Counter Mode Register \\ \hline + 01 & 11 & 10 & 110XXX & 0x7B0 - 0x7B6 & HWLP & R/W & Hardware Loop Registers \\ \hline + 11 & 11 & 00 & 000000 & 0xF00 & MCPUID & R & CPU description \\ \hline + 11 & 11 & 00 & 000001 & 0xF01 & MIMPID & R & Vendor ID and version number \\ \hline + 11 & 11 & 00 & 010000 & 0xF10 & MHARTID & R & Hardware Thread ID \\ \bottomrule + \end{tabularx} +\end{table} +\end{landscape} + +\section{Register Description} + +\subsection{MSTATUS} +\csrDesc{0x300}{0x0000\_0006}{MSTATUS}{ + \begin{bytefield}[endianness=big,bitheight=60pt]{32} + \bitheader{31,2,1,0} \\ + \bitbox{29}{ Unused } + \bitbox{2}{\rotatebox{90}{\tiny PRV[1:0] }} + \bitbox{1}{\rotatebox{90}{\tiny Interrupt Enable }} + \end{bytefield} +} + +Note that \signal{PRV[1:0]} is statically \signal{2'b11} and cannot be altered (read-only). + + +\subsection{MSCRATCH} +\csrDesc{0x340}{0x0000\_0000}{MSRATCH}{ + \begin{bytefield}[endianness=big]{32} + \bitheader{31,0} \\ + \bitbox{32}{ mscratch } + \end{bytefield} +} + +\subsection{MEPC} +\csrDesc{0x341}{0x0000\_0000}{MEPC}{ + \begin{bytefield}[endianness=big]{32} + \bitheader{31,0} \\ + \bitbox{32}{ mepc } + \end{bytefield} +} + +When an exception is encountered, the current program counter is saved in +\signal{mepc} and the core jumps to the exception address. +When an \instr{eret} instruction is executed, the value from \signal{mepc} +replaces the current program counter. + +\subsection{MCAUSE} +\csrDesc{0x341}{0x0000\_0000}{MCAUSE}{ + \begin{bytefield}[endianness=big,bitheight=60pt]{32} + \bitheader{31,30,4,0} \\ + \bitbox{1}{\rotatebox{90}{\tiny Interrupt }} + \bitbox{27}{ Unused } + \bitbox{5}{\rotatebox{90}{\tiny Exception Code }} + \end{bytefield} +} + +\subsection{MCPUID} +\csrDesc{0xF00}{0x0000\_0100}{MCPUID}{ + \begin{bytefield}[endianness=big,bitheight=60pt]{32} + \bitheader{31,29,26,25,0} \\ + \bitbox{2}{\rotatebox{90}{\tiny Base }} + \bitbox{4}{ 0 } + \bitbox{26}{ Extensions } + \end{bytefield} +} + +\subsection{MIMPID} +\csrDesc{0xF01}{0x0000\_8000}{MIMPID}{ + \begin{bytefield}[endianness=big]{32} + \bitheader{31,16,15,0} \\ + \bitbox{16}{ Implementation } + \bitbox{16}{ Source } + \end{bytefield} +} + +\subsection{MHARTID} +\csrDesc{0xF10}{Defined}{MHARTID}{ + \begin{bytefield}[endianness=big,bitheight=60pt]{32} + \bitheader{31,9,5,4,0} \\ + \bitbox{22}{ Unused } + \bitbox{5}{\rotatebox{90}{\tiny Cluster ID }} + \bitbox{5}{\rotatebox{90}{\tiny Core ID }} + \end{bytefield} +} + +Both \signal{core id} and \signal{cluster id} are set on the top-level module +of the core and are read-only. diff --git a/docs/datasheet/content/debug.tex b/docs/datasheet/content/debug.tex new file mode 100644 index 00000000..3d1cc7b7 --- /dev/null +++ b/docs/datasheet/content/debug.tex @@ -0,0 +1,2 @@ +\chapter{Debug} +\label{chap:debug} diff --git a/docs/datasheet/content/exceptions.tex b/docs/datasheet/content/exceptions.tex new file mode 100644 index 00000000..c3e6eca6 --- /dev/null +++ b/docs/datasheet/content/exceptions.tex @@ -0,0 +1,4 @@ +\chapter{Exceptions and Interrupts} +\label{chap:exceptions} + +\rvcore supports diff --git a/docs/datasheet/content/hwloop.tex b/docs/datasheet/content/hwloop.tex new file mode 100644 index 00000000..df28ee8b --- /dev/null +++ b/docs/datasheet/content/hwloop.tex @@ -0,0 +1,3 @@ +\chapter{PULP Hardware Loop Extensions} +\label{chap:hwloop} + diff --git a/docs/datasheet/content/if.tex b/docs/datasheet/content/if.tex index 792e4e1c..d34cb1d3 100644 --- a/docs/datasheet/content/if.tex +++ b/docs/datasheet/content/if.tex @@ -1,21 +1,25 @@ \chapter{Instruction Fetch} +\label{chap:if} The instruction fetcher of the core is able to supply one instruction to the ID stage per cycle if the instruction cache or the instruction memory is able to -deliver an instruction after one cycle. -The instruction address must be word-aligned. It is not possible to jump to -misaligned memory addresses. +serve one instruction after one cycle. +The instruction address must be half-word-aligned. It is not possible to jump to +instruction addresses that have the LSB bit set. -Branch prediction is used for branches where the branch decision is not yet -known, i.e. if the \instr{l.sf*} instruction precedes the \instr{l.bf} or -\instr{l.bnf} instruction directly. -Branch prediction assumes that backward branches are never taken and forward -branches are always taken. If the branch predicition guessed wrong, one fetched -instruction is wasted. - -Table~\ref{tab:instr_signals} describes the signals that are used by to fetch -instructions. +For optimal performance and timing closure reasons, a prefetcher is used to +fetch instructions. There are two prefetch flavors available: +\begin{itemize} + \item 32-Bit Word prefetcher. It stores the fetched words in a FIFO with three + entries. + \item 128-Bit Cache line prefetcher. It stores one 128-bit wide cache line + plus 32-bit to allow for cross-cache line misaligned instructions. +\end{itemize} +Table~\ref{tab:instr_signals} describes the signals that are used to fetch +instructions. This interface is a simplified version that is used by the +LSU that is described in Chapter~\ref{chap:lsu}. The difference is that no +writes are possible and thus it needs less signals. \begin{table}[H] \caption{Instruction Fetch Signals} @@ -34,4 +38,4 @@ instructions. \section{Protocol} The protocol used to communicate with the instruction cache or the instruction memory is the same as the protocl used by the LSU. See the description of the -LSU in Section~\ref{sec:lsu_protocol} for details about the protocol. +LSU in Chapter~\ref{sec:lsu_protocol} for details about the protocol. diff --git a/docs/datasheet/content/lsu.tex b/docs/datasheet/content/lsu.tex index 9dc209c0..9f8da617 100644 --- a/docs/datasheet/content/lsu.tex +++ b/docs/datasheet/content/lsu.tex @@ -1,4 +1,5 @@ \chapter{Load-Store-Unit (LSU)} +\label{chap:lsu} The LSU of the core takes care of accessing the data memory. Load and stores on words (32 bit), half words (16 bit) and bytes (8 bit) are supported. @@ -12,13 +13,13 @@ Table~\ref{tab:lsu_signals} describes the signals that are used by the LSU. \begin{tabularx}{\textwidth}{@{}llX@{}} \toprule \textbf{Signal} & \textbf{Direction} & \textbf{Description} \\ \toprule \signal{data\_req\_o} & \textbf{output} & Request ready, must stay high until \signal{data\_gnt\_i} is high for one cycle \\ \hline - \signal{data\_addr\_o[31:0]} & \textbf{output} & Address \\ \hline - \signal{data\_we\_o} & \textbf{output} & Write Enable, high if we want to write, low if we want to read \\ \hline - \signal{data\_be\_o[3:0]} & \textbf{output} & Byte Enable, is set for the bytes to write/read \\ \hline - \signal{data\_wdata\_o[31:0]} & \textbf{output} & Data to be written to memory \\ \hline - \signal{data\_rdata\_i[31:0]} & \textbf{input} & Data read from memory \\ \hline - \signal{data\_rvalid\_i} & \textbf{input} & \signal{data\_rdata\_i} is valid. This signal must always be identical to \signal{data\_gnt\_i} delayed by one cycle. \\ \hline - \signal{data\_gnt\_i} & \textbf{input} & The memory accepted the request and will answer in the next cycle with valid rdata \\ \bottomrule + \signal{data\_addr\_o[31:0]} & \textbf{output} & Address, sent together with \signal{data\_req\_o} \\ \hline + \signal{data\_we\_o} & \textbf{output} & Write Enable, high for writes, low for reads, sent together with \signal{data\_req\_o} \\ \hline + \signal{data\_be\_o[3:0]} & \textbf{output} & Byte Enable, is set for the bytes to write/read, sent together with \signal{data\_req\_o} \\ \hline + \signal{data\_wdata\_o[31:0]} & \textbf{output} & Data to be written to memory, sent together with \signal{data\_req\_o} \\ \hline + \signal{data\_rdata\_i[31:0]} & \textbf{input} & Data read from memory, valid when \signal{data\_rvalid\_i} is set \\ \hline + \signal{data\_rvalid\_i} & \textbf{input} & \signal{data\_rdata\_i} is valid. \\ \hline + \signal{data\_gnt\_i} & \textbf{input} & The memory accepted the request, another request can be sent in the next cycle \\ \bottomrule \end{tabularx} \end{table} @@ -29,14 +30,18 @@ word-aligned accesses internally. This means that at least two cycles are needed for misaligned loads and stores. -\section{Post-Increment Load and Stores} +\section{Post-Incrementing Load and Store Instructions} Post-incrementing load and store instructions perform a load/store operation from/to the data memory while at the same time increasing the base address by -the specified offset. +the specified offset. For the memory access the base address without offset is +used. + Post-incrementing load and stores reduce the number of instructions necessary to execute when running in a loop, i.e. the address increment can be embedded in -the post-increment instructions. +the post-increment instructions. Coupled with the hardware loop extension a +significant reduction in the number of instructions necessary to execute small +loops can be achieved. \section{Protocol} @@ -44,22 +49,23 @@ the post-increment instructions. The protocol that is used by the LSU to communicate with a memory works as follows: + The LSU provides a valid address in \signal{data\_addr\_o} and sets \signal{data\_req\_o} high. The memory then answers with a \signal{data\_gnt\_i} set high as soon as it is ready to serve the request. This may happen in the same cycle as the request was sent or any number of cycles later. After a grant -was received, the address may be changed by the LSU without impact. Also the +was received, the address may be changed in the next cycle by the LSU. Also the \signal{data\_wdata\_o}, \signal{data\_we\_o} and \signal{data\_be\_o} signals -may be changed as it is assumed that the memory has already processed that -information. In the case of a read, the memory answers with a +may be changed as it is assumed that the memory has already processed and stored that +information. After the grant, the memory answers with a \signal{data\_rvalid\_i} set high when \signal{data\_rdata\_i} is valid. This may happen one cycle after the grant was received, but may take any number of cycles after the grant was received. -Starting from the cycle when \signal{data\_rvalid\_i} was asserted, another -request may be sent. +Note that \signal{data\_rvalid\_i} must also be set when a write was performed, +although the \signal{data\_rdata\_i} has no meaning in this case. Figure~\ref{fig:lsu_trans_basic}, Figure~\ref{fig:lsu_trans_b2b} and -Figure~\ref{fig:lsu_trans_slow} show timing diagrams of the protocol. +Figure~\ref{fig:lsu_trans_slow} show example timing diagrams of the protocol. \begin{figure}[H] \centering diff --git a/docs/datasheet/content/mac.tex b/docs/datasheet/content/mac.tex index 86889b75..85ddbad6 100644 --- a/docs/datasheet/content/mac.tex +++ b/docs/datasheet/content/mac.tex @@ -1,4 +1,5 @@ -\chapter{Multiplier} +\chapter{Multiply-Accumulate} +\label{chap:mac} \rvcore uses a single-cycle 32 bit lower result multiplier. Only a subset of the standard M extension is implemented, i.e. the \instr{mul} instruction. diff --git a/docs/datasheet/content/overview.tex b/docs/datasheet/content/overview.tex index 285dd4b8..6fe58ca3 100644 --- a/docs/datasheet/content/overview.tex +++ b/docs/datasheet/content/overview.tex @@ -2,8 +2,8 @@ \rvcore is a 4-stage in-order \riscv CPU. The ISA of \rvcore was extended to also support multiple additional instructions including hardware loops, -post-increment load and store instructions and packed-SIMD instructions that -were not part of the standard \riscv ISA. +post-increment load and store instructions and additional ALUinstructions that +are not part of the standard \riscv ISA. Figure~\ref{fig:ri5cy_overview} shows a block diagram of the core. @@ -13,3 +13,35 @@ Figure~\ref{fig:ri5cy_overview} shows a block diagram of the core. \caption{\rvcore Overview.} \label{fig:ri5cy_overview} \end{figure} + + +\section{Supported Instruction Set} + +\rvcore supports the following instructions: + +\begin{itemize} + \item Full support for RV32I Base Integer Instruction Set + \item Full support for RV32C Standard Extension for Compressed Instructions + \item Partial support for RV32M Standard Extension for Integer Multiplication + and Division \\ + Only the \instr{mul} instruction is supported. + \item PULP specific extensions \\ + \begin{itemize} + \item Hardware Loops, see Chapter~\ref{chap:hwloop} + \item ALU extensions, see Chapter~\ref{chap:aluext} + \item Multiply-Accumulate extensions, see Chapter~\ref{chap:mac} + \item Post-Incrementing load and stores, see Chapter~\ref{chap:lsu} + \end{itemize} +\end{itemize} + +\section{ASIC Synthesis} +ASIC synthesis is supported for \rvcore. The whole design is completely +synchronous and uses positive-edge triggered flip-flops, except for the register +file, where there is an option to use latches instead of flip-flops. See +Chapter~\ref{chap:rf} for more details about the register file. The core +occupies an area of about 35~kGE when the latch based register file is used. + +\section{FPGA Synthesis} +FPGA synthesis is supported for \rvcore when the flip-flop based register file +is used. Since latches are not well supported on FPGAs, it is crucial to select +the flip-flop based register file. diff --git a/docs/datasheet/content/perfcounters.tex b/docs/datasheet/content/perfcounters.tex index a6b916d1..858b71cc 100644 --- a/docs/datasheet/content/perfcounters.tex +++ b/docs/datasheet/content/perfcounters.tex @@ -19,9 +19,9 @@ access to the performance counters. \end{table} -\section{Performance Counters Mode Register (PCMR)} +\section{Performance Counter Mode Register (PCMR)} -\sprDesc{0x3821}{0x0000\_0003}{PCMR}{ +\csrDesc{0x3821}{0x0000\_0003}{PCMR}{ \begin{bytefield}[endianness=big,bitheight=60pt]{32} \bitheader{31,1,0} \\ \bitbox{30}{ Unused } @@ -38,9 +38,9 @@ The \instr{Saturation} bit controls saturation behaviour of the performance counters. If it is set, saturating arithmetic is used. After reset, the \instr{Saturation} bit is set. -\section{Performance Counters Event Register (PCER)} +\section{Performance Counter Event Register (PCER)} -\sprDesc{0x3820}{0x0000\_0000}{PCER}{ +\csrDesc{0x3820}{0x0000\_0000}{PCER}{ \begin{bytefield}[endianness=big,bitheight=60pt]{32} \bitheader{31,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0} \\ \bitbox{1}{\rotatebox{90}{\tiny (ALL) }} @@ -78,9 +78,9 @@ In the FPGA or Simulation version each event has its own counter and can be accesses separately. -\section{Performance Counters Counter Registers (PCCR0-31)} +\section{Performance Counter Counter Registers (PCCR0-31)} -\sprDesc{0x3800 - 0x381F}{0x0000\_0000}{PCCR0-31}{ +\csrDesc{0x3800 - 0x381F}{0x0000\_0000}{PCCR0-31}{ \begin{bytefield}[endianness=big]{32} \bitheader{31,0} \\ \bitbox{32}{Unsigned integer counter value} diff --git a/docs/datasheet/content/rf.tex b/docs/datasheet/content/rf.tex new file mode 100644 index 00000000..f7e3bbf3 --- /dev/null +++ b/docs/datasheet/content/rf.tex @@ -0,0 +1,34 @@ +\chapter{Register File} +\label{chap:rf} + +\rvcore has 31 $\times$ 32-bit wide registers which form registers \signal{x1} to +\signal{x31}. Register \signal{x0} is statically bound \signal{0} and can only be +read and not written, it does not contain any sequential logic. + +There are two flavors of register file available: + +\begin{enumerate} + \item Latch-based + \item Flip-flop based +\end{enumerate} + +While the latch-based register file is recommended for ASICs, the flip-flop +based register file is recommended for FPGA synthesis, although both are +compatible with either synthesis target. +Note the flip-flop based register file is significantly larger than the +latch-based register-file for an ASIC implementation. + +\section{Latch-based Register File} +The latch based register file contains manually instantiated clock gating cells +to keep the clock inactive when the latches are not written. + +It is assumed that there is a clock gating cell for the target technology that +is wrapped in a module called \signal{cluster\_clock\_gating} and has the following +ports: +\begin{itemize} + \item \signal{clk\_i}: Clock Input + \item \signal{en\_i}: Clock Enable Input + \item \signal{test\_en\_i}: Test Enable Input (activates the clock even though + \signal{en\_i} is not set) + \item \signal{clk\_o}: Gated Clock Output +\end{itemize} diff --git a/docs/datasheet/datasheet.tex b/docs/datasheet/datasheet.tex index 9fb8fb21..bf8da1a8 100644 --- a/docs/datasheet/datasheet.tex +++ b/docs/datasheet/datasheet.tex @@ -17,7 +17,7 @@ %%%%% Mandatory title page settings. -\title{RI5CY: Datasheet} +\title{RI5CY Core: Datasheet} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% % @@ -34,8 +34,13 @@ \input{./content/if.tex} \input{./content/lsu.tex} \input{./content/mac.tex} +\input{./content/aluext.tex} +\input{./content/hwloop.tex} +\input{./content/rf.tex} \input{./content/csr.tex} \input{./content/perfcounters.tex} +\input{./content/exceptions.tex} +\input{./content/debug.tex} \end{document} diff --git a/docs/datasheet/figures_raw/ri5cy_overview.obj b/docs/datasheet/figures_raw/ri5cy_overview.obj index 9555cd86..5c00f698 100644 --- a/docs/datasheet/figures_raw/ri5cy_overview.obj +++ b/docs/datasheet/figures_raw/ri5cy_overview.obj @@ -1,11 +1,11 @@ %TGIF 4.2.5-QPL -state(0,37,100.000,0,236,2,4,1,9,2,2,1,0,2,0,1,1,'Courier-Bold',1,138240,0,0,0,10,0,1,1,1,0,16,0,0,1,1,1,1,1088,1408,1,0,5760,0). +state(0,37,100.000,0,0,0,8,1,65,2,2,1,0,1,1,0,1,'Courier-Bold',1,138240,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(56,65535,0,[ +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, @@ -61,192 +61,107 @@ color_info(56,65535,0,[ "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 + "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('#009000','white'). +fg_bg_colors('#6F367F','white'). dont_reencode("FFDingbests:ZapfDingbats"). objshadow_info('#c0c0c0',2,2). rotate_pivot(0,0,0,0). spline_tightness(1). page(1,"",1,''). -poly('#009000','',3,[ - 944,432,952,420,960,432],0,1,1,287150,0,2,0,0,0,0,0,'1',0,0, +box('#EFB8FF','',256,256,288,616,1,2,0,288070,0,0,0,0,0,'2',0,[ +]). +box('#EFB8FF','',592,256,624,616,1,2,0,288062,0,0,0,0,0,'2',0,[ +]). +box('#EFB8FF','',888,256,920,616,1,2,0,288031,0,0,0,0,0,'2',0,[ +]). +rcbox('#f0f9e8','',300,256,580,616,1,1,0,0,16,287695,0,0,0,0,'1',0,[ +]). +rcbox('#FFC37C','',344,448,440,576,1,2,0,0,10,288000,0,0,0,0,'2',0,[ +]). +rcbox('#f0f9e8','',636,256,876,616,1,1,0,0,16,287722,0,0,0,0,'1',0,[ +]). +rcbox('#FFC37C','',688,416,784,480,1,2,0,0,10,287972,0,0,0,0,'2',0,[ +]). +rcbox('#FF8A7E','',688,520,784,584,1,2,0,0,10,287963,0,0,0,0,'2',0,[ +]). +rcbox('#FF8A7E','',688,336,784,400,1,2,0,0,10,287944,0,0,0,0,'2',0,[ +]). +rcbox('#f0f9e8','',932,256,1052,616,1,1,0,0,16,287742,0,0,0,0,'1',0,[ +]). +rcbox('#a5b7d6','',960,296,1024,400,1,2,0,0,10,287905,0,0,0,0,'2',0,[ +]). +rcbox('#b8cc99','',344,312,440,368,1,2,1,0,10,287877,0,0,0,0,'2',0,[ +]). +rcbox('#f0f9e8','',24,256,244,616,1,1,0,0,16,287635,0,0,0,0,'1',0,[ +]). +rcbox('#bbde81','',48,280,176,464,1,2,0,0,10,287856,0,0,0,0,'2',0,[ +]). +rcbox('#d4d4d2','',24,256,244,616,0,1,1,0,16,287685,0,0,0,0,'1',0,[ +]). +poly('#7F4A0D','',3,[ + 384,576,392,564,400,576],0,2,1,283046,0,0,0,0,0,0,0,'2',0,0, "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ + 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ ]). -poly('black','',5,[ - 416,488,416,400,120,400,120,368,136,368],1,1,1,286660,0,0,0,0,0,0,0,'1',0,0, - "00","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -box('#91056A','',560,256,592,608,0,2,1,283031,0,0,0,0,0,'2',0,[ -]). -text('black',566,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('#91056A','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('#91056A','Courier-Bold',1,97920,20,14,3,0,0,0,0,0,0,0, - "EX")]) -]) -])]). -box('#91056A','',224,256,256,608,0,2,1,283037,0,0,0,0,0,'2',0,[ -]). -text('black',230,415,2,0,1,20,34,283038,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('#91056A','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('#91056A','Courier-Bold',1,97920,20,14,3,0,-1,0,0,0,0,0, - "ID")]) -]) -])]). -box('#91056A','',856,256,888,608,0,2,1,283042,0,0,0,0,0,'2',0,[ -]). -text('black',862,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('#91056A','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('#91056A','Courier-Bold',1,97920,20,14,3,0,-1,0,0,0,0,0, - "WB")]) -]) -])]). -poly('#009000','',3,[ - 344,576,352,564,360,576],0,1,1,283046,0,2,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',352,424,1,1,1,53,29,283047,24,5,0,0,0,0,2,53,29,0,0,"",0,0,0,0,448,'',[ +text('black',392,456,1,1,1,53,29,283047,24,5,0,0,0,0,2,53,29,0,0,"",0,0,0,0,480,'',[ minilines(53,29,0,0,1,0,0,[ mini_line(53,24,5,0,0,0,[ str_block(0,53,24,5,0,-1,0,0,0,[ -str_seg('#009000','Helvetica-Bold',1,144000,53,24,5,0,-1,0,0,0,0,0, +str_seg('black','Helvetica-Bold',1,144000,53,24,5,0,-1,0,0,0,0,0, "GPR")]) ]) ])]). -rcbox('#758fbd','',656,328,752,424,0,2,1,0,10,283054,0,0,0,0,'2',0,[ -]). -text('black',704,346,1,1,1,52,29,283056,24,5,0,0,0,0,2,52,29,0,0,"",0,0,0,0,370,'',[ -minilines(52,29,0,0,1,0,0,[ -mini_line(52,24,5,0,0,0,[ -str_block(0,52,24,5,0,-2,0,0,0,[ -str_seg('#758fbd','Helvetica-Bold',1,144000,52,24,5,0,-2,0,0,0,0,0, - "ALU")]) -]) -])]). -rcbox('#758fbd','',656,472,752,568,0,2,1,0,10,283062,0,0,0,0,'2',0,[ -]). -text('black',668,483,2,0,1,72,58,283063,24,5,0,0,0,0,2,72,58,0,0,"",0,0,0,0,507,'',[ -minilines(72,58,0,0,0,0,0,[ -mini_line(72,24,5,0,0,0,[ -str_block(0,72,24,5,0,0,0,0,0,[ -str_seg('#758fbd','Helvetica-Bold',1,144000,72,24,5,0,0,0,0,0,0,0, - "MULT")]) -]), -mini_line(59,24,5,0,0,0,[ -str_block(0,59,24,5,0,-1,0,0,0,[ -str_seg('#758fbd','Helvetica-Bold',1,144000,59,24,5,0,-1,0,0,0,0,0, - "MAC")]) -]) -])]). -rcbox('#009000','',920,320,984,432,0,2,1,0,10,283068,0,0,0,0,'2',0,[ -]). -text('black',952,326,1,1,1,51,29,283070,24,5,0,0,0,0,2,51,29,0,0,"",0,0,0,0,350,'',[ -minilines(51,29,0,0,1,0,0,[ -mini_line(51,24,5,0,0,0,[ -str_block(0,51,24,5,0,-1,0,0,0,[ -str_seg('#009000','Helvetica-Bold',1,138240,51,24,5,0,-1,0,0,0,0,0, - "SPR")]) -]) -])]). -poly('#91056A','',3,[ - 868,608,872,597,876,608],0,2,1,286287,0,2,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]). -poly('#91056A','',3,[ - 572,608,576,597,580,608],0,2,1,286289,0,2,0,0,0,0,0,'2',0,0, - "0","",[ - 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ -]). -poly('#91056A','',3,[ - 236,608,240,597,244,608],0,2,1,286290,0,2,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,[ - 108,512,112,504,116,512],0,1,1,286295,0,2,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',112,456,1,1,1,16,15,286296,12,3,0,0,0,0,2,16,15,0,0,"",0,0,0,0,468,'',[ -minilines(16,15,0,0,1,0,0,[ -mini_line(16,12,3,0,0,0,[ -str_block(0,16,12,3,0,0,0,0,0,[ -str_seg('black','Helvetica-Bold',1,69120,16,12,3,0,0,0,0,0,0,0, - "PC")]) -]) -])]). -box('black','',96,448,128,512,0,1,1,286297,0,0,0,0,0,'1',0,[ -]). polygon('black','',5,[ - 512,312,528,328,528,376,512,392,512,312],0,1,1,0,286311,0,0,0,0,0,'1',1, + 544,296,560,312,560,376,544,392,544,296],0,1,1,0,286311,0,0,0,0,0,'1',1, "00",[ ]). poly('black','',2,[ - 592,352,656,352],1,1,1,286322,0,0,0,0,0,0,0,'1',0,0, + 624,352,688,352],1,1,1,286322,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,[ - 592,376,656,376],1,1,1,286323,0,0,0,0,0,0,0,'1',0,0, + 624,384,688,384],1,1,1,286323,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','',3,[ - 640,360,640,488,656,488],1,1,1,286324,0,0,0,0,0,0,0,'1',0,0, + 672,360,672,536,688,536],1,1,1,286324,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','',3,[ - 624,376,624,504,656,504],1,1,1,286325,0,0,0,0,0,0,0,'1',0,0, + 656,384,656,552,688,552],1,1,1,286325,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'],[ ]). -oval('black','',622,374,626,378,1,1,1,286326,0,0,0,0,0,'1',0,[ +oval('black','',654,382,658,386,1,1,1,286326,0,0,0,0,0,'1',0,[ ]). -oval('black','',638,350,642,354,1,1,1,286327,0,0,0,0,0,'1',0,[ -]). -polygon('black','',5,[ - 848,288,864,304,864,336,848,352,848,288],0,1,1,0,286331,0,0,0,1,0,'1',1, - "00",[ - 848,288,848,288,864,352,-1.83697e-13,-1000,1000,-1.83697e-13,-96,-32],[ +oval('black','',670,350,674,354,1,1,1,286327,0,0,0,0,0,'1',0,[ ]). poly('black','',4,[ - 640,360,640,304,768,304,768,256],1,1,1,286341,0,0,0,0,0,0,0,'1',0,0, + 672,360,672,304,808,304,808,288],1,1,1,286341,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,[ - 784,240,784,192],1,1,1,286345,0,0,0,0,0,0,0,'1',0,0, + 820,272,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',784,170,1,1,1,40,17,286346,14,3,0,0,0,0,2,40,17,0,0,"",0,0,0,0,184,'',[ +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,[ @@ -255,77 +170,50 @@ str_seg('#0069B4','Courier-Bold',1,97920,40,14,3,0,-1,0,0,0,0,0, ]) ])]). polygon('black','',5,[ - 136,320,152,336,152,368,136,384,136,320],0,1,1,0,286351,0,0,0,0,0,'1',1, - "00",[ -]). -poly('black','',3,[ - 152,352,168,352,168,192],1,1,1,286352,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',148,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")]) -]) -])]). -polygon('black','',5,[ - 512,408,528,424,528,456,512,472,512,408],0,1,1,0,286360,0,0,0,0,0,'1',1, + 544,400,560,416,560,448,544,464,544,400],0,1,1,0,286360,0,0,0,0,0,'1',1, "00",[ ]). poly('black','',2,[ - 528,352,560,352],1,1,1,286361,0,0,0,0,0,0,0,'1',0,0, + 560,352,592,352],1,1,1,286361,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','',4,[ - 560,376,544,376,544,440,528,440],2,1,1,286362,0,0,0,0,0,0,0,'1',0,0, + 592,384,572,384,572,432,560,432],2,1,1,286362,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,[ - 528,568,560,568],1,1,1,286374,0,0,0,0,0,0,0,'1',0,0, + 560,568,592,568],1,1,1,286374,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','',3,[ - 904,192,904,272,920,272],1,1,1,286380,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,[ - 888,368,920,368],1,1,1,286382,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','',4,[ - 984,352,1000,352,1000,288,1016,288],1,1,1,286383,0,0,0,0,0,0,0,'1',0,0, + 944,192,944,352,960,352],1,1,1,286380,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','',6,[ - 1032,280,1048,280,1048,640,272,640,272,504,304,504],1,1,1,286388,0,0,0,0,0,0,0,'1',0,0, + 1024,352,1040,352,1040,648,312,648,312,504,344,504],1,1,1,286388,0,0,0,0,0,0,0,'1',0,0, "00","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). polygon('black','',5,[ - 808,592,824,608,824,640,808,656,808,592],0,1,1,0,286390,0,0,0,1,0,'1',1, + 840,600,856,616,856,648,840,664,840,600],0,1,1,0,286390,0,0,0,1,0,'1',1, "00",[ - 808,592,808,592,824,656,6.12323e-14,1000,-1000,6.12323e-14,8,-8],[ + 840,600,840,600,856,664,6.12323e-14,1000,-1000,6.12323e-14,8,-8],[ ]). poly('black','',3,[ - 752,504,768,504,768,584],1,1,1,286395,0,0,0,0,0,0,0,'1',0,0, + 784,552,800,552,800,592],1,1,1,286395,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,[ - 800,504,800,584],1,1,1,286396,0,0,0,0,0,0,0,'1',0,0, + 832,504,832,592],1,1,1,286396,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',912,170,1,1,1,50,17,286404,14,3,0,0,0,0,2,50,17,0,0,"",0,0,0,0,184,'',[ +text('black',944,170,1,1,1,50,17,286404,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,[ @@ -333,81 +221,69 @@ str_seg('#0069B4','Courier-Bold',1,97920,50,14,3,0,-1,0,0,0,0,0, "rdata")]) ]) ])]). -oval('black','',798,366,802,370,1,1,1,286407,0,0,0,0,0,'1',0,[ +oval('black','',830,366,834,370,1,1,1,286407,0,0,0,0,0,'1',0,[ ]). poly('black','',5,[ - 784,600,784,624,288,624,288,528,304,528],1,1,1,286409,0,0,0,0,0,0,0,'1',0,0, + 816,608,816,632,328,632,328,528,344,528],1,1,1,286409,0,0,0,0,0,0,0,'1',0,0, "00","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('black','',4,[ - 400,448,448,448,448,352,512,352],1,1,1,286410,0,0,0,0,0,0,0,'1',0,0, + 440,464,480,464,480,352,544,352],1,1,1,286410,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','',4,[ - 400,488,464,488,464,432,512,432],1,1,1,286411,0,0,0,0,0,0,0,'1',0,0, + 440,488,496,488,496,424,544,424],1,1,1,286411,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,[ - 400,552,512,552],1,1,1,286412,0,0,0,0,0,0,0,'1',0,0, + 440,552,544,552],1,1,1,286412,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'],[ ]). -oval('black','',166,350,170,354,1,1,1,286416,0,0,0,0,0,'1',0,[ -]). -rcbox('black','',304,320,400,376,0,2,1,0,10,286419,0,0,0,0,'2',0,[ -]). -text('black',352,329,1,1,1,71,23,286420,18,5,0,0,0,0,2,71,23,0,0,"",0,0,0,0,347,'',[ -minilines(71,23,0,0,1,0,0,[ -mini_line(71,18,5,0,0,0,[ -str_block(0,71,18,5,0,-1,0,0,0,[ -str_seg('black','Helvetica-Bold',1,115200,71,18,5,0,-1,0,0,0,0,0, - "Decode")]) -]) -])]). poly('DarkSlateGray','',2,[ - 400,336,512,336],1,1,1,286429,0,0,0,0,0,0,0,'1',0,0, + 440,336,544,336],1,1,1,286429,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('DarkSlateGray','',4,[ - 400,352,432,352,432,416,512,416],1,1,1,286430,0,0,0,0,0,0,0,'1',0,0, + 440,352,464,352,464,408,544,408],1,1,1,286430,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('CadetBlue','',3,[ - 496,624,496,368,512,368],1,1,1,286450,0,0,0,0,0,0,0,'1',0,0, + 528,632,528,368,544,368],1,1,1,286450,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('CadetBlue','',2,[ - 496,448,512,448],1,1,1,286451,0,0,0,0,0,0,0,'1',0,0, + 528,440,544,440],1,1,1,286451,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('CadetBlue','',2,[ - 496,568,512,568],1,1,1,286452,0,0,0,0,0,0,0,'1',0,0, + 528,568,544,568],1,1,1,286452,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('CadetBlue','',3,[ - 480,640,480,384,512,384],1,1,1,286453,0,0,0,0,0,0,0,'1',0,0, + 512,648,512,384,544,384],1,1,1,286453,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('CadetBlue','',2,[ - 480,464,512,464],1,1,1,286454,0,0,0,0,0,0,0,'1',0,0, + 512,456,544,456],1,1,1,286454,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('CadetBlue','',2,[ - 480,584,512,584],1,1,1,286455,0,0,0,0,0,0,0,'1',0,0, + 512,584,544,584],1,1,1,286455,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',840,170,1,1,1,50,17,286468,14,3,0,0,0,0,2,50,17,0,0,"",0,0,0,0,184,'',[ +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,[ @@ -415,180 +291,79 @@ str_seg('#0069B4','Courier-Bold',1,97920,50,14,3,0,-1,0,0,0,0,0, "wdata")]) ]) ])]). -oval('CadetBlue','',478,462,482,466,1,1,1,286512,0,0,0,0,0,'1',0,[ +oval('CadetBlue','',510,454,514,458,1,1,1,286512,0,0,0,0,0,'1',0,[ ]). -oval('CadetBlue','',478,582,482,586,1,1,1,286513,0,0,0,0,0,'1',0,[ +oval('CadetBlue','',510,582,514,586,1,1,1,286513,0,0,0,0,0,'1',0,[ ]). -oval('CadetBlue','',494,446,498,450,1,1,1,286514,0,0,0,0,0,'1',0,[ +oval('CadetBlue','',526,438,530,442,1,1,1,286514,0,0,0,0,0,'1',0,[ ]). -oval('CadetBlue','',494,566,498,570,1,1,1,286515,0,0,0,0,0,'1',0,[ +oval('CadetBlue','',526,566,530,570,1,1,1,286515,0,0,0,0,0,'1',0,[ ]). -oval('CadetBlue','',494,622,498,626,1,1,1,286517,0,0,0,0,0,'1',0,[ +oval('CadetBlue','',526,630,530,634,1,1,1,286517,0,0,0,0,0,'1',0,[ ]). -oval('CadetBlue','',478,638,482,642,1,1,1,286518,0,0,0,0,0,'1',0,[ +oval('CadetBlue','',510,646,514,650,1,1,1,286518,0,0,0,0,0,'1',0,[ ]). polygon('black','',5,[ - 512,480,528,496,528,512,512,528,512,480],0,1,1,0,286520,0,0,0,0,0,'1',1, + 544,480,560,496,560,512,544,528,544,480],0,1,1,0,286520,0,0,0,0,0,'1',1, "00",[ ]). poly('black','',2,[ - 464,488,512,488],1,1,1,286530,0,0,0,0,0,0,0,'1',0,0, + 496,488,544,488],1,1,1,286530,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('CadetBlue','',2,[ - 496,504,512,504],1,1,1,286531,0,0,0,0,0,0,0,'1',0,0, + 528,504,544,504],1,1,1,286531,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('CadetBlue','',2,[ - 480,520,512,520],1,1,1,286532,0,0,0,0,0,0,0,'1',0,0, + 512,520,544,520],1,1,1,286532,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'],[ ]). polygon('black','',5,[ - 512,544,528,560,528,576,512,592,512,544],0,1,1,0,286537,0,0,0,0,0,'1',1, + 544,544,560,560,560,576,544,592,544,544],0,1,1,0,286537,0,0,0,0,0,'1',1, "00",[ ]). -oval('CadetBlue','',494,502,498,506,1,1,1,286539,0,0,0,0,0,'1',0,[ +oval('CadetBlue','',526,502,530,506,1,1,1,286539,0,0,0,0,0,'1',0,[ ]). -oval('CadetBlue','',478,518,482,522,1,1,1,286540,0,0,0,0,0,'1',0,[ +oval('CadetBlue','',510,518,514,522,1,1,1,286540,0,0,0,0,0,'1',0,[ ]). -oval('black','',462,486,466,490,1,1,1,286541,0,0,0,0,0,'1',0,[ +oval('black','',494,486,498,490,1,1,1,286541,0,0,0,0,0,'1',0,[ ]). poly('black','',4,[ - 592,568,624,568,624,520,656,520],1,1,1,286550,0,0,0,0,0,0,0,'1',0,0, + 624,568,656,568,656,568,688,568],1,1,1,286550,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,[ - 800,368,800,256],1,1,1,286555,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,[ - 800,368,856,368],1,1,1,286559,0,0,0,0,0,0,0,'1',0,0, + 832,368,832,288],1,1,1,286555,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','',3,[ - 752,368,800,368,800,504],0,1,1,286561,0,0,0,0,0,0,0,'1',0,0, + 784,368,832,368,832,504],0,1,1,286561,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','',3,[ - 192,192,192,344,224,344],1,1,1,286566,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',216,170,1,1,1,50,17,286569,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, - "rdata")]) -]) -])]). -poly('black','',3,[ - 168,344,168,480,128,480],1,1,1,286574,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','',3,[ - 32,480,32,272,224,272],1,1,1,286577,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,[ - 256,272,320,272],1,1,1,286578,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'],[ -]). -polygon('black','',5,[ - 320,240,336,256,336,272,320,288,320,240],0,1,1,0,286584,0,0,0,0,0,'1',1, - "00",[ -]). poly('black','',4,[ - 336,264,448,264,448,320,512,320],1,1,1,286587,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'],[ -]). -oval('black','',206,270,210,274,1,1,1,286591,0,0,0,0,0,'1',0,[ -]). -poly('black','',2,[ - 256,344,304,344],1,1,1,286592,0,0,0,0,0,0,0,'1',0,0, + 288,288,480,288,480,320,544,320],1,1,1,286587,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,[ - 64,416,52,416],2,1,1,286598,0,0,0,0,0,0,0,'1',0,0, + 288,344,344,344],1,1,1,286592,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',44,408,1,1,1,13,15,286599,12,3,0,0,0,0,2,13,15,0,0,"",0,0,0,0,420,'',[ -minilines(13,15,0,0,1,0,0,[ -mini_line(13,12,3,0,0,0,[ -str_block(0,13,12,3,0,-1,0,0,0,[ -str_seg('black','Helvetica',0,69120,13,12,3,0,-1,0,0,0,0,0, - "'4'")]) -]) -])]). -group([ -polygon('black','',8,[ - 88,412,64,424,64,404,72,400,64,396,64,376,88,388,88,412],0,1,1,0,286597,0,0,0,0,0,'1',0, - "00",[ -]), -group([ -poly('black','',2,[ - 80,396,80,404],0,1,1,286596,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,[ - 84,400,76,400],0,1,1,286595,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'],[ -]) -], -286594,0,0,[ -]) -], -286624,0,0,[ +oval('DarkSlateGray','',462,390,466,394,1,1,1,286664,0,0,0,0,0,'1',0,[ ]). -poly('black','',2,[ - 88,336,136,336],1,1,1,286629,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'],[ +oval('black','',462,486,466,490,1,1,1,286668,0,0,0,0,0,'1',0,[ ]). -poly('black','',2,[ - 32,384,64,384],1,1,1,286630,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('#0069B4','',784,136,992,192,0,1,1,0,16,286710,0,0,0,0,'1',0,[ ]). -poly('DarkSlateGray','',5,[ - 432,352,432,304,48,304,48,320,64,320],1,1,1,286661,0,0,0,0,0,0,0,'1',0,0, - "00","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ -]). -oval('DarkSlateGray','',430,350,434,354,1,1,1,286664,0,0,0,0,0,'1',0,[ -]). -oval('black','',414,486,418,490,1,1,1,286668,0,0,0,0,0,'1',0,[ -]). -oval('black','',30,382,34,386,1,1,1,286705,0,0,0,0,0,'1',0,[ -]). -rcbox('#0069B4','',752,136,960,192,0,1,1,0,16,286710,0,0,0,0,'1',0,[ -]). -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")]) -]) -])]). -text('black',856,142,1,1,1,127,23,286718,18,5,0,0,0,0,2,127,23,0,0,"",0,0,0,0,160,'',[ +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,[ @@ -597,69 +372,25 @@ str_seg('#0069B4','Helvetica-Bold',1,115200,127,18,5,0,-1,0,0,0,0,0, ]) ])]). poly('black','',4,[ - 560,456,544,456,544,504,528,504],2,1,1,286728,0,0,0,0,0,0,0,'1',0,0, + 592,504,576,504,576,504,560,504],2,1,1,286728,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,[ - 832,456,856,456],0,1,1,286732,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','',4,[ - 888,456,904,456,904,392,920,392],1,1,1,286733,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'],[ -]). -oval('black','',830,454,834,458,1,1,1,286735,0,0,0,0,0,'1',0,[ -]). -box('black','',16,224,1064,656,0,1,1,286736,0,0,0,0,0,'1',0,[ -]). -text('black',32,601,1,0,1,109,38,286739,31,7,0,0,0,0,-65534,109,38,0,0,"",0,0,0,0,632,'',[ -minilines(109,38,0,0,0,0,0,[ -mini_line(109,31,7,0,0,0,[ -str_block(0,109,31,7,0,-3,0,0,0,[ -str_seg('black','Helvetica-Bold',1,195840,109,31,7,0,-3,0,0,0,0,0, - "OR10N")]) -]) -])]). -rcbox('black','',920,248,984,296,0,2,1,0,10,286743,0,0,0,0,'2',0,[ -]). -text('black',952,256,1,1,1,51,29,286745,24,5,0,0,0,0,2,51,29,0,0,"",0,0,0,0,280,'',[ -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,[ - 984,272,1016,272],1,1,1,286751,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'],[ -]). -polygon('black','',5,[ - 1016,256,1032,272,1032,288,1016,304,1016,256],0,1,1,0,286756,0,0,0,0,0,'1',1, - "00",[ -]). -poly('black','',5,[ - 208,272,208,240,272,240,272,256,320,256],1,1,1,286772,0,0,0,0,0,0,0,'1',0,0, - "00","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ +box('black','',12,224,1064,664,0,1,1,286736,0,0,0,0,0,'1',0,[ ]). group([ polygon('black','',8,[ - 88,348,64,360,64,340,72,336,64,332,64,312,88,324,88,348],0,1,1,0,286804,0,0,0,0,0,'1',0, + 208,416,232,428,232,408,224,404,232,400,232,380,208,392,208,416],0,1,1,0,286804,0,0,0,0,0,'1',0, "00",[ ]), group([ poly('black','',2,[ - 80,332,80,340],0,1,1,286803,0,0,0,0,0,0,0,'1',0,0, + 216,400,216,408],0,1,1,286803,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,[ - 84,336,76,336],0,1,1,286802,0,0,0,0,0,0,0,'1',0,0, + 212,404,220,404],0,1,1,286802,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'],[ ]) @@ -669,27 +400,308 @@ poly('black','',2,[ ], 286800,0,0,[ ]). -poly('black','',2,[ - 32,352,64,352],1,1,1,286807,0,0,0,0,0,0,0,'1',0,0, +rcbox('#7F4A0D','',344,448,440,576,0,2,1,0,10,283045,0,0,0,0,'2',0,[ +]). +rcbox('#1F407A','',960,296,1024,400,0,2,1,0,10,286743,0,0,0,0,'2',0,[ +]). +text('black',992,304,1,1,1,51,29,286745,24,5,0,0,0,0,2,51,29,0,0,"",0,0,0,0,328,'',[ +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")]) +]) +])]). +rcbox('#7F321B','',688,336,784,400,0,2,1,0,10,283054,0,0,0,0,'2',0,[ +]). +text('black',736,354,1,1,1,52,29,283056,24,5,0,0,0,0,2,52,29,0,0,"",0,0,0,0,378,'',[ +minilines(52,29,0,0,1,0,0,[ +mini_line(52,24,5,0,0,0,[ +str_block(0,52,24,5,0,-2,0,0,0,[ +str_seg('black','Helvetica-Bold',1,144000,52,24,5,0,-2,0,0,0,0,0, + "ALU")]) +]) +])]). +rcbox('#7F321B','',688,520,784,584,0,2,1,0,10,283062,0,0,0,0,'2',0,[ +]). +text('black',772,539,1,2,1,72,29,283063,24,5,0,0,0,0,2,72,29,0,0,"",0,0,0,0,563,'',[ +minilines(72,29,0,0,2,0,0,[ +mini_line(72,24,5,0,0,0,[ +str_block(0,72,24,5,0,0,0,0,0,[ +str_seg('black','Helvetica-Bold',1,144000,72,24,5,0,0,0,0,0,0,0, + "MULT")]) +]) +])]). +poly('#7F4A0D','',3,[ + 728,480,736,468,744,480],0,2,1,287150,0,0,0,0,0,0,0,'2',0,0, "0","",[ - 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ + 0,10,4,0,'10','4','0'],[0,10,4,0,'10','4','0'],[ ]). -oval('black','',30,350,34,354,1,1,1,286809,0,0,0,0,0,'1',0,[ +rcbox('#7F4A0D','',688,416,784,480,0,2,1,0,10,283068,0,0,0,0,'2',0,[ ]). -poly('black','',4,[ - 88,400,104,400,104,352,136,352],1,1,1,286810,0,0,0,0,0,0,0,'1',0,0, +text('black',736,430,1,1,1,52,29,283070,24,5,0,0,0,0,2,52,29,0,0,"",0,0,0,0,454,'',[ +minilines(52,29,0,0,1,0,0,[ +mini_line(52,24,5,0,0,0,[ +str_block(0,52,24,5,0,-1,0,0,0,[ +str_seg('black','Helvetica-Bold',1,138240,52,24,5,0,-1,0,0,0,0,0, + "CSR")]) +]) +])]). +poly('black','',2,[ + 672,432,688,432],1,1,1,287253,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,[ - 32,480,96,480],0,1,1,287106,0,1,0,0,0,0,0,'1',0,0, + 656,464,688,464],1,1,1,287254,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'],[ +]). +oval('black','',654,462,658,466,1,1,1,287257,0,0,0,0,0,'1',0,[ +]). +oval('black','',670,430,674,434,1,1,1,287258,0,0,0,0,0,'1',0,[ +]). +poly('black','',3,[ + 624,504,864,504,864,192],1,1,1,287272,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','',3,[ - 592,456,832,456,832,192],0,1,1,287124,0,0,0,0,0,0,0,'1',0,0, + 784,448,816,448,816,592],1,1,1,287273,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('#009000','',304,416,400,576,0,2,1,0,10,283045,0,0,0,0,'2',0,[ +text('black',152,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',88,170,1,1,1,50,17,286569,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, + "rdata")]) +]) +])]). +rcbox('#0069B4','',24,136,232,192,0,1,1,0,16,286711,0,0,0,0,'1',0,[ +]). +text('black',128,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','',256,256,288,616,0,2,1,283037,0,0,0,0,0,'2',0,[ +]). +text('black',262,415,2,0,1,20,35,283038,14,3,0,0,0,0,2,20,34,0,0,"",0,1,0,0,429,'',[ + 262,415,262,415,282,449,1000,0,0,1022.73,0,4,261,414,283,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,616,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,256,920,616,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")]) +]) +])]). +group([ +polygon('black','',8,[ + 232,300,208,312,208,292,216,288,208,284,208,264,232,276,232,300],0,1,1,0,287341,0,0,0,0,0,'1',0, + "00",[ +]), +group([ +poly('black','',2,[ + 224,284,224,292],0,1,1,287340,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,[ + 228,288,220,288],0,1,1,287339,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'],[ +]) +], +287338,0,0,[ +]) +], +287337,0,0,[ +]). +group([ +poly('black','',2,[ + 544,304,532,304],2,1,1,287319,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',524,296,1,1,1,13,15,287320,12,3,0,0,0,0,2,13,15,0,0,"",0,0,0,0,308,'',[ +minilines(13,15,0,0,1,0,0,[ +mini_line(13,12,3,0,0,0,[ +str_block(0,13,12,3,0,-1,0,0,0,[ +str_seg('black','Helvetica',0,69120,13,12,3,0,-1,0,0,0,0,0, + "'0'")]) +]) +])]) +], +287352,0,0,[ +]). +poly('black','',2,[ + 208,272,196,272],2,1,1,287358,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',188,264,1,1,1,13,15,287357,12,3,0,0,0,0,2,13,15,0,0,"",0,0,0,0,276,'',[ +minilines(13,15,0,0,1,0,0,[ +mini_line(13,12,3,0,0,0,[ +str_block(0,13,12,3,0,-1,0,0,0,[ +str_seg('black','Helvetica',0,69120,13,12,3,0,-1,0,0,0,0,0, + "'2'")]) +]) +])]). +poly('black','',2,[ + 232,288,256,288],1,1,1,287363,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','',3,[ + 464,488,464,416,232,416],1,1,1,287446,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('#3C5A0F','',344,312,440,368,0,2,1,0,10,286419,0,0,0,0,'2',0,[ +]). +text('black',392,321,1,1,1,78,23,286420,18,5,0,0,0,0,2,78,23,0,0,"",0,0,0,0,339,'',[ +minilines(78,23,0,0,1,0,0,[ +mini_line(78,18,5,0,0,0,[ +str_block(0,78,18,5,0,0,0,0,0,[ +str_seg('black','Helvetica-Bold',1,115200,78,18,5,0,0,0,0,0,0,0, + "Decoder")]) +]) +])]). +poly('black','',2,[ + 464,392,232,392],1,1,1,287500,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'],[ +]). +polygon('black','',5,[ + 208,320,224,336,224,352,208,368,208,320],0,1,1,0,287518,0,0,0,0,0,'1',1, + "00",[ +]). +poly('black','',2,[ + 140,280,140,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,[ + 224,344,256,344],1,1,1,287562,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('#009000','',3,[ + 104,464,112,452,120,464],0,2,1,287566,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',112,296,2,1,1,101,58,287567,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','',48,280,176,464,0,2,1,0,10,287568,0,0,0,0,'2',0,[ +]). +poly('black','',2,[ + 176,328,208,328],1,1,1,287573,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,[ + 176,360,208,360],1,1,1,287574,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,[ + 176,304,208,304],1,1,1,287585,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,[ + 84,192,84,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','',300,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('black','',2,[ + 208,404,176,404],1,1,1,287830,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'],[ +]). +polygon('black','',5,[ + 868,312,884,328,884,344,868,360,868,312],0,1,1,0,287928,0,0,0,1,0,'1',1, + "00",[ + 868,312,868,312,884,360,-1.83697e-13,-1000,1000,-1.83697e-13,-72,-24],[ +]). +poly('#6F367F','',3,[ + 264,616,272,604,280,616],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,616,608,604,616,616],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,616,904,604,912,616],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'],[ ]). diff --git a/docs/datasheet/preamble/preamble.tex b/docs/datasheet/preamble/preamble.tex index e9f21d48..9889aee4 100644 --- a/docs/datasheet/preamble/preamble.tex +++ b/docs/datasheet/preamble/preamble.tex @@ -55,6 +55,8 @@ \usepackage{enumitem} +\usepackage{pdflscape} + \usepackage{tikz-timing}[2009/05/15] @@ -96,8 +98,8 @@ \newcommand\signal[1]{{\ttfamily\bfseries #1}} -\newcommand\sprDesc[4]{% - \textbf{SPR Address:} \texttt{#1}\\% +\newcommand\csrDesc[4]{% + \textbf{CSR Address:} \texttt{#1}\\% \textbf{Reset Value:} \texttt{#2}\\% \begin{figure}[H] \centering