Computer Organization and Architecture Lab


SPRING 2020-2021
Section A (Tuesday 5:00-7:00 PM)

Lectures/ Tut and Lab evaluation to be held Online via Google Meet

Announcements, Assignment submission and Quiz evaluations via Google Classroom





Course Objective:

The goal of this course is to have students understand and appreciate the principles of computing hardware and how it interfaces to software. It would provide the students the understanding of system-level programming and provide a high-level understanding of the role played by compilers, assemblers, instruction sets, and hardware

Lab Course Outline:


The lab classes will mainly consist of (a) Assembly language programming using MIPS and ARM instruction set (b) Design and Simulation of Data Path and Control of CPUs (c) Parallel Programming on multicore architecture / GPU Programming It is expected that students perform the lab assignments seriously to have a more refined knowledge of the topics.

Tools and Language

The vehicular language used for understanding the instruction set architecture would be "MIPS Assembly". In addition, the ARM assembly would also be discussed. "OpenMPI" and "CUDA" will be used for paralle programming and GPU programming respectively. "Verilog" would be used for the design and simulation of basic components of the computer system.
All codes, assignments and lab exercises will be implemented in MIPS Assembly and Verilog language only.
The prefered simulators would be (i) MARS simulator for simulating the MIPS instructions (ii) emuARM simulator for simulating the ARM instructions (iii) Modelsim to simulate the Verilog models

Regarding MARS

1. MARS Simulator requires the Java Run Time environment (JRE). A local copy of JRE and MARS has been provided for download through the course website.
2. Consult the TAs in case of difficulty in download and installation.
3. Necessary instructions and tutorials have also been provided in the lab resources section of the course website to help in installation of MARS32.

Regarding Modelsim

Modelsim is available in both Linux and Windows environment. We will be using the Linux version in the labs.

A local copy of the software has been provided on the course website (scroll down on this page).
1. Refer to the Course Contents section of this page
2. Download the .run file from the Modelsim Setup - Linux link and follow the instructions provided at Installing Modelsim
3. Consult the TAs in case of difficulty in download and installation.

A student edition of the Modelsim software ( in Windows environment) can be obtained from [here]

Open Source Simulators

Most students prefer using open source Verilog simulators such as Icarus Verilog commonly known as Iverilog while working at home. You are encouraged to download and install Iverilog in your machines, and use these software instead of non-standard software.
Visit the following links in case you wish to use Iverilog :
1. Setting up your environment for programming in Iverilog (Windows/Linux)
2. Tutorial: Verilog Programming using Iverilog Simulator

Machines, OS and Editors

The computer systems for the course can be any machine with standard configuration.

The preferred operating system for the tutorials and lab would be Ubuntu Linux. It is a good idea to have linux installed on your machine. Linux can co-exist with windows, if you have that already installed. Otherwise, if you like to have both then you should install windows first and linux next. Windows sometimes disturbs other installed systems. A recent Ubuntu distribution is available [here]

The preferred editors for the tutorial and lab sessions would be either Emacs , Gedit or vi
Gedit and vi are pre-installed with any Ubutu distribution.
To install Emacs in the Ubuntu environment : Open a terminal and type sudo apt-get install emacs

Lab Related Instructions

Submission : All submissions must be made using Google Classroom . You will be notified about mode and way to submit in the tutorial classes. Submissions after the deadline will not be considered.

Programming Language : The lab assignments will involve coding in either MIPS Assembly / ARM assembly or Verilog programming language. Although we will initially help you to debug your codes, the debugging support will be slowly withdrawn as time progresses. For MIPS Assembly / ARM assembly and Verilog syntax, look at the lecture slides, or bring with you any reference

Plagiarism : We have a zero tolerance policy towards plagiarism. Any case of cheating or stealing codes would result in imposition of "Unfair Means" charge on you and you will have to face the disciplinary committee of the Department leading to probable de-registration from the course. The person who allowed his program to be copied and the one who copied it will face same consequences. If you copy parts of your code from the Internet, you must mention that clearly in your code. Failure to do that will lead to your entire submission being invalid.







1.      David A. Patterson and John L. Hennessy,, Computer Organization and Design: The Hardware/Software Interface Morgan Kaufmann ARM Edition, 2010.

2.      Carl Hamachar, Zvonco Vranesic and Safwat Zaky, Computer Organization, McGraw Hill

3.      Donald E. Thomas and Philip R. Moorby, The VerilogĀ® Hardware Description Language, Springer

4.      Michael D. Ciletti , Advanced Digital Design with the Verilog HDL, 2nd Edition, Pearson

5.      Morris Mano , Computer System Architecture, Pearson Education



Important Instructions:

1.         The laboratory assignments will be mainly implementation-oriented which have to be coded in Verilog and ARM/MIPS assembly. The lab assignments will be based on the topics discussed in theoretical lectures.

2.         Every student is expected to have access to at least One of the reference books .

3.         Attendance in lab classes is mandatory. If the attendance of a student falls below 75%, he/she may expect a "F Grade"

4.         The laboratory course will consist of class assignments as well as take home assignments. .

5.         All class assignemnts have to be done very seriously and should be submitted to the TAs at the end of the class hour. Performance during class assignemnts not only carries wieghtage for grades, they also help in clearing the concepts discussed in theoretical lectures. If a student does not submit the clas assignments or in non-responsive during viva, his/her may expect a "F" grade. Take home assignments help in preparing for the lab exam. .

6.         Tutorial sessions will be conducted by TAs for the first hour of every lab session. Interact with them to clear your doubts regarding the lab assignments..

7.         Grading Policy (For each of Components 1 and 2) :

o   5%: Implementation of the assignment

o   5%: VIVA (each day)

Important Links:

WWW Computer Architecture

Tools , Simulators and Benchmarks




Lab Assignments:


Sl. No.




Helpful Resources


Assembly Language Programming I : Understanding the MIPS Architecture

Getting Started with MARS

MIPS Assembly I

MIPS Assembly II

Tutorial : MIPS Assembly Language Programming Using MARS

Tutorial Video on MIPS Programming using MARS - Part 1

Tutorial Video on MIPS Programming using MARS - Part 2

Tutorial Video on MIPS Programming using MARS - Part 3

Lab Assignment 1

JRE Download

MARS Download

MARS Simulator

MIPS Architecture

MIPS Instruction Set

MIPS Programming


Assembly Language Programming II

Lab Assignment 2