Be sure to look at the Canvas Module for this week for various hand-in mechanisms!

This is a group assignment that should be completed in class. You are permitted to split up the work however you like, but you should review the submission as a group before handing it in.

For EACH of the below listed architectural patterns discussed in the Safety Architecture Pattern lecture, answer the following three questions. (Note that the terminology is not a precise match to the slide titles. Part of the exercise is making sure you can identify which pattern is being referred to in general terms.) Prepare one slide per pattern.

- Summarize the idea behind the architectural pattern via a couple sentences or an annotated sketch
- In your opinion, what is the single most attractive "pro" for this pattern?
- In your opinion, what is the single most problematic "con" for this pattern? (If it is unsafe, say why.)

- High SIL 1-of-1 + built-in-self-test
- Low SIL failover, 1-of-2
- High SIL, Fail Operational dual 2-of-2
- High SIL Checker with Low SIL Doer, with those two chips also arranged as a fail-silent pair
- 2-of-2 Checker with Doer failover

This is a group assignment that should be completed in class.

Work as a team to find FOUR "good" CRC polynomials. You can split up the work as you like, but everyone on the team should check the work before handing in. The point is that each team member goes through the procedure a few times to understand the process.

Find a "good" CRC for a particular dataword length. A "good" CRC for our purposes is one that has the maximum possible HD for that dataword length. Here are some notes to help navigate the terminology:

- Dataword: the actual data you care about (message payload; data struture you're trying to protect)
- Error code/check sequence/checksum: the extra bits you add on to provide error detection capability
- Codeword: the total size of the data including both dataword and error
code.
- Example: a 32-bit dataword with an 8-bit CRC gives a codeword of 40 bits. Bit flips can happen to one or more of those 40 bits

- Probably you will find this web site useful: https://users.ece.cmu.edu/~koopman/crc/

Follow this procedure:

- Take the last digit of your group number. Add 16 to the answer. This will give you a number between 16 and 25. Assign each student in your group a different numbers starting at your group's initial number. Example: you are group 14. Last digit is 4. 4+16=20. Within your group, student A gets 20, Student B gets 21, Student C gets 22, Student D gets 23.
- Each student independently finds a "good" CRC with a CRC size (in bits) equal to the student number and HD=6. What's the polynomial? What is the largest dataword length at that HD? What is the corresponding maximum codeword length at that HD?
- Each student independently finds a "good" CRC with a CRC size (in bits) equal to the student number and codeword length of 256 bits. What's the dataword length at that codeword length? What is the best HD achievable? What's the polynomial that achieves that best HD?
- Combine all four student results into a 4-slide deck, one student per slide
- As a group, go through each slide and check the calculations/findings. If there are any questions you can't resolve, ask the course staff.

__Supplemental Material:__

- A video that animates the operation of a CRC calculation: https://www.youtube.com/watch?v=iwj8ZgyzqZk (gets more substantive about 1 minute into the video)
- More about CRC math and detail implementations: https://barrgroup.com/Embedded-Systems/How-To/CRC-Calculation-C-Code
- An IEEE article on CRC computations and algorithms (Ramabadran 1988)https://doi.org/10.1109/40.7773
- Extended report and tutorials on checksums and CRCs for the FAA.