Form team: February 24th (0.5% of project
		grade) 
		
		 Project
		plan: February 29th (4% of project grade) 
		
		 Design
		Overview: March 14th (4% of project grade) 
		
		 Demo #1 -
		Unpipelined design : March 23rd (17.5% of project grade) 
		
		 Demo #2 -
		Pipelined design with Perfect Memory : April 23rd (31% of project
		grade) 
		
		 Demo #3
		(final demo) - Pipelined Multi-cycle Memory with Optimizations: May
		11th (32% of project grade) 
		
		 Final Project Report: May 11th (8% of
		project grade)
	
	Deadlines and grading 
	
	There are three major deadlines meet over the course of your term
	project design, which will be met in the form of project demos with
	the course TA and a final project report. During a demo, it is
	important that all team members posses a conceptual understanding of
	the entire design. Answers such as "I don't know, my partner
	did that" will not be acceptable. However, a response such as
	"I didn't implement that part of the design, but it works in
	the following way..." is perfectly fine. 
	
	Teams should be well prepared before showing up to a demo. Time
	is limited and your grade may be negatively impacted if the demo
	could not be completed. Be sure that the designs you hand in work
	without alteration in such a way that the TA could easily compile
	and simulate the design without special instructions. 
	
	1.  Form team: February 24th (0.5% of
	project grade)
	The project is done in groups of two or three. These groups
	should be formed no later than February 24th. Email me and the TA
	the group members and a unique team name. Your email should have the
	subject line: CS552 group creation. 
	
	2.  Project plan: February 29th (4% of
	project grade)
	Each group needs to turn in a typed report (2-3 page) describing
	your project design and test plan. You need to include a computer
	aided, or nicely hand drawn diagram of your processor's basic
	pipeline structure. You may use the one on page 355 of cod4 as a
	guide.  
You are expected to develop a detailed schedule
	identifying key milestones and a breakdown of the tasks by project
	partner.  (Although, all members should have some part in
	everything). Make sure that your schedule takes into account the
	remaining homework assignments and your other course obligations
	(e.g., midterms). Use the suggested Project
	Stages as a guideline. 
	
	In addition to the design, you are expected to develop a detailed
	test plan, including high-level descriptions of component, module,
	and system tests. Include all project members names, email
	addresses, and team name on the report.
	
	Bring this report to class on 29th. 
	
	3.  Design Overview: March 14th (4% of
	project grade)
	Each group needs to create a complete hand-drawn (or drawn with
	the aid of a graphing program like Openoffice draw) schematic of an
	unpipelined WISC-SP12 implementation. Each module, bus, and signal
	should be uniquely labeled. The schematic should be hierarchical so
	that the top level design contains only empty shells for each
	planned submodule. In general, there will be a one-to-one mapping of
	modules in your schematic to the modules you will eventually write
	in Verilog. 
	
	While explicitly drawing pipeline stages in the schematic is not
	required, you should still design with a pipeline in mind. It is a
	good idea to place modules near their final location in the
	pipelined design. 
	
	The overview should include a brief description of the datapath
	for major WISC-SP12 instructions. Also highlight (and defend if
	necessary) any major design decisions. 
	
	
	4.  Demo #1 - Unpipelined design : March
	23rd (17.5% of project grade)
	At this milestone, you are expected to have a correctly
	functioning single-cycle, non-pipelined design. It should be running
	the full WISC-SP12 instruction set, except for the extra-credit
	instructions. It should use the single-cycle memory model. 
	
	In the demo you will run a set of programs on your processor
	using the wsrun.pl script, show that your processor
	works on the test programs (full list in Test Programs page). It is
	ok to have a very small number of failures - but for every failure
	you must know the reason. In addition I will use some extra test
	programs at the demo and you should run these on your design.
	Ideally your design should run these correctly, but again it is ok
	to have failures at this stage. You will submit your design
	electronically, which will be graded automatically. The instructor
	will then schedule one-on-one appointments with teams that have
	exhibited a large number of failures. 
	
	In this demo, you must also synthesize your processor and submit
	the results of synthesis, including the area and timing reports. If
	there are any synthesis errors you will get ZERO for the entire
	demo1. 
	
	Directions:
	
		“handin” your code
		into demo1
		All necessary verilog files must
		be in the Top Level Directory.
		Otherwise automatic grading could fail.
		Submit vcheck output (all
		non-testbenches must not have errors)
		Submit the “synth”
		directory. If any of these files are missing or if the Cell area of
		your processor is reported as zero, you will get ZERO for entire
		demo1. 
		
	
	
	
	Bring to class written or printed copies of the following: 
	
	
	All projects will be automatically graded on Friday at
	midnight.
	
	5.  Demo #2.0 - Pipelined design with
	Perfect Memory : April 23rd (31% of project grade)
	At this point, the pipelined version of your design needs to be
	running correctly, but no optimizations are needed yet. Correctly
	means that it must detect and do the right thing on pipeline hazards
	(e.g., stall). You will still use the single-cycle memory model.
	Tests will be run, and teams with failures will be asked to come to
	the demo hours (after class: 2:30 until needed).
	In this demo also, you must also synthesize your processor and
	submit the results of synthesis, including the area and timing
	reports.
	You must write a few additional hand tests to test pipelining.
	You must comment your tests appropriately and not use any infinite
	loops. You MUST have written at least two tests. I recommend more to
	help simplify debugging. They should all end with the extension
	.asm. 
	
	
	What to
	submit: (handin to “demo2”)
	
		
		You
		must run the following tests and submit log files for them. You
		must follow this exact naming convention.
		
		inst_tests.summary.log
		
		
		
		complex_demo1.summary.log
		
		
		
		complex_demo2.summary.log
		
		
		
		rand_simple.summary.log
		
		
		
		rand_complex.summary.log
		
		
		
		rand_ctrl.summary.log
		
		
		
		rand_mem.summary.log
		
		
	
	
	The
	log files MUST have the exact name. These are the log files produced
	by running wsrun.pl -list with the all.list file for each of those
	sets of benchmarks. You will have to rename summary.log manually
	into these names. If in doubt about what to handin email the TA
	*before* the deadline and double-check.
	
	
	
	Bring
	to class the following
	(or to the demo hours)
	
	You must
	submit a document (one per project team) which should include the
	following. Put the name of the team on the document and bring this
	to class: 
	
	
		
		
		A
		photocopy of your current pipelined design's schematic. Include a
		top level and schematics for one more level of hierarchy. Use your
		discretion on what to handin. 
		
		
		If
		there are known failures, a listing of those and reasons for the
		failures. 
		
		
		Work
		plan for final demo. 
		
		
		An
		explanation for each of the complex_demo2/perf-test-*: 
		
		
		
		How
			many cycles does your processor take for each of those tests?
		
		
		An
			annotated trace showing how/when your processor is stalling for
			each of those tests (you may start with verilogsim.trace)
		
	
	
	10.  Demo #3 (final demo) - Pipelined
	Multi-cycle Memory with Optimizations: May 11th (32% of project
	grade)
	
		- Demo May 11th for all students (Have code
		submitted midnight the day of for automatic grading)
 - 
		Absolutely no extensions. 
		
 - 
		Having multiple failures (not counting aligntest and extracredit
		failures) will result in severe penalties.
 - 
		Processor performance will be based on 552mark
		programs. 
		
 
	At this final demo teams are expected
	to demonstrate the complete design to all specifications. This
	includes the following required items: 
	
	
		Two-way set-associative caches
		with multi-cycle memory 
		
		Register file bypassing 
		
		Bypassing from beginning of the
		MEM stage to beginning of EX stage 
		
		Bypassing from beginning of the
		WB stage to the beginning of the EX stage 
		
		Branches predicted non-taken 
		
		Halt instructions must leave the PC pointing to Halt+2. Do
		not let it increment past this address 
		
	
	Electronically
	submit the following files: (handin to demo3)
	
		- All your verilog source code.
 - 
		All the .txt files in the synth/ directory. (This directory should
		sit in the top-level-directory)
 - 
		Your pipelined implementation should run all of the tests from
		previous demos correctly. Your handin must include 
		
 
	
		- 552marks.summary.log 
		
 - 
		complex_demofinal.summary.log 
		
 - 
		rand_ldst.summary.log 
		
 - 
		rand_idcache.summary.log 
		
 - 
		rand_icache.summary.log 
		
 - 
		rand_dcache.summary.log 
		
 - 
		complex_demo1.summary.log 
		
 - 
		complex_demo2.summary.log 
		
 - 
		rand_complex.summary.log 
		
 - 
		rand_simple.summary.log
 - 
		rand_ctrl.summary.log
 - 
		rand_mem.summary.log
 - 
		inst_tests.summary.log
 
	
		You
		can use the script run-final-all.sh
		to run all the required tests. It will create all these summary.log
		files. Running
		all the tests will take 40-60 minutes. So plan ahead!
		
		
	
	
		If your design has known
		failures, then bring to the demo a written short explanation for as
		many failures as you can track down. This will greatly increase the
		partial credit you will receive, compared to simply showing up and
		saying we don't know the reason for the failures. 
		
		If your entire design does not
		work, then you may show me a demo of a partially complete
		processor. So in your best interest, snapshot working parts of your
		design as you add more functionality. For example, you may show any
		one of the following, if your full pipeline+cache does not work. 
		
		- Stalling instruction memory alone 
		
 - 
		Stalling data memory alone 
		
 - 
		Stalling inst+data memory 
		
 - 
		Direct-mapped instruction memory alone 
		
 - 
		Direct-mapped data memory alone 
		
 - 
		Direct-mapped inst+data memory 
		
 - 
		2-way instruction memory alone 
		
 - 
		2-way data memory alone 
		
 - 
		2-way inst+data memory 
		
 
	All partners are required to be present and all are
	expected to explain and answer questions about the whole design.
	Answering a question with: "I have no idea, my partner did
	that" is a failing answer. You must (at least) be able to
	answer: "My partner implemented that, but it works in the
	following way....". 
	
	The following rough rubric will be used to determine demo3
	grades:
	
	
	11.  Final Project Report: May11th (8%
	of project grade)
	Each team should turn in one final
	report that is typed, well written, and well organized. Semantic,
	spelling, or grammatical errors will be penalized. You should
	include at least the following: 
	
	
		A brief overview of your design 
		
		A discussion of any optimizations
		made to the CPU 
		
		A table describing your
		processor's performance on the 552mark
		tests.
		A table listing the possible
		hazards that arise in your pipelined design and the number of stall
		cycles that each hazard incurs. 
		
		A discussion of what does not
		work and why. Also include what you would have liked to implement
		given more time. For each part of the implementation that does not
		work, turn in an annotated output in the form of a trace or script
		run that clearly shows the error. Give your thoughts as to why the
		error occurs and what could be done to fix it. 
		
		A conclusion outlining what you
		learned by doing this project 
		
		A state diagram for any state machine controllers in your
		design. All other controllers should include a high-level textual
		description. 
		
	
	For writing the final report use this template if you use Word,
	or follow the format in this pdf. FinalReport.doc,
	FinalReport.pdf.