ECE 5745 Complex Digital ASIC Design Section 1: ASIC Flow Front-End - - PowerPoint PPT Presentation

ece 5745 complex digital asic design section 1 asic flow
SMART_READER_LITE
LIVE PREVIEW

ECE 5745 Complex Digital ASIC Design Section 1: ASIC Flow Front-End - - PowerPoint PPT Presentation

ECE 5745 Complex Digital ASIC Design Section 1: ASIC Flow Front-End Christopher Batten School of Electrical and Computer Engineering Cornell University http://www.csl.cornell.edu/courses/ece5745 Multi-Level Modeling Methodologies


slide-1
SLIDE 1

ECE 5745 Complex Digital ASIC Design Section 1: ASIC Flow Front-End

Christopher Batten

School of Electrical and Computer Engineering Cornell University

http://www.csl.cornell.edu/courses/ece5745

slide-2
SLIDE 2

Multi-Level Modeling Methodologies

Applications Transistors Algorithms Compilers Instruction Set Architecture Microarchitecture VLSI

Cycle-Level Modeling – Behavior – Cycle-Approximate – Analytical Area, Energy, Timing Functional-Level Modeling – Behavior Register-Transfer-Level Modeling – Behavior – Cycle-Accurate Timing – Gate-Level Area, Energy, Timing

2 / 10

slide-3
SLIDE 3

Multi-Level Modeling Methodologies

Cycle-Level Modeling Functional-Level Modeling Register-Transfer-Level Modeling – Algorithm/ISA Development – MATLAB/Python, C++ ISA Sim – Design-Space Exploration – C++ Simulation Framework – gem5, SESC, McPAT – Prototyping & AET Validation – Verilog, VHDL Languages – HW-Focused Concurrent Structural – SW-Focused Object-Oriented – EDA Toolflow Multi-Level Modeling Challenge FL, CL, RTL modeling use very different languages, patterns, tools, and methodologies SystemC is a good example

  • f a unified multi-level

modeling framework Is SystemC the best we can do in terms of productive multi-level modeling?

2 / 10

slide-4
SLIDE 4

VLSI Design Methodologies

DUT Sim TB HDL (Verilog)

FPGA/ ASIC synth

Fast edit-sim-debug loop Difficult to create highly parameterized generators Single language for structural, behavioral, + TB HDL Hardware Description Language

DUT' Sim TB' HDL (Verilog) DUT Mixed (Verilog+Perl) TB

gen gen FPGA/ ASIC synth

Slower edit-sim-debug loop Easier to create highly parameterized generators Multiple languages create "semantic gap" Example: Genesis2 HPF Hardware Preprocessing Framework

DUT' Sim TB' HDL (Verilog) DUT Host Language (Scala) TB TB

FPGA/ ASIC gen gen synth

* *

Slower edit-sim-debug loop Easier to create highly parameterized generators Cannot use power of host language for verification Example: Chisel HGF Hardware Generation Framework Single language for structural + behavioral

3 / 10

slide-5
SLIDE 5

Productive Multi-Level Modeling and VLSI Design

Multi-Level Modeling SystemC VLSI Design Chisel DUT' Sim HDL (Verilog) DUT Host Language (Python) TB Sim

c

  • s

i m FPGA/ ASIC gen synth

HGSF Hardware Generation and Simulation Framework Fast edit-sim-debug loop Easy to create highly parameterized generators Use power of host language for verification Single language for structural, behavioral, + TB Single framework for ML modeling & VLSI design

4 / 10

slide-6
SLIDE 6

PyMTL

PyMTL is a Python-based hardware generation and simulation framework for SoC design which enables productive multi-level modeling and VLSI implementation

5 / 10

slide-7
SLIDE 7

The PyMTL Framework

Model

PyMTL Domain Specific Language (Python)

Config Elaboration Model Instance

PyMTL In-Memory Intermediate Representation (Python)

Simulatable Model Test & Sim Harnesses

PyMTL Passes (Python)

Simulation Pass Translation Pass System Verilog Analysis Pass Analysis Output Transform Pass New Model

6 / 10

slide-8
SLIDE 8

PyMTL v2 Syntax and Semantics

1

from pymtl import *

2 3

class RegIncrPRTL( Model ):

4 5

def __init__( s ):

6

s.in_ = InPort ( Bits(8) )

7

s.out = OutPort( Bits(8) )

8 9

s.reg_out = Wire( Bits(8) )

10 11

@s.tick_rtl

12

def seq_logic():

13

s.reg_out.next = s.in_

14 15

s.temp_wire = Wire( Bits(8) )

16 17

@s.combinational

18

def comb_logic():

19

s.temp_wire.value = s.tmp + 1

20 21

s.connect( s.out, s.temp_wire )

s.in_ s.out +1 s.reg_out s.temp_wire

7 / 10

slide-9
SLIDE 9

PyMTL v3 Syntax and Semantics

1

from pymtl3 import *

2 3

class RegIncrPRTL( Component ):

4 5

def construct( s ):

6

s.in_ = InPort ( Bits8 )

7

s.out = OutPort( Bits8 )

8 9

s.reg_out = Wire( Bits8 )

10 11

@s.update_ff

12

def seq_logic():

13

s.reg_out <<= s.in_

14 15

s.temp_wire = Wire( Bits8 )

16 17

@s.update

18

def comb_logic():

19

s.temp_wire = s.reg_out + b8(1)

20 21

s.out //= s.temp_wire

s.in_ s.out +1 s.reg_out s.temp_wire

8 / 10

slide-10
SLIDE 10

PyMTL v3 vs Verilog Syntax and Semantics

1

from pymtl3 import *

2 3

class RegIncrPRTL( Component ):

4 5

def construct( s ):

6

s.in_ = InPort ( Bits8 )

7

s.out = OutPort( Bits8 )

8 9

s.reg_out = Wire( Bits8 )

10 11

@s.update_ff

12

def seq_logic():

13

s.reg_out <<= s.in_

14 15

s.temp_wire = Wire( Bits8 )

16 17

@s.update

18

def comb_logic():

19

s.temp_wire = s.reg_out + b8(1)

20 21

s.out //= s.temp_wire

1

module RegIncrVRTL

2

(

3

input logic clk,

4

input logic reset,

5

input logic [7:0] in_,

6

  • utput logic [7:0] out

7

);

8 9

logic [7:0] reg_out;

10 11

always_ff @( posedge clk ) begin

12

reg_out <= in_;

13

end

14 15

logic [7:0] temp_wire;

16 17

always_comb @(*) begin

18

temp_wire = reg_out + 1;

19

end

20 21

assign out = temp_wire;

22 23

endmodule

9 / 10

slide-11
SLIDE 11

PyMTL/Verilog Integration

PyMTL' RTL'Model' Instance'

TranslaGon' Verilator' LLVM/GCC' Wrapper' Gen' Verilog' Source'

PyMTL' CFFI'Model' Instance'

RTL'C++' Source' C'Interface' Source' C'Shared' Library' TranslaGon' Cache'

SimJITFRTL'Tool'

10 / 10