Add a basic datasheet for RI5CY

Not very detailed yet, needs a lot of work still
This commit is contained in:
Andreas Traber 2015-09-09 18:35:07 +02:00
parent b347299f31
commit 79bce5b31b
12 changed files with 1740 additions and 0 deletions

97
docs/datasheet/Makefile Normal file
View file

@ -0,0 +1,97 @@
ROOT_DIR = .
CONTENT_SRC = content
MAIN_SRC = datasheet
FIG_DIR = figures
FIG_RAW_DIR = figures_raw
# Get only the path to the Tgif source files.
TGIF_SRCS = $(wildcard $(ROOT_DIR)/$(FIG_RAW_DIR)/*.obj)
TGIF_SRCS_NAMES = $(basename $(TGIF_SRCS))
# Get only the path to the Tgif destination files.
TGIF_DEST = $(wildcard $(ROOT_DIR)/$(FIG_DIR)/*.obj)
TGIF_DEST_NAMES = $(basename $(TGIF_SRCS))
# Derive the file names for the resulting EPS and PDF file names for
# the TGIF sources.
TGIF_OUTP_NAMES = $(addprefix $(ROOT_DIR)/$(FIG_DIR)/, $(notdir $(TGIF_SRCS_NAMES)))
TGIF_OUTP_EPS_NAMES = $(addsuffix .eps, $(TGIF_OUTP_NAMES))
TGIF_OUTP_PDF_NAMES = $(addsuffix .pdf, $(TGIF_OUTP_NAMES))
######################################################################
##### #
##### Main Targets #
##### #
######################################################################
do: pdf
all: figures pdf
make -B pdf
make -B pdf
pdf: $(MAIN_SRC).pdf
%.pdf: %.tex $(CONTENT_SRC) preamble/preamble.tex
pdflatex $(MAIN_SRC).tex
clean: clean-figures
@echo "***** Cleaning the LaTeX directory structure."
@rm -rf $(ROOT_DIR)/*.acr $(ROOT_DIR)/*.alg $(ROOT_DIR)/*.bbl
@rm -rf $(ROOT_DIR)/*.blg $(ROOT_DIR)/*.glg $(ROOT_DIR)/*.gls
@rm -rf $(ROOT_DIR)/*.aux $(ROOT_DIR)/*.glo $(ROOT_DIR)/*.ist
@rm -rf $(ROOT_DIR)/*.lof $(ROOT_DIR)/*.log $(ROOT_DIR)/*.lot
@rm -rf $(ROOT_DIR)/*.toc $(ROOT_DIR)/*.acn $(ROOT_DIR)/*.out
@rm -rf $(ROOT_DIR)/*.tex~ $(ROOT_DIR)/*.tex.backup
@rm -rf $(ROOT_DIR)/*.fdb_latexmk $(ROOT_DIR)/*.fls
@rm -rf $(ROOT_DIR)/Makefile~ $(ROOT_DIR)/pso.conv-*
@rm -rf $(ROOT_DIR)/auto
@rm -rf $(ROOT_DIR)/content/*.tex~ $(ROOT_DIR)/content/*.aux
@rm -rf $(ROOT_DIR)/content/*.log $(ROOT_DIR)/content/auto
@rm -rf $(ROOT_DIR)/content/*.tex.backup
@rm -rf $(ROOT_DIR)/content/*.fdb_latexmk $(ROOT_DIR)/content/*.fls
@rm -rf $(ROOT_DIR)/glossaries/*.tex~ $(ROOT_DIR)/glossaries/auto
@rm -rf $(ROOT_DIR)/preamble/auto $(ROOT_DIR)/preamble/*.tex~
@rm -rf $(ROOT_DIR)/preamble/*.log
@rm -rf $(ROOT_DIR)/bib/auto $(ROOT_DIR)/bib/*.bib~
@rm -rf $(ROOT_DIR)/bib/*.bib.backup
@rm -rf $(ROOT_DIR)/*.mtc* $(ROOT_DIR)/*.maf
######################################################################
##### #
##### Sub Targets #
##### #
######################################################################
figures: tgif_figures
tgif_figures: $(TGIF_OUTP_PDF_NAMES)
$(TGIF_OUTP_PDF_NAMES): $(ROOT_DIR)/$(FIG_DIR)/%.pdf : $(ROOT_DIR)/$(FIG_RAW_DIR)/%.obj
@echo "*****"
@echo "***** Printing Tgif figure:"
@echo "***************************"
@echo "***** $(ROOT_DIR)/$(FIG_RAW_DIR)/$*.eps"
@tgif -print -epsi -color -quiet $(ROOT_DIR)/$(FIG_RAW_DIR)/$*.obj
@echo "*****"
@echo "***** Converting Tgif EPS to PDF:"
@echo "*********************************"
@echo "***** $(ROOT_DIR)/$(FIG_RAW_DIR)/$*.eps --> $(ROOT_DIR)/$(FIG_RAW_DIR)/$*.pdf"
@epstopdf $(ROOT_DIR)/$(FIG_RAW_DIR)/$*.eps
@echo "*****"
@echo "***** Moving EPS and PDF figures"
@echo "********************************"
@echo "***** $(ROOT_DIR)/$(FIG_RAW_DIR)/$*.eps --> $(ROOT_DIR)/$(FIG_DIR)/$*.eps"
@echo "***** $(ROOT_DIR)/$(FIG_RAW_DIR)/$*.pdf --> $(ROOT_DIR)/$(FIG_DIR)/$*.pdf"
-@mv $(ROOT_DIR)/$(FIG_RAW_DIR)/$*.eps $(ROOT_DIR)/$(FIG_DIR)/
-@mv $(ROOT_DIR)/$(FIG_RAW_DIR)/$*.pdf $(ROOT_DIR)/$(FIG_DIR)/
@echo "*****"
clean-tgif-figures:
-@rm -f $(TGIF_OUTP_EPS_NAMES) $(TGIF_OUTP_PDF_NAMES)
clean-figures: clean-tgif-figures

View file

@ -0,0 +1,7 @@
\chapter{Control and Status Registers}
\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.

View file

@ -0,0 +1,37 @@
\chapter{Instruction Fetch}
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.
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.
\begin{table}[H]
\caption{Instruction Fetch Signals}
\label{tab:instr_signals}
\begin{tabularx}{\textwidth}{@{}llX@{}} \toprule
\textbf{Signal} & \textbf{Direction} & \textbf{Description} \\ \toprule
\signal{instr\_req\_o} & \textbf{output} & Request ready, must stay high until \signal{instr\_gnt\_i} is high for one cycle \\ \hline
\signal{instr\_addr\_o[31:0]} & \textbf{output} & Address \\ \hline
\signal{instr\_rdata\_i[31:0]} & \textbf{input} & Data read from memory \\ \hline
\signal{instr\_rvalid\_i} & \textbf{input} & \signal{instr\_rdata\_i} is valid now for this cycle. When \signal{instr\_rvalid\_i} is high, another request can be sent. \\ \hline
\signal{instr\_gnt\_i} & \textbf{input} & The instruction cache accepted the request. The \signal{instr\_addr\_o} may be change in the next cylce. \\ \bottomrule
\end{tabularx}
\end{table}
\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.

View file

@ -0,0 +1,126 @@
\chapter{Load-Store-Unit (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.
Table~\ref{tab:lsu_signals} describes the signals that are used by the LSU.
\begin{table}[H]
\caption{LSU Signals}
\label{tab:lsu_signals}
\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
\end{tabularx}
\end{table}
\section{Misaligned Accesses}
The LSU is able to perform misaligned accesses, meaning accesses that are not
aligned on natural word boundaries. However it needs to perform two separate
word-aligned accesses internally.
This means that at least two cycles are needed for misaligned loads and stores.
\section{Post-Increment Load and Stores}
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.
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.
\section{Protocol}
\label{sec:lsu_protocol}
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
\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
\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.
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.
\begin{figure}[H]
\centering
\begin{tikztimingtable}
[timing/d/background/.style={fill=white},
timing/lslope=0.1,
xscale=3]
clk & 13{C} \\
data\_addr\_o & UUU 4D{Address} UU UU UU \\
data\_wdata\_o & UUU 4D{WData} UU UU UU \\
data\_req\_o & LLL HH HH LL LL LL \\
data\_gnt\_i & LLL LL HH LL LL LL \\
data\_rvalid\_i & LLL LL LL HH LL LL \\
data\_rdata\_i & UUU UU UU 2D{RData} UU UU \\
data\_we\_o & UUU 4D{WE} UU UU UU \\
data\_be\_o & UUU 4D{BE} UU UU UU \\
\end{tikztimingtable}
\caption{Basic Memory Transaction}
\label{fig:lsu_trans_basic}
\end{figure}
\begin{figure}[H]
\centering
\begin{tikztimingtable}
[timing/d/background/.style={fill=white},
timing/lslope=0.1,
xscale=3]
clk & 13{C} \\
data\_addr\_o & U 2D{Addr1} 2D{Addr2} UU UU UU UU \\
data\_wdata\_o & U 2D{WData1} 2D{Wdata2} UU UU UU UU \\
data\_req\_o & L HH HH LL LL LL LL \\
data\_gnt\_i & L HH HH LL LL LL LL \\
data\_rvalid\_i & L LL HH HH LL LL LL \\
data\_rdata\_i & U UU 2D{RData1} 2D{RData2} UU UU UU\\
data\_we\_o & U 2D{WE1} 2D{WE2} UU UU UU UU \\
data\_be\_o & U 2D{BE1} 2D{BE2} UU UU UU UU \\
\end{tikztimingtable}
\caption{Back to Back Memory Transaction}
\label{fig:lsu_trans_b2b}
\end{figure}
\begin{figure}[H]
\centering
\begin{tikztimingtable}
[timing/d/background/.style={fill=white},
timing/lslope=0.1,
xscale=3]
clk & 13{C} \\
data\_addr\_o & U 6D{Address} UU UU UU \\
data\_wdata\_o & U 6D{WData} UU UU UU \\
data\_req\_o & L HH HH HH LL LL LL \\
data\_gnt\_i & LLL LL HH LL LL LL \\
data\_rvalid\_i & LLL LL LL LL HH UU \\
data\_rdata\_i & UUU UU UU UU 2D{RData} UU \\
data\_we\_o & U 6D{WE} UU UU UU \\
data\_be\_o & U 6D{BE} UU UU UU \\
\end{tikztimingtable}
\caption{Slow Answer Memory Transaction}
\label{fig:lsu_trans_slow}
\end{figure}

View file

@ -0,0 +1,6 @@
\chapter{Multiplier}
\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.
Divisions and multiplications that return the upper half of the result are not
supported.

View file

@ -0,0 +1,15 @@
\chapter{Overview}
\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.
Figure~\ref{fig:ri5cy_overview} shows a block diagram of the core.
\begin{figure}[H]
\centering
\includegraphics[width=0.9\textwidth]{./figures/ri5cy_overview}
\caption{\rvcore Overview.}
\label{fig:ri5cy_overview}
\end{figure}

View file

@ -0,0 +1,132 @@
\chapter{Performance Counters}
\label{chap:perf_count}
Performance Counters in \orion are placed inside the Special-Purpose Registers
and can be accessed with \instr{l.mfspr} and \instr{l.mtspr}.
Figure~\ref{fig:spr_addr} shows the SPR address format and
Table~\ref{tab:pc_spr_addr} shows the respective addresses for configuration and
access to the performance counters.
\begin{table}[H]
\caption{PC SPR Addresses}
\label{tab:pc_spr_addr}
\centering\begin{tabularx}{\textwidth}{@{}ccccX@{}} \toprule
\textbf{Group \#} & \textbf{Reg \#} & Reg Name & Access & Description\\ \toprule
7 & 0 - 31 & PCCR0-PCCR31 & R/W & Performance Counters Count Registers \\ \hline
7 & 32 & PCER & R/W & Performance Counters Event Register \\ \hline
7 & 33 & PCMR & R/W & Performance Counters Mode Register \\ \bottomrule
\end{tabularx}
\end{table}
\section{Performance Counters Mode Register (PCMR)}
\sprDesc{0x3821}{0x0000\_0003}{PCMR}{
\begin{bytefield}[endianness=big,bitheight=60pt]{32}
\bitheader{31,1,0} \\
\bitbox{30}{ Unused }
\bitbox{1}{\rotatebox{90}{\tiny Saturation }}
\bitbox{1}{\rotatebox{90}{\tiny Global Enable }}
\end{bytefield}
}
The \instr{Global Enable} bit controls all performance counters, i.e. if it is set
to \instr{0}, all performance counters are deactivated.
After reset, the \instr{Global Enable} bit is set.
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)}
\sprDesc{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) }}
\bitbox{14}{ Unused }
\bitbox{1}{\rotatebox{90}{\tiny TCDM CONT }}
\bitbox{1}{\rotatebox{90}{\tiny ST\_EXT\_CYC }}
\bitbox{1}{\rotatebox{90}{\tiny LD\_EXT\_CYC }}
\bitbox{1}{\rotatebox{90}{\tiny ST\_EXT }}
\bitbox{1}{\rotatebox{90}{\tiny LD\_EXT }}
\bitbox{1}{\rotatebox{90}{\tiny DELAY\_SLOT }}
\bitbox{1}{\rotatebox{90}{\tiny BRANCH }}
\bitbox{1}{\rotatebox{90}{\tiny JUMP }}
\bitbox{1}{\rotatebox{90}{\tiny ST }}
\bitbox{1}{\rotatebox{90}{\tiny LD }}
\bitbox{1}{\rotatebox{90}{\tiny WBRANCH\_CYC }}
\bitbox{1}{\rotatebox{90}{\tiny WBRANCH }}
\bitbox{1}{\rotatebox{90}{\tiny IMISS }}
\bitbox{1}{\rotatebox{90}{\tiny JMP\_STALL }}
\bitbox{1}{\rotatebox{90}{\tiny LD\_STALL }}
\bitbox{1}{\rotatebox{90}{\tiny INSTR }}
\bitbox{1}{\rotatebox{90}{\tiny CYCLES }}
\end{bytefield}
}
Each bit in the PCER register controls one performance counter. If the bit is
1, the counter is enabled and starts counting events. If it is 0, the counter
is disabled and its value won't change.
In the ASIC there is only one counter register, thus all counter events are
masked by PCER are ORed together, i.e. if one of the enabled event happens,
the counter will be increased. If multiple non-masked events happen at the same
time, the counter will only be increased by one.
In the FPGA or Simulation version each event has its own counter and can be
accesses separately.
\section{Performance Counters Counter Registers (PCCR0-31)}
\sprDesc{0x3800 - 0x381F}{0x0000\_0000}{PCCR0-31}{
\begin{bytefield}[endianness=big]{32}
\bitheader{31,0} \\
\bitbox{32}{Unsigned integer counter value}
\end{bytefield}
}
PCCR registers support both saturating and wrap-around arithmetic. This is
controlled by the \instr{saturation} bit in PCMR.
\begin{table}[H]
\begin{tabularx}{\textwidth}{@{}llX@{}} \toprule
\textbf{Reg Name} & \textbf{Name} & Description \\ \toprule
\textbf{PCCR0} & \textbf{CYCLES} & Count the number of cycles the core was running \\ \hline
\textbf{PCCR1} & \textbf{INSTR} & Count the number of instructions executed \\ \hline
\textbf{PCCR2} & \textbf{LD\_STALL} & Number of load data hazards \\ \hline
\textbf{PCCR3} & \textbf{JMP\_STALL} & Number of jump register data hazards \\ \hline
\textbf{PCCR4} & \textbf{IMISS} & Cycles waiting for instruction fetches. i.e. the number of instructions wasted due to non-ideal caches \\ \hline
\textbf{PCCR5} & \textbf{WBRANCH} & Number of wrong predicted branches \\ \hline
\textbf{PCCR6} & \textbf{WBRANCH\_CYC} & Cycles wasted due to wrong predicted branches \\ \hline
\textbf{PCCR7} & \textbf{LD} & Number of memory loads executed. Misaligned accesses are counted twice \\ \hline
\textbf{PCCR8} & \textbf{ST} & Number of memory stores executed. Misaligned accesses are counted twice \\ \hline
\textbf{PCCR9} & \textbf{JUMP} & Number of jumps (j, jal, jr, jalr)\\ \hline
\textbf{PCCR10} & \textbf{BRANCH} & Number of branches (bf, bnf), counts taken and not taken branches\\ \hline
\textbf{PCCR11} & \textbf{DELAY\_NOP} & Number of empty (l.nop) delay slots \\ \hline
\textbf{PCCR12} & \textbf{LD\_EXT} & Number of memory loads to EXT executed. Misaligned accesses are counted twice. Every non-TCDM access is considered external \\ \hline
\textbf{PCCR13} & \textbf{ST\_EXT} & Number of memory stores to EXT executed. Misaligned accesses are counted twice. Every non-TCDM access is considered external \\ \hline
\textbf{PCCR14} & \textbf{LD\_EXT\_CYC} & Cycles used for memory loads to EXT. Every non-TCDM access is considered external \\ \hline
\textbf{PCCR15} & \textbf{ST\_EXT\_CYC} & Cycles used for memory stores to EXT. Every non-TCDM access is considered external \\ \hline
\textbf{PCCR16} & \textbf{TCDM\_CONT} & Cycles wasted due to TCDM/log-interconnect contention \\ \hline
\textbf{PCCR31} & \textbf{ALL} & Special Register, a write to this register will set all counters to the supplied value\\ \bottomrule
\end{tabularx}
\end{table}
In the FPGA, RTL simulation and Virtual-Platform there are individual counters
for each event type, i.e. PCCR0-30 each represent a separate register.
To save area in the ASIC, there is only one counter and one counter register.
Accessing PCCR0-30 will access the same counter register in the ASIC.
Reading/writing from/to PCCR31 in the ASIC will access the same register as
PCCR0-30.
Figure~\ref{fig:events} shows how events are first masked with the PCER register
and then ORed together to increase the one performance counter PCCR.
\begin{figure}[H]
\centering
\includegraphics[width=0.5\textwidth]{./figures/events}
\caption{Events and PCCR, PCMR and PCER on the ASIC.}
\label{fig:events}
\end{figure}

View file

@ -0,0 +1,41 @@
\documentclass[%
oneside, % Use the same margins for odd and even pages (cannot
% be used with the 'twoside' option).
% twoside, % Use different margins for odd and even pages (cannot
% be used with the 'oneside' option).
openany, % Open chapters on odd and even pages.
halfparskip, % Create small spaces for new paragraphs but no indents.
]{scrbook}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% %
%%%%% Preamble %
%%%%% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Load the preamble from another file.
\input{./preamble/preamble}
%%%%% Mandatory title page settings.
\title{RI5CY: Datasheet}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% %
%%%%% Document starts here %
%%%%% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\maketitle
\tableofcontents
\input{./content/overview.tex}
\input{./content/if.tex}
\input{./content/lsu.tex}
\input{./content/mac.tex}
\input{./content/csr.tex}
\input{./content/perfcounters.tex}
\end{document}

0
docs/datasheet/figures/.gitignore vendored Normal file
View file

View file

@ -0,0 +1,477 @@
%TGIF 4.2.5-QPL
state(0,37,100.000,0,0,0,64,1,0,2,2,0,0,0,0,1,1,'Courier',0,57600,0,0,0,10,0,0,1,1,0,16,0,0,1,1,1,1,1050,1485,1,0,5760,0).
%
% @(#)$Header$
% %W%
%
unit("1 pixel/pixel").
color_info(51,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,
"#CCCCCC", 52428, 52428, 52428, 52224, 52224, 52224, 1
]).
script_frac("0.6").
fg_bg_colors('black','white').
dont_reencode("FFDingbests:ZapfDingbats").
objshadow_info('#c0c0c0',2,2).
rotate_pivot(0,0,0,0).
spline_tightness(1).
page(1,"",1,'').
poly('black','',2,[
356,160,356,96],0,1,1,257919,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'],[
]).
box('white','',328,160,368,224,1,1,0,257908,0,0,0,0,0,'1',0,[
]).
poly('black','',2,[
440,160,440,96],0,1,1,257755,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,[
396,160,396,96],0,1,1,257753,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'],[
]).
group([
poly('#F0F0F0','',6,[
118,74,90,60,150,52,197,53,225,56,256,64],0,1,0,257805,1,1,0,0,0,0,0,'1',0,0,
"78","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
poly('#F0F0F0','',11,[
366,71,375,64,450,65,481,77,481,93,467,100,450,106,416,114,
399,118,352,116,321,109],0,1,0,257804,1,1,0,0,0,0,0,'1',0,0,
"7fc","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
poly('#F0F0F0','',5,[
321,109,312,122,284,130,225,125,214,111],0,1,0,257803,1,1,0,0,0,0,0,'1',0,0,
"70","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
poly('#F0F0F0','',6,[
214,111,205,123,150,133,87,124,62,110,109,96],0,1,0,257802,1,1,0,0,0,0,0,'1',0,0,
"78","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
poly('#F0F0F0','',5,[
113,96,40,94,31,80,62,68,123,74],0,1,0,257801,1,1,0,0,0,0,0,'1',0,0,
"70","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
poly('#F0F0F0','',6,[
256,64,270,57,298,48,352,48,389,63,366,71],0,1,0,257800,1,1,0,0,0,0,0,'1',0,0,
"78","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
box('#F0F0F0','',118,64,312,111,1,1,0,257799,0,0,0,0,0,'1',0,[
]),
box('#F0F0F0','',109,81,164,101,1,1,0,257798,0,0,0,0,0,'1',0,[
]),
box('#F0F0F0','',307,65,371,110,1,1,0,257797,0,0,0,0,0,'1',0,[
])
],
257796,0,0,[
]).
box('white','',408,160,448,224,1,1,0,257762,0,0,0,0,0,'1',0,[
]).
box('white','',368,160,408,224,1,1,0,257756,0,0,0,0,0,'1',0,[
]).
box('black','',64,160,448,224,0,1,1,257660,0,0,0,0,0,'1',0,[
]).
text('black',256,173,1,1,1,92,38,257662,31,7,0,0,0,0,-65534,92,38,0,0,"",0,0,0,0,204,'',[
minilines(92,38,0,0,1,0,0,[
mini_line(92,31,7,0,0,0,[
str_block(0,92,31,7,0,-2,0,0,0,[
str_seg('black','Helvetica',0,195840,92,31,7,0,-2,0,0,0,0,0,
"PCER")])
])
])]).
text('black',448,145,1,1,1,6,13,257665,11,2,0,0,0,0,-65534,6,13,0,0,"",0,0,0,0,156,'',[
minilines(6,13,0,0,1,0,0,[
mini_line(6,11,2,0,0,0,[
str_block(0,6,11,2,0,-1,0,0,0,[
str_seg('black','Helvetica',0,57600,6,11,2,0,-1,0,0,0,0,0,
"0")])
])
])]).
poly('black','',2,[
408,160,408,224],0,1,1,257669,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,[
368,160,368,224],0,1,1,257670,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',64,145,1,1,1,12,13,257675,11,2,0,0,0,0,-65534,12,13,0,0,"",0,0,0,0,156,'',[
minilines(12,13,0,0,1,0,0,[
mini_line(12,11,2,0,0,0,[
str_block(0,12,11,2,0,-3,0,0,0,[
str_seg('black','Helvetica',0,57600,12,11,2,0,-3,0,0,0,0,0,
"31")])
])
])]).
group([
poly('black','',4,[
416,256,416,240,448,240,448,256],0,1,1,257731,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,[
424,240,424,224],0,1,1,257730,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,[
440,240,440,224],0,1,1,257729,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,[
432,288,432,272],0,1,1,257728,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'],[
]),
arc('black','',0,1,1,0,416,240,432,256,448,256,416,256,1,32,32,0,-11520,257727,0,0,8,3,0,0,0,'1','8','3',0,[
])
],
257726,0,0,[
]).
group([
poly('black','',4,[
372,256,372,240,404,240,404,256],0,1,1,257749,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,[
380,240,380,224],0,1,1,257748,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,[
396,240,396,224],0,1,1,257747,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,[
388,288,388,272],0,1,1,257746,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'],[
]),
arc('black','',0,1,1,0,372,240,388,256,404,256,372,256,1,32,32,0,-11520,257745,0,0,8,3,0,0,0,'1','8','3',0,[
])
],
257744,0,0,[
]).
poly('black','',2,[
380,240,380,224],0,1,1,257750,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,[
424,240,424,224],0,1,1,257752,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'],[
]).
group([
poly('black','',6,[
119,74,91,60,149,52,196,53,224,56,256,64],0,1,1,257772,1,0,0,0,0,0,0,'1',0,0,
"78","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
poly('black','',11,[
367,71,374,64,449,65,481,77,481,93,467,100,449,106,416,114,
397,118,353,116,321,109],0,1,1,257771,1,0,0,0,0,0,0,'1',0,0,
"7fc","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
poly('black','',5,[
321,109,312,122,284,130,224,125,214,111],0,1,1,257770,1,0,0,0,0,0,0,'1',0,0,
"70","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
poly('black','',6,[
214,111,205,123,149,133,87,124,63,110,110,96],0,1,1,257769,1,0,0,0,0,0,0,'1',0,0,
"78","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
poly('black','',5,[
115,96,41,94,31,80,63,68,124,74],0,1,1,257768,1,0,0,0,0,0,0,'1',0,0,
"70","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
poly('black','',6,[
256,64,270,57,298,48,353,48,388,63,367,71],0,1,1,257767,1,0,0,0,0,0,0,'1',0,0,
"78","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
])
],
257766,0,0,[
]).
text('black',256,71,1,1,1,211,38,257895,31,7,0,0,0,0,-65534,211,38,0,0,"",0,0,0,0,102,'',[
minilines(211,38,0,0,1,0,0,[
mini_line(211,31,7,0,0,0,[
str_block(0,211,31,7,0,-1,0,0,0,[
str_seg('black','Helvetica',0,195840,211,31,7,0,-1,0,0,0,0,0,
"Event Sources")])
])
])]).
poly('black','',2,[
368,160,368,224],0,1,1,257909,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,[
328,160,328,224],0,1,1,257910,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'],[
]).
group([
poly('black','',4,[
332,256,332,240,364,240,364,256],0,1,1,257916,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,[
340,240,340,224],0,1,1,257915,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,[
356,240,356,224],0,1,1,257914,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,[
348,288,348,272],0,1,1,257913,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'],[
]),
arc('black','',0,1,1,0,332,240,348,256,364,256,332,256,1,32,32,0,-11520,257912,0,0,8,3,0,0,0,'1','8','3',0,[
])
],
257911,0,0,[
]).
poly('black','',2,[
340,240,340,224],0,1,1,257917,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,[
388,280,388,303],0,1,1,257970,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,[
440,224,440,160],0,1,1,257990,0,0,1,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,[
396,224,396,160],0,1,1,257994,0,0,1,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,[
356,224,356,160],0,1,1,257996,0,0,1,0,0,0,0,'1',0,0,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]).
group([
poly('black','',2,[
256,352,256,336],0,1,1,258015,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,[
440,300,440,308],0,1,1,258014,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,[
72,300,72,308],0,1,1,258013,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,[
440,300,256,312,72,300],0,1,1,258012,1,0,0,0,0,0,0,'1',0,0,
"4","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
poly('black','',3,[
440,308,440,328,256,336],0,1,1,258011,1,0,0,0,0,0,0,'1',0,0,
"4","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
]),
poly('black','',3,[
72,308,72,328,256,336],0,1,1,258010,1,0,0,0,0,0,0,'1',0,0,
"4","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
])
],
258033,0,0,[
]).
poly('black','',2,[
432,288,432,300],0,1,1,258063,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,[
348,288,348,304],0,1,1,258065,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','',252,252,256,256,1,1,0,258082,0,0,0,0,0,'1',0,[
]).
oval('black','',236,252,240,256,1,1,0,258087,0,0,0,0,0,'1',0,[
]).
oval('black','',220,252,224,256,1,1,0,258088,0,0,0,0,0,'1',0,[
]).
group([
polygon('black','',8,[
224,416,272,416,280,428,288,416,336,416,304,464,256,464,224,416],0,1,1,0,258093,0,0,0,0,0,'1',0,
"00",[
]),
group([
poly('black','',2,[
280,440,280,448],0,1,1,258092,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,[
276,444,284,444],0,1,1,258091,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'],[
])
],
258090,0,0,[
])
],
258089,0,0,[
]).
poly('black','',3,[
64,184,80,192,64,200],0,1,1,258094,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'],[
]).
group([
box('black','',296,496,328,560,0,1,1,258101,0,0,0,0,0,'1',0,[
]),
poly('black','',3,[
308,560,312,552,316,560],0,1,1,258100,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'],[
])
],
258099,0,0,[
]).
poly('black','',3,[
280,464,280,512,296,512],0,1,1,258102,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','',5,[
328,512,360,512,360,400,312,400,312,416],0,1,1,258103,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'],[
]).
text('black',408,594,1,1,1,17,43,258110,14,3,0,0,0,0,-65534,43,17,0,0,"",0,1,0,0,608,'',[
408,594,387,594,430,611,-1.83697e-13,-1000,1000,-1.83697e-13,-104,-66,386,593,431,612],[
minilines(43,17,0,0,1,0,0,[
mini_line(43,14,3,0,0,0,[
str_block(0,43,14,3,0,-1,0,0,0,[
str_seg('black','Helvetica-Bold',1,80640,43,14,3,0,-1,0,0,0,0,0,
"PCCR")])
])
])]).
group([
poly('black','',4,[
232,384,232,368,264,368,264,384],0,1,1,258128,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,[
240,368,240,352],0,1,1,258127,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,368,256,352],0,1,1,258126,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,[
248,416,248,400],0,1,1,258125,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'],[
]),
arc('black','',0,1,1,0,232,368,248,384,264,384,232,384,1,32,32,0,-11520,258124,0,0,8,3,0,0,0,'1','8','3',0,[
])
],
258123,0,0,[
]).
poly('black','',2,[
240,352,192,352],0,1,1,258130,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',212,339,1,1,1,42,11,258131,9,2,0,0,0,0,-65534,42,11,0,0,"",0,0,0,0,348,'',[
minilines(42,11,0,0,1,0,0,[
mini_line(42,9,2,0,0,0,[
str_block(0,42,9,2,0,-2,0,0,0,[
str_seg('black','Courier',0,57600,42,9,2,0,-2,0,0,0,0,0,
"PCMR[0]")])
])
])]).

View file

@ -0,0 +1,695 @@
%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).
%
% @(#)$Header$
% %W%
%
unit("1 pixel/pixel").
color_info(56,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
]).
script_frac("0.6").
fg_bg_colors('#009000','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,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','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,'',[
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,
"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,
"00",[
]).
poly('black','',2,[
592,352,656,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,
"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,
"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,
"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','',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],[
]).
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,
"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,
"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,'',[
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,[
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,
"00",[
]).
poly('black','',2,[
528,352,560,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,
"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,
"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,
"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,
"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,
"00",[
808,592,808,592,824,656,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,
"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,
"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,'',[
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")])
])
])]).
oval('black','',798,366,802,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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,
"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,'',[
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,
"wdata")])
])
])]).
oval('CadetBlue','',478,462,482,466,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','',494,446,498,450,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','',494,622,498,626,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,[
]).
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,
"00",[
]).
poly('black','',2,[
464,488,512,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,
"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,
"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,
"00",[
]).
oval('CadetBlue','',494,502,498,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('black','',462,486,466,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,
"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,
"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,
"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,
"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,
"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,[
]).
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'],[
]).
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'],[
]).
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,'',[
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")])
])
])]).
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,
"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'],[
]).
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,
"00",[
]),
group([
poly('black','',2,[
80,332,80,340],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,
"0","",[
0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[
])
],
286801,0,0,[
])
],
286800,0,0,[
]).
poly('black','',2,[
32,352,64,352],1,1,1,286807,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','',30,350,34,354,1,1,1,286809,0,0,0,0,0,'1',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,
"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,
"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,
"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,[
]).

View file

@ -0,0 +1,107 @@
% Determines the input encoding.
\usepackage[%
utf8,
% latin1
]{inputenc}
% ---------------------------------------------------------------------
% Determines the output encoding.
\usepackage[T1]{fontenc}
% ---------------------------------------------------------------------
% Determines language settings.
\usepackage[%
english % You may change this to 'ngerman' in order to write a
% german report.
]{babel}
% Provides stretchable tables.
\usepackage{tabularx}
% Provides image loading.
\usepackage{graphicx}
% ---------------------------------------------------------------------
% Provides the algorithm environment
\usepackage[ruled,%
linesnumbered]{algorithm2e}
% ---------------------------------------------------------------------
% Provides simple line spacings.
\usepackage{setspace}
% ---------------------------------------------------------------------
% Provides colors in LaTeX.
\usepackage{xcolor}
% ---------------------------------------------------------------------
% Provides nicer tables than the standard tables.
\usepackage{booktabs}
\usepackage{float}
\usepackage{listings}
\usepackage{amsmath}
%\usepackage{caption}
\usepackage{bytefield}
\usepackage{fullpage}
\usepackage{enumitem}
\usepackage{tikz-timing}[2009/05/15]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% %
%%%%% Custom Macros %
%%%%% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Create an inline command for shell commands.
\newcommand{\shell}[1]{\texttt{#1}}
% Create an enviroment for a shell commands.
\newenvironment{shellenv}%
{\VerbatimEnvironment%
\begin{Sbox}\begin{minipage}{0.97\textwidth}\begin{Verbatim}%
}%
{\end{Verbatim}\end{minipage}\end{Sbox}%
\setlength{\fboxsep}{6pt}\shadowbox{\TheSbox}}%
% Create an inline command for files.
\newcommand{\file}[1]{\texttt{#1}}
% Create a command for command parameters.
\newcommand{\parameter}[1]{$<$#1$>$}
\newcommand{\instr}[1]{\texttt{#1}}
\definecolor{lightGray}{RGB}{240,240,240}
\lstnewenvironment{instrenv}{\lstset{backgroundcolor=\color{lightGray},frame=single,basicstyle=\ttfamily}}{}
\newcommand{\orion}{\textsc{Or10n}\xspace}
\newcommand{\riscv}{\mbox{RISC-V}\xspace}
\newcommand{\rvcore}{\textsc{RI5CY}\xspace}
\newcommand{\pulpino}{\textsc{PULPino}\xspace}
\newcommand{\pulp}{\textsc{PULP}\xspace}
\newcommand\signal[1]{{\ttfamily\bfseries #1}}
\newcommand\sprDesc[4]{%
\textbf{SPR Address:} \texttt{#1}\\%
\textbf{Reset Value:} \texttt{#2}\\%
\begin{figure}[H]
\centering
#4
\caption{#3}
\end{figure}}