ece 5745 complex digital asic design section 1 asic flow
play

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


  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

  2. Multi-Level Modeling Methodologies Functional-Level Modeling Applications – Behavior Algorithms Cycle-Level Modeling Compilers – Behavior – Cycle-Approximate Instruction Set Architecture – Analytical Area, Energy, Timing Microarchitecture Register-Transfer-Level Modeling VLSI – Behavior – Cycle-Accurate Timing – Gate-Level Area, Energy, Timing Transistors 2 / 10

  3. Multi-Level Modeling Methodologies Functional-Level Modeling Multi-Level Modeling Challenge – Algorithm/ISA Development FL, CL, RTL modeling – MATLAB/Python, C++ ISA Sim use very different Cycle-Level Modeling languages, patterns, – Design-Space Exploration tools, and methodologies – C++ Simulation Framework – SW-Focused Object-Oriented SystemC is a good example of a unified multi-level – gem5, SESC, McPAT modeling framework Register-Transfer-Level Modeling Is SystemC the best – Prototyping & AET Validation we can do in terms of – Verilog, VHDL Languages productive – HW-Focused Concurrent Structural multi-level modeling? – EDA Toolflow 2 / 10

  4. VLSI Design Methodologies HDL HPF HGF Hardware Description Hardware Preprocessing Hardware Generation Language Framework Framework HDL Mixed HDL Host Language HDL (Verilog) (Verilog+Perl) (Verilog) (Verilog) (Scala) synth synth gen synth gen DUT DUT DUT' DUT DUT' Sim Sim Sim FPGA/ FPGA/ FPGA/ ASIC ASIC ASIC gen gen TB' * TB TB TB' TB * TB Example: Genesis2 Example: Chisel Fast edit-sim-debug loop Slower edit-sim-debug loop Slower edit-sim-debug loop Single language for Multiple languages create Single language for structural, behavioral, + TB "semantic gap" structural + behavioral Difficult to create highly Easier to create highly Easier to create highly parameterized generators parameterized generators parameterized generators Cannot use power of host language for verification 3 / 10

  5. Productive Multi-Level Modeling and VLSI Design Multi-Level Modeling VLSI Design SystemC Chisel HGSF Single framework for ML Hardware Generation and modeling & VLSI design Simulation Framework Fast edit-sim-debug loop Host Language HDL Single language for (Python) (Verilog) structural, behavioral, + TB synth gen DUT DUT' Easy to create highly Sim parameterized generators FPGA/ Sim ASIC Use power of host m i s TB o c language for verification 4 / 10

  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

  7. The PyMTL Framework PyMTL PyMTL Domain Specific PyMTL Passes Language In-Memory (Python) (Python) Intermediate Representation Test & Sim Simulation Simulatable Harnesses Pass Model (Python) System Model Translation Model Elaboration Verilog Instance Pass Analysis Analysis Config Output Pass Transform New Model Pass 6 / 10

  8. PyMTL v2 Syntax and Semantics from pymtl import * 1 s.reg_out 2 class RegIncrPRTL( Model ): 3 s.in_ s.out 4 +1 def __init__( s ): 5 s.in_ = InPort ( Bits(8) ) 6 s.out = OutPort( Bits(8) ) 7 s.temp_wire 8 s.reg_out = Wire( Bits(8) ) 9 10 @s.tick_rtl 11 def seq_logic(): 12 s.reg_out.next = s.in_ 13 14 s.temp_wire = Wire( Bits(8) ) 15 16 @s.combinational 17 def comb_logic(): 18 s.temp_wire.value = s.tmp + 1 19 20 s.connect( s.out, s.temp_wire ) 21 7 / 10

  9. PyMTL v3 Syntax and Semantics from pymtl3 import * 1 s.reg_out 2 class RegIncrPRTL( Component ): 3 s.in_ s.out 4 +1 def construct( s ): 5 s.in_ = InPort ( Bits8 ) 6 s.out = OutPort( Bits8 ) 7 s.temp_wire 8 s.reg_out = Wire( Bits8 ) 9 10 @s.update_ff 11 def seq_logic(): 12 s.reg_out <<= s.in_ 13 14 s.temp_wire = Wire( Bits8 ) 15 16 @s.update 17 def comb_logic(): 18 s.temp_wire = s.reg_out + b8(1) 19 20 s.out //= s.temp_wire 21 8 / 10

  10. PyMTL v3 vs Verilog Syntax and Semantics module RegIncrVRTL 1 from pymtl3 import * 1 ( 2 2 input logic clk, 3 class RegIncrPRTL( Component ): 3 input logic reset, 4 4 input logic [7:0] in_, 5 def construct( s ): 5 output logic [7:0] out 6 s.in_ = InPort ( Bits8 ) 6 ); 7 s.out = OutPort( Bits8 ) 7 8 8 logic [7:0] reg_out; 9 s.reg_out = Wire( Bits8 ) 9 10 10 always_ff @( posedge clk ) begin 11 @s.update_ff 11 reg_out <= in_; 12 def seq_logic(): 12 end 13 s.reg_out <<= s.in_ 13 14 14 logic [7:0] temp_wire; 15 s.temp_wire = Wire( Bits8 ) 15 16 16 always_comb @(*) begin 17 @s.update 17 temp_wire = reg_out + 1; 18 def comb_logic(): 18 end 19 s.temp_wire = s.reg_out + b8(1) 19 20 20 assign out = temp_wire; 21 s.out //= s.temp_wire 21 22 endmodule 23 9 / 10

  11. PyMTL/Verilog Integration SimJITFRTL'Tool' Verilog' TranslaGon' Verilator' Source' Cache' RTL'C++' C'Shared' Source' Library' PyMTL' PyMTL' C'Interface' Wrapper' RTL'Model' TranslaGon' LLVM/GCC' CFFI'Model' Source' Gen' Instance' Instance' 10 / 10

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend