Rsyn - An Extensible Framework for Physical Design Guilherme Flach, - - PowerPoint PPT Presentation

rsyn an extensible framework for physical design
SMART_READER_LITE
LIVE PREVIEW

Rsyn - An Extensible Framework for Physical Design Guilherme Flach, - - PowerPoint PPT Presentation

Rsyn - An Extensible Framework for Physical Design Guilherme Flach, Mateus Fogaa, Jucemar Monteiro, Marcelo Johann and Ricardo Reis Agenda 1. Introduction 2. Framework anatomy 3. Standard components 4. Conclusions 2 1. Introduction 3


slide-1
SLIDE 1

Rsyn - An Extensible Framework for Physical Design

Guilherme Flach, Mateus Fogaça, Jucemar Monteiro, Marcelo Johann and Ricardo Reis

slide-2
SLIDE 2

Agenda

  • 1. Introduction
  • 2. Framework anatomy
  • 3. Standard components
  • 4. Conclusions

2

slide-3
SLIDE 3
  • 1. Introduction

3

slide-4
SLIDE 4

4

Motivations

The increasing complexity of EDA problems Absence of an open-source collaborative platform for physical design Developing an EDA infrastructure is time consuming New research project (New problem) Problem-driven, simplified and tuned data structures Poor code reuse and interoperability

slide-5
SLIDE 5

Gate sizing (ISPD 2012-2013) Incremental timing-driven placement (ICCAD 2014) Incremental timing and incremental CPPR (TAU 2015) Rsyn motivation Incremental timing-driven placement (ICCAD 2015)

Our experience with contests

5

slide-6
SLIDE 6

Our goal

To share an open-source, modular and extensible framework to promote physical synthesis research and education.

6

Help researchers to spend more time on algorithm development rather with infrastructure

slide-7
SLIDE 7

Key features

  • 1. Elegant, dynamic and extensible netlist data model
  • 2. A set of handful standard components
  • 3. Extensibility
  • 4. Graphical user interface
  • 5. Support for academic and industrial file formats

7

slide-8
SLIDE 8
  • 2. Rsyn Framework Anatomy

8

slide-9
SLIDE 9

Rsyn Anatomy Overview

9

Engine Services Processes Netlist Data Model

Timing Analysis Congestion

Routing Estimation

Placement Routing Sizing start() run()

Shell GUI

slide-10
SLIDE 10

Extensibility

10

Engine Services Processes Netlist Data Model

Timing Analysis Congestion

Routing Estimation

Placement Routing Sizing start() run()

Process X Service X

Shell GUI

Service Y Process Y

slide-11
SLIDE 11

Netlist model

Directed graph Pins are nodes Arcs are edges Cell and net arcs

11

Port Top module Module Pin Net Cell Net arc Cell arc

Support for hierarchy → Modules Easy topological traversing

slide-12
SLIDE 12

Library

Shared information among instances are stored in the cell library elements

12

LibraryArc: A→O B→O

Cell Instance: U1

LibraryPin: O LibraryPin: A LibraryPin: B LibraryCell: NAND2_X2_SVT Netlist Library

Cell Instance: U2 Cell Instance: U3

slide-13
SLIDE 13

Netlist Data Model

13 // Traverse pins in reverse topological order. for (Rsyn::Pin pin : module.allPinsInReverseTopologicalOrder()) { for (Rsyn::Arc arc : pin.allOutgoingArcs()) { /* … */ } for (Rsyn::Arc arc : pin.allIncomingArcs()) { /* … */ } Rsyn::Net net = pin.getNet(); if (!net) { std::cout << “Unconnected pin ‘” + pin.getFullName() + “‘\n”; } // end if } // end for

slide-14
SLIDE 14

Netlist Data Model

14 // Traverse pins in reverse topological order. for (Rsyn::Pin pin : module.allPinsInReverseTopologicalOrder()) { for (Rsyn::Arc arc : pin.allOutgoingArcs()) { /* … */ } for (Rsyn::Arc arc : pin.allIncomingArcs()) { /* … */ } Rsyn::Net net = pin.getNet(); if (!net) { std::cout << “Unconnected pin ‘” + pin.getFullName() + “‘\n”; } // end if } // end for

Proxy style... Safe to use in mapping structures w/o incurring in non-determinism.

slide-15
SLIDE 15

Netlist Data Model

15 // Traverse pins in reverse topological order. for (Rsyn::Pin pin : module.allPinsInReverseTopologicalOrder()) { for (Rsyn::Arc arc : pin.allOutgoingArcs()) { /* … */ } for (Rsyn::Arc arc : pin.allIncomingArcs()) { /* … */ } Rsyn::Net net = pin.getNet(); if (!net) { std::cout << “Unconnected pin ‘” + pin.getFullName() + “‘\n”; } // end if } // end for

Easy topological traversal… Topological ordering is incrementally updated due to netlist changes.

slide-16
SLIDE 16

Netlist Data Model

16 // Traverse pins in reverse topological order. for (Rsyn::Pin pin : module.allPinsInReverseTopologicalOrder()) { for (Rsyn::Arc arc : pin.allOutgoingArcs()) { /* … */ } for (Rsyn::Arc arc : pin.allIncomingArcs()) { /* … */ } Rsyn::Net net = pin.getNet(); if (!net) { std::cout << “Unconnected pin ‘” + pin.getFullName() + “‘\n”; } // end if } // end for

Easy access to object collections: net.allPins(); cell.allPins(); cell.allArcs()

slide-17
SLIDE 17

Netlist Data Model

17 // Traverse pins in reverse topological order. for (Rsyn::Pin pin : module.allPinsInReverseTopologicalOrder()) { for (Rsyn::Arc arc : pin.allOutgoingArcs()) { /* … */ } for (Rsyn::Arc arc : pin.allIncomingArcs()) { /* … */ } Rsyn::Net net = pin.getNet(); if (!net) { std::cout << “Unconnected pin ‘” + pin.getFullName() + “‘\n”; } // end if } // end for

Easy access to object properties: pin.getInstance(); net.getNumPins(); ...

slide-18
SLIDE 18

Attributes

User can easily specify new attributes for the netlist objects.

18

internal data

Net

numSinks : int ...

// Creating a new attribute called “visited” to the nets Rsyn::Attribute<Rsyn::Net, int> attr = design.createAttribute(); for (Rsyn::Net net : module.allNets()) { attr[net] = net.getNumSinks(); } // end for Rsyn::Net newNet = module.createNet(); attr[newNet] = newNet.getNumPins(); Rsyn default User specific

slide-19
SLIDE 19

Attributes

Map-style accessing...

19

internal data

Net

numSinks : int ...

// Creating a new attribute called “visited” to the nets Rsyn::Attribute<Rsyn::Net, int> attr = design.createAttribute(); for (Rsyn::Net net : module.allNets()) { attr[net] = net.getNumSinks(); } // end for Rsyn::Net newNet = module.createNet(); attr[newNet] = newNet.getNumPins(); Rsyn default User specific

slide-20
SLIDE 20

Attributes

Seamless handling of dynamic changes in the netlist...

20

internal data

Net

numSinks : int ...

// Creating a new attribute called “visited” to the nets Rsyn::Attribute<Rsyn::Net, int> attr = design.createAttribute(); for (Rsyn::Net net : module.allNets()) { attr[net] = net.getNumSinks(); } // end for Rsyn::Net newNet = module.createNet(); attr[newNet] = newNet.getNumPins(); Rsyn default User specific

slide-21
SLIDE 21

Notification system

21

Rsyn::Observer

  • nDesignDestruction()
  • nPostInstanceCreate(Rsyn::Instance instance)
  • nPreInstanceRemove(Rsyn::Instance instance)
  • nPostNetCreate(Rsyn::Net net)
  • nPreNetRemove(Rsyn::Net net)
  • nPostCellRemap(Rsyn::Cell cell, Rsyn::LibraryCell oldLibraryCell)
  • nPostPinConnect(Rsyn::Pin pin)
  • nPrePinDisconnect(Rsyn::Pin pin)

MyClass

/...

Implement

notifyObservers() registerObserver()

Design

/...

slide-22
SLIDE 22

Remains active during several step flows Analysis tools STA tool Routing estimator Incremental Legalization Shared infrastructure Density grid I/O tools

Services

22

Rsyn::Service

start(Engine engine,const Json& params) stop()

MyService

/...

Engine

/...

Implement registerService()

slide-23
SLIDE 23

Processes

23

Rsyn::Process

run(Engine engine,const Json& params)

MyProcess

/...

Engine

/...

Implement registerService() Implement a simple task State is not kept after execution Optimization methods Sizing Placement Buffering Typically will rely on data stored by services

slide-24
SLIDE 24

GNU/Linux inspired syntax: <command> [<value> …] [-<param> <value> ...] Supported parameter types: String, numeric and Json Commands may be called via script, GUI or shell

Commands

24

Positional parameters Named parameters

slide-25
SLIDE 25

Script

25

  • pen "iccad2015" {

"parms" : "ICCAD15.parm", "config" : "superblue18/superblue18.iccad2015", "maxDisplacement" : 400, "targetUtilization" : 0.85 }; start “myService”; run “myOptimization” {“maxIterations” : 50, “effort” : 1}; myReport “report.txt” -nets -cells;

slide-26
SLIDE 26

GUI

26

Canvas

slide-27
SLIDE 27

GUI

27

Command input

slide-28
SLIDE 28

GUI

28

Graphical commands and information

slide-29
SLIDE 29
  • 3. Standard components

29

slide-30
SLIDE 30

Physical design

Geometric information of the circuit layout and technology Inspired by LEF/DEF User-defined attributes Rows Obstacles Boundaries ... Notification system Position of cell ...

30

Physical Design Layout (DEF) Technology (LEF) Physical library cell Floorplanning

(x, y)

Sites Cells Vias ... Layers

slide-31
SLIDE 31

Routing estimation

A way to estimate the interconnections among the pins

  • f a net

RC-Tree model Relies on the implementation of a routing model (interface) Flexibility Rsyn provides a default estimator based on FLUTE

31

Physical Design RC Tree Generator FLUTE Steiner tree

DefaultRoutingEstimationModel RoutingEstimationModel

updateRoutingEstimation()

RoutingEstimator

//...

slide-32
SLIDE 32

Static timing analysis

Essential tool to assert the design performance Flexible Currently supports: Early/late analysis Only one corner case Rsyn provides a default timing model based on Elmore delay

32

RoutingEstimator ElmoreCalculator

DefaultTimingModel TimingModel

calculateNetArcTiming() calculateLibraryArcTiming() //...

Timer

//...

Liberty Net/Cell arcs

slide-33
SLIDE 33

Static timing analysis

Incremental timing update. Automatically kept in sync with the netlist. Path tracing.

33

RoutingEstimator ElmoreCalculator

DefaultTimingModel TimingModel

calculateNetArcTiming() calculateLibraryArcTiming() //...

Timer

//...

Liberty Net/Cell arcs

slide-34
SLIDE 34

Legalization

34

「Jezz: An effective legalization algorithm

for minimum displacement」

by Julia Casarin Puget, Guilherme Flach, Ricardo Reis and Marcelo Johann SBCCI 2015

Inspired by abacus Provides full and incremental legalization Cache system for speed-up

after before

slide-35
SLIDE 35

Third parties (Thank you!)

35

LEMON

LEF/DEF

FLUTE NCTUgr

OpenLiberty

slide-36
SLIDE 36
  • 4. Conclusions

36

slide-37
SLIDE 37

Conclusions

Easy to use, intuitive and comprehensive C++ framework Extensible and collaborative platform Ready-to-use standard components Allow users to focus on the core of their research Already successful experiences in our lab Open to colaboration

37

slide-38
SLIDE 38

38

http://rsyn.design

slide-39
SLIDE 39

Rsyn - An Extensible Framework for Physical Design

Guilherme Flach, Mateus Fogaça, Jucemar Monteiro, Marcelo Johann and Ricardo Reis

slide-40
SLIDE 40

Contests supported in Rsyn

40

Contest Subject File formats ISPD 2005 Placement Bookshelf ISPD 2006 Placement Bookshelf ISPD 2012 Gate sizing Liberty/SPEF/SDC ISPD 2013 Gate sizing Liberty/SPEF/SDC ICCAD 2015 Timing-driven placement Liberty/lib/SDC/LEF/DEF

slide-41
SLIDE 41

Anatomy overview

41

Engine Services Processes Netlist Data Model

Timing Analysis Congestion

Routing Estimation

Placement Routing Sizing start() run() ...

... Shell GUI Overlays

ABU Density

slide-42
SLIDE 42

Overlays

42

slide-43
SLIDE 43

Overlays

43

slide-44
SLIDE 44

Overlays

44

slide-45
SLIDE 45

Overlays

45

slide-46
SLIDE 46

Overlays

46

slide-47
SLIDE 47

Physical design

for (Rsyn::Instance instance : module.allInstances()) { if (instance.getType() != Rsyn::Cell) continue; Rsyn::PhysicalCell physicalCell = physicalDesign.getPhysicalCell(instance.asCell()); std::cout << "Position: " << physicalCell.getCoordinate(LOWER, X); std::cout << “\n”; } // end for

47

slide-48
SLIDE 48

Utilities

Some features provided by the framework: 1. Geometric data structures and operations

48 Cartesian Point Boundaries

slide-49
SLIDE 49

Utilities

Some features provided by the framework: 1. Geometric data structures and operations 2. Stopwatches: Measure runtime and memory consumption

49

Parsing Liberty (Late)... NOTE: The technology cmos was specified. NOTE: delay_model specified was table_lookup. NOTE: Using the cmos syntax tables... Time Unit (Liberty): 1ns Leakage Power Unit (Liberty): 1nW Parsing Liberty (Late)... Done (runtime: 0.70242 seconds memory: +16 MB)

slide-50
SLIDE 50

Utilities

Some features provided by the framework: 1. Geometric data structures and operations 2. Stopwatches: Measure runtime and memory consumption 3. Logger

50

Parsing Liberty (Late)... NOTE: The technology cmos was specified. NOTE: delay_model specified was table_lookup. NOTE: Using the cmos syntax tables... Time Unit (Liberty): 1ns Leakage Power Unit (Liberty): 1nW Parsing Liberty (Late)... Done (runtime: 0.70242 seconds memory: +16 MB)

Log.txt

slide-51
SLIDE 51

ISPD contests

51

Placement (2005-2006) Global Routing (2007-2008) CTS (2009-2010) Routability-Driven Placement (2011) Gate-sizing (2012-2013) Detailed-Routing-Driven Placement (2014-2015) FPGA Placement (2016-2017)

LEF/DEF/Verilog Bookshelf* Liberty/SDC/SPEF Bookshelf* Bookshelf Labyrinth* Contest own format