My UW
|
UW Search
Computer Science Home Page
Home
Contact Info
Lecture & Notes
Schedule
Text and Readings
Resources
Computing
Grading
Project
Examinations
Homework
Miscellanea
FAQ
|
|
|
General instructions
How Do I submit the code
What needs to be turned in electronically
All your verilog files including any primitives you have used in the code (Please do not miss out any files. Do not assume that I will be using files from your HW)
Vcheck outputs for all your *.v files (other than test-benches)
Synthesis results (area and other reports).
Log-files for all tests that you are supposed to run on your pipelined processor
Live demo and final report submission
All partners are required to be present on the day of demo and are expected to explain and answer questions about the whole design
The final report is also due on May 11. Instructions regarding the same can be found here
What tests do I need to run and how do I name the log-files
/p/course/cs552-david/public/html/S12/project/tests/public/552marks - Log-file name must be 552marks.summary.log
/p/course/cs552-david/public/html/S12/project/tests/public/complex_demofinal/all.list - Log-file name must be complex_demofinal.summary.log
/p/course/cs552-david/public/html/S12/project/tests/public/rand_ldst/all.list - Log-file name must be rand_ldst.summary.log
/p/course/cs552-david/public/html/S12/project/tests/public/rand_idcache/all.list - Log-file name must be rand_idcache.summary.log
/p/course/cs552-david/public/html/S12/project/tests/public/rand_icache/all.list - Log-file name must be rand_icache.summary.log
/p/course/cs552-david/public/html/S12/project/tests/public/rand_dcache/all.list - Log-file name must be rand_dcache.summary.log
/p/course/cs552-david/public/html/S12/project/tests/public/complex_demo2/all.list - Log-file name must be complex_demo2.summary.log
/p/course/cs552-david/public/html/S12/project/tests/public/complex_demo1/all.list - Log-file name must be complex_demo1.summary.log
/p/course/cs552-david/public/html/S12/project/tests/public/rand_complex/all.list - Log-file name must be rand_complex.summary.log
/p/course/cs552-david/public/html/S12/project/tests/public/rand_simple/all.list - Log-file name must be rand_simple.summary.log
/p/course/cs552-david/public/html/S12/project/tests/public/rand_ctrl/all.list - Log-file name must be rand_ctrl.summary.log
/p/course/cs552-david/public/html/S12/project/tests/public/rand_mem/all.list - Log-file name must be rand_mem.summary.log
/p/course/cs552-david/public/html/S12/project/tests/public/inst_tests/all.list - Log-file name must be inst_tests.summary.log
What if my full pipeline+cache is not functional
If your design has known failures, then bring to the demo a written short explanation for as many failures as you can track down
If your entire design does not work, then you may show a demo of a partially complete processor. 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 alone
Suggested next steps
The main goal of demo3 is to improve the memory and make it more realistic
Step 1: Aligned memory
At this step, replace the original single-cycle memory with the Aligned single cycle memory. This is a very similar module, but it has an "err" output that is generated on unaligned memory accesses. Your processor should halt when an error occurs. Verify your design
- To verify your design, use the -align parameter with the wsrun.pl or wsrun_mumble.pl command
Step 2: Stalling memory
At this step, replace the single cycle memory with the Stalling memory. This is a very similar module, but has stall and done signals similar to the cache you built. Your pipeline will need to stall to handle these conditions. Verify your design.
- Instruction memory: First replace your instruction memory module with this stalling memory, keep your data data memory module the same (i.e. aligned perfect memory from previous step). Verify your design. This will be easier to debug, as only module's behavior has changed.
- Data memory: Now, replace your data memory module alone with this stalling memory, revert your instruction memory module back to the aligned perfect memory. Verify your design. This will be easier to debug, as only module's behavior has changed.
- Instruction and Data memory: Now change both instruction and data memories to the stalling memory design. Verify your design.
Step 3: Four-banked memory
The simple memory module is still highly idealized. Real memory systems are pipelined and use multiple banks. You are provided with such a simple four-banked memory module that models a simple DRAM controller. Make sure that your design continues to compile after integrating this memory into your design
Step 4: Direct-mapped cache
(Sample)
Replace your memory modules with the cache modules. Note that upon a miss, the previous contents of the cache line will need to be written back to memory if dirty, and the new line will need to be loaded into cache. The main memory will take multiple cycles to perform each access
- Instruction memory: First replace your instruction memory module with this mem_system module developed for HW5, make your data data memory module perfect (i.e. aligned perfect memory from previous step). Verify your design. This will be easier to debug, as only module's behavior has changed.
- Data memory: Now, replace your data memory module alone with this mem_system module developed for HW5, revert your instruction memory module back to the perfect memory. Verify your design. This will be easier to debug, as only one module's behavior has changed.
- Instruction and Data memory: Now change both instruction and data memories to the mem_system design. Verify your design.
Step 5: 2-way set-associative cache
Use the 2-way set associative cache developed in homework 5.
Step 6: Optimizations and Extra credit features
Please see points 4-6 here
How will the processor perfromance be measured
How do I get the execution time for the 552marks programs that is to be measured against the reference design
From your timing report, find the slack: Example: Lets say slack is -0.33
Subtract this from the desired 1ns cycle time i.e., 1-(-.33) = 1+.33 = 1.33ns = Your processor's cycle time
Now run any of the 552marks programs. Lets say you ran Primes.asm
At the end of the run and on a success, you will see:
/p/course/cs552-david/public/html/S12/project/tests/public/552marks/Primes.asm SUCCESS CPI:XX VALID_CPI:XX CYCLES:XXXXX ICOUNT:XXXXX VALID_ICOUNT:XXXXX IHITRATE: XXX DHITRATE: X
Lets assume you obtain CYCLES: 122369
Compute EXECUTION TIME = CYCLES * CYCLE-TIME = 122369 * 1.33 = 162750.77 ns = 162.75 us
I have done something additional that I want the TA/Professor to know (and/or)
What should I do in case I have test failures
If at all this is the case, please include a README.txt and explain the issue briefly
Additionally, please bring a copy of this file to the final demo
Are there any exceptions to the due date/time
|
|
|