Sunteți pe pagina 1din 16

ECEN 468 Advanced Logic Design

Lecture 1: Introduction

ECEN 468 Lecture 1

Course Overview
Digital system design
o With an emphasis on system-level design o Only hardware

SystemC Verilog VerilogAMS Some component designs


o Bus o UART o Chip I/O

Lab: image processing chip design


ECEN 468 Lecture 1 2

Main References

ECEN 468 Lecture 1

Acknowledgement
Prof. Peng Li for suggesting SystemC and Verilog AMS Dr. Welson Sun of Xilinx for extensive discussions and suggestions Feedback from faculties at Computer Engineering and Systems Group Mr. Jae-Yeon Won for tremendous effort on designing the lab

ECEN 468 Lecture 1

System/Architecture Level Decisions


Should a function be implemented in hardware, software or an alternative algorithm? Does this function use less power in hardware or software? Do we have enough interconnect bandwidth for our algorithm? What is the minimum precision required for our algorithm to work?

ECEN 468 Lecture 1

Design Abstraction Levels


Architecture Behavioral RTL Gates Transistor
SystemC Verilog

Circuit netlist

ECEN 468 Lecture 1

Design Complexity Growth


100M

#Lines of Code

1M

Behavioral

Architect

10K

100

Yesterday

Today
ECEN 468 Lecture 1

Tomorrow
7

Gates

RTL

ESL (Electronic System Level) Design


Design complexity growth Pressure of time-to-market, or design turn-around time Traditionally, system/architecture design is done by a few experts according to ideas and experiences in their minds The ad hoc approach is not scalable with the design complexity

ECEN 468 Lecture 1

Examples
A company spent weeks of time to design and verify a function on a chip. Later, it was found this function was not used by the software. Poor architecture level decisions made a company to overdesign a chip. The chip satisfied customers needs, but its design and verification unnecessarily wasted resources and time.

ECEN 468 Lecture 1

Overview of SystemC
User Libraries SystemC Verification Library Other IP

Predefined Primitive Channels: Mutexs, FIFOs, & Signals

SystemC

Simulation Kernel

Threads & Methods Events, Sensitivity & Notifications

Channels & Interfaces Modules & Hierarchy

Data types: Logic, Integers, Fixed Point

C++
ECEN 468 Lecture 1

STL
10

C++ Class
Concept abstraction Information encapsulation
o Member data o Member function

Constructor/destructor Inheritance Polymorphism

ECEN 468 Lecture 1

11

An Example of C++
class iMeter{ double value; string iName; public: iMeter(const string& nm); void setV(double val); double getVal(); }; iMeter::iMeter(const string& nm):value(0.0){ iName = nm; } void iMeter::setV(double v){ value = v; } double iMeter::getVal(){ return value: } int main(){ iMeter m1(tommy); m1.setV(6.7); cout << m1.getVal(); }

ECEN 468 Lecture 1

12

SystemC Example
#include <systemc> SC_MODULE(Hello) { SC_CTOR(Hello) { SC_THREAD(main_thread); } void main_thread(void) { SC_REPORT_INFO(Hi!); } }; int sc_main(int sc_argc, char* sc_argv[]){ Hello iHello(iHello); sc_start(); return 0; }

ECEN 468 Lecture 1

13

SystemC Compilation Flow

Systemc STL

Systemc.h File1.h File1.cpp Source files

g++

File1.o File2.o Filen.o Object files


ECEN 468 Lecture 1

ld

.exe

Compiler

Linker

Executable
14

Beyond C++
Time model Hardware data types Hierarchy and structure Communications management Concurrency

ECEN 468 Lecture 1

15

SystemC Simulation
sc_main()

Elaborate

SystemC Simulation Kernel

sc_start()

Initialize

Evaluate Advance time

Cleanup

Update

ECEN 468 Lecture 1

16

S-ar putea să vă placă și