Marking Scheme

The items below were checked.  The marks assigned for each item are as
shown.

                            Midterm Exams

                              Midterm 1

Q1(6): -1 mark per error (maximum of -6)

Q2(5): 1 mark for each of: module keyword and name, use of logic type,
use of input and output, array port, correct index order.

Q3(5): 1 mark for each of: assign keyword, output signal, condition
and tertiary operator, true expression, false value.

Q4(6): two marks for each of three correct answers; Only the T/F
values in the middle two rows and the 0 in the third row were marked
since the context (I/O or logical expression) was not given.

Q5(6): one mark for each correct value.  No marks if a value spanned
more than one clock period.

Q6(9)

(a) (3 marks)
- 4 states appropriate labelled
- correct state transitions for reset
- correct state transitions for enable and not reset

(b) (6 marks)
- bits_next (or other required) signal declaration(s)
- assign(ment) to bits_next (or other state variable)
- correctly implements reset
- correctly implements growing/shrinking the number of bits (2, 1 mark
  per transition) (no mark deducted if *one* transition is wrong but
  agrees with diagram)
- correct always_ff statement

Q7(3): one mark subtracted per mistake (maximum of -3). 8 or 4 allowed
for size of slice.


                              Midterm 2

Q1(6): Timer design

- counter declaration with sufficient number of bits (>=[3:0] for 10,
>=[4:0] for 30us)
- counter set or reset to appropriate value only when run is asserted
  (should not count continously)
- count is decremented only during pulse duration

- always_ff statement to create a count register
- pulse output is set according to count value (or state)
- correct pulse duration would be generated


Q2(4): SPI interface

- data is on MISO when read from sensor, on MOSI when write to sensor
- correct bits
- correct bit order
- correct decimal value (191 read from sensor, 211 writen to sensor)

Q3(3): Timing analysis

- correct available setup time (12ns)
- correct clock period (25 or 40ns)
- correct maximum propagation delay (6ns for 40 MHz, 26ns for 25 MHz)

Q4(5): Memory terminology

- one mark per correct answer - 8k = 8192/65536; 16k=16384/131,072 -
  Yes for write, No for read.  - No for flash, Yes for DRAM.  - No.

                              Final Exam

Q1
 - output changes at rising edge of clock
 - resets to right value
 - increments by right amount

Q2
 - 0.5 marks per correct answer

Q3
 - -0.5 mark per error (maximum deduction of 1 mark)

Q4: decode an SPI waveform
 - correct direction
 - correct value

Q5
 - correct reset
 - correct increment (note: {2'b10,1} is 2'b01 not 2'b11)
 - does not go past value 3 (most common error)
 - correct register

Q6
 - one mark for method
 - one mark for correct answer

Q7: memory design
 (everyone missed that the memory size was 1 MByte, not 1 MWord)
 - one mark per correct answer

Q8: CMOS logic
 - one mark for a (fully) correct answer Q9: terminology
 - one mark per correct answer Q10:
 - one mark for a correct answer Q11: power consumption
 - one mark per correct answer

Q9: terminology
 - one mark per correct answer

Q10: 
 - one mark for a correct answer

Q11: power consumption
 - one mark per correct answer



                                 Labs


Pn is the reference used in the Lab Comments on the Grades page.

Note: A pre-requisite for any solution to be considered correct is
that the course coding guidelines were followed.  No marks will be
awarded if the output is correct but the design does not meet
requirements (e.g. use of sequential Verilog statements).


                              Lab 0: (0)

P1: report formatting
  - is a PDF file
  - has cover page with course name & number, lab number & title;
  - student name & number; date
  - headings for each section

P2: block diagram
  - drawn by student, not RTL Netlist Viewer
  - legible
  - uses symbols similar to those used in lecture notes
  - signals and ports are labelled
  - bus widths are marked if greater than 1

P3: corrected code
  - has comments at top with correct information (file name, purpose,
    author's name & date)
  - consistent indentation

P4: Screen captures
  - compilation report
  - modelsim
  - signaltap
  
P5: submitted video file
  - a file, not a link
  - video plays in browser
  - video resolution not over 720p
  - properly oriented

                                Lab 1

PreLab (2) (prelab_mark):

  - block diagram that meets requirements (1)
  - listing of your Verilog code that (tries to) implement the lab
    requirements (1)

Lab (5) (lab_mark):

  - Verilog code listing (1)
  - compilation report (1)
  - demo that meets requirements (3)

Note: The Pre-Lab will not be marked if you successfully complete the
lab.

Your Lab 1 mark (out of 1) will be computed as:

  assigned_lab_mark = ( demo_mark == 3 ) ? ( lab_mark/5 ) : (
  lab_mark + prelab_mark ) / 7
 

                                Lab 2

Pre-Lab (2)

- block diagram

- Verilog listing

Lab Report (6)

- listing of Verilog code complying with course coding guidelines and
  report complies with course report guidelines (1.5)

- screen capture of compilation report (0.5)

- demonstration of correct operation (4)
  - 1 mark deducted for not complying with video guidelines
  - 2 marks deducted for minor display errors (e.g. wrong order or >=
    half correct)
  - 4 marks deduced if display is wrong (e.g. wrong or no numbers
    displayed)
  
assigned_lab_mark = ( demo_mark >= 3 ) ? ( report_mark/6 ) : (
lab_mark + prelab_mark ) / 8


                                Lab 3

                               Pre-Lab (2)

- state transition diagram (1)
- Verilog code (1)

                              Lab Report (10)

- Verilog listing (1)
- screen capture of Signal Tap showing:
  - correct order for student's ID (2)
  - at least five values on row (0.5)
- compilation report (0.5)
- video (6)
  - (subtract 3 marks if 1 digit is wrong)

assigned_lab_mark = ( video_mark >= 6 ) ? ( report_mark/10 ) : (
lab_mark + prelab_mark ) / 12


                                Lab 4 (10)

- cover page and file comment header (1)
- block diagram (1)
- Verilog code listing with consistent indentation and correct count
  value for student ID (1, 0.5 if frequency is twice)
- block diagram (RTL Netlist) (1)
- demo of working circuit generating a tone (6)

                                Lab 5 (10)
                                

- P1: block diagram (1)
- P2: schematic generated by "RTL Netlist" (1)
- P3: compilation report (1)
- P4: source code with file-level comments and consistent indentation
  (1)
- P5: demo (6) (reset (1), correct modulo (3), carries work(1), all
  keys increment a digit(1))

                               Lab 6 (10)

- listing of .sv file (including file header) (1)
- RTL Netlist block diagram (1)
- screen capture of state transition diagram with at least 10 states
  (1)
- screen capture of 'scope display (2)
- screen capture of logic analyzer with correct student ID (2)
- screen capture of protocol analyzer with correct student ID (3)

- 3 marks were deducted if the code uses sequential Verilog statements
  (e.g. case, if/else) or if it does not generate a state machine

                              Lab 7 (5)

- listing of .sv file (including file header) (1)
- screen capture of simulation waveforms (1)
- screen capture of testbench transcript (3; -1 per incorrect test)
                              
                              Lab 8 (10)

- measured component values (R1-R3, C1-C2) (2; -0.5 per missing
  component or units)
- four screen captures (4)
- table with measurements using three methods (3)
- photo of circuit (1)

                               Quizzes

                             Quiz 1 (13)

Q1 (3):

- module keyword and module name
- correct input or output
- correct bit widths and bit order

Q2 (3)

- assign keyword
- correct signal names
- correct operator

Q3 (3)

- correct width
- correct base
- correct value

Q4 (4)

- assign keyword
- conditional operator
- correct signal names
- correct values

                                Quiz 2

Q1(2): 1 mark per correct letter, -1 for incorrect letter Q2(2): 1 for
each correct value with units Q3(1): 1 for correct answer Q4(3): 1 for
each correct value-solutions

                                Quiz 3(6)

Q1(2): 1 for correct bytes (32768[+1] or 16384[+1], 1 for correct
       words (half of no. of bytes) Q2(1): 1 for correct value 0x2000
       is 13bits, 0x1000 is 12bits Q3(1): 1 for correct answer
       (functional), 0 for any other answer Q4(2): 1 for correct VOH
       (1.5=1.2+0.3 or 1 for correct VOL (0.2=0.5-0.3 or