system-on-chip designhaozheng/teach/soc/slides/... · system-on-chip design refinement dr. hao...

16
System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Upload: others

Post on 19-Jul-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

System-on-ChipDesignRefinement

Dr.HaoZhengComp.Sci&Eng.UofSouthFlorida

Page 2: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

LevelsofAbstrac<on

2

Page 3: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:GeneralIdea

3

M1 M2C

Ports

Interfaces

Ports

Page 4: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:GeneralIdea

4

M1 M2C’

adapters:translateinterfacemethodsto

opera1onsonports

Refinedchannel

Page 5: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:Example

5

Src DestFIFO sc_fifo

Page 6: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:HWFIFO

6

hw_fifo

FIFO sc_fifo

din

valid_in

ready_out

dout

valid_out

ready_in

clock

Page 7: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:HWFIFO

7

template<T> class hw_fifo : public sc_module { public: sc_in<bool> clock; sc_in<T> din; sc_in<T> valid_in; sc_out<T> ready_out; sc_out<T> dout; sc_out<T> valid_out; sc_in<T> ready_in; ... // constructor and process protected: unsigned _size, _first, _items; T* _data; }

Page 8: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:HWFIFO

8

template<class T> class hw_fifo : public sc_module { public: // constructor and process SC_HAS_PROCESS(hw_fifo); hw_fifo(sc_module_name name, unsigned size)

: sc_module(name), _size(size) { assert(size > 0); _first = _items = 0; _data = new T[_size]; SC_METHOD(main); sensitive << clock.pos(); ready_out.initialize(true); valid_out.initialize(false); } ~hw_fifo() { delete _data; } }

Page 9: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:HWFIFO

9

void hw_fifo::main() { // write operation if (valid_in.read() && ready_out.read()) {

_data[(_first + _items) % _size] = din; _items++; } // read operation if (ready_in.read() && valid_out.read()) { _items--; _first = (_first + 1) % _size; } ready_out = (_items < _size); valid_out = (_items > 0); dout = _data[_first]; }

Page 10: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:HWFIFOWrapper

10

hw_fifo

din

valid_in

ready_out

dout

valid_out

ready_in

clock

sc_fifo in/out interfaces

Page 11: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:HWFIFOWrapper

11

template<class T> class hw_fifo_wrapper : public sc_module, public sc_fifo_in_if<T>, public sc_fifo_out_if<T> {

public: sc_in<bool> clock; protected: sc_signal<T> wr_data; sc_signal<T> wr_valid; sc_signal<T> wr_ready; sc_signal<T> rd_data; sc_signal<T> rd_valid; sc_signal<T> rd_ready; hw_fifo<T> hw_fifo_inst; // hw fifo instance }

Page 12: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:HWFIFOWrapper

12

hw_fifo_wrapper::hw_fifo_wrapper( sc_module_name name, unsigned size)

{ hw_fifo_inst(name, size); // port binding for hw_fifo_inst hw_fifo_inst.clock(clock); hw_fifo_inst.din(wr_data); hw_fifo_inst.valid_in(wr_valid); hw_fifo_inst.ready_out(wr_ready); hw_fifo_inst.dout(rd_data); hw_fifo_inst.valid_out(rd_valid); hw_fifo_inst.ready_in(rd_ready); }

Page 13: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:HWFIFOWrapper

13

virtual void hw_fifo_wrapper::write(const T& data) { wr_data = data; wr_valid = true; while (wr_ready != true) {

wait (clock->posedge_event()); } wr_valid = false; }

Page 14: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:HWFIFOWrapper

14

virtual T hw_fifo_wrapper::read() { rd_ready = true; while (rd_valid != true) {

wait (clock->posedge_event()); } rd_ready = false; return rd_data.read(); } virtual void hw_fifo_wrapper::read(T& d) { d = read(); }

Page 15: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

Refinement:Example

15

Src DestFIFO sc_fifo

Src DestFIFO’ hw_fifo

clock

Page 16: System-on-Chip Designhaozheng/teach/soc/slides/... · System-on-Chip Design Refinement Dr. Hao Zheng Comp. Sci & Eng. U of South Florida

ReadingGuide

•  SystemC-1book:secDon9.1–9.3.

16