Floorplanner effective layout
Download
1 / 84

Floorplanner: Effective Layout - PowerPoint PPT Presentation


  • 99 Views
  • Uploaded on

Rhett Whatcott:. Floorplanner: Effective Layout. Rhett Whatcott: v6.1: Removed “RPM core” objective. Added final bullet. Objectives. After completing this module, you will be able to:. Identify the Floorplanner windows Specify the Floorplanner flow Describe how to use area constraints

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Floorplanner: Effective Layout' - oke


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Floorplanner effective layout

Rhett Whatcott:

Floorplanner: Effective Layout


Objectives

Rhett Whatcott:

v6.1: Removed “RPM core” objective.

Added final bullet.

Objectives

After completing this module, you will be able to:

  • Identify the Floorplanner windows

  • Specify the Floorplanner flow

  • Describe how to use area constraints

  • Identify how PACE is used to specify area constraints

  • Identify optimal pin layout


Outline

Rhett Whatcott:

v6.1: Moved “RPM Core” section to start of Appendix.

Removed “Floorplanning Flow” section.

Outline

  • Introduction

  • Floorplanning Procedures

  • Area Constraints & I/O Layout

  • PACE

  • Summary

  • Appendix:

    • RPM Core

    • Overcoming MAP/PAR Limitations

    • Pseudo Guide File with Floorplanner

    • Additional I/O Considerations


What is the floorplanner
What is the Floorplanner?

  • Graphical tool used to display/edit design layout

    • Easy to review the results of implementation

Close-up of Virtex-II die


When to floorplan

Rhett Whatcott:

v6.1: Added “area constraints” to 3rd sub-bullet

When to Floorplan

  • Use the Floorplanner to:

    • Increase productivity/design performance

    • View the layout of your implemented design

    • Partition design sub-systems into general areas on the die (area constraints/layout)

    • Make minor placement modifications

    • Create RPMs (Relationally Placed Macros)

  • Use the Floorplanner carefully

    • Poor floorplanning can decrease design performance

    • The implementation tools cannot disregard a poor floorplan


Floorplanner prerequisites

Rhett Whatcott:

v6.1: Retranslate slide.

Floorplanner Prerequisites

  • Do not perform significant floorplanning unless you are very familiar with:

    • The design

    • The target device architecture

    • Xilinx software

  • Without sufficient knowledge, it is suggested you try the following first

    • Use timing constraints

    • Increase Place & Route Effort Level

    • Specify  Perform Timing-Based Packing (Map) and extra-effort level (PAR)

    • Pipeline or redesign logic in critical paths

    • Use re-entrant routing or MPPR


Floorplanning advantage

Rhett Whatcott:

v6.1: New slide.

Floorplanning Advantage:

  • Given sufficient knowledge…

    • In large and/or high performance designs, floorplanning/layout is an effective precursor to implementation

      • Provides guidance to implementations tools on the layout of the design

      • Can help to reduce run time

      • Can help to increase performance

    • Floorplanning is required for Incremental Design Techniques and Modular Design Techniques


Floorplanning flow
Floorplanning Flow

Rhett Whatcott:

v6.1: new slide.

edn, ngc

ncf

ucf

NGDBUILD

Floorplanner

ngd

MAP

fnf

ncd, pcf

PAR

ncd


Floorplanner versus pace

Rhett Whatcott:

v6.1: New slide.

Floorplanner Versus PACE

  • PACE:

    • Easiest tool for specifying pin placement constraints and area constraints

  • Floorplanner:

    • More advanced tool with placement capabilities beyond that of PACE

      • Create groups of logic

      • Constrain logic to a specific location (hard location constraints - hard LOC)

      • Constrain logic from a current placement (hard LOC)

      • View and edit placed design

      • Perform packing of logic resources

      • Used for cross-probing with Timing Analyzer

    • PACE is much better for specifying pin constraints

    • Specifying area constraints is similar to PACE


Main floorplanner windows

Rhett Whatcott:

v6.1: Removed next slide.

Changed Demo in Notes.

Main Floorplanner Windows

Floorplan(in back)

Shows current placement constraints and design edits

Placement

Shows the current design layout from the implementation tools

  • Design Hierarchy

    • Displays color-coded hierarchical

    • Blocks.

    • Traverse hierarchy to view any component in the design

Design Nets

Lists all the nets in the design


Viewing the device

Rhett Whatcott:

v6.1: Removed next slide.

Viewing the Device

  • Click View  Options, or click the Toggle Resources button to display device resources

    • Function Generators and RAM

    • Flip-flops and latches

    • Three-state buffers

    • I/O pads and global buffers

  • Row and column numbers are displayed for easy reference


Locating logic and nets
Locating Logic and Nets

  • Use the Edit  Find command

  • Filters help you narrow your search

    • Logic type (flip-flops, I/O pins, nets, etc.)

    • Status (floorplanned, not floorplanned, selected, etc.)

    • Connections (driving selected logic, sourcing selected logic, etc.)


Viewing connectivity

Rhett Whatcott:

v6.1: Changed Demo in Notes.

Viewing Connectivity

  • View connectivity by components

    • Click Edit  Preferences  Ratsnest Tab. Check Display nets connected to selected logic

    • Select a component or group of logic in the Hierarchy window

  • Connections are shown in the Placement and Floorplan windows


Package view

Rhett Whatcott:

v6.1: Moved sub-bullets to Notes.

Added PACE bullet.

Changed Demo Notes.

Package View

  • To view the package pins, click View menu  Package Pins

  • You can view the bottom view or the top view

  • PACE provides a more complete package view for more beneficial pin placement

    • All dual-purpose and special pins are identified


Timing analyzer cross probing

Rhett Whatcott:

v6.1: Changed Demo in Notes.

Timing Analyzer Cross-Probing

  • The Timing Analyzer and Floorplanner can be used together to cross- probe paths

2

Path appears in Floorplanner

1

Click on path in Timing Analyzer


Outline1

Rhett Whatcott:

v6.1: Moved “RPM Core” section to start of Appendix.

Removed “Floorplanning Flow” section.

Outline

  • Introduction

  • Floorplanning Procedures

  • Area Constraints & I/O Layout

  • PACE

  • Summary

  • Appendix:

    • RPM Core

    • Overcoming MAP/PAR Limitations

    • Pseudo Guide File with Floorplanner

    • Additional I/O Considerations


Floorplanning procedures
Floorplanning Procedures

  • Creating groups of logic

  • Constraining logic to a specific location

  • Constraining from the current placement

  • Locking I/O pins

  • Area constraints (covered in the next section)


Creating groups of logic
Creating Groups of Logic

  • When the design is loaded, logic is automatically grouped according to the design hierarchy

  • Create your own groups of logic in two ways:

    • Select the logic and use the command Hierarchy  Group

    • Use the command Hierarchy  Group By, to select and group logic


Changing group colors

Rhett Whatcott:

v6.1: Retranslate slide.

Changing Group Colors

  • Use color to identify parts of your design easily

  • Select a group of logic

  • Use the command Edit  Colors

  • Choose a new color

  • Click Apply


Constraining logic to a specific location

Rhett Whatcott:

v6.1: Changed demo in Notes.

Constraining Logic toa Specific Location

  • Select the method in which you would like the logic to be distributed

    • Distribute One at a Time drops each component individually

    • Up, Down, Left, or Right quickly shapes the logic into a row or column

  • Pick up the logic by clicking the icon in the Hierarchy window

  • Move the cursor in the Floorplan window

  • Click to place the logic

    • Valid locations are highlighted


Moving logic
Moving Logic

  • To move logic that is already placed in the Floorplan window

    • Select the logic that you want to move (in the Hierarchy, Placement, or Floorplan window)

    • Click the logic to pick it up

    • Move the cursor to a new location

    • Click to place the logic

  • To remove logic from the Floorplan window

    • Select the logic you want to remove

    • Press <Delete> or move the logic back into the Hierarchy window


Block ram placement

Rhett Whatcott:

v6.1: retranslate slide

Block RAM Placement

  • The placement algorithm for block RAM does not always result in an optimal placement with its source and load

  • Consider placing most (if not all) of your block RAMs

    • Block RAM placement can be very critical to the timing of your design

  • Hand-place them to use the flow of the device wisely

    • Horizontal data flow, carry chain runs up

  • Discussed further in Area Constraints section


Constraining from the current placement

Rhett Whatcott:

v6.1: retranslate slide.

Constraining From theCurrent Placement

  • Use these commands when you want to make minor layout changes

  • To constrain selected logic in Placement window:

    • Select the logic that you want to constrain, from the Placement window

    • Use the command Floorplan  Constrain from Placement

    • The layout for the selected logic is copied from the Placement window into the Floorplan window

    • Make changes to the logic placement in the Floorplan window

  • To copy the entire Placement window: use the command Floorplan  Replace All with Placement


Locking i o pins

Rhett Whatcott:

v6.1: retranslate

Locking I/O Pins

  • For high-speed, complicated, and large I/O designs, Xilinx suggests you manually lock I/O

    • Use PACE (recommended)

    • Use the Constraints Editor (Ports tab)

    • Lock the pins based on the pinout from the implementation tools:

      • From ISE Project Navigator: Expand Implement Design, expand Place & Route, double-click Back-annotate Pin Locations

      • Floorplanner

        • Use the Edit  Find command to select all I/O Pads

        • Use the Floorplan  Constrain from Placement command

        • Make adjustments, if needed, and save


Outline2

Rhett Whatcott:

v6.1: Moved “RPM Core” section to start of Appendix.

Removed “Floorplanning Flow” section.

Retranslate this section (Area Constraints & IO Layout)

Outline

  • Introduction

  • Floorplanning Procedures

  • Area Constraints & I/O Layout

  • PACE

  • Summary

  • Appendix:

    • RPM Core

    • Overcoming MAP/PAR Limitations

    • Pseudo Guide File with Floorplanner

    • Additional I/O Considerations


I o location constraints
I/O Location Constraints

  • For high-speed designs, complex designs, and designs with a large number of I/O pins, Xilinx recommends manual placement of I/O

    • Guides the internal data flow

    • The implementation tools have the ability to place logic and pins, but this does not always result in the most optimal placement

    • Poor pin placement can reduce the chances of your design meeting your performance objectives

    • Making good pin assignments requires detailed knowledge of the design functionality and Xilinx architecture

      • Pin assignments must also comply with the silicon’s capabilities

        • Assignments must follow the I/O banking rules and the pre-grouping of the differential I/O pins

        • Clock pin assignments affect clock region access and shared input pairs

        • Take advantage of internal data-flow


Pin constraints
Pin Constraints

  • Clocks should be constrained to dedicated clock pins

    • Or clock pin pairs for differential clocks

    • Keep in mind the global clock buffer limitations

      • Eight global clocks or eight clocks total into each clock region

      • Rules previously described

  • Use dual-purpose pins last

    • For example, configuration and DCI pins

    • This will help to reduce contention during board power-up or when the FPGA is reconfigured on demand

    • PACE or the Xilinx Constraints Editor can be used to prohibit configuration pins


Internal logic layout

Bit 7

Datapath

Bit 0

Datapath

A+B

C+D

E+F

C_REG

E_REG

G_REG

Rhett Whatcott:

v6.1: retranslate slide.

Internal Logic Layout

  • Horizontal data flow with vertical bus alignment

    • Carry logic runs vertically

    • Bidirectional data bus longlines run horizontally

      • 3-state enable lines run vertically

    • Control lines (CE, resets, etc) are generally driven on vertical long lines


Layout for smaller fpgas

Control Signals

Data Flow

Data Buses

Data Buses

Control Signals

Rhett Whatcott:

v6.1: Retranslate slide.

Layout for Smaller FPGAs

  • I/O for control signals on the top or bottom

    • Signals are routed vertically

  • I/O for data buses on the left or right

  • Internal layout favors horizontal data flow

    • Align area blocks to flow horizontally

    • Allow enough room for carry chains

    • Place block RAMs appropriately to align with arithmetic logic

General guidelines for chips with 100K system gates or less:


Layout for larger fpgas
Layout for Larger FPGAs

  • Use the same guidelines as you would use for smaller chips

  • In addition, consider the following:

    • Group control signals and data buses near related internal logic

    • High-fanout signals may be placed near the middle of the chip, for easy access to horizontal long lines

For chips with 500K system gates or more:

Data Flow

Control Signals

Control Signals


Data bus layout
Data Bus Layout

  • Arithmetic functions with more than five bits typically utilize carry logic

  • Carry chains require specific vertical orientation

    • Affects both internal and I/O layout

MSB

LSB


Interleaved bus layout

B(3)

A(3)

B(2)

A(2)

B(1)

A(1)

B(0)

A(0)

Interleaved Bus Layout

  • Arithmetic functions involving two or more buses will benefit from interleaved pin constraints

    • For example:

      • C <= A + B; or C <= A * B;


Area constraints a k a layout a k a area groups

Rhett Whatcott:

v6.1: Added a.k.a.’s in Heading

Added first bullet

Area Constraints (a.k.a. Layout, a.k.a. AREA_GROUPs)

  • Easiest and most effective application of floorplanning

  • Preferred method of floorplanning for synthesis users and large designs

    • Individual component names change often during synthesis, but hierarchical block names remain constant

      • For this to be effective, you must retain hierarchy during synthesis

    • Each sub-section of a large design can be constrained to an area

  • Area constraints allow you to provide guidance while still giving the implementation tools freedom

  • This is the primary floorplanning methodology for use with incremental design techniques


Area constraints
Area Constraints

2

1. Select the area group you want to constrain

2. Click the Assign Area button

3. Click and drag to define the area constraint

  • Floorplanner estimates the required area and will not allow you to select an area that is too small

1

3


Area constraint compression

Rhett Whatcott:

v6.1: Retranslate slide.

Area Constraint Compression

  • When assigning area constraints, it may be helpful to apply a compression factor for mapping

    • This is equivalent to the global -c option applied in map, but it only applies to an individual AREA_GROUP

    • Right-click the AREA_GROUP, select  Edit Constraints

      • Constraint: Compression

      • Value: <%>

        • <%> represents the percentage of logic resources in that area constraint available for packing

    • Click OK


Area constraints in ucf

Rhett Whatcott:

v6.1: retranslate.

Area Constraints in UCF

  • Floorplanner (and PACE) area constraints create AREA_GROUP and RANGE constraints in the UCF

    • AREA_GROUP constraints bind instances into a group

    • RANGE constraints assign an AREA_GROUP to an area on the die

    • Syntax:

      • INST <hierarchical_group> AREA_GROUP = AG_<ag_name>;

      • AREA_GROUP <ag_name> RANGE = SLICE_XnYm:SLICE_XnYm;

      • AREA_GROUP <ag_name> COMPRESSION= <value>; # if applied

    • For example:

      • INST data_control_inst AREA_GROUP= AG_data_control_inst;

      • AREA_GROUP AG_data_control_inst RANGE =SLICE_X0Y47:SLICE_X27Y32 ;

      • AREA_GROUPAG_data_control_inst COMPRESSION= 90;


Range constraints

Rhett Whatcott:

v6.1: retranslate

RANGE Constraints

  • RANGE constraints are written for slices, block RAM, multipliers, and 3-state buffers

    • Range constraints will be written for each of these logic types

      • Slices:

        AREA_GROUP "AG_data_control_inst" RANGE = SLICE_X0Y47:SLICE_X27Y32 ;

      • Block RAMs:

        AREA_GROUP " AG_data_control_inst " RANGE = RAMB16_X1Y18:RAMB16_X3Y15 ;

      • Block multipliers:

        AREA_GROUP " AG_data_control_inst " RANGE = MULT18X18_X1Y18:MULT18X18_X3Y15 ;

      • Three state buffers:

        AREA_GROUP " AG_data_control_inst " RANGE = TBUF_X0Y15:TBUF_X10Y9 ;


Multiplier and block ram range constraints

In this situation, you are only interested in constraining the slices and 3-state buffers

Hand-place the block RAMs and block multipliers

Rhett Whatcott:

v6.1: changed last bullet.

Multiplier and Block RAM RANGE Constraints

There’s only room

for 4 block RAMs…

but, I need room for 8!

What do I do?


Multiplier and block ram range constraints1
Multiplier and Block RAM RANGE Constraints the slices and

  • Comment-out the block RAM and multiplier RANGE constraints in the UCF

  • Hand-place the block RAMs and multipliers for optimal placement and timing

  • This will provide the most optimal approach to floorplanning

    • Control placement of block RAMs and multipliers through hand placement

    • Control placement of slice logic and 3-state buffers through area constraints


Outline3

Rhett Whatcott: the slices and

v6.1: Moved “RPM Core” section to start of Appendix.

Removed “Floorplanning Flow” section.

Outline

  • Introduction

  • Floorplanning Procedures

  • Area Constraints & I/O Layout

  • PACE

  • Summary

  • Appendix:

    • RPM Core

    • Overcoming MAP/PAR Limitations

    • Pseudo Guide File with Floorplanner

    • Additional I/O Considerations


Pinout and area constraints editor pace
Pinout and Area Constraints Editor (PACE) the slices and

  • PACE is a tool used to create pinout and area constraints

  • Constraints are written to the UCF file

  • The flow, look, and use are very similar to that of Floorplanner

    • It does not have all the capabilities of Floorplanner


Pinout and area constraints editor pace1
Pinout and Area Constraints Editor the slices and (PACE)

Device Architecture

Allows area constraint specification

  • DesignHierarchy

    • Displays color-coded hierarchical

    • blocks

Package Pins

Allows pin loc specifications

Package Pins Legend

Design Object List

Displays elements contained in the group that are selected in the Design Hierarchy window


Pin constraints1
Pin Constraints the slices and

  • Pin constraints most easily made using PACE

Drag & Drop I/O to

Package Pin window

Specify I/O options in

Object List window


Pace features
PACE Features the slices and

  • To prohibit pin sites or slice sites, use the Prohibit icon in the toolbar

  • To allow the use of prohibited sites, use the Allow Icon

  • Package migration: When a design has the possibility of moving to a different package, PACE will write out prohibit constraints on incompatible pins so user can avoid reassigning I/Os

    • IOB  Make Pin Compatible With...


Area constraints1

Rhett Whatcott: the slices and

v6.1: Changed Demo in Notes.

Area Constraints

1. Select the area group that you want to constrain

2. Click the Assign Area button

3. Click and drag to define the area constraint

  • PACE estimates the required area and will not allow you to select an area that is too small

2

1

3


Area constraint compression1

Rhett Whatcott: the slices and

v6.1: retranslate slide.

Area Constraint Compression

  • When assigning area constraints, it may be helpful to apply a compression factor for mapping

    • This is equivalent to the global -c option applied in MAP, but it only applies to an individual AREA_GROUP

    • Click Areas menu  Edit Constraints, enter Constraint: Compression, Value: <%>

      • <%> represents the number of logic resources in that area constraint available for packing

    • Click  Enter, click  OK


Outline4

Rhett Whatcott: the slices and

v6.1: Moved “RPM Core” section to start of Appendix.

Removed “Floorplanning Flow” section.

Outline

  • Introduction

  • Floorplanning Procedures

  • Area Constraints & I/O Layout

  • PACE

  • Summary

  • Appendix:

    • RPM Core

    • Overcoming MAP/PAR Limitations

    • Pseudo Guide File with Floorplanner

    • Additional I/O Considerations


Review questions

Rhett Whatcott: the slices and

v6.1: Changed 2nd question.

Added 3rd question.

Review Questions

  • Will the implementation tools override any manual edits that decrease performance of your design?

  • What is Floorplanner beneficial for?

  • What is the easiest and most beneficial application of floorplanning?

  • After which implementation steps can you perform floorplanning?

  • After creating a new floorplan, which phases of implementation need to be run again?

  • Describe an optimal pin layout for Virtex-II/Spartan -3 devices


Review questions1
Review Questions the slices and

  • Specify the windows of the floorplanner and explain how they are used


Answers
Answers the slices and

  • Will the implementation tools override any manual edits that decrease performance of your design?

    • No


Answers1

Rhett Whatcott: the slices and

v6.1: New question/answer

Answers

  • What is Floorplanner beneficial for?

    • In large and/or high performance designs

      • Provides guidance to implementations tools on the layout of the design

      • Can help to reduce run time

      • Can help to increase performance

    • Floorplanning is required for IDT and MDT

    • Increase productivity/design performance

    • View the layout of your implemented design

    • Partition design sub-systems into general areas on the die (area constraints/layout)

    • Make minor placement modifications

    • Create RPMs (Relationally Placed Macros)


Answers2

Rhett Whatcott: the slices and

v6.1: First question/answer is new.

Answers

  • What is the easiest and most beneficial application of floorplanning?

    • Area Constraints (a.k.a. Layout, a.k.a. AREA_GROUPs)

  • After which implementation steps can you perform floorplanning?

    • Translate

    • MAP

    • Place & Route

  • After creating a new floorplan, which phases of implementation need to be run again?

    • Translate, MAP, Place & Route, Configuration


Answers3

  • Design Hierarchy the slices and

    • Displays color-coded hierarchical blocks. Traverse hierarchy to view any component in design

Design Nets

Lists all nets in the design

Placement

Shows the current design layout from the implementation tools

Floorplan(in back)

Shows the current placement constraints and design edits

Answers

  • Specify the windows of the floorplanner and explain how they are used


Answers4
Answers the slices and

  • Describe an optimal pin layout for Virtex-II/Spartan-3 devices

    • Place data to flow horizontally across the device

    • Place data, addresses, etc. for proper alignment with carry chain

      • LSBs below MSBs -- flowing up


Summary

Rhett Whatcott: the slices and

v6.1: retranslate slide.

Summary

  • Take care when editing design placement because the implementation tools cannot change a poor floorplan

  • Floorplanning can be an effective method of providing guidance to implementation tools

  • Area constraints give the implementation tools guidance but provide the most flexibility to meet your goals

  • I/O pin layout guidelines:

    • Data buses on the left and right of the die

    • Control signals on the top and bottom

    • MSB of buses at the top, LSB at the bottom


Where can i learn more

Rhett Whatcott: the slices and

v6.1: Changed first bullet and sub-bullets.

Where Can I Learn More?

  • Virtex-II, Virtex-II Pro, and Spartan-3 User Guides and Data book

    • Details on device architecture

    • http://support.xilinx.com  Documentation

  • Online Software Manuals Constraints Guide Constraint Entry  Floorplanner

  • Floorplanner  Online Help


Outline5

Rhett Whatcott: the slices and

v6.1: Moved “RPM Core” section to start of Appendix.

Removed “Floorplanning Flow” section.

Outline

  • Introduction

  • Floorplanning Procedures

  • Area Constraints & I/O Layout

  • PACE

  • Summary

  • Appendix:

    • RPM Core

    • Overcoming MAP/PAR Limitations

    • Pseudo Guide-File with Floorplanner

    • Additional I/O Considerations


Reusable rpm core
Reusable RPM Core the slices and

  • Floorplanner can be used to create cores that retain relative placement and, therefore, performance and timing repeatability

    • It allows you to transform a design (or design block) into a Relationally Placed Macro (RPM) core that can be reused via instantiation in any design


Reusable rpm core steps
Reusable RPM Core Steps the slices and

Step 1: Define the logical function of your core in HDL

Step 2: Synthesize your design to create an EDIF netlist such as my_core.edf

  • Disable I/O insertion and clock buffer insertion

    Step 3: Process the EDIF netlist using NGDBuild to produce an NGD file, such as my_core.ngd

    Step 4: Load your design (NGD or NCD) into the Floorplanner, and shape the relative placement of the design

    Step 5: Save your design using the Write RPM to NCF command in the File menu


Relationally placed macro
Relationally Placed Macro the slices and

  • What is a Relationally Placed Macro (RPM)?

    • An RPM uses relative location constraints to constrain logic relationally to other logic

    • This helps to keep associated logic close together to reduce routing delays

  • RPMs can be created on BELs, COMPs, and hierarchy

    • Before COMPs can be relationally placed, BELs must be relationally placed

    • Before hierarchy can be relationally placed, COMPs must be relationally placed

  • You must be aware that too many RPM blocks can significantly hinder the placement tools

    • They can, in fact, prohibit the tools from finding a placement


Outline6

Rhett Whatcott: the slices and

v6.1: Moved “RPM Core” section to start of Appendix.

Removed “Floorplanning Flow” section.

Outline

  • Introduction

  • Floorplanning Procedures

  • Area Constraints & I/O Layout

  • PACE

  • Summary

  • Appendix:

    • RPM Core

    • Overcoming MAP/PAR Limitations

    • Pseudo Guide File with Floorplanner

    • Additional I/O Considerations


Map limitations
MAP Limitations the slices and

  • RPM sourcing locked flip-flops

  • Constrained by Packing problems


Rpm sourcing locked flip flops

8-Bit Inc-Dec the slices and

8 Flip-flops

RPM Sourcing Locked Flip-Flops

  • Relationally Placed Macros are components that have been assigned a specific shape with RLOC constraints

    • Synthesized arithmetic components larger than six bits may be RPMs

    • All RPMs in your design are listed in Section 7of the MAP report

  • In this example, an 8-bit incrementer/decrementer is driving 8 flip-flops to create a counter


Rpm sourcing locked flip flops1
RPM Sourcing Locked Flip-Flops the slices and

  • When the flip-flops are physically constrained with LOC or RLOC, MAP is unable to pack the Inc-Dec and flip-flops together

    • Creates extra delay in the datapath

8-Bit Inc-Dec

8 Flip-flops


Rpm sourcing locked flip flops workarounds
RPM Sourcing Locked the slices and Flip-Flops: Workarounds

  • Remove the constraints from the flip-flops

    • Now MAP can pull the flip-flops into the same slice with the RPM

  • Use the Floorplanner to place both components into the same slice

8-Bit Inc-Dec

8 registers


Design considerations
Design Considerations the slices and

  • When locking down flip-flops, make sure you know what is sourcing them

  • If the flip-flops are sourced by an RPM, you should lock down the RPM instead of the flip-flops

  • If flops are sourced by non-RPM logic, then it is up to you to determine whether you want to lock down the logic

    • In many cases, it should NOT be necessary to lock down the non-RPM logic. MAP will pack this logic into the appropriate slice


Constrained by packing

Slice R1C1 the slices and

Slice R1C1

MAP

D Q

A

D Q

A

F/G

F/G

F/G

F/G

D Q

B

H

H

D Q

B

D Q

Constrained By Packing

  • Flip-flop A is constrained to Slice_R1C1 because it drives an output on the NW corner of the die

  • Flip-flop B is unconstrained and drives an output on the SE corner of the die

  • MAP is allowed to pack unconstrained logic together with constrained logic

  • Result: Bad placement for flip-flop B


Constrained by packing workarounds
Constrained by Packing: Workarounds the slices and

  • Avoid partially filled slices (Recommended)

    • Constrain all the components (LUTs, FFs) of a locked slice

    • You can use the Floorplanner to fill up the slice

  • Set the XIL_MAP_LOC_CLOSED environment variable to TRUE

    • Tells MAP not to pack unconstrained logic into slices with constrained logic

    • Can cause an increase in resource utilization if many slices are only partially filled

  • Use the Floorplanner to lock flip-flop B in the example

  • Use map -timing implementation option


Interleaving logic
Interleaving Logic the slices and

  • Interleaving spreads out the resources associated with a bus

    • Other logic can be interspersed with the bus

  • MAP and PAR will not automatically interleave logic

    • You must manually interleave logic with RLOCs or the Floorplanner


Interleaving example related buses
Interleaving Example: the slices and Related Buses

  • A and B input pins are interleaved

    • Skew between bits of interrelated buses is minimized

    • Nets do not cross each other

B1

LUT

FF

A1

B0

LUT

FF

A0

VHDL:

process ( clk )

begin

if ( clk' event and clk = '1' ) then

Q <= (A AND B);

end if;

end process;

Verilog:

[email protected](posedge CLK)

OUT <= A & B;


Interleaving example dual port ram
Interleaving Example: the slices and Dual-Port RAM

  • Dual-port RAM produces 1-bit of output per slice

  • Arithmetic functions and registers produce 2-bits per slice

  • Placing the RAM in a tall column can cause routing problems and skew

  • Horizontally interleave the dual-port RAMs to line up with other functions

6

7

6-7

Dual-Port

RAM

Arithmetic

Function

5

4

4-5

3

2

2-3

1

0

0-1


Working with patterns
Working with Patterns the slices and

  • The Capture Pattern and Impose Pattern commands allow you to create a template pattern of placed logic that can be used later when placing similar logic

    • Multiple instances of the same hierarchical block

    • Components along a datapath

  • Procedure:

    • Select a template group of logic, and click the Capture Pattern button

    • Select a new group of logic to impose the pattern upon and click the Impose Pattern button

      • The new group of logic must have the same number and type of components as the template group

    • Place the new logic in the Floorplan window


Outline7

Rhett Whatcott: the slices and

v6.1:

Removed “Floorplanning Flow” section.

Outline

  • Introduction

  • Floorplanning Procedures

  • Area Constraints & I/O Layout

  • PACE

  • Summary

  • Appendix:

    • RPM Core

    • Overcoming MAP/PAR Limitations

    • Pseudo Guide File with Floorplanner

    • Additional I/O Considerations


Guide introduction
Guide Introduction the slices and

  • The Floorplanner can be used to create a pseudo guide file to guide future implementations

  • What is a guide file?

    • A guide file is a file from a previous implementation that is used to guide the placement and/or routing of future implementations

    • Guiding of logic is based on re-using named elements (FFS, latches, RAMs, ROMs, LUTs, BUFTs, etc.) from a previous implementation on a new one

  • What is the purpose of using a guide file?

    • To preserve previous good results

    • Reduce run time


Guide questions
Guide Questions the slices and

  • What are the prerequisites for using a Floorplanner guide file?

  • When would it be appropriate to use a Floorplanner guide file?

  • Which elements would be appropriate to floorplan (i.e., which elements are least likely to change)? Why?


Guide answers
Guide Answers the slices and

  • What are the prerequisites for using a Floorplanner guide file?

    • Preservation of hierarchy

  • When would it be appropriate to use a Floorplanner guide file?

    • Small changes to overall design (generally, less than ten percent)

  • Which elements would be appropriate to floorplan (i.e., which elements are least likely to change)? Why?

    • Synchronous elements: FFs, latches, RAMs

    • Guide files are effective if names remain the same. Names of synchronous elements usually do not change from one implementation to the next as long as the hierarchy does not change. LUT names (because they are usually machine generated) change almost entirely


Floorplanned guide file
Floorplanned Guide File the slices and

  • Step One: Click Synchronous Elements

  • From the Floorplanner window, click Edit  Find

  • Enter * (star wildcard) in the Name textbox

  • Enter Flip-Flops (or memory) in the Type drop-down box

  • Click Find

  • Click Select Found

  • Click Close


Floorplanned guide file1
Floorplanned Guide File the slices and

  • Step Two: Constrain selected logic

  • From Floorplanner window, click Floorplan menu  Constrain from Placement

  • Save and Exit Floorplanner


Expected guide results
Expected Guide Results the slices and

  • Keep in mind with this flow that you are preserving only the placement of the synchronous elements

    • In addition to not placing any LUT logic, you have not retained the routing

    • You are only guiding the placement of LUT logic based on the location of the synchronous elements

  • You can expect the results to be similar

    • You should not expect the results to match entirely. Why?

      • Because of the changes that were made to the design


Outline8

Rhett Whatcott: the slices and

v6.1: Added this section.

Removed “Floorplanning Flow” section.

Outline

  • Introduction

  • Floorplanning Procedures

  • Area Constraints & I/O Layout

  • PACE

  • Summary

  • Appendix:

    • RPM Core

    • Overcoming MAP/PAR Limitations

    • Pseudo Guide File with Floorplanner

    • Additional I/O Considerations


Device migration considerations
Device Migration Considerations the slices and

  • Virtex-II and Virtex-II Pro pinouts were created to allow for migration to a larger or smaller device

  • For a larger device, the number of reference voltage pins will increase (Vcco and Vref)

    • Those pins will need to be connected on the PCB, as if you are planning for the larger device

      • Vref pins connected to reference supply voltage

        • That is, not used as user I/O

        • Listed as No Connect (NC) for smaller devices

      • Vcco pins connected to reference supply voltage


Package migration considerations
Package Migration Considerations the slices and

  • Specific packages allow migration to a larger or smaller package

    • The FG456 and FG676 packages are pinout compatible

    • The FF896 and FF1152 packages are pinout compatible

  • Pin definitions remain nearly identical

    • Some Vref pins in larger packages are user I/O in smaller packages

    • LVDS pairs are different

    • Some user I/O are in different banks


Planning board layout
Planning Board Layout the slices and

  • Due to the board-level layout of devices, some internal layout tips may not be obeyed

    • For example, for the board shown here, interface signals between the two FPGAs may not allow for the most optimal internal layout

  • Attempt to take into account the optimal internal layout when performing board-level layout


I o layout reducing ground bounce

Rhett Whatcott: the slices and

v6.1: Added Final Bullet.

I/O Layout: ReducingGround Bounce

  • Simultaneously Switching Outputs (SSO) are the main cause of ground bounce

  • Review the Ground Bounce Recommendation Charts in the Data Book

    • This chart describes the maximum number of SSO pins per power and ground pair for Virtex-II devices

    • Do not exceed these ratings if possible

    • If you do, you may need to modify your design, your pin assignments, or your system to reduce the risk of suffering from ground bounce

      • Some possible solutions are described in the notes

  • PACE will help you review SSO via command Tools  SSO Analysis


ad