Should we consider performance for the ALU design? or is it good enough to have a ripple carry adder?
A simple adder should be fine, you should feel free to go beyond the requirements, if you like, but I personally wouldn't spend any extra time doing so.
Two reasons: The point of this homework is to just do it. A first step to be sure we are all on the same page. Not important to put yourself under time pressure to go beyond what we are asking here. Save that for the final project. Secondly, you will need to redesign it anyway with the basic logic gates in the library (not only nand, but also other basic gates like and, or, not, etc.) later for the project.
Should we assume an initial carry-in to the adder?
You needn't provide an initial carry-in for this adder.
Do we need to use some schematic tools for ALU design?
A paper-pencil drawing should be fine.
How do I show a bit-slice of the adder, in a carry-lookahead adder case or any other case, where the design is considering more than one bit of each input, at a time?
You're right, a bit slice doesn't necessarily make sense as your design becomes more complex. Do show the lowest or smallest section/slice that does make sense and show how you combine these together to form your solution.
How does saturating addition work?
Many of you have asked questions similar to this, so we will show some more examples here using 4-bit signed numbers.
4 + 5 = 7 0100 + 0101 = 0111 7 + 2 = 7 0111 + 0010 = 0111 7 + (-1) = 6 0111 + 1111 = 0110