Final projects in ECE 666, Computer Arithmetic. I am expecting projects to be about 40 hours of work. Hopefully some of you might have something publishable out of your project. I would at least like to put a description of all final projects on the Web page. If you are doing a project, there are 3 steps. 1. Find a topic and discuss it with me. This may take a few iterations. Start early. The projects could be of at least four types: 1) Design, 2) Analysis, 3) Software, 4) Literature Search. For any project, I expect you to use the library to find appropriate references. Ask me for ideas and I'll try to help. We have a variety of tools on-campus (Verilog, VHDL, ARREST, various VLSI tools). Off-campus students should make best use of tools at their own sites. 2. Get me a 2-3 page written proposal by early May describing your project, listing references and your planned deliverables (software, design, report). The proposal will be worth 25% of the project grade. 3. Do the project and write a report. In some cases, I may be interested in seeing a demo. I would expect a final report to be comparable to a UMASS technical report. Length can vary from 10-30 pages. References should be cited as in IEEE publications. Due date: May 24th. Here are some ideas ------------------------------- 1) HDL simulation of a complicated arithmetic unit (divider, CORDIC block,...). Use some combination of structural and behavioral HDLs (either Verilog or VHDL, we have both here at UMASS). Hopefully you can use the HDL description to do some analysis of the unit. Perhaps you can look at power consumption or timing. How will you verify that your description is correct? (It's not easy) 2) Testing of arithmetic circuits. Arithmetic circuits have lots of regularity which should be exploited in their testing. They also have observability and sensitizability challenges. 3) Verification of arithmetic. Develop a strategy using a combination of simulation and formal methods to verify that an arithmetic unit is correct. Or prove formally that 2 arithmetic algorithms are equivalent. This is not trivial!! 4) Compare different arithmetic algorithms and implementations in terms of area, speed and power tradeoffs. Which is the lowest power solution? Which is the fastest solution? You may want to do quite a bit of reading for this project. I have seen this done for adders and multipliers, but not for dividers or other computations. 5) Precision analysis. This is a large area and one that interests me a lot. Precision analysis can be worst-case or statistical and can be done manually or automated and then verified with statistical simulation. The idea is to see the effect of finite wordlengths on the accuracy of a given computation. 6) Study the Pentium Floating Point Bug. There is lots of info here. This would mostly be a writing project. Check out the following URL for more info: http://www.cs.clemson.edu/CSE/MODULES/pentium.note 6) Develop array architectures (cellular, regular, locally connected, pipelined) for various arithmetic functions. Good candidate are crypto, error correction, etc. Implement using the ARRay ESTimation system from UMASS which generates Verilog for simulation and synthesis. 7) Do a circuit level VLSI design of a high speed arithmetic unit. It is likely that you will use dynamic logic. 8) Use synthesis tools (ie SIS or SYNOPSYS) to experiment with different arithmetic implementations. 9) Look at FPGA implementations of arithmetic. We have Altera tools here at UMASS and will have Xilinx soon (but maybe not in time for this course). 10) Look at the impact of arithmetic precision on higher level computations such as DSP, control, numerical analysis. 11) Study the IEEE Floating Point Standard and discuss both WHY it was chosen, and HOW it is currently implemented in various processors. Be critical!! 12) Refer to the questionnaire for other topics. Feel free to propose something not on this list.