ICS 151
EECS 31L
ICS 152
ICS 155B
ICS 256
ICS 257
ICS 280
What's New
Contact

EECS 31/ICS 151 - Digital Logic Design            View Video


EECS 31/ICS 151 is the introductory course in digital design. First, students learn basic concepts of computer science and computational models such as binary representation, Boolean algebra, finite-state-machine and instruction-set processors. They also learn basic components for design on different levels of abstractions such as transistors, gates, flip flops, adders, multipliers, registers, memories and processors. Secondly, students learn the basics of design science. That is, how to convert computational models into working implementations. They learn how to construct adders and multipliers out of gates, and registers and counters out of flip-flops and how to optimize them for performance and cost. Furthermore, they learn how to design basic system components such as memories, queues, stacks and processors and how to use them in the design of arbitrary systems. The course stresses the principles of design science and gives in each lecture clear and simple procedures on how to arrive at the best design from the given specification.

Text:


Video:




EECS 31L / CSE 31L - Digital Design Laboratory


This is a laboratory course in which students learn the design process of modeling, simulation and synthesis of simple digital designs. Students in this class learn how to model designs on different levels of abstraction using C and VHDL languages. The course consists of four labs. In the first lab students are given a simple combinatorial design and then are required to generate VHDL structural and behavioral models and simulate using ModelSim. In the second assignment students define a simple structural FSM model in  VHDL language and learn how to generate it from behavioral model. In the third lab they optimize the model hardware implementation of a 8-bit adder/subtractor. In the last lab the students generate datapath and control units that execute the given algorithm and model it by a clock-cycle accurate structural model. In this class students are given the opportunity to be creative and to produce the best possible design for the given constraints.

Text:



ICS 152 - Computer Systems Architecture


ICS 152 is the basic course in computer architecture. First, students learn basic concepts of computers and systems design such as instruction sets, instruction execution cycles, pipelining, multithreading, and multiprocessing. Second, the students learn basic components of computer systems such as processor organization, memory architecture, connection networks and I/O implementation. Thirdly, they learn different architectural styles such as CISC and RISC processors, superscalar and VLIW processors, multiprocessors and distributed computers. Students also learn how to specify a computer system; how to build it from the specification and how to design its software and hardware components.

Text:



ICS 155B - Computer Design Laboratory


This is a laboratory course in which students learn the design process of converting algorithms into software/hardware designs. Students in this class learn how to model designs on different levels of abstraction using C and VHDL languages. The course consists of five labs. In the first lab students are given a well-known algorithm from DSP or multimedia applications and then are required to debug C and VHDL specifications or behavioral models. In the second assignment students complete a clock-cycle accurate behavioral model of the algorithm in VHDL language and learn how to generate it from behavioral models. In the third lab they optimize the model for software and in the fourth they optimize the model for hardware implementation. In the last lab the students generate databases and control units that execute the given optimized algorithm and model it by a clock-cycle accurate structural model. In this class students are given the opportunity to be creative and to produce the best possible design for the given constraints.

Text:



ICS 256 - Design Synthesis


This course is an introduction to hardware synthesis on logic and register-transfer levels. First, the course deals with synthesis algorithms for logic synthesis and optimization for performance, cost and power. Second, the courses addresses the synthesis process from a behavioral description into a register-transfer (cycle accurate) implementation consisting of control units and datapaths for custom and standard processors. The course introduces the topics of component databases, component allocation, time-constrained and resource-constrained scheduling, functional unit, memory and bus binding, design estimation, modeling styles for synthesis, and design environments for automatic and interactive synthesis, The course also offers an introduction to common models and design processes for software/hardware codesign.

Text:



ICS 257 - System Tools


This course deals with specification and design of embedded systems. The course starts with different models of computations and requirements for embedded systems. It then gives a survey of specification languages for generating executable specification for embedded systems. Furthermore, the course covers embedded systems architectures, architectural explorations and optimizations using different types of intellectual properties (IPs). The course defines the problems of architecture allocation behavior, variable and channel partitioning and mapping, selection of communications protocols, memory architectures, and estimation of performance, power, and cost. The topics also include synthesis of software and hardware for embedded systems and their relation to the overall design process. The course also covers different types of models necessary for the design process from specification to implementation and CAD tools needed in the process.

Text:

EECS222D System-on-Chip Hardware Synthesis


With semiconductor technology advanced complex Systems-on-Chip (SoC) can be easily built today. However, our capability to design such systems in reasonable time is not growing proportionally with SoC complexity. This productivity gap is forcing designers toward SW/HW codesign, higher levels of abstractions and reusing predefined SW/HW blocks called intellectual property (IPs). In this course students will learn basic principles and techniques of system-level design methodology for heterogeneous multiprocessor systems (MPSoCs) and analyze each step of such a methodology in detail. The methodology will start with an executable specification of the MPSoC and will consider computational models, refinements and tools necessary to convert the specification into a RTL design. The main emphasis will be on generation and synthesis of components, to integrate such a multiprocessor on a single chip. The students are required to have some background in software or hardware engineering or both.

Text:

  • Peter Marwedel, Embedded Systems Design, Kluwer, 2003