CIS 351 | 
    Project 1: Build an Adder | 
    Winter 2022 | 
  
For this project, you will use JLS to implement a signed adder.
You should work in teams of two. This project is a lot of work. Working alone is foolish.
Begin by following this GitHub Classroom link to create the repository for this project. You may want to copy your unsigned adder from the lab into this new repo.
Implement a 16-bit signed adder using any algorithm you
  wish, provided the circuit (1) has a reasonable size, (2) a running time of 225 or better, and 
  (3) at least partially incorporates elements of a sub-linear algorithm 
  (carry-lookahead, carry-select, Kogge-Stone, etc.)
   Your adder must report overflow conditions when they
  occur (with respect to signed inputs).
  Notice that this circuit must have an input named CarryIn.
  You will use this input for future projects.
The starter code contains a file named SignedAdder_16bit.jls.  You must place your solution 
in this file.  Do not change the names of any of the inputs or outputs.  (If you change the filename
or the names of any inputs/outputs, the automated tests will not work.)
CarryOut is the carry out from the last full adder. It is also,
  in effect, the overflow indicator for unsigned inputs. Overflow is the overflow
  indicator for signed inputs. Remember, CarryOut and Overflow will not
  necessarily have the same value.
You may use SampleSigned16BitAdderTest.java as a basis for your own tests. Warning! This
  test file is incomplete. Don't assume that a circuit that passes this sample test will pass all of my tests.
JLS
    and DLUnit. Commit and push your code often.  That way, if JLS does crash
    you won't lose too much work. Also, please e-mail me with any bugs you
    find or feature requests you have. If JLS crashes, please e-mail me the
    JLSerror file.
  When your adder passes all of the automated tests, prepare a document that discusses its overall design and analyzes its
To compute the exact size, simply count the total number of gates used. (You don't need to consider the number of inputs.)
To compute the exact time, compute the propagation delay using the default component delays given by JLS (10 for AND, OR, XOR, 5 for NOT, NAND, NOR, etc.). To see a component's default delay, right-click on it and choose "change timing" from the context menu. (Look at the time; but, don't actually chagne it!)
Your adder's big-O running time describes how the running time will change if you applied your pattern to adders of increasing size. If you used a hybrid design, describe how you would extend your design to build 32-bit and 64-bit adders. (Your technique for extending your hybrid design will determine the big-O running time.)
Finally, add a paragraph or two discussing your adder's overall design. In particular, if you used a hybrid design, list any sub-linear addition algorithms used and how you incorporated them into your adder.
Place this information in a file named either analysis.txt or analysis.pdf.   For each answer, please include 
a paragraph or two describing how you got your answer.
You are expected to revise your circuits and analysis documents until both (1) the automated tests pass, and (2) the analysis document has earned a score of "E" or "M". Project "Late Days" will accumulate until both requirements have been satisfied.
Extra Credit: You can earn extra credit on this project based on the time of your adder:
You can also accumulate up to -2 Late Days if you project meets all requirements before the deadline. (Negative Late Days can be used to offset any Late Days acquired on other projects or labs.)
To submit your project:
jls files that includes the names of all team members.
    
   analysis.txt or analysis.pdf.
  [Grade Me] in the commit message.  ([Grade Me] is not a 
  formal syntax, it is just tells me that you are ready for me to look at your project.)
   Updated Monday, 24 January 2022, 11:29 AM