\documentclass{article}
\usepackage{fullpage}

\title{Template Mini-Project Proposal}
\author{Robert Dick}
\date{}

\begin{document}
\maketitle

This document gives an example of the project proposal structure.  The topic
was taken from an actual project in a previous related, but not identical,
course.  Although the structure is appropriate for IDES, the topic is not ideal
for IDES.

\section{Goal}

Enable designers of embedded systems to automatically extract execution and
communication graphs from software implementation for use in developing
high-performance application-specific hardware.

\section{Formal Problem Statement}

Given an application written in ANSI-C, automatically extract a graph in which
nodes represent computation within a thread for a particular duration and edges
indicate the quantities of data communicated among tasks.  The use of dynamic
graph extraction has the benefit of permitting internal loop iterations and
conditional evaluations to approximate those expected in normal use, but it
does imply that the input data set(s) used for execution during extraction are
important.

We plan to instrument the Simics~\cite{magnusson98jun} full-system simulator to
capture data flow among threads, which was recently purchased by Intel.  It
will be necessary to identify context switches, which we will achieve by
extending the simulator with operating system introspection capabilities based
on specific program counter values.

\section{Most Closely Related Work}

There have been projects on automatically generating graphs for debugging and
evaluation of synthesis algorithms~\cite{dick98mar}.  Such synthetic graphs are
not derived from real applications and therefore have major drawbacks for use
in validating design tools and cannot be used to design hardware accelerators
for real applications.

Compilers typically build instruction-level data dependency
graphs~\cite{vallerio02may} of abstraction is far below the proposed task-level
graph and this analysis is static.

Manually constructed graph-based system specifications have been published in
the past~\cite{prakash92dec, hou96mar}.  These specifications required
painstaking manual construction or extraction.

\section{Schedule}

Checkpoint 1: Install Simics, get it simulating multithreaded applications
under a Linux operating system image.

Checkpoint 2: Develop a Simics extension to identify context switches, and
modify memory reads and writes to allow tracking of data flow among threads.

End of course: Develop a graphical display utility to simplify graph browsing
and to analyze multiple multimedia applications.

\bibliographystyle{IEEEtrannames}
\bibliography{template-bib}

\end{document}
