Digital Design Flow Eda Tool

94
Delft University of Technology Code ET4351 Digital Design Flow Tutorial for EDA Tools: Synopsys Design Compiler Mentor Modelsim Cadence SOC Encounter V12.1 Ir. A.C. de Graaf Dr. ir. T.G.R. van Leuken

description

EDa Tools

Transcript of Digital Design Flow Eda Tool

Page 1: Digital Design Flow Eda Tool

Del

ftU

nive

rsity

ofTe

chno

logy

Code ET4351

Digital Design Flow

Tutorial for EDA Tools:Synopsys Design CompilerMentor ModelsimCadence SOC Encounter V12.1

Ir. A.C. de GraafDr. ir. T.G.R. van Leuken

Page 2: Digital Design Flow Eda Tool

Preface

This document describes the top-down design flow of the implementation a SoC design. Starting froman example HDL description the designer is guided through all the design steps to tapeout GDS2 layoutdescription.This tutorial is derived from "Top-Down digital design flow" version 3.1 (November 2006) by Alain Va-choux, Microelectronic Systems Lab EPFL, Lausanne, Switzerland.

i

Page 3: Digital Design Flow Eda Tool

Contents

1 Introduction 11.1 Top-down design flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Design project organisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 EDA tools and design kit configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4 VHDL example: FIR-Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.5 Design flow steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 VHDL and Verilog simulation 102.1 Starting the Modelsim graphical environment . . . . . . . . . . . . . . . . . . . . . . . . 102.2 Simulation of (pre-synthesis) RTL VHDL models . . . . . . . . . . . . . . . . . . . . . . 112.3 Simulation of the post-synthesis Verilog model with timing data . . . . . . . . . . . . . . 132.4 Simulation of the post-route Verilog model with timing data . . . . . . . . . . . . . . . . 14

3 Logic synthesis 163.1 Starting the Design Vision graphical environment . . . . . . . . . . . . . . . . . . . . . . 163.2 RTL VHDL model analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.3 Design elaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.4 Design environment definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.5 Design constraint definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.6 Design mapping and optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.7 Report generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.8 VHDL/Verilog gate-level netlist generation and post-synthesis timing data (SDF) extraction 273.9 Design constraints generation for placement and routing . . . . . . . . . . . . . . . . . . 283.10 Design optimization with tighter constraints . . . . . . . . . . . . . . . . . . . . . . . . . 283.11 Using scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Standard cell placement and routing 304.1 Starting the Encounter graphical environment . . . . . . . . . . . . . . . . . . . . . . . . 304.2 Generate uniquified netlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.3 Design import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.4 Floorplan Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344.5 Global net connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354.6 Power ring/stripe creation and routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.7 Operating conditions definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.8 Core cell placement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.9 Post-placement timing analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.10 Clock tree synthesis (optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.11 Filler cell placement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

ii

Page 4: Digital Design Flow Eda Tool

CONTENTS iii

4.12 Design routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.13 Post-routing timing optimization and analysis . . . . . . . . . . . . . . . . . . . . . . . . 464.14 Design checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.15 Report generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504.16 Post-route timing data extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.17 Post-route netlist generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.18 GDS2 file generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.19 Using scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

A Appendix A: VHDL Netlists 56A.1 File: filter.vhd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56A.2 File: filter_top.vhd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60A.3 File: filter_soc.vhd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63A.4 File: filter_soc_tb.vhd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

B Appendix B: Tool Scripts 70B.1 Synopsys: Design Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

B.1.1 filter_soc_syn.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70B.2 Cadence: SOC Encounter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

B.2.1 start.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75B.2.2 fplan.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80B.2.3 pplan.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81B.2.4 place.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83B.2.5 cts.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84B.2.6 route.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85B.2.7 pplan.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86B.2.8 verify.tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

C Appendix C: Design Metrics 89

Page 5: Digital Design Flow Eda Tool

Chapter 1

Introduction

This document details the typical steps of a top-down digital VHDL/Verilog design flow with the help ofone simple design example.The following tools are considered in this document:

• Modelsim v6.5e or higher, from Mentor Graphics.

• Design Compiler and Design Vision D-2010.03 or higher from Synopsys.

• Encounter 9.12 or higher from Cadence Design Systems.

The design kit used is from Faraday. The process is L90_SP, a 90 nm 9-metal CMOS process. Each of thenext chapters in this document is addressing a specific set of tasks. Chapter 2 is about VHDL and Verilogsimulation, chapter 3 is about logic synthesis and chapter 4 is about place and route. Steps in these chaptersare not necessarily to be done in the given sequence. Go to “1.5 Design flow steps” to get a typical sequenceof steps supporting a top-down approach.

1.1 Top-down design flow

Figure 1.1: Top-down design flow

1

Page 6: Digital Design Flow Eda Tool

CHAPTER 1. INTRODUCTION 2

Figure 1.1 illustrates the top-down flow that includes the following steps:

VHDL RTL model creationThe goal here is to develop synthesizable VHDL models at the RTL level (RTL means Register-Transfer Level). Such models usually define a clear separation between control parts (e.g. finitestate machines-FSM) and operative parts (e.g. arithmetic and logic units). Registers are used to storesmall size data between clock cycles. RAM/ROM memories are used to store large amounts of dataor program code. Blocks such as FSMs, ALUs, registers are usually described as behavioral modelsthat do not imply any particular gate-level implementation. Tools used at this step can range fromsimple text editors to dedicated graphical environments that generate VHDL code automatically.

RTL simulationThe VHDL RTL models are validated through simulation by means of a number of testbenches alsowritten in VHDL.

RTL synthesisThe synthesis process infers a possible gate-level realization of the input RTL description that meetsuser-defined constraints such as area, timings or power consumption. The design constraints are de-fined outside the VHDL models by means of tool-specific commands. The targeted logic gates belongto a library that is provided by a foundry or an IP company as part of a so-called design kit. Typicalgate libraries include a few hundreds of combinational and sequential logic gates. Each logic functionis implemented in several gates to accommodate several fan-out capabilities or drive strengths. Thegate library is described in a tool-specific format that defines, for each gate, its function, its area, itstiming and power characteristics and its environmental constraints.

The synthesis step generates several outputs: a gate-level VHDL netlist, a Verilog gate-level netlist,and a SDF description. The first netlist is typically used for post-synthesis simulation, while thesecond netlist is better suited as input to the place&route step. The SDF description includes delayinformation for simulation. Note that considered delays are at this step correct for the gates but onlyestimated for the interconnections.

Post-synthesis gate-level simulationThe testbenches used for RTL model validation can be reused (with possibly some modifications touse the VHL gate-level netlists). The gate-level simulation makes use of VHDL models for the logicgates that are provided in the design kit. These VHDL models follow the VITAL modeling standardto ensure proper back-annotation of delays through the SDF files generated by the synthesis or theplace&route step.

Standard cell place and routeThe place&route (P&R) step infers a geometric realization of the gate-level netlist so-called a layout.The standard cell design style puts logic cells in rows of equal heights. As a consequence, all logicgates in the library have the same height, but may have different widths. Each cell has a power rail atits top and a ground rail at its bottom.

The interconnections between gates are today usually done over the cells since current processesallow several metal layers (i.e. 9 metal layers for the Faraday L90_SP process). As a consequence,the rows may be abutted and flipped so power and ground rails are shared between successive rows.

The P&R step generates several outputs: a geometric description (layout) in GDS2 format, a SDFdescription and a Verilog gate-level netlist. The SDF description now includes interconnect delay.The Verilog netlist may be different from the one read as input as the P&R step may make furthertiming optimizations during placement, clock tree generation and routing (e.g. buffer insertion).

Post-layout gate-level simulation

Page 7: Digital Design Flow Eda Tool

CHAPTER 1. INTRODUCTION 3

The Verilog gate-level netlist can be simulated by using the existing VHDL testbenches and the moreaccurate SDF data extracted from the layout.

System-level integrationThe layout description is then integrated as a block in the designed system. This step is not coveredin this document.

1.2 Design project organisationFirst we have to setup a proper work environment. The toolscripts need the CSH shell as command shellwhile the standard shell after login is the Bash shell. So first we take care that the CSH shell is our defaultcommand shell by:

cp /opt/eds/DesignLab/bin/dot.bashrc ~/.bashrc

Now close the current terminal window and start a new terminal. Then add the DesignLab script directoryto our PATH by:

source /opt/eds/DesignLab/bin/dlab.csh

Given the number of EDA tools and files used in the flow, it is strongly recommended to organize theworking environment in a proper way. To that end, the create_eda_project script can be used to create adirectory structure in which design files will be stored.The use of the script is as follows:

create_eda_project <project-name>

where <project-name> is the name of the top-level directory that will host all design files for the projects.For example, to create the project directory called FILTER that will be used to do the tasks presented in therest of this document, execute the following command:

student@tango> create_eda_project FILTERstudent@tango> cd FILTER

The FILTER top-level directory hosts the configuration files for logic simulation (Modelsim), logic syn-thesis (Synopsys DC) and standard cell place and route (Cadence SoC Encounter). As a consequence,it is required that the tools are always started from that point. One exception is full-custom layout tools(Cadence IC) that must be started from the subdirectory LAY, which hosts different configuration files.Figure 1.2 gives the proposed directory structure and the role of each subdirectory. The actual use of thesubdirectories and files will be explained while going throughout the tutorial in this document.

Page 8: Digital Design Flow Eda Tool

CHAPTER 1. INTRODUCTION 4

<project-name> # project directory home|-- .synopsys_dc.setup # setup file for Synopsys tools|-- modelsim.ini # setup file for Modelsim tool|-- DOC # documentation (pdf, text, etc.)|-- HDL # VHDL/Verilog source files| |-- GATE # gate-level netlists| |-- RTL # RTL descriptions| ‘-- TBENCH # testbenches|-- IP # external blocks (e.g., memories)|-- LAY # full-custom layout files|-- LIB # design libraries| |-- MSIM # Modelsim library (VHDL, Verilog)| ‘-- SNPS # Synopsys library (VHDL, Verilog)|-- PAR # place & route files| |-- BIN # commands, scripts| |-- CONF # configuration files| |-- CTS # clock tree synthesis files| |-- DB # database files| |-- DEX # design exchange files| |-- LOG # log files| |-- RPT # report files| |-- SDC # system design constraint files| |-- TEC # technology files| ‘-- TIM # timing files|-- SIM # simulation files| |-- BIN # commands, scripts| ‘-- OUT # output files (e.g., waveforms)‘-- SYN # synthesis files

|-- BIN # commands, scripts|-- DB # database files|-- LOG # log files|-- RPT # report files|-- SDC # system design constraint files‘-- TIM # timing files

Figure 1.2: Design project structure.

Page 9: Digital Design Flow Eda Tool

CHAPTER 1. INTRODUCTION 5

1.3 EDA tools and design kit configurationThe text file edadk.conf lists both tools and designkit to use. The tech_setup command reads this file andsetup your technology environment. In order to use the EDA tools and Faraday design kit, a script file callededadk.csh with the necessary PATHs to the tools exists in the directory from which the tools are launched(the top-level project directory).

Add these PATHs to your current environment by executing:

student@tango-FILTER> tech_setupstudent@tango-FILTER> source edadk.csh

For information on the FARADAY design kits, find the FARADAY documentation in

/opt/eds/DesignLab/tech/Faraday/L90_SP/Docs.

1.4 VHDL example: FIR-FilterThe FIR-Filter example will be used as the reference design throughout the topdown flow. Microelectronicchips require specialized circuitry for electrostatic discharge (ESD) protection and to be able to drive largeoff-chip loads. These input/output (I/O) drivers also include bonding pads that enable physical connectionbetween the microchip and the package. I/O drivers are basically specialized buffers, much larger thanregular standard cells, and are designed to be placed around the core. While physical design is not ourjob at the moment, the finished top-level design needs to include these I/O drivers. The most convenientway to include the I/O drivers is to add a new hierarchy level. In our example the top level design iscalled filter_top and can be found under HDL/RTL/filter_top.vhd (See App. A.2. The hierarchy level thatinstantiates filter_top and the I/O drivers will be called SOC and is found in HDL/RTL/filter_soc.vhd (SeeApp. A.3). Figure 1.3 shows the levels of hierarchy. The coefficient LUT will be implemented as a ROM.Listing ?? gives the declaration of the SOC level VHDL model of FIR-Filter.

Figure 1.3: VHDL design hierarchy

Page 10: Digital Design Flow Eda Tool

CHAPTER 1. INTRODUCTION 6

Listing 1.1: Declaration of the synthesisable FIR-Filter.

l i b r a r y i e e e ;use i e e e . s t d _ l o g i c _ 1 1 6 4 . a l l ;

3 −−use i e e e . n u m e r i c _ s t d . a l l ;

l i b r a r y techmap ;use techmap . gencomp . a l l ;

8 e n t i t y f i l t e r _ s o c i sg e n e r i c (

CWIDTH : i n t e g e r := 1 6 ;CAW : i n t e g e r := 7 ;DWIDTH : i n t e g e r := 1 6 ;

13 DAW : i n t e g e r := 7) ;port (

ClkxCI : in s t d _ l o g i c ;ResetxRBI : in s t d _ l o g i c ;

18 DataInxDI : in s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;Data InReqxSI : in s t d _ l o g i c ;DataInAckxSO : out s t d _ l o g i c ;DataOutxDO : out s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;DataOutReqxSO : out s t d _ l o g i c ;

23 DataOutAckxSI : in s t d _ l o g i c) ;

end f i l t e r _ s o c ;

a r c h i t e c t u r e r t l of f i l t e r _ s o c i s28 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

−− component d e c l a r a t i o n s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−component f i l t e r _ t o p i sg e n e r i c (

33 CWIDTH : i n t e g e r := 1 6 ;CAW : i n t e g e r := 7 ;DWIDTH : i n t e g e r := 1 6 ;DAW : i n t e g e r := 7

) ;38 port (

ClkxCI : in s t d _ l o g i c ;ResetxRBI : in s t d _ l o g i c ;Data InxDI : in s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;Data InReqxSI : in s t d _ l o g i c ;

43 DataInAckxSO : out s t d _ l o g i c ;DataOutxDO : out s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;DataOutReqxSO : out s t d _ l o g i c ;DataOutAckxSI : in s t d _ l o g i c

) ;48 end component ;

Page 11: Digital Design Flow Eda Tool

CHAPTER 1. INTRODUCTION 7

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− s i g n a l d e c l a r a t i o n s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

53 s i g n a l ClkxCI_s : s t d _ l o g i c ;s i g n a l Rese txRBI_s : s t d _ l o g i c ;s i g n a l Data InxDI_s : s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;s i g n a l Data InReqxSI_s : s t d _ l o g i c ;s i g n a l DataInAckxSO_s : s t d _ l o g i c ;

58 s i g n a l DataOutxDO_s : s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;s i g n a l DataOutReqxSO_s : s t d _ l o g i c ;s i g n a l DataOutAckxSI_s : s t d _ l o g i c ;s i g n a l VCCIO : s t d _ u l o g i c _ v e c t o r (7 downto 0) ;s i g n a l GNDIO : s t d _ u l o g i c _ v e c t o r (7 downto 0) ;

63 s i g n a l VCCCO : s t d _ u l o g i c ;s i g n a l GNDCO : s t d _ u l o g i c ;

c o n s t a n t p a d t e c h : i n t e g e r := f a r a d a y ;c o n s t a n t p a d l e v e l : i n t e g e r := 0 ;

68 begin−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Pad I n s t a n t i a t i o n s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Power Pads

73 io_VCCIO : v c c i o p a d v g e n e r i c map ( wid th => 8 , t e c h => pad tech , l i m i t=> c o r e _ l i m i t e d )

port map (VCCIO) ;io_GNDIO : gnd iopadv g e n e r i c map ( wid th => 8 , t e c h => pad tech , l i m i t

=> c o r e _ l i m i t e d )port map (GNDIO) ;

io_VCCCO : vcccopad g e n e r i c map ( t e c h => pad tech , l i m i t =>c o r e _ l i m i t e d )

78 port map (VCCCO) ;io_GNDCO : gndcopad g e n e r i c map ( t e c h => pad tech , l i m i t =>

c o r e _ l i m i t e d )port map (GNDCO) ;

−− S i g n a l Padsi o_ClkxCI : i n p a d g e n e r i c map ( t e c h => pad tech , l e v e l => p a d l e v e l ,

l i m i t => c o r e _ l i m i t e d )83 port map ( ClkxCI , ClkxCI_s ) ;

io_Rese txRBI : i n p a d g e n e r i c map ( t e c h => pad tech , l e v e l => p a d l e v e l ,l i m i t => c o r e _ l i m i t e d )

port map ( ResetxRBI , Rese txRBI_s ) ;i o _ D a t a I n x D I : i n pa dv g e n e r i c map ( wid th => DWIDTH, t e c h => pad tech ,

l e v e l => p a d l e v e l , l i m i t => c o r e _ l i m i t e d )port map ( DataInxDI , Da ta InxDI_s ) ;

88 io_Da t a InReqxSI : i n p a d g e n e r i c map ( t e c h => pad tech , l e v e l =>p a d l e v e l , l i m i t => c o r e _ l i m i t e d )

port map ( DataInReqxSI , Da ta InReqxSI_s ) ;io_DataInAckxSO : o u t pad g e n e r i c map ( t e c h => pad tech , l e v e l =>

Page 12: Digital Design Flow Eda Tool

CHAPTER 1. INTRODUCTION 8

p a d l e v e l , s lew => f a s t , l i m i t => c o r e _ l i m i t e d )port map ( DataInAckxSO , DataInAckxSO_s ) ;

io_DataOutxDO : ou tpadv g e n e r i c map ( wid th => DWIDTH, t e c h => pad tech, l e v e l => p a d l e v e l , s lew => f a s t , l i m i t => c o r e _ l i m i t e d )

93 port map ( DataOutxDO , DataOutxDO_s ) ;io_DataOutReqxSO : ou tpa d g e n e r i c map ( t e c h => pad tech , l e v e l =>

p a d l e v e l , s lew => f a s t , l i m i t => c o r e _ l i m i t e d )port map ( DataOutReqxSO , DataOutReqxSO_s ) ;

io_DataOutAckxSI : i n p a d g e n e r i c map ( t e c h => pad tech , l e v e l =>p a d l e v e l , l i m i t => c o r e _ l i m i t e d )

port map ( DataOutAckxSI , DataOutAckxSI_s ) ;98 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

−− Component I n s t a n t i a t i o n s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−i _ f i l t e r _ t o p : f i l t e r _ t o p

g e n e r i c map (103 CWIDTH => CWIDTH,

CAW => CAW,DWIDTH => DWIDTH,DAW => DAW)

port map (108 ClkxCI => ClkxCI_s ,

ResetxRBI => ResetxRBI_s ,Data InxDI => DataInxDI_s ,Data InReqxSI => DataInReqxSI_s ,DataInAckxSO => DataInAckxSO_s ,

113 DataOutxDO => DataOutxDO_s ,DataOutReqxSO => DataOutReqxSO_s ,DataOutAckxSI => DataOutAckxSI_s

) ;end r t l ;

Lines 73 to 98 instantiate generic components for IO cells defined in the technology independent librarytechmap.To install the VHDL model and its associated testbenches in the project directory, enter the followingcommand in the top-level project directory FILTER:

student@tango-FILTER> install_design filter

Appendix A.4 gives the testbench for the RTL model (file filter_soc_tb.vhd). The testbench for the mappednetlist (file filter_soc_mapped_tb.vhd) can also be used for the simulation of the placed and routed Verilognetlist. The file filter_soc.io defines the positions of the IO pins for place and route.The file filter_soc_syn.tcl in directory SYN/BIN is a Tcl script that performs synthesis of the VHDL modelin batch mode. The file top_level.tcl in directory PAR/BIN is a Tcl script that performs the placement androuting of the synthesized Verilog netlist in batch mode.

1.5 Design flow stepsHere are the main steps of the top-down design flow with references to the sections in the document thatgive more details.

Page 13: Digital Design Flow Eda Tool

CHAPTER 1. INTRODUCTION 9

Step 1) Pre-synthesis VHDL simulation (tool: Modelsim)

2.1 Compilation of the RTL VHDL model and related testbench [2.2]2.2 Simulation of the RTL VHDL model

Step 2) Logic synthesis (tool: Synopsys Design Compiler)

3.1 RTL VHDL model analysis [3.2]3.2 Design elaboration (generic synthesis) [3.3]3.3 Design environment definition (operating conditions, wire load model) [3.4]3.4 Design constraint definitions (area, clock, timings) [3.5]3.5 Design mapping and optimization (mapping to gates) [3.6]3.6 Report generation [3.7]3.7 VHDL gate-level netlist generation [3.8]3.8 Post-synthesis timing data (SDF) generation for the VHDL netlist [3.8]3.9 Verilog gate-level netlist generation [3.8]

3.10 Design constraints generation for placement and routing [3.9]

Step 3) Post-synthesis VHDL simulation (tool: Modelsim) [2.3]

4.1 Compilation of the VHDL/Verilog netlist and related testbench4.2 Simulation of the post-synthesis gate-level netlist with timing data

Step 4) Placement and routing (tool: Cadence Encounter)

5.1 Generate a uniquified netlist (Convert Verilog mapped netlist) [??]5.2 Design import (technological data + Verilog netlist) [4.3]5.3 Floorplan specification [4.4]5.4 Power ring/stripe creation and routing [4.6]5.5 Global net connections definition [4.5]5.6 Operating conditions definition [4.7]5.7 Core cell placement [4.8]5.8 Post-placement timing analysis [4.9]5.9 Clock tree synthesis (optional) [4.10]

5.10 Design routing [4.12]5.11 Post-route timing optimization and analysis [4.13]5.12 Filler cell placement [4.11]5.13 Design checks [4.14]5.14 Report generation [4.15]5.15 Post-route timing data extraction [4.16]5.16 Post-route netlist generation [4.17]5.17 GDS2 file generation [4.18]

Step 5) Post-layout VHDL/Verilog simulation (tool: Modelsim) [2.4]

6.1 Compilation of the Verilog netlist and related testbench6.2 Simulation of the post-synthesis or post-P&R gate-level netlist with PaR timing data

Page 14: Digital Design Flow Eda Tool

Chapter 2

VHDL and Verilog simulation

This chapter presents the main steps to perform the logic simulation of VHDL and Verilog models with theModelsim tool.

2.1 Starting the Modelsim graphical environmentTo start the Modelsim environment, enter in the vsim command in the Unix shell:

student@tango-FILTER> vsim &

Figure 2.1: Modelsim console window

10

Page 15: Digital Design Flow Eda Tool

CHAPTER 2. VHDL AND VERILOG SIMULATION 11

The modelsim.ini file actually defines the mapping between logical design libraries and their physicallocations. Note that the Help menu on the top right allows one to access the complete documentation of thetool. After having started the vsim GUI you have two options to simulate your model, either interactivelyor by executing the following convenience scripts (see directory SIM/BIN) on the VSIM command line:

wave.do To start a wave window with the ports of the top level module.start_far_[mapped | routed ].do To start up the simulation of the particular module.run_far_[mapped | routed ].do To load the filter coefficients into the coefficient ROM and runs the simu-

lation for 300 us.

2.2 Simulation of (pre-synthesis) RTL VHDL modelsThe task here is to validate the functionality of the VHDL model that will be synthesized. The first step isto compile the VHDL model and its associated testbench. There are two ways to compile VHDL models.One way is to execute the vcom command from the command line of the Modelsim window:

ModelSim> vcom HDL/RTL/SYAA90_128X16X1CM2.vhdModelSim> vcom HDL/RTL/SPAA90_512X16BM1A.vhdModelSim> vcom HDL/RTL/coeffFAR.vhdModelSim> vcom HDL/RTL/dataRamFAR.vhdModelSim> vcom HDL/RTL/filter.vhdModelSim> vcom HDL/RTL/filter_top.vhdModelSim> vcom HDL/RTL/filter_soc.vhdModelSim> vcom HDL/TBENCH/filter_soc_tb.vhd

or execute the shell script compile_msim_far.sh from the CSH command line:

student@tango-FILTER> sh compile_msim_far.sh

The other way is to left-click on the Compile icon , to select the files to compile in the HDL/RTLand HDL/TBENCH directories, click on Compileand finally close the window (click Done). Thecompiled modules are stored in the logical libraryWORK which is mapped to the physical locationLIB/MSIM. Once VHDL (or Verilog) models havebeen successfully compiled in the design library, itis possible to create a make file that can be used torecompile only the required files. The vmake com-mand can only be run from a Unix shell and createsthe make file:

student@tango-FILTER> vmake > Makefile

The created file Makefile now defines the design unit dependencies and the compilation commands torecompile only those source files that have been modified or that depend on modified files. To rebuild thelibrary, run the make command in the Unix shell

To simulate the RTL model, select the main menuitem Simulate⇒ Start simulation... to get the sim-ulation dialog window.Select in the Design Tab from library work the archi-tecture of the testbench and a resolution of ns. Thenclick OK.

Page 16: Digital Design Flow Eda Tool

CHAPTER 2. VHDL AND VERILOG SIMULATION 12

The main window now changes a bit to show the simulation hierarchy, the list of signals in the testbenchand the simulation console (with now the VSIM number> prompt).Left clicking twice on an instance in the simulation hierarchy pane displays the corresponding VHDL sourcein the right pane.

The next step is to select the signals to display in simulation.Right click in the Objects (top center) pane, then selectAdd to Wave⇒ Signals in Region.Note that the appropriate hierarchy level is selected in the simu-lation hierarchy window. Selecting another level, e.g. dut, willdisplay all the signals visible in this scope. You may want to addselected signals from inner levels (local signals).The selected signals are displayed in a new window called wave.The wave pane is by default located on the top right (as a new tab

on the source windows). You can click on the Undock iconto make the wave pane separate.Now first load the content coefficient file into the coefficient memory:

VSIM 7> run 35 nsVSIM 7> do SIM/BIN/load.do

Then to start the simulation, it is either possible to enter run commands in the simulation console such as:

VSIM 7> run 300 us

or to click on the Run icon in the main window or in the wave window.The signal waveforms are then visible in the wave window. To change the radix of the displayed signals,select the signals (press shift left-click for multiple selection), then select the wave menu itemFormat⇒ Radix⇒ Unsigned.

Page 17: Digital Design Flow Eda Tool

CHAPTER 2. VHDL AND VERILOG SIMULATION 13

Note that the command run -all runs the simulation until there is no more pending event in the simulationqueue. This could lead to never ending simulation when the model, like the testbench loaded here, has acontinuously switching signal such as the clock signal clk. It is however possible to stop the current simu-

lation by clicking the Break icon in the main window or in the wave window.

Run the simulation interactively as described in the previous section or run the following scripts (SeeSIM/BIN) from the VSIM command line.

VSIM 7> do SIM/BIN/start_far.doVSIM 8> do SIM/BIN/wave.doVSIM 9> do SIM/BIN/run_far.do

If you make any modification to the VHDL source, you need to recompile the sources (manually or using thevmake command described earlier in this section), and then restart the simulation in the same environment(e.g., the same displayed waveforms or the same simulation breakpoints) with the restart -f command.

2.3 Simulation of the post-synthesis Verilog model with timing dataThis step occurs after the RTL model has been synthesized into a gate-level netlist. The timing informa-tion about the design which includes the delay of the library cells only is stored in a SDF file. (See -3.8VHDL/Verilog gate-level netlist generation and post-synthesis timing data (SDF) extraction.)Compile the Verilog gate-level netlist generated by the logic synthesis and its testbench in a new librarycalled mapped:vlib LIB/MSIM/mappedModelSim> vcom -work LIB/MSIM/mapped HDL/RTL/SYAA90_128X16X1CM2.vhdModelSim> vcom -work LIB/MSIM/mapped HDL/RTL/SPAA90_512X16BM1A.vhdModelSim> vlog -work LIB/MSIM/mapped HDL/GATE/filter_soc_mapped.vModelSim> vcom -work LIB/MSIM/mapped HDL/TBENCH/filter_soc_tb_mapped.vhd

or execute the shell script compile_msim_far_mapped.sh.

To simulate the RTL model,

1. Select the main menu item Simulate⇒ Start simulation... to get the simulation dialog window.

2. Select from library mapped the architecture of the testbench and a resolution of 100ps.

3. Click the Libraries tab to add the gate libraries fsd0a_a_generic_core andfod0a_b25_t25_generic_io,

Page 18: Digital Design Flow Eda Tool

CHAPTER 2. VHDL AND VERILOG SIMULATION 14

4. Then click the SDF tab. In the SDF dialog window, add the file SYN/TIM/filter_soc_mapped.sdf andspecify the region dut, which is the label of the instance in the testbench that will be annotated withtiming data. Note that the Reduce SDF errors to warnings box must be checked. This is required toavoid the simulation to stop prematurely due to errors such as "Failed to find port ´a(7)´". These arenot really errors here as they are related to interconnect delay data in the SDF file that are not used inthe simulation (they are actually all set to zero).

Then click OK in the remaining Start Simulation dialog box to load the mapped netlist. Clock to outputdelays of the order of 100ps to 1ns should be visible in the wave window.Run the simulation interactively as described in the previous section or run the following scripts (SeeSIM/BIN) from the VSIM command line.

VSIM 7> do SIM/BIN/start_far_mapped.doVSIM 8> do SIM/BIN/wave.doVSIM 9> do SIM/BIN/run_far_mapped.do

2.4 Simulation of the post-route Verilog model with timing dataThis step occurs after the design has been placed and routed. The Post-route SDF-file contains cell delayand wire delays of the circuit. See "4.16 Post-route timing data extraction" and "4.17 Post-route netlistgeneration". This step involves the simulation of a Verilog gate-level netlist with a VHDL testbench. Com-

Page 19: Digital Design Flow Eda Tool

CHAPTER 2. VHDL AND VERILOG SIMULATION 15

pile the Verilog gate-level netlist generated by the logic synthesis and its testbench in a new library calledrouted:

vlib LIB/MSIM/routedModelSim> vcom -work LIB/MSIM/routed HDL/RTL/SYAA90_128X16X1CM2.vhdModelSim> vcom -work LIB/MSIM/routed HDL/RTL/SPAA90_512X16BM1A.vhdModelSim> vlog -work LIB/MSIM/routed HDL/GATE/faraday-io.vModelSim> vlog -work LIB/MSIM/routed HDL/GATE/filter_soc-routed.vModelSim> vcom -work LIB/MSIM/routed HDL/TBENCH/filter_soc_tb_mapped.vhd

or execute the shell script compile_msim_far_routed.sh.

To simulate the placed and routed netlist with timing data:

1. Select the item Simulate⇒ Start simulation... in the main menu to get the simulation dialog win-dow.

2. Select from library routed the architecture of the testbench and a resolution of 100ps.

3. Then click the Libraries tab to add the gate libraries fsd0a_a_generic_core andfod0a_b25_t25_generic_io

4. Load the SDF timing file PAR/TIM/filter_soc-routed.sdf.

Note that the Reduce SDF errors to warnings box must be checked. This is required to avoid the sim-ulation to stop prematurely due to errors such as “Failed to find matching specify timing constraint”.These are not really errors here as they are related to removal (asynchronous) timing constraintsgenerated by Encounter that are not supported in the Verilog models of the gates.

Run the simulation interactively or run the following scripts (See SIM/BIN) from the VSIM command line.

VSIM 7> do SIM/BIN/start_far_routed.doVSIM 8> do SIM/BIN/wave.doVSIM 9> do SIM/BIN/run_far_routed.do

Page 20: Digital Design Flow Eda Tool

Chapter 3

Logic synthesis

This chapter presents the main steps to perform the logic synthesis of the VHDL RTL model with theSynopsys Design Vision and Design Compiler tools. The sold alias displays the complete Synopsys doc-umentation set. Manual pages are available by executing the command “snps man command” (e.g., snpsman design_vision).

3.1 Starting the Design Vision graphical environmentTo start the Synopsys Design Vision environment, enter the design_vision command in a new shell:

student@tango-FILTER> design_vision

16

Page 21: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 17

The command line is also echoed in the terminal shell from which the tool has been started, so it is possibleto enter DC commands from there as well(the shell has the design_vision> prompt). It is still possible to execute some Unix commands from here.

3.2 RTL VHDL model analysisThe analysis phase compiles the VHDL model and checks thatthe VHDL code is synthesizable. Select File ⇒ Analyze... inthe main menu.Use the Add... button to add all the VHDL sources you need toanalyze.In the case you have more than one VHDL file to analyze, becareful to list the files in the correct analysis order.Click OK.

3.3 Design elaborationThe elaboration phase performs a generic pre-synthesis of the analyzed model. It essen-tially identifies the registers that will be in-ferred.Select File⇒ Elaborate... in the main menu.The DEFAULT library is identical to the WORKlibrary. Specify the value for the CWIDTH,DWIDTH generic parameters to 16 and for theCAW, DAW parameters 7.Click OK.The console now displays the inferred registersand the kind of reset (here asynchronous reset -AR: Y).

design_vision> elaborate FILTER_SOC -architecture RTL -library WORK -parameters"CWIDTH = 16, CAW = 7, DWIDTH = 16, DAW = 7, CWIDTH = 16"

...

Inferred memory devices in processin routine filter_DWIDTH16_DAW7 line 158 in file

’/mnt/tango/md2/users/sander/ET4351/asic/designs/filter1/HDL/RTL/filter.vhd’.

===============================================================================| Register Name | Type | Width | Bus | MB | AR | AS | SR | SS | ST |===============================================================================| OutRegxDP_reg | Flip-flop | 16 | Y | N | Y | N | N | N | N |===============================================================================

...

design_vision> Current design is ’filter_soc_CWIDTH16_CAW7_DWIDTH16_DAW7’.

Page 22: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 18

Note the name filter_soc_CWIDTH16_CAW7_DWIDTH16_DAW7 given to the elaborated entity. It ispossible to display the elaborated schematic by selecting the entity i_filter_top in the hierarchy window

and then clicking the Create Design Schematic icon . Note that the symbols merely indicate genericcomponents that do not yet represent any real logic gate.

3.4 Design environment definitionBefore a design can be optimized, you must define the environment in which the design is expected tooperate. You define the environment by specifying operating conditions, wire load models, and systeminterface characteristics. Operating conditions include temperature, voltage, and process variations. Wireload models estimate the effect of wire length on design performance. System interface characteristicsinclude input drives, input and output loads, and fanout loads. The environment model directly affectsdesign synthesis results. Here we will only deal with operating conditions and wire load models.To define the operating conditions, select the main menu itemSelect the WCCOM condition, which defines a temperature of 125˚C, a voltage of 0.9V (the L90_SP processis a 1V process), and a slow process. Each cell library defines its own set of operating conditions and mayuse different names for each set.Click OK.Wire load models allow the tool to estimate the effect of wire length and fanout on the resistance, capaci-tance, and area of nets. The FARADAY design kit defines a number of wire load models. It also defines an

Page 23: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 19

automatic selection of the wire load model to use according to the design area, which is actually consideredhere.To get the definitions of the available operating conditions (and on the cell library), execute the report_libcommand in the tool command line:report_lib fsd0a_a_generic_core_ss0p9v125cThe report_design command summarizes the definitions of the design environment.

3.5 Design constraint definitionsMany kinds of constraints may be defined on the design. Here only constraints on the area and theclock will be defined. To define the clock attributes, i.e. its period and duty cycle, select the entityfilter_soc_CWIDTH16_CAW7_DWIDTH16_DAW7 in the hierarchy window and then click the Create

Symbol View icon.In the symbol view, select the clk pin and then select the main menu item Attributes⇒ Specify Clock....Define a clock period of 10 ns with 50% duty cycle. Time unit is not specified here. It is defined in the celllibrary and is usually ns.Click OK. The console now includes the command line equivalent of the clock definition:create_clock -name "clk" -period 10-waveform { 0 5 } { clk }To define an area constraint, select in the main menu the itemAttributes⇒ Optimization Constraints⇒ Design Constraints....A max area constraint set to zero is not realistic but it will force the synthesizer to target a minimum area.Click OK. The console now includes the command line equivalent of the constraint definition:set_max_area 0

Page 24: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 20

It is a now good idea to save the elaborated design so itwill be possible to run several optimization steps from thatpoint.Select the entityfilter_soc_CWIDTH16_CAW7_DWIDTH16_DAW7 in thehierarchy window and then the main menu itemFile⇒ Save As....Save the elaborated design under the name filter_soc_elab.ddcin the SYN/DB directory.The selection of the option Save all design in hierarchy isrelevant for hierarchical designs.The console includes the equivalent command line:write -hierarchy -format ddc -output .../FILTER/SYN/DB/filter_soc_elab.ddcTo read back an elaborated design, select the main menu item File ⇒ Read... and then select the file toread.

Page 25: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 21

3.6 Design mapping and optimizationThe optimization phase, also called herecompilation phase, is technology de-pendent. It performs the assignmentof logic gates from the standard cell li-brary to the elaborated design in such away the defined constraints are met.Select the main menu itemDesign⇒ Compile Ultra....For a first run there is no need to changethe default settings.Click OK. The console and the Unixshell now include the progress of thework.The equivalent command line is: compile_ultra -map_effort medium -area_effort medium

The mapped design schematic is now hierarchical as it includes instances of the coefficient rom, data ramand the filter circuit. Also, the cells are now real gates from the cell library.Note that the default resource allocation and implementation for operative parts is based on timing con-straints.This means that resource sharing is used so that timing constraints are met or not worsened. In our case, a

Page 26: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 22

single adder has been inferred for both adder and subtractor operations.The mapped design can now be saved. Select the entity filter_soc_CWIDTH16_CAW7_DWIDTH16_DAW7in the hierarchy window and then the main menu item File⇒ Save As.... Save the mapped design underthe name filter_soc_mapped.ddc in the directory SYN/DB.

3.7 Report generationIt is possible to get many reports on various synthesis results. Here only reports on the area used, criticalpath timing and the resources used will be generated.To get a report of the area used by the mapped design, select the main menu item Design > Report Area....Save the report in the fileSYN/RPT/filter_soc_mapped_area.rpt as well as in the report viewer. Click OK.A new window and the console now display the report:

I n f o r m a t i o n : Upda t ing graph . . . ( UID−83)

∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗Re po r t : a r e aDes ign : f i l t e r _ s o cV e r s i o n : D−2010.03−SP5−1Date : Wed May 30 1 3 : 5 2 : 1 0 2012∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

I n f o r m a t i o n : Upda t ing d e s i g n i n f o r m a t i o n . . . ( UID−85)L i b r a r y ( s ) Used :

f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 c ( F i l e : / o p t / eds / DesignLab / t e c h / Fa raday / L90_SP / Core /f s d 0 a _ a /2010 Q4v2 . 1 / GENERIC_CORE / Fron tEnd / s y n o ps y s / s y n t h e s i s /f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 c . db )

f o d 0 a _ b 2 5 _ t 2 5 _ g e n e r i c _ i o _ s s 0 p 9 v 1 2 5 c ( F i l e : / o p t / eds / DesignLab / t e c h / Fa raday / L90_SP / IO/ fod0a_b25 /2009 Q2v3 . 0 / T25_GENERIC_IO / FrontEnd / s y n o p s y s /f o d 0 a _ b 2 5 _ t 2 5 _ g e n e r i c _ i o _ s s 0 p 9 v 1 2 5 c . db )

Page 27: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 23

SYAA90_128X16X1CM2_BC ( F i l e : / o p t / eds / DesignLab / t e c h / Fa raday / L90_SP / Memory /SYAA90_128X16X1CM2_BC . db )

SPAA90_512X16BM1A_BC ( F i l e : / o p t / eds / DesignLab / t e c h / Fa raday / L90_SP / Memory /SPAA90_512X16BM1A_BC . db )

Number o f p o r t s : 38Number o f n e t s : 78Number o f c e l l s : 97Number o f r e f e r e n c e s : 24

C o m b i n a t i o n a l a r e a : 176044.062891N o n c o m b i n a t i o n a l a r e a : 190436.095396Net I n t e r c o n n e c t a r e a : u n d e f i n e d ( Wire l o a d has z e r o n e t a r e a )

T o t a l c e l l a r e a : 366480.158287T o t a l a r e a : u n d e f i n e d1

The area unit depends on the standard cell library. Here all area figures are in square microns. The netinterconnect area is estimated with the use of a wire load model that has been automatically selected fromthe design area.To get a report on the most critical timing path in the mapped design, select the main menu itemTiming⇒ Report Timing PathSave the report in the file SYN/RPT/filter_soc_mapped_timing.rpt as well as in the report viewer.Click OK. A new window and the console now display the report:

∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗Re po r t : t i m i n g

−p a t h f u l l−d e l a y max−max_paths 1−s o r t _ b y group

Page 28: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 24

Design : f i l t e r _ s o cV e r s i o n : D−2010.03−SP5−1Date : Wed May 30 1 3 : 5 2 : 1 3 2012∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

O p e r a t i n g C o n d i t i o n s : WCCOM L i b r a r y : f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cWire Load Model Mode : e n c l o s e d

S t a r t p o i n t : i _ f i l t e r _ t o p / i _ f i l t e r / S t a t e x D P _ r e g [ 0 ]( r i s i n g edge− t r i g g e r e d f l i p −f l o p c l o c k e d by ClkxCI )

E n d p o in t : DataInAckxSO( o u t p u t p o r t c l o c k e d by ClkxCI )

Pa th Group : ClkxCIPa th Type : max

Des / C l u s t / P o r t Wire Load Model L i b r a r y−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−f i l t e r _ s o c G5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cfilter_DWIDTH16_DAW7 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 c

P o i n t I n c r Pa th−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−c l o c k ClkxCI ( r i s e edge ) 0 . 0 0 0 . 0 0c l o c k ne twork d e l a y ( i d e a l ) 0 . 0 0 0 . 0 0i _ f i l t e r _ t o p / i _ f i l t e r / S t a t e x D P _ r e g [ 0 ] / CK (DFFRBX1) 0 . 0 0 0 . 0 0 ri _ f i l t e r _ t o p / i _ f i l t e r / S t a t e x D P _ r e g [ 0 ] / QB (DFFRBX1) 0 . 3 5 0 . 3 5 fi _ f i l t e r _ t o p / i _ f i l t e r / U178 /O (NR2X1) 0 . 6 9 1 . 0 3 ri _ f i l t e r _ t o p / i _ f i l t e r / DataInAckxSO ( filter_DWIDTH16_DAW7 ) 0 . 0 0 1 . 0 3 ri _ f i l t e r _ t o p / DataInAckxSO ( filter_top_CWIDTH16_CAW7_DWIDTH16_DAW7 ) 0 . 0 0 1 . 0 3 rio_DataInAckxSO / x0 / op /O (VYA4GSGB) 3 . 0 3 4 . 0 6 rDataInAckxSO ( o u t ) 0 . 0 0 4 . 0 6 rd a t a a r r i v a l t ime 4 . 0 6

c l o c k ClkxCI ( r i s e edge ) 8 . 0 0 8 . 0 0c l o c k ne twork d e l a y ( i d e a l ) 0 . 0 0 8 . 0 0o u t p u t e x t e r n a l d e l a y −0.80 7 . 2 0d a t a r e q u i r e d t ime 7 . 2 0−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−d a t a r e q u i r e d t ime 7 . 2 0d a t a a r r i v a l t ime −4.06−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−s l a c k (MET) 3 . 1 4

1

All times are expressed in ns (the time unit is defined in the cell library). The slack defines the time marginfrom the clock period. A positive slack means that the latest arriving signal in the path still arrives beforethe end of the clock period. A negative slack means that the timing constraint imposed by the clock isviolated.The timing delays that are accounted for are the internal gate delays (from the cell library) and the estimatedinterconnect delays (from the cell library and the wire load model in use).To highlight the critical path on the schematic, select the filter_soc_CWIDTH16_CAW7_DWIDTH16_DAW7entity in the hierarchy window and then the Select menu itemSchematic⇒ New Path Schematic View⇒ Of Paths From/Through/To... .You can see that the critical path goes from pin DO(1) of instance .../i_filter_top/i_coeff/a9d16 topin D of instance .../i_filter/OutRegxDP_reg[15].Another useful report is the list of resources used. A resource is an arithmetic or comparison operator readin as part of an HDL design. Resources can be shared during execution of the compile command.

Page 29: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 25

To get a report on the resources used, select the main menu item Design⇒ Report Design Resources....Save the report in the fileSYN/RPT/filter_soc_mapped_resources.rpt as well as in the report viewer.Click OK.As the report stated no special operator were found in our filter_soc design.The last useful report is the one on power used. Here a estimate on power consumption is given based onswitch activity and the library models used in the circuit.To get a report on the power used, select the main menu item Design⇒ Report Power....Save the report in the fileSYN/RPT/filter_soc_mapped_power.rpt as well as in the report viewer.Click OK.

A new window and the console now display the report:

Page 30: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 26

Loading db f i l e ’ / o p t / eds / DesignLab / t e c h / Fa raday / L90_SP / IO / fod0a_b25 /2009 Q2v3 . 0 /T25_GENERIC_IO / FrontEnd / s y n o p s y s / f o d 0 a _ b 2 5 _ t 2 5 _ g e n e r i c _ i o _ s s 0 p 9 v 1 2 5 c . db ’

Loading db f i l e ’ / o p t / eds / DesignLab / t e c h / Fa raday / L90_SP / Core / f s d 0 a _ a /2010 Q4v2 . 1 /GENERIC_CORE / Fron tEnd / s y n o p sy s / s y n t h e s i s / f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 c . db ’

Loading db f i l e ’ / o p t / eds / DesignLab / t e c h / Fa raday / L90_SP / Memory / SPAA90_512X16BM1A_BC . db ’Loading db f i l e ’ / o p t / eds / DesignLab / t e c h / Fa raday / L90_SP / Memory / SYAA90_128X16X1CM2_BC . db ’I n f o r m a t i o n : P r o p a g a t i n g s w i t c h i n g a c t i v i t y ( low e f f o r t z e r o d e l a y s i m u l a t i o n ) . (PWR−6)Warning : Des ign has u n a n n o t a t e d p r i m a r y i n p u t s . (PWR−414)Warning : Des ign has u n a n n o t a t e d s e q u e n t i a l c e l l o u t p u t s . (PWR−415)Warning : Des ign has u n a n n o t a t e d b l a c k box o u t p u t s . (PWR−428)

∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗Re po r t : power

−a n a l y s i s _ e f f o r t lowDesign : f i l t e r _ s o cV e r s i o n : D−2010.03−SP5−1Date : Wed May 30 1 3 : 5 2 : 1 3 2012∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗

L i b r a r y ( s ) Used :

f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 c ( F i l e : / o p t / eds / DesignLab / t e c h / Fa raday / L90_SP / Core /f s d 0 a _ a /2010 Q4v2 . 1 / GENERIC_CORE / Fron tEnd / s y n o ps y s / s y n t h e s i s /f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 c . db )

f o d 0 a _ b 2 5 _ t 2 5 _ g e n e r i c _ i o _ s s 0 p 9 v 1 2 5 c ( F i l e : / o p t / eds / DesignLab / t e c h / Fa raday / L90_SP / IO/ fod0a_b25 /2009 Q2v3 . 0 / T25_GENERIC_IO / Fron tEnd / s y n o p s ys /f o d 0 a _ b 2 5 _ t 2 5 _ g e n e r i c _ i o _ s s 0 p 9 v 1 2 5 c . db )

SYAA90_128X16X1CM2_BC ( F i l e : / o p t / eds / DesignLab / t e c h / Fa raday / L90_SP / Memory /SYAA90_128X16X1CM2_BC . db )

SPAA90_512X16BM1A_BC ( F i l e : / o p t / eds / DesignLab / t e c h / Fa raday / L90_SP / Memory /SPAA90_512X16BM1A_BC . db )

O p e r a t i n g C o n d i t i o n s : WCCOM L i b r a r y : f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cWire Load Model Mode : e n c l o s e d

Des ign Wire Load Model L i b r a r y−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−f i l t e r _ s o c G5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cfilter_top_CWIDTH16_CAW7_DWIDTH16_DAW7 enG30K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ v c c c o p a d _ l i m i t 1 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ g n d c o p a d _ l i m i t 1 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ v c c i o p a d _ l i m i t 1 _ 7 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ g n d i o p a d _ l i m i t 1 _ 7 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cfilter_DWIDTH16_DAW7 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ g n d i o p a d _ l i m i t 1 _ 6 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ g n d i o p a d _ l i m i t 1 _ 5 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ g n d i o p a d _ l i m i t 1 _ 4 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ g n d i o p a d _ l i m i t 1 _ 3 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ g n d i o p a d _ l i m i t 1 _ 2 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ g n d i o p a d _ l i m i t 1 _ 1 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ g n d i o p a d _ l i m i t 1 _ 0 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ v c c i o p a d _ l i m i t 1 _ 6 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ v c c i o p a d _ l i m i t 1 _ 5 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ v c c i o p a d _ l i m i t 1 _ 4 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ v c c i o p a d _ l i m i t 1 _ 3 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ v c c i o p a d _ l i m i t 1 _ 2 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ v c c i o p a d _ l i m i t 1 _ 1 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cf a r a d a y _ v c c i o p a d _ l i m i t 1 _ 0 enG5K f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 c

Gl ob a l O p e r a t i n g V o l t a g e = 0 . 9Power−s p e c i f i c u n i t i n f o r m a t i o n :

V o l t a g e U n i t s = 1VC a p a c i t a n c e U n i t s = 1 .000000 pfTime U n i t s = 1 nsDynamic Power U n i t s = 1mW ( d e r i v e d from V, C , T u n i t s )Leakage Power U n i t s = 1pW

C e l l I n t e r n a l Power = 1 .4108 mW (95%)Net S w i t c h i n g Power = 79 .1487 uW (5%)

−−−−−−−−−T o t a l Dynamic Power = 1 .4899 mW (100%)

C e l l Leakage Power = 74 .6822 uW

1

Page 31: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 27

3.8 VHDL/Verilog gate-level netlist generation and post-synthesis tim-ing data (SDF) extraction

This step generates a VHDL model of the mapped design for simulation and a Verilog model of the samedesign to be used as input to the placement and routing tool. It also generates a SDF (Standard DelayFormat) file that includes the gate delays. Care should be taken to use the right naming scheme whengenerating the SDF file, otherwise the back-annotation of the delays onto the VHDL or Verilog netlists forsimulation will fail. Here we only consider the back-annotation of VHDL netlists.Before generating the VHDL netlist, it is required to apply some VHDL naming rules to the design. This isdone by entering the following command in the console(be sure that the entity filter_soc_CWIDTH16_CAW7_DWIDTH16_DAW7 is selected in the hierarchywindow):change_names -hierarchy -rules vhdl -verbose

Save the mapped design in the file filter_soc_mapped.vhd in the directory HDL/GATE.Note: the dialog window creates HDL files with the .vhdl extension rather than .vhd as used so far.Click Save.The console now echoes the equivalent command line:

write -hierarchy -format vhdl -output .../FILTER/HDL/GATE/filter\_mapped.vhd

To generate the SDF file, enter the following command in the consolewrite_sdf -version 2.1 SYN/TIM/filter_soc_mapped.sdfInformation: Annotated ’cell’ delays are assumed to include load delay.The informational message says that the estimated interconnect delays are actually included in the SDF fileas part of the cell delays. The generated SDF file actually includes a list of interconnect delays of zerovalues.Before generating the Verilog netlist, it is better to reload the database and apply specific Verilog namingrules to the design. This is done by selecting File⇒Remove All Designs from the main menu, then readingthe database file ./SYN/DB/filter_soc_mapped.ddc, and entering the following command in the console(be sure that the entity filter_soc_CWIDTH16_CAW7_DWIDTH16_DAW7 is selected in the hierarchywindow):change_names -hierarchy -rules verilog -verboseSave the mapped design in the file filter_soc_mapped.v in the directory HDL/GATE.Click Save. The console now echoes the equivalent command line:write -hierarchy -format verilog-output .../FILTER/HDL/GATE/filter_soc_mapped.v

Page 32: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 28

3.9 Design constraints generation for placement and routingBoth design environment and design constraint definitions may be stored in a format that can be read byother Synopsys tools such as PrimeTime or other EDA tool such as Cadence Soc Encounter.The following command creates a new file that includes the design constraints that have been defined forsynthesis in Tcl format:write_sdc -nosplit SYN/SDC/filter_soc_mapped.sdcIt is important to do that step after the Verilog naming rules have been applied to the mapped design (see3.8), otherwise there could be discrepencies on port/signal names between the netlist and the constraint file.

3.10 Design optimization with tighter constraintsIt is possible to let the synthesizer infer another faster adder architecture, e.g., a carry look-ahead architec-ture, by shortening the clock period. The goal here is to redo some steps in this chapter and to compare theresults with the ones obtained with the initially slowclock.

1. Read the elaborated design. It is not necessary to re-analyze the VHDL sources.

2. Specifiy the clock with a 1 ns period.

3. Save the new elaborated entity in the file SYN/DB/filter_soc_CWIDTH16_CAW7_DWIDTH16_DAW7_1ns_elab.db.

4. Map and optimize the design.

5. Save the mapped design in the file SYN/DB/filter_soc_1ns_mapped.db.

6. Get the new area, timing and resources reports. Compare with the reports you got for the 10 ns clockperiod.

7. Generate the VHDL gate-level netlist in

HDL/GATE/filter_soc_1ns_mapped.vhdl

and the associated SDF timing data file in

SYN/TIM/filter_soc_1ns_mapped.sdf.

8. Do a post-synthesis simulation.

9. Generate the Verilog gate-level netlist in HDL/GATE/filter_soc_1ns_mapped.v.

10. Save the design constraints for placement and routing in the file

SYN/SDC/filter_soc_1ns_mapped.sdc

Page 33: Digital Design Flow Eda Tool

CHAPTER 3. LOGIC SYNTHESIS 29

3.11 Using scriptsIt is much more convenient to use scripts and to run the synthesis tool in batch mode when the designcomplexity increases. Scripts also conveniently capture the synthesis flow and make it reusable. SynopsysDesign Compiler supports the Tcl language for building scripts.An example of such a script for the synthesis of the filter_soc design has been installed in the SYN/BINdirectory (see “?? VHDL example: FIR-Filter”). The script must be run from the project top directory andit assumed a directory organization as described in “1.2 Design project organisation”. To run the Tcl script,execute the following command in a Unix shell:

student@tango-FILTER> dc_shell -f SYN/BIN/filter_soc_syn.tcl

When the script finishes executing, the dc_shell environment is still active so you can enter other dc_shellcommands. Enter quit or exit to return to the Unix shell.The script is given below. It may be modified to define design information and constraints and to controlthe flow to some extent.

Page 34: Digital Design Flow Eda Tool

Chapter 4

Standard cell placement and routing

This chapter presents the main steps to perform the placement and the routing of the synthesized gate-level netlist using standard cells from the FARADAY design kit. The tool used here is Cadence Encounter(Velocity).

4.1 Starting the Encounter graphical environmentTo start the Encounter environment, enter the velocity command in a new Unix shell:

student@tango-FILTER> velocity -log PAR/LOG/encounter -overwrite

30

Page 35: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 31

that includes all commands entered in the session. If the -overwrite switch is not used, both log and com-mand files are incremented at each new session. The Unix shell from which the tool is started is called theEncounter console. The console displays the velocity> prompt. This is where you can enter all Encountertext commands and where the tool displays messages. If you use the console for other actions, e.g., Unixcommands, the Encounter session suspends until you finish the action.The main window includes three different design views that you can toggleduring a session: the Floorplan view, the Amoeba view, and the Physical view.The Floorplan view displays the hierarchical module and block guides, con-nection flight lines, and floorplan objects, including block placement, and power/ground nets. The Amoebaview displays the outline of the modules and submodules after placement, showing physical locality of themodule. The Physical view displays the detailed placements of the module’s blocks, standard cells, nets,and interconnects.The main window includes a satellite window, which identifies the location of the current view in the designdisplay area, relative to the entire design. The chip area is identified by a yellow box, the satellite view isidentified by the pink crossbox. When you display an entire chip in the design display area, the satellitecrossbox encompasses the chip area yellow box.When you zoom and pan through the chip in the design display area, the satellite crossbox identifies whereyou are relative to the entire chip.

• To move to an area in the design display area, click and drag on the satellite crossbox.

• To select a new area in the design display area, click and drag on the satellite crossbox.

• To resize an area in the satellite window, click with the Shift key and drag a corner of the crossbox.

• To define a chip area in the satellite window, right-click and drag on an area.

There are a number of binding keys available (hit the key when the Encounter GUI is active):

b display the list of binding keys

d (de)select or delete objects

f zoom the display to fit the core area

k create a ruler

K remove last ruler displayed

q display the object attribute editor form for the selected object; click the left-button mouse to select anobject, Shift-click to select or deselect an object

u undo last command

U redo last command

z zoom-in 2x

Z zoom-out 2x

Arrows pan the display.

Hit CTRL-R to refresh the display.

Page 36: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 32

4.2 Generate uniquified netlistWithin your synthesized netlist, there are several adder modules. You might realize that these modulesshould have unique names and currently they do not (i.e., as is, the multiple instances of the adder moduleare all called the same name, meaning that the current netlist is wrong). You will fix this using an Encountercommand to make the instances unique: uniquifyNetlist âAStop accu accu.vh netlist This command takesthe netlist called âAIJnetlistâAI, where the accu module is the top module, and makes a unique netlist savedto the file accu.vh. You should view the accu.vh file to verify that the adder modules are now instantiatedwith unique names.

4.3 Design importImporting the design into Encounter involves specifying the following setup information:Design libraries and files. This includes informa-tion on the technological process and the cell li-brary in the LEF (Layout Exchange Format) for-mat. LEF files provides information such as metaland via layers and via generate rules which is usedfor routing tasks. They also provide the minimuminformation on cell layouts for placement and rout-ing.Gate-level netlist. This relates to the (Verilog)netlist to be placed and routed.Timing libraries. This includes information on thecell timings (delays, setup/hold times, etc.).To start the design import, select File ⇒ ImportDesign... in the main menu. Then, click onthe Load... button and load the file PAR/CON-F/L90_SP_std.confThis file defines a basic import configuration.There is a number of additions and changes to bring to the initial configuration. The new configuration willthen be saved for future uses.The first information to add is the netlist. Click on the ... button on the right of the Verilog Files field. Youget a new dialog window with only one pane. Click on the top-right icon to get the full window. Removethe VERILOG/none line in the left pane.Select the Verilog netlist file HDL/GATE/filter_soc_unique.v (or the Verilog netlist you want to place androute), add it to the left pane and close the window. It is assumed here that the imported netlist is the onegenerated for the 8 ns clock period.In the Design Import window, select the Auto Assign box to let the tool extract the top cell name from thefile. If the Verilog file includes more than one design (more than one top module name), you need to givethe name of the top module to use explicitly.In the Timing Constraint File Field:Select the file that has been generated during logic synthesis (3.6 Design mapping and optimization):SYN/SDC/filter_soc_mapped.sdc Only timing information in the constraint file is actually used by En-counter.In the IO Assignment File Field:Select the PAR/CONF/filter_soc.io fileIn the Advanced tab select in the left pane the Power tag, you can keep only the VCC and GND powernets. The names of power and ground nets must be the same as the ones used in the LEF file that describes

Page 37: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 33

Page 38: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 34

the standard cells.You can now save the updated configuration in the filePAR/CONF/filter_soc.conf by clicking on the Save... button.Finally, click on OK. The configuration is then read in.To reload a configuration, select File ⇒ Import Design... in the main menu. Then, click on the Load...button and load the configuration file from the PAR/CONF directory.

4.4 Floorplan SpecificationThe floorplan defines the actual form, or aspect ratio, the layout will take, the global and detailed routinggrids, the rows to host the core cells and the I/O pad cells (if required), and the location of the corner cells(if required).

Select Floorplan⇒ Specify Floorplan... in the main menu.In order to be able to add PAD cells and IO cells we need to specify Die Size and the Core to IO Boundaryparameters. Click the button at Die Size by: and fill in 1872.02 µm for both Width and Height.At "Core Margins by:" click the button Core to IO Boundary and fill in the distance between the I/Oboundary and the core, here 560iµm at Core to Left, Top, Right, Bottom. Click OK.If you want to change the coordinates you will need the metrics of the core , IO and pad cells. These metricsare described in Appendix C.Select Floorplan⇒ Automatic Floorplan⇒ Plan Design... in the main menu to execute the floorplan-ning. The memory macro’s are placed into the core area. You can move the memory cells if the initialplacement does not suit you.Additionally, the command Floorplan⇒ Clear Floorplan... allows you to delete all or parts of the floor-plan objects.With Floorplan ⇒ Automatic Floorplan ⇒ Finish Floorplan... halo’s around the macro cell can bespecified to prevent placement of standardcells to close to the macro cells. Specify here a halo width of 28um and leave everything else default.Now the gaps between the IO cells must be filled with IO-filler cells.Execute the fillperi.tcl script by the following command on the command line:velocity> source PAR/BIN/fillperi.tclThe display design area pane now shows the defined floorplan with the required number of rows.

Page 39: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 35

It is a good idea to save the design at that stage to allow restarting here quickly without needing to redo allthe previous steps.Select File⇒ Save Design... in the main menu and save the current state in the filePAR/DB/filter_soc-fplan.enc.The data are actually saved in the directory PAR/DB/filter_soc-fplan.enc.dat.To restore design data, select File⇒ Restore Design... in the main menu and select the .enc file to read inthe PAR/DB directory.

4.5 Global net connectionsThis step assigns pins or nets to global power and ground nets. The imported Verilog netlist does notmention any power and ground connections. However, the cells that will be placed do have power/groundpins that will need to be routed to the global power/ground nets defined for the block.Select Floorplan⇒ Connect Global Nets... in the main menu.

Page 40: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 36

The left pane (Connection List) is initially empty. For each VCC and ground net:Check the Pins field and enter the pin name (VCC or GND).Fill the To Global Net field with either VCC or GND.Click on Add to List. The left pane now includes the related global net connection.Repeat these actions with Tie High checked and finally with Tie Low checked.Click on Apply and then on Close.

4.6 Power ring/stripe creation and routingThis step generates the VCC and GND power rings around the core and optionally adds a number of verticaland/or horizontal power stripes across the core. Stripes ensure a proper power distribution in large cores.They are not strictly required here as the design is small.Select Power⇒ Power Planning⇒ Add Rings... in the main menu.

The Net(s) field defines the number and the kinds of rings from the core. In our case, there will be first aground ring around the core and a VCC ring around the ground ring. The net names should be consistentwith the power net names in the cell LEF file.In the Ring Type field check Core ring(s) contouring. The Ring Configuration field should define ringwidths of 2.8 micron spaced by 1.12 micron.The rings will be placed either in the center of the channel between the core and the chip boundary (or theIO pads, if any) or at a particular offset from the core . Check the Specify in the Ring Configuration fieldand specify an offset to the core of 28 µm.It is possible to extend the ring segments to reach the core boundary.Click on the Advanced tab and click on the segments you’d like to extend.Other power and ground side trunks can be defined by selecting only horizontal or vertical segments.Click OK to generate the rings.

Page 41: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 37

To add block rings around the memory blocks, select Power⇒ Power Planning⇒ Add Rings... in themain menu.

In the Ring Type field check Block ring(s) around. The Ring Configuration field should define ring widthsof 1.12 micron spaced by 0.56 micron. Check the Specify in the Ring Configuration field and specify anoffset to the block of 5.6 µm.Click OK to generate the block rings.

It is possible to measure sizes by using the ruler (or hit the k binding key). Hit K to remove the lastruler or press ESC to remove all rulers.To remove ring segments select them and hit the Delete key.To add power stripes, select Power⇒ Power Planning⇒ Add Stripes... in the main menu.The Set Configuration area defines the Net(s) pattern, direction, layer, width and spacing of the stripes.Our example does not need any stripes so click Cancel

Page 42: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 38

Now, it is possible to route the power grid. Select Route⇒ SRoute... in the main menu. All default valuesare fine. Click OK to do the routing. The design now looks like below:

It is recommended to save the new stage of the design. Select File⇒ Save Design... in the main menu andsave the current state in the file PAR/DB/filter_soc-pplan.enc.

4.7 Operating conditions definitionThe operating conditions define the temperature, process and voltage conditions for the design. They impactthe timing calculations and optimizations.Select the Options⇒ Set Mode⇒ Specify Operating Condition/PVT... in the main menu.

In the max tab, select the WCCOM operating condition for Timing Library: fsd0a_a_generic_core_ss0p9v125c.In the min tab, select the BCCOM operating condition for Timing Library: fsd0a_a_generic_core_ff1p1vm40c.Click OK.The max operating conditions will be used to meet setup timing constraints, while the min operating condi-tions will be used to meet hold timing constraints.The Encounter console summarizes the settings:

Page 43: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 39

Set Min operating condition to ’fsd0a_a_generic_core_ff1p1vm40c/%NOM_PVT’defined in Timing Library ’fsd0a_a_generic_core_ff1p1vm40c’

Process: 1.00 Temperature: -40.000 Voltage: 1.100Set Max operating condition to ’fsd0a_a_generic_core_ss0p9v125c/%NOM_PVT’

defined in Timing Library ’fsd0a_a_generic_core_ss0p9v125c’Process: 1.00 Temperature: 125.000 Voltage: 0.900

*** Calculating scaling factor for min libraries using operating condition:Name: fsd0a_a_generic_core_ff1p1vm40c/%NOM_PVT Process: 1.00

Temperature: -40.000 Voltage: 1.100*** Calculating scaling factor for max libraries using operating condition:

Name: fsd0a_a_generic_core_ss0p9v125c/%NOM_PVT Process: 1.00Temperature: 125.000 Voltage: 0.900

Running the following command in the Encounter console gives the active operating conditions:

velocity 1> getOpCond -vmin: fsd0a_a_generic_core_ff1p1vm40c/%NOM_PVT proc: 1.0000 volt: 1.1000 temp:

-40.0000max: fsd0a_a_generic_core_ss0p9v125c/%NOM_PVT proc: 1.0000 volt: 0.9000 temp:

125.0000

4.8 Core cell placementThis step places the cells of the imported Verilog netlist in the rows.Select Place⇒ Standard Cells... in the main menu.By clicking the Mode button one can specify placement options. By default it will run in Timing DrivenPlacement Mode. Stick to the default options and click OK.

The Timing Driven Placement Mode option will optimize the placement of the cells that are on the criticalpath. Some cell instances may be replaced with cells having lower driving capabilities (downsizing) orstronger driving capabilities (upsizing). Buffers may be also added or deleted. The Velocity console notifiessuch changes.Click OK to do the placement. It may take some time to complete, especially when the placement is timingdriven and a high effort level is used .The placement should then look like below:

Page 44: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 40

It is recommended to save the new stage of the design. Select File⇒ Save Design... in the main menu andsave the current state in the file PAR/DB/filter_soc-placed.enc.

Page 45: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 41

4.9 Post-placement timing analysisThe timing analysis engine in Encounter can now be run to get a relatively good idea of the timing perfor-mances of the design. It actually performs a trial routing and a parasitic extraction based on the current cellplacement.Select Timing⇒ Report Timing... in the main menu. Define the path for the slack report file. Click OK.

In the Encounter console window you get a summary of the timing analysis:

# ############################################################### Genera ted b y : Cadence Encoun te r 09 .12−s159_1# OS: L inux i686 ( Host ID s a l s a )# Genera ted on: Wed May 30 11 : 1 4 : 1 8 2012# Command: t i m e D e s i g n −preCTS − i dea lC lock −pa thRepor t s − d r v R e p o r t . . .# ##############################################################

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−t i m e D e s i g n Summary

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

+−−−−−−−−−−−−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+| Se tup mode | a l l | r e g 2 r e g | i n 2 r e g | r e g 2 o u t | i n 2 o u t | c l k g a t e |+−−−−−−−−−−−−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+| WNS ( ns ) : | 2 . 0 8 2 | 3 . 3 8 5 | 5 . 8 4 1 | 2 . 0 8 2 | N/A | N/A || TNS ( ns ) : | 0 . 0 0 0 | 0 . 0 0 0 | 0 . 0 0 0 | 0 . 0 0 0 | N/A | N/A || V i o l a t i n g P a t h s : | 0 | 0 | 0 | 0 | N/A | N/A || A l l P a t h s : | 200 | 102 | 98 | 18 | N/A | N/A |+−−−−−−−−−−−−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+−−−−−−−−−+

+−−−−−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−+| | Rea l | T o t a l || DRVs +−−−−−−−−−−−−−−−−−−+−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−|| | Nr n e t s ( t e r m s ) | Worst Vio | Nr n e t s ( t e r m s ) |+−−−−−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−+−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−+| max_cap | 2 ( 2 ) | −0.081 | 2 ( 2 ) || max_t ran | 4 ( 1 3 4 ) | −0.567 | 4 ( 1 3 4 ) || max_fanout | 0 ( 0 ) | 0 | 0 ( 0 ) |+−−−−−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−+−−−−−−−−−−−−+−−−−−−−−−−−−−−−−−−+

D e n s i t y : 10 . 6 9 8%Rout ing O v e r f l o w : 0 . 0 0% H and 0 . 0 0% V−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Page 46: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 42

The design is not critical as the slack is positive (2.082 ns).To get more details on the critical path execute the following commands in the Encounter console:velocity 16> report_timingThe following report is then displayed in the console:

# ############################################################### Genera ted b y : Cadence Encoun te r 09 .12−s159_1# OS: L inux i686 ( Host ID s a l s a )# Genera ted on: Wed May 30 11 : 2 4 : 5 9 2012# Command: r e p o r t _ t i m i n g# ##############################################################Pa th 1 : MET La te E x t e r n a l Delay A s s e r t i o nE n d p o i n t : DataInAckxSO ( ^ ) checked wi th l e a d i n gedge of ’ ClkxCI ’B e g i n p o i n t : i _ f i l t e r _ t o p / i _ f i l t e r / S t a t exDP_reg_0_ /QB ( v ) t r i g g e r e d by l e a d i n gedge of ’ ClkxCI ’Othe r End A r r i v a l Time 0 . 0 0 0− E x t e r n a l Delay 0 . 8 0 0+ Phase S h i f t 8 . 0 0 0= R e q u i r e d Time 7 . 2 0 0− A r r i v a l Time 5 . 1 1 8= S l a c k Time 2 . 0 8 2

Clock Ri se Edge 0 . 0 0 0+ Clock Network La tency ( I d e a l ) 0 . 0 0 0= B e g i n p o i n t A r r i v a l Time 0 . 0 0 0+

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+

| I n s t a n c e | Arc | C e l l | Delay | A r r i v a l | R e q u i r e d|

| | | | | Time | Time|

|−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+−−−−−−−−−−−−−−−−+−−−−−−−−−−+−−−−−−−+−−−−−−−−−+−−−−−−−−−−|

| i _ f i l t e r _ t o p / i _ f i l t e r / S t a t exDP_reg_0_ | CK ^ | | | 0 . 0 0 0 | 2 . 0 8 2|

| i _ f i l t e r _ t o p / i _ f i l t e r / S t a t exDP_reg_0_ | CK ^ −> QB v | DFFRBX1 | 0 . 3 3 1 | 0 . 3 3 1 | 2 . 4 1 3|

| i _ f i l t e r _ t o p / i _ f i l t e r / U178 | I2 v −> O ^ | NR2X1 | 1 . 3 8 3 | 1 . 7 1 3 | 3 . 7 9 5|

| io_DataInAckxSO_x0_op | I ^ −> O ^ | VYA4GSGB | 3 . 4 0 5 | 5 . 1 1 8 | 7 . 2 0 0|

| | DataInAckxSO ^ | | 0 . 0 0 0 | 5 . 1 1 8 | 7 . 2 0 0|

+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+

If timing requirements are not met optimization is possible by selecting Optimize⇒ Optimize Design...in the main menu and check pre-CTS and click OK.

4.10 Clock tree synthesis (optional)As the paths that will propagate the clock signal in the design are not necessarily balanced, some registersmay receive the active clock edge later than others (clock skew) and may therefore violate the assumedsynchronous design operation. For example, the original clock tree we can get from the previously placeddesign is shown below.To create a balanced clock tree, you have first to create a clock tree specification file. Encounter can create afirst draft version of the file you can then edit to include design specific data. Here we will use a ready madespecification file PAR/CTS/filter_soc-spec.ctstch Select Clock ⇒ Synthesize Clock Tree... in the mainmenu. In the popup menu change the Results Directory to PAR/CTS/clock_report at Clock SpecificationFiles: on the ... button to add the clock specification file PAR/CTS/filter_soc-spec.ctstch .Click OK to create the clock tree.To display the generated clock tree, select

Page 47: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 43

Clock⇒ Display⇒ Display Clock Tree ... in the main menu.

The clock paths have been balanced according to the clock tree specifications.To get a report on the clock tree synthesis, enter the following command at the velocity prompt.

velocity 1> reportClockTree -report PAR/RPT/filter_soc.ctsrpt

The following report is also displayed in the Encounter console:

v e l o c i t y 10> r e p o r t C l o c k T r e eRedoing s p e c i f y C l o c k T r e e . . .

Page 48: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 44

Checking spec f i l e i n t e g r i t y . . .

r e p o r t C l o c k T r e e Opt ion :∗∗∗ Look For R e c o n v e r g e n t Clock Component ∗∗∗The c l o c k t r e e io_ClkxCI_x0_ ip /O has no r e c o n v e r g e n t c e l l .

## Mode : S e t u p# L i b r a r y Name : f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 c∗∗∗∗∗∗∗∗∗∗ Clock io_ClkxCI_x0_ ip /O Pre−Route Timing A n a l y s i s ∗∗∗∗∗∗∗∗∗∗Nr . o f S u b t r e e s : 1Nr . o f S i n k s : 66Nr . o f B u f f e r : 1Nr . o f Leve l ( i n c l u d i n g g a t e s ) : 1Root R i se I n p u t Tran : 0 . 1 ( ps )Root F a l l I n p u t Tran : 0 . 1 ( ps )Max t r i g . edge d e l a y a t s i n k (R) : i _ f i l t e r _ t o p / i _ f i l t e r / AccuxDP_reg_15_ /CK 385 . 4

( ps )Min t r i g . edge d e l a y a t s i n k (R) : i _ f i l t e r _ t o p / i _ f i l t e r / OutRegxDP_reg_1_ /CK 364

. 5 ( ps )

( A c t u a l ) ( R e q u i r e d )R i se Phase Delay : 364 . 5 ~385 . 4 ( ps ) 0~8000( ps )F a l l Phase Delay : 302 . 1 ~323( ps ) 0~8000( ps )T r i g . Edge Skew : 20 . 9 ( ps ) 300( ps )R i se Skew : 20 . 9 ( ps )F a l l Skew : 20 . 9 ( ps )Max. R i se B u f f e r T r a n . : 182 . 5 ( ps ) 400( ps )Max. F a l l B u f f e r T r a n . : 156 . 6 ( ps ) 400( ps )Max. R i se Sink T r a n . : 170 . 2 ( ps ) 400( ps )Max. F a l l S ink T r a n . : 76 . 4 ( ps ) 400( ps )Min. R i se B u f f e r T r a n . : 182 . 5 ( ps ) 0 ( ps )Min. F a l l B u f f e r T r a n . : 156 . 6 ( ps ) 0 ( ps )Min. R i se Sink T r a n . : 170 . 2 ( ps ) 0 ( ps )Min. F a l l S ink T r a n . : 76 . 2 ( ps ) 0 ( ps )

G e n e r a t i n g Clock A n a l y s i s Re po r t f i l t e r _ s o c . c t s r p t . . . .Clock A n a l y s i s (CPU Time 0 : 0 0 : 0 0 . 0 )

∗∗∗ End r e p o r t C l o c k T r e e ( c p u = 0 : 0 0 : 0 0 . 0 , r e a l = 0 : 0 0 : 0 0 . 0 , mem=476.0M ) ∗∗∗

Several clock report files are also available in the PAR/CTS/clock_report directory.It is recommended to save the new stage of the design. Select File⇒ Save Design... in the main menu andsave the current state in the file PAR/DB/filter_soc-cts.enc.

4.11 Filler cell placementFiller cells will fill remaining holes in the rows and ensure the continuity of power/ground rails and N+/P+wells in the rows. To fill the holes with filler cells, select Place ⇒ Physical Cell ⇒ Add Filler... in the

Page 49: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 45

main menu.Select the cells FILLER64E, FILLER32E, FILLER16E, FILLER8E, FILLER4E, FILLER3, FILLER2 andFILLER1 and click OK to place the filler cells.Another way to add the filler cells is by executing the tcl script "fillcore.tcl":

velocity 1> source PAR/BIN/fillcore.tcl

4.12 Design routingThis step generates all the wires required to connect the cells according to the imported gate-level netlist.To route the design, selectRoute⇒ Nanoroute... in the main menu, check the Timing Driven box and a maximum effort.Click OK to do the routing.You now get the routed design:

Page 50: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 46

It is recommended to save the new stage of the design. Select File⇒ Save Design... in the main menu andsave the current state in the file PAR/DB/filter_soc-routed.enc.

4.13 Post-routing timing optimization and analysisA final timing optimization may be done on the routed design. SelectOptimize⇒ Optimize Design... in the main menu. Select the postRoute box.Click OK.The results of the optimization is displayed in the Encounter console:

4.14 Design checksThe Verify menu has a number of items to check that the design has been properly placed and routed.Select Verify ⇒ Verify Connectivity... in the main menu. Define the report file as PAR/RPT/filter_soc-conn.rpt.Click OK.The console displays the results:

∗∗∗∗∗∗∗∗ S t a r t : VERIFY CONNECTIVITY ∗∗∗∗∗∗∗∗

Page 51: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 47

Page 52: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 48

S t a r t Time: Wed May 30 12 : 4 9 : 4 5 2012

Design Name: f i l t e r _ s o cD a t a b a s e U n i t s : 1000Design Boundary : (0 . 0 0 0 0 , 0 .0000 ) (1872 . 0 8 0 0 , 1872 .0800 )E r r o r L i m i t = 1000 ; Warning L i m i t = 50Check a l l n e t s

VC E l a p s e d Time: 0 : 0 0 : 0 0 . 0

Begin SummaryFound no prob lems or w a r n i n g s .

End Summary

End Time: Wed May 30 12 : 4 9 : 4 5 2012∗∗∗∗∗∗∗∗ End: VERIFY CONNECTIVITY ∗∗∗∗∗∗∗∗

V e r i f i c a t i o n Complete : 0 V i o l s . 0 Wrngs.(CPU Time: 0 : 0 0 : 0 0 . 1 MEM: 0.008M )

Select Verify⇒ Verify Geometry... in the main menu. In the Advanced tab, define the report file asPAR/RPT/filter_soc-geom.rpt.Click OK.

Page 53: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 49

The console displays the results:

VERIFY GEOMETRY . . . . . . Sub−Area : 15 complete 0 V i o l s . 0 Wrngs.VERIFY GEOMETRY . . . . . . SubArea : 16 of 16VERIFY GEOMETRY . . . . . . C e l l s : 0 V i o l s .VERIFY GEOMETRY . . . . . . SameNet : 0 V i o l s .VERIFY GEOMETRY . . . . . . Wir ing : 0 V i o l s .VERIFY GEOMETRY . . . . . . Antenna : 0 V i o l s .VERIFY GEOMETRY . . . . . . Sub−Area : 16 complete 0 V i o l s . 0 Wrngs.

VG: e l a p s e d t i m e : 5 . 0 0Begin Summary . . .

C e l l s : 0SameNet : 0Wir ing : 0Antenna : 0S h o r t : 0Over l ap : 0

End Summary

V e r i f i c a t i o n Complete : 0 V i o l s . 0 Wrngs.

∗∗∗∗∗∗∗∗∗∗End: VERIFY GEOMETRY∗∗∗∗∗∗∗∗∗∗∗∗∗ v e r i f y geomet ry ( CPU: 0 : 0 0 : 0 4 . 4 MEM: 3.8M )

Page 54: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 50

4.15 Report generationA number of reports have been already generated in the previous steps. They should be located in thePAR/RPT directory. The Tools menu includes some additional reports:File⇒ Report⇒ Netlist Statistics gives the following output in the console:

v e l o c i t y 15> ∗∗∗ S t a t i s t i c s f o r n e t l i s t f i l t e r _ s o c ∗∗∗Number o f c e l l s = 2949Number o f n e t s = 689Number o f t r i− n e t s = 18Number o f degen n e t s = 0Number o f p i n s = 2411Number o f i / os = 38

Number o f n e t s w i th 2 t e r m s = 419 (60 . 8 %)Number o f n e t s w i th 3 t e r m s = 147 (21 . 3 %)Number o f n e t s w i th 4 t e r m s = 38 (5 . 5 %)Number o f n e t s w i th 5 t e r m s = 18 (2 . 6 %)Number o f n e t s w i th 6 t e r m s = 12 (1 . 7 %)Number o f n e t s w i th 7 t e r m s = 8 (1 . 2 %)Number o f n e t s w i th 8 t e r m s = 4 (0 . 6 %)Number o f n e t s w i th 9 t e r m s = 6 (0 . 9 %)Number o f n e t s w i th >=10 t e r m s = 37 (5 . 4 %)

∗∗∗ 69 P r i m i t i v e s u s e d :P r i m i t i v e PAD9M126G (56 i n s t s )P r i m i t i v e VCCKGB (1 i n s t s )P r i m i t i v e GNDKGB (1 i n s t s )P r i m i t i v e VCC2IOGB (8 i n s t s )P r i m i t i v e GND2IOGB (8 i n s t s )P r i m i t i v e SPAA90_512X16BM1A (1 i n s t s )P r i m i t i v e UYNGB (20 i n s t s )P r i m i t i v e VYA4GSGB (18 i n s t s )P r i m i t i v e SYAA90_128X16X1CM2 (1 i n s t s )P r i m i t i v e EMPTY8GB (32 i n s t s )P r i m i t i v e EMPTY4GB (32 i n s t s )P r i m i t i v e EMPTY2GB (34 i n s t s )P r i m i t i v e EMPTY1GB (44 i n s t s )P r i m i t i v e EMPTY16GB (492 i n s t s )P r i m i t i v e CORNERGB (4 i n s t s )P r i m i t i v e XOR3X1 (4 i n s t s )P r i m i t i v e XOR2X1 (8 i n s t s )P r i m i t i v e XOR2CKX1 (1 i n s t s )P r i m i t i v e TIE1X1 (2 i n s t s )P r i m i t i v e TIE0X1 (2 i n s t s )P r i m i t i v e QDFERBX1 (22 i n s t s )P r i m i t i v e OR2X1 (1 i n s t s )P r i m i t i v e OAI22XLP (1 i n s t s )P r i m i t i v e OAI12XLP (2 i n s t s )P r i m i t i v e OAI12X1 (15 i n s t s )P r i m i t i v e OAI122X1 (7 i n s t s )P r i m i t i v e OAI112XLP (3 i n s t s )P r i m i t i v e OAI112X1 (1 i n s t s )P r i m i t i v e OA12XLP (2 i n s t s )

Page 55: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 51

File⇒ Report⇒ Gate Count... gives the following output in the console:

v e l o c i t y 15> Gate a r e a 2 .3520 um^2[ 0 ] f i l t e r _ s o c Gates=16332 C e l l s = 5 0 4 Area=38414.3 um^2[ 1 ] i _ f i l t e r _ t o p Gates=16314 C e l l s = 4 9 7 Area=38371.1 um^2[ 2 ] i _ f i l t e r _ t o p / i _ f i l t e r Gates=1855 C e l l s = 4 9 3 Area=4363.7 um^2[ 2 ] i _ f i l t e r _ t o p / i _ c o e f f _ a 9 d 1 6 Gates=6995 C e l l s = 0 Area=16453.7 um^2[ 2 ] i _ f i l t e r _ t o p / i_dataRAM_i_dmem Gates=7461 C e l l s = 0 Area=17549.0 um^2

Finally, File⇒ Report⇒ Summary... displays the following window:

∗∗∗ S t a t i s t i c s f o r n e t l i s t f i l t e r _ s o c ∗∗∗Number o f c e l l s = 2949Number o f n e t s = 689Number o f t r i− n e t s = 18Number o f degen n e t s = 0Number o f p i n s = 2411Number o f i / os = 38

Number o f n e t s w i th 2 t e r m s = 419 (60 . 8 %)Number o f n e t s w i th 3 t e r m s = 147 (21 . 3 %)Number o f n e t s w i th 4 t e r m s = 38 (5 . 5 %)Number o f n e t s w i th 5 t e r m s = 18 (2 . 6 %)Number o f n e t s w i th 6 t e r m s = 12 (1 . 7 %)

Page 56: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 52

Number o f n e t s w i th 7 t e r m s = 8 (1 . 2 %)Number o f n e t s w i th 8 t e r m s = 4 (0 . 6 %)Number o f n e t s w i th 9 t e r m s = 6 (0 . 9 %)Number o f n e t s w i th >=10 t e r m s = 37 (5 . 4 %)

∗∗∗ 69 P r i m i t i v e s u s e d :P r i m i t i v e PAD9M126G (56 i n s t s )P r i m i t i v e VCCKGB (1 i n s t s )P r i m i t i v e GNDKGB (1 i n s t s )P r i m i t i v e VCC2IOGB (8 i n s t s )P r i m i t i v e GND2IOGB (8 i n s t s )P r i m i t i v e SPAA90_512X16BM1A (1 i n s t s )P r i m i t i v e UYNGB (20 i n s t s )P r i m i t i v e VYA4GSGB (18 i n s t s )P r i m i t i v e SYAA90_128X16X1CM2 (1 i n s t s )P r i m i t i v e EMPTY8GB (32 i n s t s )P r i m i t i v e EMPTY4GB (32 i n s t s )P r i m i t i v e EMPTY2GB (34 i n s t s )P r i m i t i v e EMPTY1GB (44 i n s t s )P r i m i t i v e EMPTY16GB (492 i n s t s )P r i m i t i v e CORNERGB (4 i n s t s )P r i m i t i v e XOR3X1 (4 i n s t s )P r i m i t i v e XOR2X1 (8 i n s t s )P r i m i t i v e XOR2CKX1 (1 i n s t s )

Page 57: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 53

4.16 Post-route timing data extractionThis step generates the post-route SDF file that includes both the actual interconnect and cell timing delays.

The parasitics must be first extracted. Therefore set the extraction mode:Select Options⇒ Set Mode⇒ Specify RC Extraction Mode... in the main menu.

Check PostRoute, EffortLevel: Low, Extraction Type: Coupled RCAnd extract the netlist:Select Timing⇒ Extract RC... in the main menu.The generated Cap file includes the wired capacitance, pin capacitance, total capacitance, net length, wirecap per unit length and the fanout of each net in the design. The generated SPEF (Standard ParasiticsExchange Format) file includes RC values in a SPICE-like format.The SDF file may be then generated by selectingTiming ⇒ Write SDF... in the main menu. The checked Ideal Clock switch means that flip-flops areconsidered as having 0ps rising and falling transition times.

Page 58: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 54

4.17 Post-route netlist generationThis steps generates a Verilog netlist of the routed design. The netlist may be different from the importednetlist as cells may have been added or replaced during clock tree synthesis and timing-driven optimizations.

Select File⇒ Save⇒ Netlist... in the main menu. Do not select Include Leaf Cell Definition as they areprovided in a separate library.The generated file should go into the HDL/GATE directory.

4.18 GDS2 file generation

The placed and routed design can be exported in different formats for further processing outside the En-

Page 59: Digital Design Flow Eda Tool

CHAPTER 4. STANDARD CELL PLACEMENT AND ROUTING 55

counter tool. The GDS2 binary format is a standard format for integrating the block in the top-level layout,doing DRC/LVS checkings, or delivering the layout to the foundry. To export the design in the GDS2 for-mat, select File⇒ Save⇒ GDS/OASIS... in the main menu. The GDS map file has been copied by thetech_setup script into the PAR/DEX directory. The generated GDS2 file is written in the same directory.-

4.19 Using scriptsAs for the synthesis step, it is much more convenient to capture the placement and routing flow in a script.Cadence Encounter also support sthe Tcl language for building scripts.An example of such a script for placement and routing of the Fir-Filter design has been installed in thePAR/BIN directory (see “?? VHDL example: FIR-Filter”). The script must be run from the project topdirectory and it assumes a directory organization as described in “1.2 Design project organisation”. To runthe Tcl script, execute the following command in a Unix shell:

velocity -log PAR/LOG/encounter -overwrite -init PAR/BIN/top-level.tcl -win

The script top-level.tcl given below calls TCL subscripts, one for each design step. During an interactivesession of Encounter you can source the scriptsi the proper sequence at the velocity command prompt. Thisallows for checking the result after each Place&Route step. By modifying parameters in a particular designstep script you can define design information and to control the flow to some extent.Note that a configuration file must exist before running the script. The configuration file name is in thePAR/CONF directory and its name is defined in the script.The script does a bit more than the steps described earlier. For example, it uses an I/O pin placementdefinition as provided by a PAR/CONF/filter_soc.io file.

s e t PROJECT_DIR [pwd ]s e t PAR_BIN ${PROJECT_DIR } /PAR/ BIN# I mp or t t h e d e s i g nsource ${PAR_BIN } / s t a r t . t c l# C re a t e a f l o o r p l a nsource ${PAR_BIN } / f p l a n . t c l# C re a t e power / ground d i s t r i b u t i o n l i n e ssource ${PAR_BIN } / p p l a n . t c l# Place s t a n d a r d c e l l s i n t o t h e coresource ${PAR_BIN } / p l a c e . t c l# C re a t e t h e Clock Treesource ${PAR_BIN } / c t s . t c l# Place F i l l e r C e l l s and r o u t e t h e d e s i g nsource ${PAR_BIN } / r o u t e . t c l# V e r i f y C o n n e c t i v i t y and Geometrysource ${PAR_BIN } / v e r i f y . t c l# E x t r a c t t h e c i r c u i tsource ${PAR_BIN } / r e s u l t s . t c l

Page 60: Digital Design Flow Eda Tool

Appendix A

Appendix A: VHDL Netlists

A.1 File: filter.vhd

Listing A.1: RTL synthesisable model of the FIR-Filter.

l i b r a r y i e e e ;use i e e e . s t d _ l o g i c _ 1 1 6 4 . a l l ;use i e e e . n u m e r i c _ s t d . a l l ;

e n t i t y f i l t e r i sg e n e r i c (

CWIDTH : i n t e g e r := 1 6 ;CAW : i n t e g e r := 7 ;DWIDTH : i n t e g e r := 3 2 ;DAW : i n t e g e r := 7

) ;port (

ClkxCI : in s t d _ l o g i c ;ResetxRBI : in s t d _ l o g i c ;Data InxDI : in s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;Data InReqxSI : in s t d _ l o g i c ;DataInAckxSO : out s t d _ l o g i c ;DataOutxDO : out s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;DataOutReqxSO : out s t d _ l o g i c ;DataOutAckxSI : in s t d _ l o g i c ;LutAddrxDO : out s t d _ l o g i c _ v e c t o r (CAW−1 downto 0) ;LutReadxDI : in s t d _ l o g i c _ v e c t o r (CWIDTH−1 downto 0) ;RamWriteEnxSO : out s t d _ l o g i c ;RamAddrxDO : out s t d _ l o g i c _ v e c t o r (DAW−1 downto 0) ;RamReadxDI : in s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;RamWritexDO : out s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0)

) ;end f i l t e r ;

a r c h i t e c t u r e r t l of f i l t e r i s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

56

Page 61: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 57

−− component d e c l a r a t i o n s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− S t a t etype s t a t e _ t y p e i s ( i d l e , new_data , run , d a t a _ o u t ) ;s i g n a l StatexDP , StatexDN : s t a t e _ t y p e ;

−− R e g i s t e r ss i g n a l RamWriteEnxS : s t d _ l o g i c ;s i g n a l InRegEnxS : s t d _ l o g i c ;s i g n a l InRegxDN : s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;

−− C o u n te r ss i g n a l Offse tDecxS : s t d _ l o g i c ;s i g n a l OffsetxDP , OffsetxDN : u n s i g n e d (DAW−1 downto 0) ;s i g n a l C o u n t e r I n c x S : s t d _ l o g i c ;s i g n a l CounterxDP , CounterxDN : u n s i g n e d (CAW−1 downto 0) ;

−− C o u n te r ss i g n a l RamAddrxD : s t d _ l o g i c _ v e c t o r (DAW−1 downto 0) ;s i g n a l LutAddrxD : s t d _ l o g i c _ v e c t o r (CAW−1 downto 0) ;

−− ALU s i g n a l ss i g n a l SumxD : s i g n e d ( (DWIDTH+CWIDTH)−1 downto 0) ;s i g n a l SumStdxD : s t d _ l o g i c _ v e c t o r ( (DWIDTH+CWIDTH)−1 downto 0) ;s i g n a l RamReadxD : s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;s i g n a l RamSignedxD : s i g n e d (DWIDTH−1 downto 0) ;s i g n a l LutReadxD : s t d _ l o g i c _ v e c t o r (CWIDTH−1 downto 0) ;s i g n a l LutSignedxD : s i g n e d (CWIDTH−1 downto 0) ;s i g n a l MultxD : s i g n e d ( (DWIDTH+CWIDTH)−1 downto 0) ;

−− R e g i s t e r ss i g n a l AccuClrxS : s t d _ l o g i c ;s i g n a l AccuxDP , AccuxDN : s i g n e d ( (DWIDTH+CWIDTH)−1 downto 0) ;

−− R e g i s t e r ss i g n a l OutRegEnxS : s t d _ l o g i c ;s i g n a l OutRegxDP , OutRegxDN : s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;

begin−−RamWriteEnxSO <= RamWriteEnxS ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− I n p u t r e g i s t e r−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

InRegxDN <= DataInxDI ;p _ i n r e g : p r o c e s s ( ClkxCI , ResetxRBI )begin

i f ResetxRBI = ’0 ’ thenRamWritexDO <= ( o t h e r s => ’ 0 ’ ) ;

e l s i f ClkxCI ’ e v e n t and ClkxCI = ’1 ’ theni f InRegEnxS = ’1 ’ then

Page 62: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 58

RamWritexDO<= InRegxDN ;end i f ;

end i f ;end p r o c e s s p _ i n r e g ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− C o u n te r s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

p _ d a t a : p r o c e s s ( OffsetxDP , Of f se tDecxS )begin

OffsetxDN <= Offse txDP ;i f Offse tDecxS = ’1 ’ then

OffsetxDN <= Offse txDP − " 0000001 " ;end i f ;

end p r o c e s s p _ d a t a ;

p _c oe f : p r o c e s s ( CounterxDP , C o u n t e r I n c x S )begin

CounterxDN <= CounterxDP ;i f C o u n t e r I n c x S = ’1 ’ then

CounterxDN <= CounterxDP + " 0000001 " ;end i f ;

end p r o c e s s p _c oe f ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− C o u n te r s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− two s i m i l a r r e g i s t e r s combined i n one p r o c e s s

p _ a d r c l k : p r o c e s s ( ClkxCI , ResetxRBI )begin

i f ResetxRBI = ’0 ’ thenCounterxDP <= ( o t h e r s => ’ 0 ’ ) ;Offse txDP <= ( o t h e r s => ’ 0 ’ ) ;

e l s i f ClkxCI ’ e v e n t and ClkxCI = ’1 ’ thenCounterxDP <= CounterxDN ;Offse txDP <= OffsetxDN ;

end i f ;end p r o c e s s p _ a d r c l k ;

−− add and c o n v e r t t h e a d d r e s sRamAddrxDO <= s t d _ l o g i c _ v e c t o r ( Offse txDP + CounterxDP ) ;LutAddrxDO <= s t d _ l o g i c _ v e c t o r ( CounterxDP ) ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ALU−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− t y p e c o n v e r s i o nRamSignedxD <= s i g n e d ( RamReadxDI ) ;LutSignedxD <= s i g n e d ( LutReadxDI ) ;−− s i g n e d o p e r a t i o n s

Page 63: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 59

MultxD <= RamSignedxD ∗ LutSignedxD ;SumxD <= MultxD + AccuxDP ;−−t y p e c o n v e r s i o nSumStdxD<= s t d _ l o g i c _ v e c t o r (SumxD) ;−− s i m p l e t r u n c a t e−−OutRegxDN<= SumStdxD ( ( DWIDTH+CWIDTH)−1 downto CWIDTH) ;OutRegxDN<= SumStdxD (DWIDTH−1 downto 0) ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ALU−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Accumula tor n e x t s t a t eAccuxDN <= SumxD when AccuClrxS = ’0 ’ e l s e ( o t h e r s => ’ 0 ’ ) ;

p_accu : p r o c e s s ( ClkxCI , ResetxRBI )begin

i f ResetxRBI = ’0 ’ thenAccuxDP <= ( o t h e r s => ’ 0 ’ ) ;

e l s i f ClkxCI ’ e v e n t and ClkxCI = ’1 ’ thenAccuxDP <= AccuxDN ;

end i f ;end p r o c e s s p_accu ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Outpu t r e g i s t e r−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

p _ o u t r e g : p r o c e s s ( ClkxCI , ResetxRBI )begin

i f ResetxRBI= ’0 ’ thenOutRegxDP<= ( o t h e r s => ’ 0 ’ ) ;

e l s i f ClkxCI ’ e v e n t and ClkxCI = ’1 ’ theni f OutRegEnxS = ’1 ’ then

OutRegxDP <= OutRegxDN ;end i f ;

end i f ;end p r o c e s s p _ o u t r e g ;

DataOutxDO <= OutRegxDP ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− C o n t r o l FSM−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

p_fsm : p r o c e s s ( StatexDP , DataInReqxSI ,DataOutAckxSI , CounterxDP )

begin−−d e f a u l t sInRegEnxS <= ’ 0 ’ ;OutRegEnxS <= ’ 0 ’ ;AccuClrxS <= ’ 0 ’ ;Of f se tDecxS <= ’ 0 ’ ;

Page 64: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 60

C o u n t e r I n c x S <= ’ 0 ’ ;RamWriteEnxSO <= ’ 0 ’ ;DataInAckxSO <= ’ 0 ’ ;DataOutReqxSO <= ’ 0 ’ ;StatexDN <= Sta texDP ;−−case s t a t e m e n t scase Sta texDP i s

when i d l e =>i f DataInReqxSI = ’1 ’ then

InRegEnxS <= ’ 1 ’ ;StatexDN <= new_data ;

end i f ;when new_data =>

AccuClrxS <= ’ 1 ’ ;RamWriteEnxSO <= ’1 ’ ;DataInAckxSO <= ’ 1 ’ ;StatexDN <= run ;

when run =>C o u n t e r I n c x S <= ’ 1 ’ ;i f CounterxDP = " 1111111 " then

OutRegEnxS <= ’ 1 ’ ;Of f se tDecxS <= ’ 1 ’ ;StatexDN <= d a t a _ o u t ;

end i f ;when d a t a _ o u t =>

DataOutReqxSO <= ’ 1 ’ ;i f DataOutAckxSI = ’1 ’ then

StatexDN <= i d l e ;end i f ;

when o t h e r s => n u l l ;end case ;

end p r o c e s s p_fsm ;

p _ c l k : p r o c e s s ( ClkxCI , ResetxRBI )begin

i f ResetxRBI = ’0 ’ thenSta texDP <= i d l e ;

e l s i f ClkxCI ’ e v e n t and ClkxCI = ’1 ’ thenSta texDP <= StatexDN ;

end i f ;end p r o c e s s p _ c l k ;

end r t l ;

A.2 File: filter_top.vhd

Listing A.2: RTL top model of the FIR-Filter.

Page 65: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 61

l i b r a r y i e e e ;use i e e e . s t d _ l o g i c _ 1 1 6 4 . a l l ;use i e e e . n u m e r i c _ s t d . a l l ;

e n t i t y f i l t e r _ t o p i sg e n e r i c (

CWIDTH : i n t e g e r := 1 6 ;CAW : i n t e g e r := 7 ;DWIDTH : i n t e g e r := 3 2 ;DAW : i n t e g e r := 7

) ;port (

ClkxCI : in s t d _ l o g i c ;ResetxRBI : in s t d _ l o g i c ;Data InxDI : in s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;Data InReqxSI : in s t d _ l o g i c ;DataInAckxSO : out s t d _ l o g i c ;DataOutxDO : out s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;DataOutReqxSO : out s t d _ l o g i c ;DataOutAckxSI : in s t d _ l o g i c

) ;end f i l t e r _ t o p ;

a r c h i t e c t u r e r t l of f i l t e r _ t o p i s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− component d e c l a r a t i o n s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−component c o e f f

g e n e r i c (CWIDTH : i n t e g e r ;CAW : i n t e g e r ) ;

port (ClkxCI : in s t d _ l o g i c ;AddrxDI : in s t d _ l o g i c _ v e c t o r (CAW−1 downto 0) ;DataxDO : out s t d _ l o g i c _ v e c t o r (CWIDTH−1 downto 0) ) ;

end component ;

component dataRAMg e n e r i c (

DWIDTH : i n t e g e r ;DAW : i n t e g e r ) ;

port (AddrxDI : in s t d _ l o g i c _ v e c t o r (DAW−1 downto 0) ;WExSI : in s t d _ l o g i c ;WClkxCI : in s t d _ l o g i c ;DinxDI : in s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;DoutxDO : out s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ) ;

end component ;

component f i l t e r

Page 66: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 62

g e n e r i c (DWIDTH : i n t e g e r ;DAW : i n t e g e r ) ;

port (ClkxCI : in s t d _ l o g i c ;ResetxRBI : in s t d _ l o g i c ;Data InxDI : in s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;Data InReqxSI : in s t d _ l o g i c ;DataInAckxSO : out s t d _ l o g i c ;DataOutxDO : out s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;DataOutReqxSO : out s t d _ l o g i c ;DataOutAckxSI : in s t d _ l o g i c ;LutAddrxDO : out s t d _ l o g i c _ v e c t o r (CAW−1 downto 0) ;LutReadxDI : in s t d _ l o g i c _ v e c t o r (CWIDTH−1 downto 0) ;RamWriteEnxSO : out s t d _ l o g i c ;RamAddrxDO : out s t d _ l o g i c _ v e c t o r (DAW−1 downto 0) ;RamReadxDI : in s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;RamWritexDO : out s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ) ;

end component ;

s i g n a l RamWriteEnxS : s t d _ l o g i c ;s i g n a l RamAddrxD : s t d _ l o g i c _ v e c t o r (DAW−1 downto 0) ;s i g n a l RamReadxD : s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;s i g n a l RamWritexD : s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;s i g n a l LutAddrxD : s t d _ l o g i c _ v e c t o r (CAW−1 downto 0) ;s i g n a l LutReadxD : s t d _ l o g i c _ v e c t o r (CWIDTH−1 downto 0) ;

begin−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Component I n s t a n t i a t i o n s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

i _ c o e f f : c o e f fg e n e r i c map (

CWIDTH => CWIDTH,CAW => CAW)

port map (ClkxCI => ClkxCI ,AddrxDI => LutAddrxD ,DataxDO => LutReadxD ) ;

i_dataRAM : dataRAMg e n e r i c map (

DWIDTH => DWIDTH,DAW => DAW)

port map (AddrxDI => RamAddrxD ,WExSI => RamWriteEnxS ,WClkxCI => ClkxCI ,DinxDI => RamWritexD ,

Page 67: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 63

DoutxDO => RamReadxD ) ;

i _ f i l t e r : f i l t e rg e n e r i c map (

DWIDTH => DWIDTH,DAW => DAW)

port map (ClkxCI => ClkxCI ,ResetxRBI => ResetxRBI ,Data InxDI => DataInxDI ,Data InReqxSI => DataInReqxSI ,DataInAckxSO => DataInAckxSO ,DataOutxDO => DataOutxDO ,DataOutReqxSO => DataOutReqxSO ,DataOutAckxSI => DataOutAckxSI ,LutAddrxDO => LutAddrxD ,LutReadxDI => LutReadxD ,RamWriteEnxSO => RamWriteEnxS ,RamAddrxDO => RamAddrxD ,RamReadxDI => RamReadxD ,RamWritexDO => RamWritexD ) ;

end r t l ;

A.3 File: filter_soc.vhd

Listing A.3: RTL top model of the FIR-Filter.

l i b r a r y i e e e ;use i e e e . s t d _ l o g i c _ 1 1 6 4 . a l l ;−−use i e e e . n u m e r i c _ s t d . a l l ;

l i b r a r y techmap ;use techmap . gencomp . a l l ;

e n t i t y f i l t e r _ s o c i sg e n e r i c (

CWIDTH : i n t e g e r := 1 6 ;CAW : i n t e g e r := 7 ;DWIDTH : i n t e g e r := 1 6 ;DAW : i n t e g e r := 7

) ;port (

ClkxCI : in s t d _ l o g i c ;ResetxRBI : in s t d _ l o g i c ;Data InxDI : in s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;Data InReqxSI : in s t d _ l o g i c ;DataInAckxSO : out s t d _ l o g i c ;

Page 68: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 64

DataOutxDO : out s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;DataOutReqxSO : out s t d _ l o g i c ;DataOutAckxSI : in s t d _ l o g i c

) ;end f i l t e r _ s o c ;

a r c h i t e c t u r e r t l of f i l t e r _ s o c i s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− component d e c l a r a t i o n s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−component f i l t e r _ t o p i sg e n e r i c (

CWIDTH : i n t e g e r := 1 6 ;CAW : i n t e g e r := 7 ;DWIDTH : i n t e g e r := 1 6 ;DAW : i n t e g e r := 7

) ;port (

ClkxCI : in s t d _ l o g i c ;ResetxRBI : in s t d _ l o g i c ;Data InxDI : in s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;Data InReqxSI : in s t d _ l o g i c ;DataInAckxSO : out s t d _ l o g i c ;DataOutxDO : out s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;DataOutReqxSO : out s t d _ l o g i c ;DataOutAckxSI : in s t d _ l o g i c

) ;end component ;

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− s i g n a l d e c l a r a t i o n s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−s i g n a l ClkxCI_s : s t d _ l o g i c ;s i g n a l Rese txRBI_s : s t d _ l o g i c ;s i g n a l Data InxDI_s : s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;s i g n a l Data InReqxSI_s : s t d _ l o g i c ;s i g n a l DataInAckxSO_s : s t d _ l o g i c ;s i g n a l DataOutxDO_s : s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;s i g n a l DataOutReqxSO_s : s t d _ l o g i c ;s i g n a l DataOutAckxSI_s : s t d _ l o g i c ;s i g n a l VCCIO : s t d _ u l o g i c _ v e c t o r (7 downto 0) ;s i g n a l GNDIO : s t d _ u l o g i c _ v e c t o r (7 downto 0) ;s i g n a l VCCCO : s t d _ u l o g i c ;s i g n a l GNDCO : s t d _ u l o g i c ;

c o n s t a n t p a d t e c h : i n t e g e r := f a r a d a y ;c o n s t a n t p a d l e v e l : i n t e g e r := 0 ;

begin−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Pad I n s t a n t i a t i o n s

Page 69: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 65

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Power Padsio_VCCIO : v c c i o p a d v g e n e r i c map ( wid th => 8 , t e c h => pad tech , l i m i t

=> c o r e _ l i m i t e d )port map (VCCIO) ;

io_GNDIO : gnd iopadv g e n e r i c map ( wid th => 8 , t e c h => pad tech , l i m i t=> c o r e _ l i m i t e d )

port map (GNDIO) ;io_VCCCO : vcccopad g e n e r i c map ( t e c h => pad tech , l i m i t =>

c o r e _ l i m i t e d )port map (VCCCO) ;

io_GNDCO : gndcopad g e n e r i c map ( t e c h => pad tech , l i m i t =>c o r e _ l i m i t e d )

port map (GNDCO) ;−− S i g n a l Padsi o_ClkxCI : i n p a d g e n e r i c map ( t e c h => pad tech , l e v e l => p a d l e v e l ,

l i m i t => c o r e _ l i m i t e d )port map ( ClkxCI , ClkxCI_s ) ;

io_Rese txRBI : i n p a d g e n e r i c map ( t e c h => pad tech , l e v e l => p a d l e v e l ,l i m i t => c o r e _ l i m i t e d )

port map ( ResetxRBI , Rese txRBI_s ) ;i o _ D a t a I n x D I : i n pa dv g e n e r i c map ( wid th => DWIDTH, t e c h => pad tech ,

l e v e l => p a d l e v e l , l i m i t => c o r e _ l i m i t e d )port map ( DataInxDI , Da ta InxDI_s ) ;

i o_Da ta I nReqxSI : i n p a d g e n e r i c map ( t e c h => pad tech , l e v e l =>p a d l e v e l , l i m i t => c o r e _ l i m i t e d )

port map ( DataInReqxSI , Da ta InReqxSI_s ) ;io_DataInAckxSO : o u t pad g e n e r i c map ( t e c h => pad tech , l e v e l =>

p a d l e v e l , s lew => f a s t , l i m i t => c o r e _ l i m i t e d )port map ( DataInAckxSO , DataInAckxSO_s ) ;

io_DataOutxDO : ou tpadv g e n e r i c map ( wid th => DWIDTH, t e c h => pad tech, l e v e l => p a d l e v e l , s lew => f a s t , l i m i t => c o r e _ l i m i t e d )

port map ( DataOutxDO , DataOutxDO_s ) ;io_DataOutReqxSO : ou tpa d g e n e r i c map ( t e c h => pad tech , l e v e l =>

p a d l e v e l , s lew => f a s t , l i m i t => c o r e _ l i m i t e d )port map ( DataOutReqxSO , DataOutReqxSO_s ) ;

io_DataOutAckxSI : i n p a d g e n e r i c map ( t e c h => pad tech , l e v e l =>p a d l e v e l , l i m i t => c o r e _ l i m i t e d )

port map ( DataOutAckxSI , DataOutAckxSI_s ) ;−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Component I n s t a n t i a t i o n s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−i _ f i l t e r _ t o p : f i l t e r _ t o p

g e n e r i c map (CWIDTH => CWIDTH,CAW => CAW,DWIDTH => DWIDTH,DAW => DAW)

port map (ClkxCI => ClkxCI_s ,

Page 70: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 66

ResetxRBI => ResetxRBI_s ,Data InxDI => DataInxDI_s ,Data InReqxSI => DataInReqxSI_s ,DataInAckxSO => DataInAckxSO_s ,DataOutxDO => DataOutxDO_s ,DataOutReqxSO => DataOutReqxSO_s ,DataOutAckxSI => DataOutAckxSI_s

) ;end r t l ;

A.4 File: filter_soc_tb.vhd

Listing A.4: RTL testbench model of the FIR-Filter.

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

−−−− T i t l e : T e s t Bench f o r F i n i t e I m p u l s e Response ( FIR ) F i l t e r−−−− C o p y r i g h t ( c ) 1998 ,1999 by Mentor Graph ics C o r p o r a t i o n . A l l r i g h t s

r e s e r v e d .−−−− T h i s s o u r c e f i l e may be used and d i s t r i b u t e d w i t h o u t r e s t r i c t i o n

p r o v i d e d−− t h a t t h i s c o p y r i g h t s t a t e m e n t i s n o t removed from t h e f i l e and t h a t

any−− d e r i v a t i v e work c o n t a i n s t h i s c o p y r i g h t n o t i c e .−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

LIBRARY i e e e ;USE i e e e . s t d _ l o g i c _ 1 1 6 4 .ALL ;USE i e e e . s t d _ l o g i c _ a r i t h .ALL ;USE i e e e . s t d _ l o g i c _ s i g n e d .ALL ;USE i e e e . m a t h _ r e a l .ALL ;

ENTITY f i l t e r _ s o c _ t b ISGENERIC( c l o c k _ d e l a y : t ime := 16 ns ;

CWIDTH : i n t e g e r := 1 6 ;CAW : i n t e g e r := 7 ;DWIDTH : i n t e g e r := 1 6 ;DAW : i n t e g e r := 7

) ;END f i l t e r _ s o c _ t b ;

Page 71: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 67

ARCHITECTURE b e h a v i o r a l OF f i l t e r _ s o c _ t b IS

component f i l t e r _ s o c i sg e n e r i c (

CWIDTH : i n t e g e r := 1 6 ;CAW : i n t e g e r := 7 ;DWIDTH : i n t e g e r := 3 2 ;DAW : i n t e g e r := 7

) ;port (

ClkxCI : in s t d _ l o g i c ;ResetxRBI : in s t d _ l o g i c ;Data InxDI : in s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;Data InReqxSI : in s t d _ l o g i c ;DataInAckxSO : out s t d _ l o g i c ;DataOutxDO : out s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;DataOutReqxSO : out s t d _ l o g i c ;DataOutAckxSI : in s t d _ l o g i c

) ;end component ;

SIGNAL ClkxCI : s t d _ l o g i c ;SIGNAL ResetxRBI : s t d _ l o g i c ;SIGNAL DataInxDI : s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;SIGNAL DataInReqxSI : s t d _ l o g i c ;SIGNAL DataInAckxSO : s t d _ l o g i c ;SIGNAL DataOutxDO : s t d _ l o g i c _ v e c t o r (DWIDTH−1 downto 0) ;SIGNAL DataOutReqxSO : s t d _ l o g i c ;SIGNAL DataOutAckxSI : s t d _ l o g i c ;

BEGIN

−− I n s t a n t i a t e d e v i c e−under− t e s t .d u t : f i l t e r _ s o cg e n e r i c map (

CWIDTH => CWIDTH,CAW => CAW,DWIDTH => DWIDTH,DAW => DAW)

port map (ClkxCI => ClkxCI ,ResetxRBI => ResetxRBI ,Data InxDI => DataInxDI ,Data InReqxSI => DataInReqxSI ,DataInAckxSO => DataInAckxSO ,DataOutxDO => DataOutxDO ,DataOutReqxSO => DataOutReqxSO ,DataOutAckxSI => DataOutAckxSI

) ;

Page 72: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 68

c l o c k _ g e n e r a t i o n :PROCESSBEGIN

−− Genera te e q u a l du ty−c y c l e c l o c k .ClkxCI <= ’ 0 ’ ;WAIT FOR ( c l o c k _ d e l a y / 2 ) ;ClkxCI <= ’ 1 ’ ;WAIT FOR ( c l o c k _ d e l a y / 2 ) ;

END PROCESS c l o c k _ g e n e r a t i o n ;

g e n e r a t e _ s t i m u l u s :PROCESSBEGIN

−− I n i t i a l i z e i n p u t s i g n a l s .DataInReqxSI <= ’ 0 ’ ;Data InxDI <= ( OTHERS => ’0 ’ ) ;DataOutAckxSI <= ’ 0 ’ ;

−− R e s e t t h e d e s i g n and w a i t f o r 2 c l o c k c y c l e s .ResetxRBI <= ’ 0 ’ ;WAIT FOR c l o c k _ d e l a y ∗ 2 ;ResetxRBI <= ’ 1 ’ ;

−− Wait f o r 2 more c l o c k c y c l e s b e f o r e b e g i n n i n g t e s t .WAIT FOR c l o c k _ d e l a y ∗ 2 ;

Data InxDI <= ( 0 => ’1 ’ , OTHERS => ’0 ’ ) ;

WAIT FOR c l o c k _ d e l a y ;

FOR I IN 127 DOWNTO 0 LOOPDataInReqxSI <= ’ 1 ’ ;

WHILE DataInAckxSO= ’0 ’ LOOPWAIT FOR c l o c k _ d e l a y ;

END LOOP;

Da ta InReqxSI <= ’ 0 ’ ;Data InxDI <= ( OTHERS => ’0 ’ ) ;

WHILE DataOutReqxSO = ’0 ’ LOOPWAIT FOR c l o c k _ d e l a y ;

END LOOP;

DataOutAckxSI <= ’ 1 ’ ;

WAIT FOR c l o c k _ d e l a y ;

DataOutAckxSI <= ’ 0 ’ ;

Page 73: Digital Design Flow Eda Tool

APPENDIX A. APPENDIX A: VHDL NETLISTS 69

END LOOP;

−−−− Wait f o r e v e r .−−WAIT ;

END PROCESS g e n e r a t e _ s t i m u l u s ;

END b e h a v i o r a l ;

Page 74: Digital Design Flow Eda Tool

Appendix B

Appendix B: Tool Scripts

B.1 Synopsys: Design Compiler

B.1.1 filter_soc_syn.tcl

##−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# I t i s assumed t h a t a p r o j e c t d i r e c t o r y s t r u c t u r e has a l r e a d y been# c r e a t e d u s i n g ’ c r e a t e _ p r o j e c t ’ and t h a t t h i s s y n t h e s i s s c r i p t i s# e x e c u t e d from t h e p r o j e c t r o o t d i r e c t o r y $PROJECT_DIR#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s e t PROJECT_DIR [pwd ]#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Design r e l a t e d i n f o r m a t i o n ( can be changed )#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s e t DESIGN f i l t e r _ s o cs e t TIM_MAX_LIBRARY f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cs e t TIM_MIN_LIBRARY f s d 0 a _ a _ g e n e r i c _ c o r e _ f f 1 p 1 v m 4 0 cs e t TIM_OC_MAX WCCOM ;# TYPICAL | WORST | WORST−INDs e t TIM_OC_MIN BCCOM ;# TYPICAL | BEST | BEST−IND# F l o o r p l a n s e t t i n g s#s e t FP_ASPECT_RATIO 1s e t FP_ROW_DENSITY 0 . 8 5 ;# p e r c e n ts e t FP_CORE2IO 224 ;# micron# Power r i n g and s e t t i n g s#

70

Page 75: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 71

s e t PR_WIDTH 2 . 8 ;# microns e t PR_SPACING 1 . 6 8 ;# microns e t PR_LAYER_TB ME7 ;# t o p and bo t tom l a y e rs e t PR_LAYER_LR ME8 ;# l e f t and r i g h t l a y e r# Power s t r i p e s e t t i n g s#s e t ST_NUM_SETS 1 ;# number o f s e t ss e t ST_SPACING 1 . 1 2 ;# microns e t ST_LAYER_V $PR_LAYER_LRs e t ST_WIDTH 1 . 4 ;# microns e t ST_XOFS_R 0 ;# microns e t ST_XOFS_L 280 ;# micron# Placemen t s e t t i n g s#s e t PL_EFFORT medium ;# low | medium | h igh# Clock t r e e s y n t h e s i s s e t t i n g s#s e t CTS_BUFFER BUFCKX1s e t CTS_INV INVCKX1#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Flags t h a t d r i v e t h e s c r i p t b e h a v i o r ( can be changed )## ADD_STRIPES (0 | 1 )# i f 1 , add s t r i p e s# PLACE_TIMING (0 | 1 )# i f 1 , do a t i m i n g d r i v e n p l a c e m e n t# CLOCK_TREE (0 | 1 )# i f 1 , c r e a t e a c l o c k t r e e# CTS_CREATE_SPEC (0 | 1 )# i f 1 , c r e a t e a c l o c k t r e e s p e c i f i c a t i o n f i l e w i t h d e f a u l t v a l u e s# ROUTE_TIMING (0 | 1 )# i f 1 , do a t i m i n g d r i v e n r o u t i n g# OPT ( s t r i n g )# can be used t o have d i f f e r e n t g e n e r a t e d f i l e names#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s e t ADD_STRIPES 1s e t PLACE_TIMING 1s e t CLOCK_TREE 1s e t CTS_CREATE_SPEC 0s e t ROUTE_TIMING 1s e t OPT " "#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# F i l e names

Page 76: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 72

#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s e t CONF_FILE_NAME ${DESIGN} . c o n fs e t IO_FILE_NAME ${DESIGN} . i os e t DESIGN_NAME ${DESIGN}${OPT}s e t SAVE_DESIGN_FP_NAME ${DESIGN_NAME}− f p l a n . e n cs e t SAVE_DESIGN_PR_NAME ${DESIGN_NAME}−pp lan . encs e t SAVE_DESIGN_PL_NAME ${DESIGN_NAME}−p l a c e d . e n cs e t SAVE_DESIGN_PF_NAME ${DESIGN_NAME}− p l a c e d _ f i l l e d . e n cs e t SAVE_DESIGN_CT_NAME ${DESIGN_NAME}− c t s . e n cs e t SAVE_DESIGN_RO_NAME ${DESIGN_NAME}− r o u t e d . e n cs e t TIM_RCDB_NAME ${DESIGN_NAME} . r c d bs e t SDF_FILE_NAME ${DESIGN_NAME}− r o u t e d . s d fs e t SPEF_FILE_NAME ${DESIGN_NAME}− r o u t e d . s p e fs e t RPT_CHECK_TA_NAME ${DESIGN_NAME}− c h e c k t a . r p ts e t RPT_REPORT_TA_NAME ${DESIGN_NAME}− t a . r p ts e t RPT_SLACK_NAME ${DESIGN_NAME}− s l a c k . r p ts e t RPT_GATE_COUNT_NAME ${DESIGN_NAME}− g a t e _ c o u n t . r p ts e t RPT_NOTCH_NAME ${DESIGN_NAME}−n o t c h . r p ts e t RPT_CONN_NAME ${DESIGN_NAME}−c o n n . r p ts e t RPT_GEOM_NAME ${DESIGN_NAME}−geom.rpts e t RPT_DENSITY_NAME ${DESIGN_NAME}− d e n s i t y . r p ts e t VLOG_NETLIST_SIM_NAME ${DESIGN_NAME}− r o u t e d . vs e t VLOG_NETLIST_LVS_NAME ${DESIGN_NAME}− r o u t e d _ l v s . vs e t CTS_SPEC_NAME ${DESIGN_NAME}− s p e c . c t s t c hs e t CTS_RGUIDE_NAME ${DESIGN_NAME}−g u i d e . c t ss e t CTS_RPT_NAME ${DESIGN_NAME}− c t s . r p ts e t GDS_FILE_NAME ${DESIGN_NAME} . g d s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# A b s o l u t e p a t h s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s e t CONF_FILE ${PROJECT_DIR } /PAR/CONF/ ${CONF_FILE_NAME}s e t IO_FILE ${PROJECT_DIR } /PAR/CONF/ ${IO_FILE_NAME}s e t SAVE_DESIGN_FP_FILE ${PROJECT_DIR } /PAR/DB/ ${SAVE_DESIGN_FP_NAME}s e t SAVE_DESIGN_PR_FILE ${PROJECT_DIR } /PAR/DB/ ${SAVE_DESIGN_PR_NAME}s e t SAVE_DESIGN_PL_FILE ${PROJECT_DIR } /PAR/DB/ ${SAVE_DESIGN_PL_NAME}s e t SAVE_DESIGN_PF_FILE ${PROJECT_DIR } /PAR/DB/ ${SAVE_DESIGN_PF_NAME}s e t SAVE_DESIGN_CT_FILE ${PROJECT_DIR } /PAR/DB/ ${SAVE_DESIGN_CT_NAME}s e t SAVE_DESIGN_RO_FILE ${PROJECT_DIR } /PAR/DB/ ${SAVE_DESIGN_RO_NAME}s e t SDF_FILE ${PROJECT_DIR } /PAR/ TIM / ${SDF_FILE_NAME}s e t SPEF_FILE ${PROJECT_DIR } /PAR/ TIM / ${SPEF_FILE_NAME}s e t TIM_RCDB_FILE ${PROJECT_DIR } /PAR/ TIM / ${TIM_RCDB_NAME}s e t RPT_CHECK_TA_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_CHECK_TA_NAME}s e t RPT_REPORT_TA_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_REPORT_TA_NAME}s e t RPT_SLACK_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_SLACK_NAME}

Page 77: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 73

s e t RPT_GATE_COUNT_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_GATE_COUNT_NAME}s e t RPT_NOTCH_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_NOTCH_NAME}s e t RPT_CONN_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_CONN_NAME}s e t RPT_GEOM_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_GEOM_NAME}s e t RPT_DENSITY_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_DENSITY_NAME}s e t VLOG_NETLIST_SIM_FILE ${PROJECT_DIR } /HDL/GATE/ ${

VLOG_NETLIST_SIM_NAME}s e t VLOG_NETLIST_LVS_FILE ${PROJECT_DIR } /HDL/GATE/ ${

VLOG_NETLIST_LVS_NAME}s e t CTS_SPEC_FILE ${PROJECT_DIR } /PAR/ CTS / ${CTS_SPEC_NAME}s e t CTS_RGUIDE_FILE ${PROJECT_DIR } /PAR/ CTS / ${CTS_RGUIDE_NAME}s e t CTS_RPT_FILE ${PROJECT_DIR } /PAR/ RPT / ${CTS_RPT_NAME}s e t GDS_FILE ${PROJECT_DIR } /PAR/DEX/ ${GDS_FILE_NAME}s e t GDS_MAP_FILE ${PROJECT_DIR } /PAR/DEX/ gds2.map#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# S u p p r e s s Messages#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s u p p r e s s M e s s a g e NRDB 733s u p p r e s s M e s s a g e NREX 4 28 30s u p p r e s s M e s s a g e SOCEXT 3032 3080s u p p r e s s M e s s a g e SOCLF 58 200s u p p r e s s M e s s a g e SOCOPT 3544s u p p r e s s M e s s a g e SOCPP 2008s u p p r e s s M e s s a g e TCLNL 330s u p p r e s s M e s s a g e TECHLIB 436#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# P r o c e d u r e s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# m a k e _ c l o c k _ t r e e#proc m a k e _ c l o c k _ t r e e c r e a t e _ s p e c {g l o b a l PROJECT_DIR CTS_BUFFER CTS_INV CTS_SPEC_FILE CTS_RGUIDE_FILE

CTS_RPT_FILEi f { $ c r e a t e _ s p e c | | ! [ f i l e e x i s t s $CTS_SPEC_FILE ] } {# c r e a t e C l o c k T r e e S p e c \#−b u f F o o t p r i n t $CTS_BUFFER \#− i n v F o o t p r i n t $CTS_INV \#−output $CTS_SPEC_FILEc r e a t e C l o c k T r e e S p e c \−output $CTS_SPEC_FILE}s p e c i f y C l o c k T r e e − f i l e $CTS_SPEC_FILE \

Page 78: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 74

c k S y n t h e s i s \− rguide $CTS_RGUIDE_FILE \− r e p o r t $CTS_RPT_FILEo p t D e s i g n −postCTS −drv −outDir ${PROJECT_DIR } /PAR/ RPT} ;# m a k e _ c l o c k _ t r e e#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Load c o n f i g u r a t i o n f i l e#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

l o a d C o n f i g $CONF_FILE#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Load IO f i l e#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

l o a d I o F i l e $IO_FILE#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# S e t o p e r a t i n g c o n d i t i o n s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

setOpCond \−max $TIM_OC_MAX −maxLibrary $TIM_MAX_LIBRARY \−min $TIM_OC_MIN −minLibrary $TIM_MIN_LIBRARY#se tDes ignMode −process 90#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# S e t u s e r g r i d s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s e t P r e f e r e n c e C o n s t r a i n t U s e r X G r i d 0 . 2 8s e t P r e f e r e n c e C o n s t r a i n t U s e r X O f f s e t 0 . 2 8s e t P r e f e r e n c e C o n s t r a i n t U s e r Y G r i d 0 . 2 8s e t P r e f e r e n c e C o n s t r a i n t U s e r Y O f f s e t 0 . 2 8s e t P r e f e r e n c e S n a p A l l C o r n e r s 1s e t P r e f e r e n c e BlockSnapRule 2#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Page 79: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 75

# D e f i n e g l o b a l Power n e t s − make g l o b a l c o n n e c t i o n s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

c l e a r G l o b a l N e t sg l o b a l N e t C o n n e c t VCC −type pgp in −pin VCC − i n s t ∗ −module {} −verboseg l o b a l N e t C o n n e c t GND −type pgp in −pin GND − i n s t ∗ −module {} −verboseg l o b a l N e t C o n n e c t VCC −type t i e h i −module {} −verboseg l o b a l N e t C o n n e c t GND −type t i e l o −module {} −verbose# g l o b a l N e t C o n n e c t PD − type pgp in −pin { IO VCC2O} − i n s t io_VCCIO −module

{ } −verbose −over r idea p p l y G l o b a l N e t ssetDrawView f p l a nf i t

B.2 Cadence: SOC Encounter

B.2.1 start.tcl

##−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# I t i s assumed t h a t a p r o j e c t d i r e c t o r y s t r u c t u r e has a l r e a d y been# c r e a t e d u s i n g ’ c r e a t e _ p r o j e c t ’ and t h a t t h i s s y n t h e s i s s c r i p t i s# e x e c u t e d from t h e p r o j e c t r o o t d i r e c t o r y $PROJECT_DIR#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s e t PROJECT_DIR [pwd ]#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Design r e l a t e d i n f o r m a t i o n ( can be changed )#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s e t DESIGN f i l t e r _ s o cs e t TIM_MAX_LIBRARY f s d 0 a _ a _ g e n e r i c _ c o r e _ s s 0 p 9 v 1 2 5 cs e t TIM_MIN_LIBRARY f s d 0 a _ a _ g e n e r i c _ c o r e _ f f 1 p 1 v m 4 0 cs e t TIM_OC_MAX WCCOM ;# TYPICAL | WORST | WORST−INDs e t TIM_OC_MIN BCCOM ;# TYPICAL | BEST | BEST−IND# F l o o r p l a n s e t t i n g s#s e t FP_ASPECT_RATIO 1s e t FP_ROW_DENSITY 0 . 8 5 ;# p e r c e n ts e t FP_CORE2IO 224 ;# micron# Power r i n g and s e t t i n g s

Page 80: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 76

#s e t PR_WIDTH 2 . 8 ;# microns e t PR_SPACING 1 . 6 8 ;# microns e t PR_LAYER_TB ME7 ;# t o p and bo t tom l a y e rs e t PR_LAYER_LR ME8 ;# l e f t and r i g h t l a y e r# Power s t r i p e s e t t i n g s#s e t ST_NUM_SETS 1 ;# number o f s e t ss e t ST_SPACING 1 . 1 2 ;# microns e t ST_LAYER_V $PR_LAYER_LRs e t ST_WIDTH 1 . 4 ;# microns e t ST_XOFS_R 0 ;# microns e t ST_XOFS_L 280 ;# micron# Placemen t s e t t i n g s#s e t PL_EFFORT medium ;# low | medium | h igh# Clock t r e e s y n t h e s i s s e t t i n g s#s e t CTS_BUFFER BUFCKX1s e t CTS_INV INVCKX1#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Flags t h a t d r i v e t h e s c r i p t b e h a v i o r ( can be changed )## ADD_STRIPES (0 | 1 )# i f 1 , add s t r i p e s# PLACE_TIMING (0 | 1 )# i f 1 , do a t i m i n g d r i v e n p l a c e m e n t# CLOCK_TREE (0 | 1 )# i f 1 , c r e a t e a c l o c k t r e e# CTS_CREATE_SPEC (0 | 1 )# i f 1 , c r e a t e a c l o c k t r e e s p e c i f i c a t i o n f i l e w i t h d e f a u l t v a l u e s# ROUTE_TIMING (0 | 1 )# i f 1 , do a t i m i n g d r i v e n r o u t i n g# OPT ( s t r i n g )# can be used t o have d i f f e r e n t g e n e r a t e d f i l e names#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s e t ADD_STRIPES 1s e t PLACE_TIMING 1s e t CLOCK_TREE 1s e t CTS_CREATE_SPEC 0s e t ROUTE_TIMING 1s e t OPT " "#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# F i l e names

Page 81: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 77

#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s e t CONF_FILE_NAME ${DESIGN} . c o n fs e t IO_FILE_NAME ${DESIGN} . i os e t DESIGN_NAME ${DESIGN}${OPT}s e t SAVE_DESIGN_FP_NAME ${DESIGN_NAME}− f p l a n . e n cs e t SAVE_DESIGN_PR_NAME ${DESIGN_NAME}−pp lan . encs e t SAVE_DESIGN_PL_NAME ${DESIGN_NAME}−p l a c e d . e n cs e t SAVE_DESIGN_PF_NAME ${DESIGN_NAME}− p l a c e d _ f i l l e d . e n cs e t SAVE_DESIGN_CT_NAME ${DESIGN_NAME}− c t s . e n cs e t SAVE_DESIGN_RO_NAME ${DESIGN_NAME}− r o u t e d . e n cs e t TIM_RCDB_NAME ${DESIGN_NAME} . r c d bs e t SDF_FILE_NAME ${DESIGN_NAME}− r o u t e d . s d fs e t SPEF_FILE_NAME ${DESIGN_NAME}− r o u t e d . s p e fs e t RPT_CHECK_TA_NAME ${DESIGN_NAME}− c h e c k t a . r p ts e t RPT_REPORT_TA_NAME ${DESIGN_NAME}− t a . r p ts e t RPT_SLACK_NAME ${DESIGN_NAME}− s l a c k . r p ts e t RPT_GATE_COUNT_NAME ${DESIGN_NAME}− g a t e _ c o u n t . r p ts e t RPT_NOTCH_NAME ${DESIGN_NAME}−n o t c h . r p ts e t RPT_CONN_NAME ${DESIGN_NAME}−c o n n . r p ts e t RPT_GEOM_NAME ${DESIGN_NAME}−geom.rpts e t RPT_DENSITY_NAME ${DESIGN_NAME}− d e n s i t y . r p ts e t VLOG_NETLIST_SIM_NAME ${DESIGN_NAME}− r o u t e d . vs e t VLOG_NETLIST_LVS_NAME ${DESIGN_NAME}− r o u t e d _ l v s . vs e t CTS_SPEC_NAME ${DESIGN_NAME}− s p e c . c t s t c hs e t CTS_RGUIDE_NAME ${DESIGN_NAME}−g u i d e . c t ss e t CTS_RPT_NAME ${DESIGN_NAME}− c t s . r p ts e t GDS_FILE_NAME ${DESIGN_NAME} . g d s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# A b s o l u t e p a t h s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s e t CONF_FILE ${PROJECT_DIR } /PAR/CONF/ ${CONF_FILE_NAME}s e t IO_FILE ${PROJECT_DIR } /PAR/CONF/ ${IO_FILE_NAME}s e t SAVE_DESIGN_FP_FILE ${PROJECT_DIR } /PAR/DB/ ${SAVE_DESIGN_FP_NAME}s e t SAVE_DESIGN_PR_FILE ${PROJECT_DIR } /PAR/DB/ ${SAVE_DESIGN_PR_NAME}s e t SAVE_DESIGN_PL_FILE ${PROJECT_DIR } /PAR/DB/ ${SAVE_DESIGN_PL_NAME}s e t SAVE_DESIGN_PF_FILE ${PROJECT_DIR } /PAR/DB/ ${SAVE_DESIGN_PF_NAME}s e t SAVE_DESIGN_CT_FILE ${PROJECT_DIR } /PAR/DB/ ${SAVE_DESIGN_CT_NAME}s e t SAVE_DESIGN_RO_FILE ${PROJECT_DIR } /PAR/DB/ ${SAVE_DESIGN_RO_NAME}s e t SDF_FILE ${PROJECT_DIR } /PAR/ TIM / ${SDF_FILE_NAME}s e t SPEF_FILE ${PROJECT_DIR } /PAR/ TIM / ${SPEF_FILE_NAME}s e t TIM_RCDB_FILE ${PROJECT_DIR } /PAR/ TIM / ${TIM_RCDB_NAME}s e t RPT_CHECK_TA_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_CHECK_TA_NAME}s e t RPT_REPORT_TA_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_REPORT_TA_NAME}s e t RPT_SLACK_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_SLACK_NAME}

Page 82: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 78

s e t RPT_GATE_COUNT_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_GATE_COUNT_NAME}s e t RPT_NOTCH_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_NOTCH_NAME}s e t RPT_CONN_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_CONN_NAME}s e t RPT_GEOM_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_GEOM_NAME}s e t RPT_DENSITY_FILE ${PROJECT_DIR } /PAR/ RPT / ${RPT_DENSITY_NAME}s e t VLOG_NETLIST_SIM_FILE ${PROJECT_DIR } /HDL/GATE/ ${

VLOG_NETLIST_SIM_NAME}s e t VLOG_NETLIST_LVS_FILE ${PROJECT_DIR } /HDL/GATE/ ${

VLOG_NETLIST_LVS_NAME}s e t CTS_SPEC_FILE ${PROJECT_DIR } /PAR/ CTS / ${CTS_SPEC_NAME}s e t CTS_RGUIDE_FILE ${PROJECT_DIR } /PAR/ CTS / ${CTS_RGUIDE_NAME}s e t CTS_RPT_FILE ${PROJECT_DIR } /PAR/ RPT / ${CTS_RPT_NAME}s e t GDS_FILE ${PROJECT_DIR } /PAR/DEX/ ${GDS_FILE_NAME}s e t GDS_MAP_FILE ${PROJECT_DIR } /PAR/DEX/ gds2.map#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# S u p p r e s s Messages#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s u p p r e s s M e s s a g e NRDB 733s u p p r e s s M e s s a g e NREX 4 28 30s u p p r e s s M e s s a g e SOCEXT 3032 3080s u p p r e s s M e s s a g e SOCLF 58 200s u p p r e s s M e s s a g e SOCOPT 3544s u p p r e s s M e s s a g e SOCPP 2008s u p p r e s s M e s s a g e TCLNL 330s u p p r e s s M e s s a g e TECHLIB 436#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# P r o c e d u r e s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# m a k e _ c l o c k _ t r e e#proc m a k e _ c l o c k _ t r e e c r e a t e _ s p e c {g l o b a l PROJECT_DIR CTS_BUFFER CTS_INV CTS_SPEC_FILE CTS_RGUIDE_FILE

CTS_RPT_FILEi f { $ c r e a t e _ s p e c | | ! [ f i l e e x i s t s $CTS_SPEC_FILE ] } {# c r e a t e C l o c k T r e e S p e c \#−b u f F o o t p r i n t $CTS_BUFFER \#− i n v F o o t p r i n t $CTS_INV \#−output $CTS_SPEC_FILEc r e a t e C l o c k T r e e S p e c \−output $CTS_SPEC_FILE}s p e c i f y C l o c k T r e e − f i l e $CTS_SPEC_FILE \

Page 83: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 79

c k S y n t h e s i s \− rguide $CTS_RGUIDE_FILE \− r e p o r t $CTS_RPT_FILEo p t D e s i g n −postCTS −drv −outDir ${PROJECT_DIR } /PAR/ RPT} ;# m a k e _ c l o c k _ t r e e#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Load c o n f i g u r a t i o n f i l e#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

l o a d C o n f i g $CONF_FILE#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Load IO f i l e#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

l o a d I o F i l e $IO_FILE#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# S e t o p e r a t i n g c o n d i t i o n s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

setOpCond \−max $TIM_OC_MAX −maxLibrary $TIM_MAX_LIBRARY \−min $TIM_OC_MIN −minLibrary $TIM_MIN_LIBRARY#se tDes ignMode −process 90#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# S e t u s e r g r i d s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s e t P r e f e r e n c e C o n s t r a i n t U s e r X G r i d 0 . 2 8s e t P r e f e r e n c e C o n s t r a i n t U s e r X O f f s e t 0 . 2 8s e t P r e f e r e n c e C o n s t r a i n t U s e r Y G r i d 0 . 2 8s e t P r e f e r e n c e C o n s t r a i n t U s e r Y O f f s e t 0 . 2 8s e t P r e f e r e n c e S n a p A l l C o r n e r s 1s e t P r e f e r e n c e BlockSnapRule 2#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Page 84: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 80

# D e f i n e g l o b a l Power n e t s − make g l o b a l c o n n e c t i o n s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

c l e a r G l o b a l N e t sg l o b a l N e t C o n n e c t VCC −type pgp in −pin VCC − i n s t ∗ −module {} −verboseg l o b a l N e t C o n n e c t GND −type pgp in −pin GND − i n s t ∗ −module {} −verboseg l o b a l N e t C o n n e c t VCC −type t i e h i −module {} −verboseg l o b a l N e t C o n n e c t GND −type t i e l o −module {} −verbose# g l o b a l N e t C o n n e c t PD − type pgp in −pin { IO VCC2O} − i n s t io_VCCIO −module

{ } −verbose −over r idea p p l y G l o b a l N e t ssetDrawView f p l a nf i t

B.2.2 fplan.tcl

#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# I n i t i a l i z e f l o o r p l a n#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# f l o o r P l a n −b 0 . 0 0 . 0 1872 . 0 8 1872 . 0 8 \# 219 . 8 219 . 8 1092 . 2 8 1092 . 2 8 \# 779 . 8 779 . 8 1092 . 2 8 1092 . 2 8

# f l o o r P l a n −b 0 . 0 0 . 0 1872 . 0 8 1872 . 0 8 \# 219 . 8 219 . 8 1652 . 2 8 1652 . 2 8 \# 261 . 8 261 . 8 1610 . 2 8 1610 . 2 8

# f l o o r P l a n −d 1872 . 0 8 1872 . 0 8 \# 280 . 0 280 . 0 280 . 0 280 . 0

f l o o r P l a n −d 1872 . 0 8 1872 . 0 8 \560 . 0 560 . 0 560 . 0 560 . 0

# f l o o r P l a n −d 3874 . 9 2 1874 . 8 8 \# 1400 . 0 560 . 0 1400 . 0 560 . 0

# snapFPlanIO −usergr id# snapFPlan −al l

# se tP lanDes ignMode −u s e E x i s t i n g P o w e r R a i l t r u e# se tP lanDes ignMode − f i xP lacedMacros t r u e

Page 85: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 81

# se tP lanDes ignMode −groupHardMacro t r u e − e f f o r t medium −boundaryPlacet r u e

se tP lanDes ignMode −groupHardMacro t r u e −boundaryPlace t r u ep l a n D e s i g n

# f i n i s h F l o o r p l a n −autoHalo −autoBlockage − s t a i r c a s ef i n i s h F l o o r p l a n −addHalo 14 −autoBlockage

source ${PROJECT_DIR } /PAR/ BIN / f i l l p e r i . t c l

s a v e D e s i g n $SAVE_DESIGN_FP_FILEsetDrawView f p l a nf i t

B.2.3 pplan.tcl

## F i l e : p w r . t c l## Crea ted a t : Mon Jun 07 16 : 3 3 : 0 3 CEST 2010## Crea ted by : A l e x a n d e r de Graafputs "−−−−−−−−−−−−−−−−− Power P l a n n i n g−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−"

s e t c r w i d t h 2 . 8s e t c r s p a c e 2 . 8 0s e t c r o f f s e t 28 . 0 0

s e t b r w i d t h 1 . 1 2s e t b r s p a c e 0 . 5 6s e t b r o f f s e t 4 . 2 0

s e t v s w i d t h 0 . 9 4s e t v s s p a c e 1 . 6 8s e t v s o f f s e t 2 . 8 0

s e t h s w i d t h 0 . 9 4s e t h s s p a c e 1 . 6 8s e t h s o f f s e t 2 . 8 0cutRowclearCutRowd e s e l e c t A l l#

#################################################################################

## Genera te core r i n g s##

#################################################################################

Page 86: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 82

puts "−−−−−−−−−−−−−−−−− Making Power Rings−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−"

se tAddRingOpt ion −a v o i d _ s h o r t 0 − ignore_rows 0addRing −nets {GND VCC} −around c o r e \

− l a y e r _ t o p ME5 − l aye r_bo t tom ME5 \− l a y e r _ l e f t ME6 − l a y e r _ r i g h t ME6 \

−width_top $ c r w i d t h −width_bot tom $ c r w i d t h −w i d t h _ l e f t $ c r w i d t h−w i d t h _ r i g h t $ c r w i d t h \

− spac ing_ top $ c r s p a c e −spac ing_bot tom $ c r s p a c e − s p a c i n g _ l e f t$ c r s p a c e − s p a c i n g _ r i g h t $ c r s p a c e \

−o f f s e t _ t o p $ c r o f f s e t −o f f s e t _ b o t t o m $ c r o f f s e t − o f f s e t _ l e f t$ c r o f f s e t − o f f s e t _ r i g h t $ c r o f f s e t \

− s n a p _ w i r e _ c e n t e r _ t o _ g r i d None# −cen ter 1d e s e l e c t A l l##

#################################################################################

## Genera te b l o c k r i n g s##

#################################################################################

## Genera te b l o c k r i n g around b u f f e r memorys e l e c t I n s t i _ f i l t e r _ t o p / i_dataRAM_i_dmemse tAddRingOpt ion −a v o i d _ s h o r t 0 − ignore_rows 0 −extend_over_row 0addRing −nets {GND VCC} −type b l o c k _ r i n g s −around s e l e c t e d \

− l a y e r _ t o p ME5 − l aye r_bo t tom ME5 \− l a y e r _ l e f t ME6 − l a y e r _ r i g h t ME6 \−width_top $ b r w i d t h −width_bot tom $ b r w i d t h −w i d t h _ l e f t $ b r w i d t h

−w i d t h _ r i g h t $ b r w i d t h − t h r e s h o l d a u t o \− spac ing_ top $ b r s p a c e −spac ing_bot tom $ b r s p a c e − s p a c i n g _ l e f t

$ b r s p a c e − s p a c i n g _ r i g h t $ b r s p a c e \−o f f s e t _ t o p $ b r o f f s e t −o f f s e t _ b o t t o m $ b r o f f s e t − o f f s e t _ l e f t

$ b r o f f s e t − o f f s e t _ r i g h t $ b r o f f s e t \−use_wire_group 1 −u s e _ i n t e r l e a v i n g _ w i r e _ g r o u p 0

−u s e _ w i r e _ g r o u p _ b i t s 1 − s n a p _ w i r e _ c e n t e r _ t o _ g r i d Noned e s e l e c t A l l## Genera te b l o c k r i n g around c o e f f i c i e n t roms e l e c t I n s t i _ f i l t e r _ t o p / i _ c o e f f _ a 9 d 1 6se tAddRingOpt ion −a v o i d _ s h o r t 0 − ignore_rows 0 −extend_over_row 0addRing −nets {GND VCC} −type b l o c k _ r i n g s −around s e l e c t e d \

− l a y e r _ t o p ME5 − l aye r_bo t tom ME5 \− l a y e r _ l e f t ME6 − l a y e r _ r i g h t ME6 \−width_top $ b r w i d t h −width_bot tom $ b r w i d t h −w i d t h _ l e f t $ b r w i d t h

−w i d t h _ r i g h t $ b r w i d t h − t h r e s h o l d a u t o \

Page 87: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 83

− spac ing_ top $ b r s p a c e −spac ing_bot tom $ b r s p a c e − s p a c i n g _ l e f t$ b r s p a c e − s p a c i n g _ r i g h t $ b r s p a c e \

−o f f s e t _ t o p $ b r o f f s e t −o f f s e t _ b o t t o m $ b r o f f s e t − o f f s e t _ l e f t$ b r o f f s e t − o f f s e t _ r i g h t $ b r o f f s e t \

−use_wire_group 1 −u s e _ i n t e r l e a v i n g _ w i r e _ g r o u p 0−u s e _ w i r e _ g r o u p _ b i t s 1 − s n a p _ w i r e _ c e n t e r _ t o _ g r i d None

d e s e l e c t A l l#

#################################################################################

## Genera te s t r i p e s##

#################################################################################

## p u t s "−−−−−−−−−−−−−−−−− Making Power S t r i p e s−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−"

# s e t A d d S t r i p e O p t i o n − r e m o v e _ f l o a t i n g _ s t r i p e _ o v e r _ b l o c k 1# a d d S t r i p e −nets {GND VCC} −d i r e c t i o n v e r t i c a l − layer ME4 \# −width $ v s w i d t h −spacing $ v s s p a c e − s e t _ t o _ s e t _ d i s t a n c e 300 . 1 6 \# − x l e f t _ o f f s e t 200 . 2 0 − x r i g h t _ o f f s e t 84 . 0 \# −ex t end_ to none −m e r g e _ s t r i p e s _ v a l u e au to

− b r e a k _ s t r i p e s _ a t _ b l o c k _ r i n g s 1 − s n a p _ w i r e _ c e n t e r _ t o _ g r i d None# d e s e l e c t A l l#

#################################################################################

## Route VCC and GND core r i n g s t o pad p i n s o f VCC/GND I O−c e l l s##

#################################################################################

## s r o u t e −noCorePins −noPadRings −n o S t r i p e s − j ogCon t ro l {

p r e f e r W i t h C h a n g e s d i f f e r e n t L a y e r } −nets {GND VCC}s r o u t e −a l lowJogging 1 −al lowLayerChange 1 −nets {GND VCC}#s a v e D e s i g n $SAVE_DESIGN_PR_FILEsetDrawView f p l a nf i tputs "−−−−−−−−−−−−−−−−− Power P l a n n i n g done−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−"

B.2.4 place.tcl

Page 88: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 84

#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Core c e l l p l a c e m e n t#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

i f { $PLACE_TIMING } {# s p e c i f y C e l l P a d ∗ 1# s p e c i f y I n s t P a d MBLITE_SOC_INST / ∗ 1# se tP laceMode − t d I n s t P a d d i n g t r u e −padForPinNearBorder t r u e# se tP laceMode −c o n g E f f o r t $PL_EFFORT − t im ingDr iven t r u e − ignoreScan

t r u e − t d I n s t P a d d i n g t r u e −padForPinNearBorder t r u e# se tP laceMode −c o n g E f f o r t $PL_EFFORT − t im ingDr iven t r u e − ignoreScan

t r u e −modulePlan t r u ese tP l aceMode −congEf fo r t $PL_EFFORT − t imingDr iven t r u e −modulePlan t r u ep l a c e D e s i g n} e l s e {# se tP laceMode −c o n g E f f o r t $PL_EFFORT − ignoreScan t r u ese tP l aceMode −congEf fo r t $PL_EFFORTp l a c e D e s i g n}

# setOptMode − y i e l d E f f o r t none# setOptMode −h i g h E f f o r t# setOptMode −maxDensity 0 . 9 5# setOptMode −drcMargin 0 . 0# setOptMode −h o l d T a r g e t S l a c k 0 . 0 − s e t u p T a r g e t S l a c k 0 . 0# setOptMode − n o S i m p l i f y N e t l i s t# c l earClockDomains# se tC lockDomains −al l# setOptMode −noUsefulSkew# o p t D e s i g n −preCTS −setup −drv \# −outDir $ {PROJECT_DIR } / PAR / RPT

# Save t h e d e s i g n so f a rs a v e D e s i g n $SAVE_DESIGN_PL_FILEputs "−−−−−−−−−−−−−Done P l a c i n g Cells−−−−−"setDrawView p l a c ef i t

B.2.5 cts.tcl

#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# C re a t e c l o c k t r e e ( o p t i o n a l )#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Page 89: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 85

se tDes ignMode −process 90

i f { $CLOCK_TREE } {m a k e _ c l o c k _ t r e e $CTS_CREATE_SPECs a v e D e s i g n $SAVE_DESIGN_CT_FILE}

B.2.6 route.tcl

#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Route d e s i g n ( Nanoroute )#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

puts "−−−−−−−−Add F i l l e r Cells−−−−−−−−−−−−−−−"#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Add f i l l e r c e l l s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

source ${PROJECT_DIR } /PAR/ BIN / f i l l c o r e . t c l

puts "−−−−−−−−−−−Routing−−−−−−−−−−−"## U n f i x t h e c l o c k n e t s t o a v o i d r o u t i n g p r o b l e m s .c h a n g e U s e C l o c k N e t S t a t u s −noFixedNetWiressetNanoRouteMode −drou teF ixAntenna t r u esetNanoRouteMode − routeAntennaCel lName "ANT"setNanoRouteMode − r o u t e I n s e r t A n t e n n a D i o d e t r u ei f { $ROUTE_TIMING } {# C o n f i g u r e NanoRoute t o do t h e f i n a l r o u t i n gsetNanoRouteMode −qu ie t − t imingEngine CTEsetNanoRouteMode −qu ie t − rou teWi thTimingDr iven t r u esetNanoRouteMode −qu ie t − r o u t e T d r E f f o r t 0}

se tDes ignMode −process 90

# Do t h e a c t u a l r o u t i n gg l o b a l D e t a i l R o u t e

puts "−−−−−−−−−Post−route optimize−−−−−−−−−"#

Page 90: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 86

# The f i n a l o p t i m i z a t i o n s t e p − p o s t− r o u t e# setOptMode − y i e l d E f f o r t none# setOptMode −h i g h E f f o r t# setOptMode −maxDensity 0 . 9 5# setOptMode −drcMargin 0 . 0# setOptMode −h o l d T a r g e t S l a c k 0 . 0 − s e t u p T a r g e t S l a c k 0 . 0# setOptMode − n o S i m p l i f y N e t l i s t# c l earClockDomains# se tC lockDomains −al l# setOptMode −noUsefulSkew# o p t D e s i g n −pos tRoute −drv −p r e f i x T i m i n g R e p o r t s \# −outDir $ {PROJECT_DIR } / PAR / RPT# s a v e D e s i g n $SAVE_DESIGN_PF_FILEo p t D e s i g n −postRoute −drv −outDir ${PROJECT_DIR } /PAR/ RPTs a v e D e s i g n $SAVE_DESIGN_RO_FILEsetDrawView p l a c eputs "−−−−−−−−−−−Routing done−−−−−−−−−−−−−"

B.2.7 pplan.tcl

#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# V e r i f i c a t i o n s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# C o n n e c t i v i t yf i l l N o t c h − r e p o r t $RPT_NOTCH_FILEv e r i f y C o n n e c t i v i t y \−type a l l \−e r r o r 1000 \−warning 50 \− c o n n e c t P a d S p e c i a l P o r t s \− r e p o r t $RPT_CONN_FILE# Geometryv e r i f y G e o m e t r y \−a l lowSameCel lVio l s \−a l l owRou t ingBlkgP inOve r l ap \−a l l o w R o u t i n g C e l l B l k g O v e r l a p \− r e p o r t $RPT_GEOM_FILE

B.2.8 verify.tcl

#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

Page 91: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 87

# E x t r a c t p a r a s i t i c s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

#−rcdb $TIM_RCDB_FILE#−reduce 5# f o r 9 . 1#−engine p o s t R o u t e [ − e f f o r t L e v e l <low | medium | h igh |# −engine p o s t R o u t e − e f f o r t L e v e l low \# f o r 8 . 1#−engine d e t a i l

se tDes ignMode −process 90

se tExt rac tRCMode \−engine d e t a i l \−coupled t r u e \− r e l a t i v e _ c _ t h 0 . 0 1 \− t o t a l _ c _ t h 5 . 0e x t r a c t R C#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Genera te RC and t i m i n g f i l e s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

r cOut −spef $SPEF_FILE# d e l a y C a l −sdf $SDF_FILEw r i t e _ s d f $SDF_FILE#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Genera te r e p o r t s#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

r e p o r t G a t e C o u n t − o u t f i l e $RPT_GATE_COUNT_FILE# T imings#s e t C t e R e p o r ts e t A n a l y s i s M o d e −checkType s e t u p −asyncChecks async −skew t r u e

− c l o c k P r o p a g a t i o n f o r c e d I d e a l − s e q u e n t i a l C o n s t P r o p t r u e

# s e t A n a l y s i s M o d e −domain a l lC lockDomain −checkType s e t u p −skew t r u e−use fu lSkew f a l s e −log t r u e −warn t r u e −c a s e A n a l y s i s t r u e− s e q u e n t i a l C o n s t P r o p t r u e −moduleIOCstr t r u e −c l oc kPr op aga t i onf o r c e d I d e a l −c lkSrcPa th t r u e − t im ingSe l fLoopsNoSkew f a l s e−asyncChecks async −useOutputPinCap t r u e − l a t ch t r u e− l a t c h D e l a y C a l I t e r a t i o n 2 − t imeBorrowing t r u e − l a t c h F u l l D e l a y C a l

Page 92: Digital Design Flow Eda Tool

APPENDIX B. APPENDIX B: TOOL SCRIPTS 88

f a l s e −c lockGat ingCheck t r u e − e n a b l e M u l t i p l e D r i v e N e t t r u e−a n a l y s i s T y p e bcWc −cppr f a l s e −c lkNetsMark ing b e f o r e C o n s t P r o p− h o n o r V i r t u a l P a r t i t i o n f a l s e −honorClockDomains t r u e

r e p o r t A n a l y s i s M o d ebu i ldT imingGraphc h e c k _ t i m i n g −verbose > $RPT_CHECK_TA_FILEr e p o r t _ t i m i n g \−format { hp in a r c c e l l d e l a y a r r i v a l r e q u i r e d s lew f a n o u t load } \− l a t e \−max_points 10 \−net \> $RPT_REPORT_TA_FILE#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Save n e t l i s t#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s a v e N e t l i s t −e x c l u d e L e a f C e l l $VLOG_NETLIST_SIM_FILEs a v e N e t l i s t −p h y s i c a l $VLOG_NETLIST_LVS_FILE#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

# Save GDS2#−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

s t r eamOut $GDS_FILE \−mapFile $GDS_MAP_FILE \−libName Des ignLib \−s t ruc tu reName $DESIGN_NAME \−outputMacros \−uniqu i fyCel lNames \− s t r i p e s 1 \−un i t s 1000 \−mode ALL

Page 93: Digital Design Flow Eda Tool

Appendix C

Appendix C: Design Metrics

A design begins with the planning of the die. The mini@sic program from EuroPractice is a multiprojectwafer where a minimum area of 1875 x 1875 um2 is required. This area constraint is the startpoint forplanning the whole chip. Another important issue is the cell library metrics. The metrics of FaradayL90_SP library are:

Description Width HeightGrid 0.28 um 0.28 umCore Cell x * 0.28 um 2.8 umIO Cell 60.48 um 142.8 umCorner Cell 142.8 um 142.8 umPad Cell 64 um 77 um

89

Page 94: Digital Design Flow Eda Tool