Milestone 2
1. Single Cycle Register Transfer Language Specification
Now that your assembly language and machine language specifications are complete, you should describe how you plan to implement your instruction set at the register transfer level (RTL).
Your first step in this process is to break each instruction into small steps. Each step should be of roughly equal size (i.e. they should take about the same amount of time to complete) and move data from one register to another or one wire to another. This is like what we did in class to create single-cycle RTL for RISC-V.
You will need to plan as a group a set of naming conventions for your project. Defining and following a set of conventions will save you huge amounts of time during the debugging stage of your processor. Your should come up with rules for naming the following: modules, test benches, inputs, outputs, wires, regs, clocks. Your conventions may include any other rules you think are important, this is just a bare-minimum list.
Next, list and describe the components that will be needed to implement your RTL.
Do not describe how the parts are connected; you just need build a 'shopping list' of generic parts (i.e. PC, IR, and ALUout are all registers). For this milestone, you are only interested in the components that are clearly needed by the RTL (so probably no muxes).
Your component descriptions should look something like this:
Component | Inputs | Outputs | Behavior | RTL Symbols |
---|---|---|---|---|
Register | input_value [15:0] CLK [0:0] reset [0:0] |
output_value [15:0] | On the rising edge of the clock (CLK ) the register reads the input_value port and outputs the new value. If the reset signal is high on the rising clock edge the register wipes its data and outputs 0x0000 instead. |
PC, IR, A, B, ALUout, MDR |
Make sure every symbol in your RTL appears somewhere in the component list 'RTL symbols' column.
Remember that variables on the right hand side of an assignment in RTL usually mean 'the value calculated in the previous cycle'. While variables on the left hand side mean 'by the end of the cycle this value will be updated.' Because you are writing single-cycle RTL, some of the "intermediate step" left-hand-side values may be wires.
You may modify your assembly language and machine language specifications for this milestone. In fact, time spent getting the instruction set architecture correct for this milestone will save you lots of time later. Please note any changes and why they were made in your design process journal.
Do not build any datapath or control for this milestone. You need to verify your RTL is robust before continuing.
You will model, test, and debug your complete processor using Quartus and ModelSim. It is highly recommended that you begin implementing and testing individual components in a bottom-up manner now.
2. Turning in M2
For this milestone, you will submit the following:
-
An updated design document, that includes the following:
-
A single-cycle RTL description of each instruction or set of related instructions. You should include a summary chart similar to the ones discussed in class.
-
A description of your naming conventions.
-
A list of generic components specifications needed to implement your register transfer language (these will eventually make up your datapath). For each component give:
-
A list of input signals, output signals, and control signals including the number of bits in each signal. (These should follow your naming conventions.)
-
An unambiguous English description of how the component's output will change according to its input and control signals, including any clock edges for sequential logic components.
-
A list of the RTL symbols that this component will implement. For example, a generic register component might implement both the 'PC' and 'ALUout' RTL symbols.
-
-
Now that you have RTL, you can use it to design the datapath in the next milestone. However, if your RTL has errors, it will cause your datapath to be incorrect. Go back and verify that your RTL correct.
- Give a brief overview of your process for double-checking the RTL for errors.
-
A note of changes made to the Assembly language and Machine language specifications.
-
-
An updated design process journal for each team member, including:
- your thought processes and rationale behind your decisions and .
- itemized log of each member's work for the week and an estimated work time for each item. Each member is responsible for their own log.
Your design document should be updated in the Design
directory of your team's
repository.
The names of your design document and design journals should not change.