UPF examples

13
Judith Richardson NXP Semiconductors, Corporate I&T, Design Technology and Flows August 21, 2007 UPF examples

description

UPF examples. Judith Richardson. NXP Semiconductors, Corporate I&T, Design Technology and Flows. August 21 , 2007. Simple re-use example for isolation. Five IP blocks arthur mervyn percy tom walter Each IP is instanced once Four domains - PowerPoint PPT Presentation

Transcript of UPF examples

Page 1: UPF examples

Judith Richardson

NXP Semiconductors, Corporate I&T, Design Technology and Flows

August 21, 2007

UPF examples

Page 2: UPF examples

NXP Semiconductors, Corp I&T, DT&F, Judith Richardson, August 21, 2007

CONFIDENTIAL 2

Simple re-use example for isolation

Five IP blocksarthurmervynpercytomwalter

Each IP is instanced once

Four domains

walter and mervyn are in one domain, the other instances are in their own separate domains.

Each domain can be independently switched off

Page 3: UPF examples

NXP Semiconductors, Corp I&T, DT&F, Judith Richardson, August 21, 2007

CONFIDENTIAL 3

The five boxesLEF and UPF for each IP,

Verilog and DEF for placement.

Output from percy is driving both arthur and walter.

One of the inputs to walter is tri-state, driven by arthur or tom.

Purple indicate nets leaving selected instance, black for nets entering.

Page 4: UPF examples

NXP Semiconductors, Corp I&T, DT&F, Judith Richardson, August 21, 2007

CONFIDENTIAL 4

Setting Scope

#Will this generic set_scope work in stand-alone and hierarchical contexts?

set originalScope [set_scope .]

puts "In tom.upf : original scope $originalScope“

# Re-set to original scope

set leaveScope [set_scope $originalScope]

puts "In tom.upf : leaving scope $leaveScope"

Page 5: UPF examples

NXP Semiconductors, Corp I&T, DT&F, Judith Richardson, August 21, 2007

CONFIDENTIAL 5

Sourcing vs loading

# The top module isn't really instanced, so use its module name?

set_design_top p1801

# Source the UPF file for tom

set originalScope [set_scope tom]

puts "value in originalScope before sourcing tom.upf is $originalScope"

source tom.upf

# The value in originalScope will have been corrupted during loading tom.upf

puts "value in originalScope after sourcing tom.upf is $originalScope"

# Does this set the scope back to the top?

set originalScope [set_scope /]

puts "value in originalScope after set_scope / is $originalScope"

# Load the UPF file for arthur

load_upf arthur.upf -scope arthur

# The value in originalScope will NOT have been corrupted during loading arthur.upf

puts "value in originalScope after loading arthur.upf is $originalScope"

Page 6: UPF examples

NXP Semiconductors, Corp I&T, DT&F, Judith Richardson, August 21, 2007

CONFIDENTIAL 6

Wildcards(1)

From arthur.upf we have

set_isolation walter_inputs -domain PD -isolation_power_net VDD -isolation_ground_net GND \

-elements {WALTER\[9\] WALTER\[8\] WALTER\[7\] WALTER\[6\] WALTER\[5\] WALTER\[4\] WALTER\[3\] WALTER\[2\] WALTER\[1\] WALTER\[0\]} \

-clamp_value 1 -applies_to inputs

Could we use -elements {WALTER\[*} rather than enumerate?

Can’t use WALTER*, which would also match WALTEROUT[9:0] (which happen to be outputs) on this block

Can’t use WALTER[* because Tcl will complain about the “[“

Can we use WALTER and have that match the full bus?

Can we use WALTER\[9:0\]?

Page 7: UPF examples

NXP Semiconductors, Corp I&T, DT&F, Judith Richardson, August 21, 2007

CONFIDENTIAL 7

Wildcards(2)

Suppose we were writing that at the chip level in p1801.upf

set_isolation arthur_walter_inputs -domain PD -isolation_power_net VDD -isolation_ground_net GND \

-elements {arthur/WALTER\[9\] arthur/WALTER\[8\] arthur/WALTER\[7\] arthur/WALTER\[6\] arthur/WALTER\[5\] \

arthur/WALTER\[4\] arthur/WALTER\[3\] arthur/WALTER\[2\] arthur/WALTER\[1\] arthur/WALTER\[0\]} \

-clamp_value 1 -applies_to inputs

Could we use -elements {arthur/WALTER\[*} ?

Could we use wildcards for instance names ?

Could we use wildcards to match more than one level of hierarchy ?

What happens when the instance name contains the “/” character (e.g. when part of the hierarchy has been flattened) ?

Page 8: UPF examples

NXP Semiconductors, Corp I&T, DT&F, Judith Richardson, August 21, 2007

CONFIDENTIAL 8

Wildcards(3)

Possible procs

get_module_instances moduleName {–matching string} – returns list of names of all instances in module, optionally matching string

get_domain_instances domainName {–matching string} – returns list of names of all instances in domain, optionally matching string.

Would this return all the leaf instances throughout the entire hierarchy?

get_ports moduleName {-inputs|-outputs|both} {–matching string} – returns list of names of all ports in module, optionally matching string, optionally matching direction

get_pins instanceName {-inputs|-outputs|both} {–matching string} – returns list of names of all pins on instance (allow hierarchical name), optionally matching string, optionally matching direction

Page 9: UPF examples

NXP Semiconductors, Corp I&T, DT&F, Judith Richardson, August 21, 2007

CONFIDENTIAL 9

Multiple destinations(1)

Problem with isolation specified for percy - the percyfan net goes to arthur and walter, which may be switched off separately.

In the UPF for percy we have

# The safe condition for the PERCYFAN* outputs is latch

set_isolation percyfan_outputs -domain PD -isolation_power_net VDD \

-isolation_ground_net GND \

-elements {PERCYFAN\[9\] PERCYFAN\[8\] PERCYFAN\[7\] PERCYFAN\[6\] PERCYFAN\[5\] PERCYFAN\[4\] PERCYFAN\[3\] PERCYFAN\[2\] PERCYFAN\[1\] PERCYFAN\[0\]} \

-clamp_value latch -applies_to outputs

Now we want to specify the set_isolation_control for this rule

We can't specify a subset of the elements of the original set_isolation (all the elements are driving both destinations)

And it would be an error to create 2 new set_isolation rules using the same set of elements in the percy/PD domain.

Page 10: UPF examples

NXP Semiconductors, Corp I&T, DT&F, Judith Richardson, August 21, 2007

CONFIDENTIAL 10

Multiple destinations(2)

Is it valid to have this set of commands in the top UPF?

set_isolation percy2arthur -domain percyPD -isolation_power_net percy/VDD \

-isolation_ground_net percy/GND \

-elements {arthur/PERCY\[9\] arthur/PERCY\[8\] arthur/PERCY\[7\] arthur/PERCY\[6\] arthur/PERCY\[5\] arthur/PERCY\[4\] arthur/PERCY\[3\] arthur/PERCY\[2\] arthur/PERCY\[1\] arthur/PERCY\[0\]} \

-clamp_value 0 -applies_to inputs

set_isolation_control percy2arthur -domain percy/PD -isolation_signal arthurOff -location self

set_isolation percy2walter -domain percyPD -isolation_power_net percy/VDD \

-isolation_ground_net percy/GND \

-elements {walter/PERCY\[9\] walter/PERCY\[8\] walter/PERCY\[7\] walter/PERCY\[6\] walter/PERCY\[5\] walter/PERCY\[4\] walter/PERCY\[3\] walter/PERCY\[2\] walter/PERCY\[1\] walter/PERCY\[0\]} \

-clamp_value 0 -applies_to inputs

set_isolation_control percy2walter -domain percy/PD -isolation_signal walterOff -location self

Page 11: UPF examples

NXP Semiconductors, Corp I&T, DT&F, Judith Richardson, August 21, 2007

CONFIDENTIAL 11

Merging domains(1)

What do we have to do to ensure the primary power and ground nets for walter and mervyn are shared so that we can merge them?

To allow the tracing when the nets aren't already in the RTL, we need to create top level power/ground supply nets and connect them to the supply ports in the existing domains.

And to create supply nets we have to first create a domain for them to be in.

create_power_domain dummy

create_supply_net TOPVDD -domain dummy

create_supply_net TOPGND -domain dummy

connect_supply_net TOPVDD -ports {mervyn/VDD walter/VDD}

connect_supply_net TOPGND -ports {mervyn/GND walter/GND}

# Do we also need to have dummy in the list of domains to merge?

merge_power_domains PDcombo -power_domains {mervyn/PD walter/PD}

Page 12: UPF examples

NXP Semiconductors, Corp I&T, DT&F, Judith Richardson, August 21, 2007

CONFIDENTIAL 12

Merging domains(2)

When the merge_power_domains happens that puts mervyn and walter in the same domain what happens to the isolation rule mervyn_inputs from walter.upf ?

Both mervyn and walter had "set_isolation tom_outputs" commands, but with different -clamp_value. What happens with these rules when the domains are merged obeying the statement "All strategies and mappings defined for the list of power domains shall be applied prior to the merge"?

Do the rules still exist ?

With a prepended scope name mervyn/tom_outputs

Or original (scoped) domain name mervyn/PD/tom_outputs

Or is there now just one rule tom_outputs

Or what ?

I think it has to be mervyn/PD/tom_outputs to ensure uniqueness

set_isolation_control mervyn/PD/tom_outputs -domain PDcombo -isolation_signal tomOff

set_isolation_control walter/PD/tom_outputs -domain PDcombo -isolation_signal tomOff

Page 13: UPF examples