Milestone 1

1 Assembly Language Specifications

Your first step is to describe everything that a user needs to know in order to write an assembly language program for your processor. You should then use your assembly language to write relPrime and Euclid's algorithm. Make sure that you satisfy the requirements listed in the project overview. In particular, you should provide support for general computations and procedures. You should definitely consider how your processor will receive the input number for relPrime. You must also write several small programs to demonstrate common operations (loops, loads, procedures, etc.). These programs will serve as a test to help determine if your instruction set is implemented correctly. Think about what the first programs you would write in any new programing language would be.

2 Machine Language Specifications

Your next step should be to describe everything that a user needs to know to write an assembler for your processor (i.e. to translate statements from your assembly language to your machine language). Along with this, you should translate your assembly language programs into machine language.

You may have to modify your assembly language specifications while working on the machine language specifications.

3 Turning In M1

Submit the following for this milestone:

  1. Design document that includes the following information.
    • A coverpage including your team name and team member's names.
    • A one paragraph description of your design at a high level.
    • Description of the registers available to the assembly language programmer and those reserved for any specific purpose.
    • An unambiguous English description of each machine language instruction format type and its semantics (see Section 2.5, pages 80 through 87 of your book).
    • An unambiguous English description of the syntax and semantics of each instruction (see pages A-51 through A-80 of your book).
    • A symbolic description of the behavior of each instruction (like those on the MIPS Green Sheet).
    • The rule for translating each assembly language instruction into machine language. This probably requires the addressing modes to be defined (i.e. is branch PC relative?).
    • An explanation of any procedure call conventions, especially relating to register and stack use (see pages A-22 through A-26 of your book).
    • Example assembly language program demonstrating that your instruction set supports a program to find relative primes using the algorithm on the project page.
    • Assembly language fragments for common operations. For example, this might be loading an address into a register, iteration, conditional statements, reading data from the input port, reading from and writing to the display register, or writing to the output port.
    • Machine language translations of your assembly programs (relprime and your fragments).
    • As an example of a professional report on a processor you can reference the data sheet for the MIPS R4300i processor. This has much more information than you will have ready during this milestone, but you should reference it early and often.
  1. An individual design journal for each member. This must:
    • Include details about what that member worked on for the week (including time taken)
    • Include design decisions the team and individual member made during this milestone, including summary of meetings' outcomes, and work that may not be reflected in the design journal.
    • Include a list of tasks the member was assigned for the next milestone (planning for the next Milestone), including estimated time required for each task.
    • Be commited by the individual author. Each member must commit their own log. Teammates cannot do this for you.
    • If you need help writing the journal, try adding one or two sentences for each work session in the form "I did X because of Y". The justification ("Y") is really important to show the depth of your design process.

Example individual journal:

Selana McIntosh, WORK LOG


Tuesday, December 3, 2067

Met with team [35 min]

Wednesday, December 4, 2067

Design procedure call conventions, we decided to split temporary and saved registers this allows our design to minimize memory accesses across procedure calls. [20 minutes]

Thursday, December 5, 2067

Write up call conventions, we made some changes to decrease the number of saved registers because we want programmers to think carefully about using them. [25 minutes]

Friday, December 6, 2067

Met with team [30 min]

We assigned tasks for milestone 2. My tasks are:

  1. Draft RTL for addi instruction [est 20 min]
  2. Review RTL for bne and jal (reviewing Alexa's work). [est 1 hour]
  3. Brainstorm a list of components we'll need to create. [est 15 min]

Your documents should be placed in the main design directory of your team's repository. Your instructor will specifically check for each bulleted item when grading.