Power Formatの現状と
富士通
CPF Low Power設計の実績
富士通マイクロエレクトロニクス株式会社
2009/05/20
Agenda
Agenda
富士通の
CPFへの取り組みと実績
富士通
CPF Low Power設計フロー
Agenda
Agenda
富士通の
CPFへの取り組みと実績
富士通
CPF Low Power設計フロー
Low Power 設計の歩み
Low Power 設計の歩み
2006
2007
2008
2009
Power Forward Initiative (PFI) の設立(’06.5)
Si2よりCPF1.0がリリース(’07.3)
PFIより低消費電力設計ガイド(初版)の出版(’08.4)
実証プロジェクトにてCPFの
設計フローの検証開始
CPFを富士通の設計フローに導入
・
CDN Live! (Jul. 2007) にて発表
CPF設計フローを実品種に適用
・ Low Powerセミナー (May. 2008) にて発表
・ CDN Live! (Jul. 2008) にて発表
低消費電力設計ガイド(初版)に設計事例を投稿
CPF1.1の正式リリース(’08.10)
PFI設立と同時に参画
CPFをSi2に寄贈(’06.12)
PFI, Si2の主な活動
富士通の主な活動
CPF設計フローを適用した
製品を発売
日本語版低消費電力設計ガイドの出版(’08.12)
CPF Low Power 設計フローの効果
CPF Low Power 設計フローの効果
設計が容易になり、短
TAT開発が可能
9
高い設計スキル
9
多くの
W/A適用
従来
CPFを富士通の設計フローに導入
CPFを富士通の設計フローに導入
Power Gating
Multi-VDD
CPF適用
Agenda
Agenda
富士通の
CPFへの取り組みと実績
富士通
CPF Low Power設計フロー
CPF Low Power 設計フロー
CPF Low Power 設計フロー
Low Power Check (CLP)
Verification (ETS/EPS)
CPF
Isolator/Level Shifter挿入
Power Switch挿入
RTL
Shut-off動作検証
CPFデバグ
構造チェック
ルールベースチェック
ファンクションチェック
Logic Synthesis (RC)
DFT
Layout (SoCE)
RTL Sim (IUS)
CPF (Common Power Format)
CPF (Common Power Format)
LSIの仕様としてPower Intentを記述します
設計フェーズに応じて必要な記述を行います
define_always_on_cell
define_isolation_cell
define_level_shifter_cell
define_power_switch_cell
create_power_domain
create_nominal_condition
create_power_mode
create_isolation_rule
create_level_shifter_rule
create_power_nets
create_global_connection
:
library.cpf
logical.cpf
physical.cpf
source library.cpf
source libset.cpf
set_design DESIGN_NAME
set_hierarchy_separator "/“
source logical.cpf
source physical.cpf
end_design
design.cpf
define_library_set
libset.cpf
・
Low Power セル定義
Logical Low Power Check
Impleme
n
ta
tion
, P
h
ys
ic
al Lo
w
Pow
er Check
Logic Si
m
u
lation
・
Power Domain定義
・
Power Mode定義
・Isolation Rule定義
・Shifter Rule定義
・
Library Set定義
・電源ネット定義
・電源接続定義
・MMMC設定
(PDD)
Shut-off Simulation with CPF
Shut-off Simulation with CPF
logical.cpfのみ準備することでShut-off Sim実行可能
create_power_domain -name
PDD
-default
create_power_domain -name
PD1
-instances
uL1
create_isolation_rule -name ISO_PD1 -from PD1 ¥
-isolation_output
low
-isolation_condition
!uPMU/isoen
create_nominal_condition -name ON12 -voltage 1.2
create_power_mode -name PM1 -domain_conditions {PDD@ON12 PD1@ON12} -default
create_power_mode -name PM2 -domain_conditions {PDD@ON12}
uL1 (PD1)
uPMU
pso
isoen
CPF
CPF
(PDD)
uL1 (PD1)
uPMU
pso
isoen
X
RTL
PSWとIsolatorを仮想し、
X伝播とClamp動作をSim
PSWとIsolatorを仮想し、
X伝播とClamp動作をSim
OFF
IUS
-shutoff_condition
uPMU/pso
Isolator / Level Shifter 挿入
Isolator / Level Shifter 挿入
SoCEにNetlistとCPFを読み込むことによって、CPF定義に従って
Isolator / Level Shifterを自動挿入
(PDD)
uL1 (PD1)
uPMU
pso
isoen
(PDD)
uL1 (PD1)
uPMU
pso
isoen
CPF
Netlist
9
Isolator / Level Shifter挿入Power Domain I/F
9
Isolation Clamp極性
9
Isolation制御信号
9
Isolator / Level Shifter Cell名
9
挿入
Location
SoCE
uL2 (PD2)
uL2 (PD2)
ISO
論理設計と物理設計間
Interface
論理設計と物理設計間
Interface
必ずしも全ての設計インテントが
CPFで受け渡される訳ではない
TOP
(ON)
PD1
(OFF)
この領域にバッファを仮定するか、ただの配線と
みなすかはシミュレータへのオプション指定次第
TOP
(ON)
TOP
(ON)
PD1
(OFF)
配線とみなす場合
バッファを仮定する場合
L
H
H
CPFだけでは物理インプリにイン
テントが伝わらない危険性あり
CPFだけでは物理インプリにイン
テントが伝わらない危険性あり
L
PD1
(OFF)
H
Isolation 論理等価検証 (1)
Isolation 論理等価検証 (1)
RTL Simで仮想したIsolatorと実際にSoCEで挿入したIsolatorが論
理等価か
(PDD)
uL1 (PD1)
uPMU
pso
isoen
SoCE
(PDD)
uL1 (PD1)
uPMU
pso
isoen
(PDD)
uL1 (PD1)
uPMU
pso
isoen
X
OFF
論理等価??
IUS
CPF
RTL
Netlist
Isolation 論理等価検証 (2)
Isolation 論理等価検証 (2)
RTL Simの仮想Isolation情報との比較検証
RTL
CPF
Formal verification (Conformal-LEC)
Netlist
Netlist
Netlist
Netlist Edit (RC)
Isolator Insertion Log
Utility Script
p1/out1 high low d1/out1[2]
p1/out1 high low d1/out1[1]
p1/out1 high high d2/in1[3]
p1/out1 low high d3/in1[0]
ISO-pin ISO active value
ISO output value
Insert pin
Synthesis (RC)
DFT
CPF Load (SoCE)
Isolation 論理等価検証 (3)
Isolation 論理等価検証 (3)
将来的には
Conformal-LPで検証可能予定
RTL
CPF
Verification (Conformal-LP)
Netlist
Netlist
LP Inserted Location Info
Synthesis (RC)
DFT
CPF Load (SoCE)
Simulation (IUS)
Rush Current Control
Rush Current Control
On Chip Power Gatingの課題
回路への充分な電流の供給、充分小さな電圧降下
Power SwitchをONした際の突入電流の抑制
制
御
電源
IC
動作中
の回路
電源復帰
途中の
回路
突入電流
LSI
電源ノイズ
制
御
電源
IC
動作中
の回路
LSI
電圧降下
適切な
Power Switchの制御とサイズの調整が重要
適切な
Power Switchの制御とサイズの調整が重要
動作中の
回路
Power Switch 挿入フロー
Power Switch 挿入フロー
適切な
Power Switch量の見積もり
最適な
Power Switch量の決定
Power Switch挿入・配置
(SoCE)
Noise
table
Power Domainのロジック量
消費電力
etc
電源復帰時間
電源ノイズ許容値
電圧降下許容値
COLUMN型とRING型Power Switchの比較
COLUMN型とRING型Power Switchの比較
Corner Cell
PSW
Filler Cell
マクロ
適用容易
適用不可
PG化するには再レイアウト
ハード
IP
Power Domain内の配線はフリー
PSWが横方向配線をブロック
配線効率
単位面積あたりの
Trサイズ大
単位面積あたりの
Trサイズ小
面積効率
RING型Power Switch
COL型Power Switch
PSW
配線をブロック
ソース電源
マクロ
Power Switch挿入・配置
Power Switch挿入・配置
CPFの定義情報に基づいたPower Switch自動挿入・配置が可能
update_power_domain -name PD1 -primary_power_net VDD1
create_power_switch_rule -name
PSW_PD1
-domain
PD1
-external_power_net
VDD
update_power_switch_rule -name
PSW_PD1
-cells
PSWCELL
¥
-prefix
PSW_PD1_
-enable_condition_1 {
!uPMU/pso
}
Power Switch
Filler Cell
Corner Cell
uPMU
pso
PD1(VDD1)
VDD
Power Domain
PD2
PD1
PD3
PD4
Default
Power Domainを考慮したP&R (1)
Power Domainを考慮したP&R (1)
Power Domainの
ROW分割
Isolator,Level Shifterを
Power Domain境界に
引き付け配置
.lib
.lib
.lib
.lib
.lib
.lib
.lib
.lib
.lib
.lib
.lib
.lib
.lib
.lib
.lib
.lib
Power Domain毎に
Library割り当て
.lib
.lib
.lib
.lib
CPF
SoCE
Power Domainを考慮したP&R (2)
Power Domainを考慮したP&R (2)
配置
(Std Cell配置、Scan-Reorder)
配置
(Std Cell配置、Scan-Reorder)
CPF
SoCE
Netlist
.lib
.lib
.lib
lef
lef
LEF
Optimization (Power DomainおよびISO/LS Ruleに従って処理)
Optimization (Power DomainおよびISO/LS Ruleに従って処理)
CTS (Power DomainのPort保持)
CTS (Power DomainのPort保持)
配線
(Power Domainで閉じた配線、Antenna Diode挿入、tie-high/low接続)
配線
(Power Domainで閉じた配線、Antenna Diode挿入、tie-high/low接続)
物理セル配置
(Decap, Well Tap, Filler)
物理セル配置
(Decap, Well Tap, Filler)
Multi-Mode/Multi-Corner最適化 (CPFに設定可能)
Low Power Check (1)
Low Power Check (1)
Power Domain A
Power Domain B
Isolator/Level Shifterが正しく挿入されているか?
Ch
eck
PDA
PDB
Level Shifter
EN付きLevel Shifter
D
Y
ISO
PSO
VDDB=1.3V
VDD=1.2V
Power Switch
電源接続が正しいか?
Power SwitchをOFFしたとき
Isolationできるか?
Ch
eck
Ch
eck
IsolatorのClamp
極性が正しいか?
Ch
eck
Low Power Check (2)
Low Power Check (2)
Conformal-LPによって検証します
Isolator/Level Shifterが正しく挿入されているか
IsolatorのClamp極性が正しいか
電源接続が正しいか
Power SwitchがOFFした時に正しくIsolationされるか
PSWの挿入・配置
Layout完了
CPF読み込みによりIsolator挿入
SoCE
DFT
CPF Load
Logical
Netlist
Power Switch Insertion
Physical
Netlist
Optimization/CTS/Routing
Physical
Netlist
Confomal-LP (Logical Mode)
Confomal-LP (Physical Mode)
Confomal-LP (Physical Mode)
Logic Synthesis
CPF
RTL設計時
Agenda
Agenda
富士通の
CPFへの取り組みと実績
富士通
CPF Low Power設計フロー
CPFとUPFの比較
*
CPF1.0 及びUPF1.0が対象
CPFとUPFの比較 (仕様)
CPFとUPFの比較 (仕様)
仕様
仕様
シンタックス、セマンティクス共に
Si2で管理されている
Si2のLPCメンバのみで決定される為、比較的早い
仕様が整理されており、理解しやすい
Multi Vendor Flowが可能
シンタックス、セマンティクス共に
Si2で管理されている
Si2のLPCメンバのみで決定される為、比較的早い
仕様が整理されており、理解しやすい
Multi Vendor Flowが可能
CPF
シンタックスは
Accelleraと IEEEで 管理されているが、セマンティクスが管理さ
れていない
ベンダ間でサポート範囲およびコマンド解釈が異なる
仕様の更新は
IEEEの多くのメンバで決定されるため遅い
仕様が整理されておらず、理解しにくい
Multi Vendor Flowが難しい
シンタックスは
Accelleraと IEEEで 管理されているが、セマンティクスが管理さ
れていない
ベンダ間でサポート範囲およびコマンド解釈が異なる
仕様の更新は
IEEEの多くのメンバで決定されるため遅い
仕様が整理されておらず、理解しにくい
Multi Vendor Flowが難しい
UPF
CPFとUPFの比較 (記述性)
CPFとUPFの比較 (記述性)
記述性
記述性
設計
Phaseを考慮し、論理パートと物理パートを明確に分離可能
RTL Simは論理パートのみ記述すれば実行可能
ASIC展開容易
ルールの定義は
”create_*”, それに対する物理情報の付加は”update_*”,
変数の設定は
”set_*”のように、非常に分かりやすく、記述しやすい
設計
Phaseを考慮し、論理パートと物理パートを明確に分離可能
RTL Simは論理パートのみ記述すれば実行可能
ASIC展開容易
ルールの定義は
”create_*”, それに対する物理情報の付加は”update_*”,
変数の設定は
”set_*”のように、非常に分かりやすく、記述しやすい
CPF
RTL設計段階で、電源ネット名、電源ポート名、Power Switch接続情報といっ
た物理情報まで記述する必要あり
ASIC展開が難しい
コマンド名だけではその用法や位置づけが理解しにくく、記述しにくい
RTL設計段階で、電源ネット名、電源ポート名、Power Switch接続情報といっ
た物理情報まで記述する必要あり
ASIC展開が難しい
コマンド名だけではその用法や位置づけが理解しにくく、記述しにくい
UPF
RTL設計段階での記述比較
RTL設計段階での記述比較
create_power_domain -name PD0 -default
create_power_domain -name PD1 -instances uL1 ¥ -shutoff_condition uPMU/pso create_isolation_rule -name ISO_PD1 -from PD1 ¥
-isolation_condition uPMU/isoen create_nominal_condition -name ON -voltage 1.2 create_power_mode -name PM1 -domain_conditions {
PD0@ON PD1@ON } -default
create_power_mode -name PM2 -domain_conditions { PD0@ON }
create_power_domain -name PD0 -default
create_power_domain -name PD1 -instances uL1 ¥ -shutoff_condition uPMU/pso create_isolation_rule -name ISO_PD1 -from PD1 ¥
-isolation_condition uPMU/isoen create_nominal_condition -name ON -voltage 1.2 create_power_mode -name PM1 -domain_conditions {
PD0@ON PD1@ON } -default
create_power_mode -name PM2 -domain_conditions { PD0@ON }
CPF
create_power_domain PD0
create_power_domain PD1 -elements uL1 create_supply_port VDD -direction in create_supply_net VDD -domain PD0 create_supply_net VDD -domain PD1 -reuse connect_supply_net VDD -ports VDD create_supply_port VSS -direction in create_supply_net VSS -domain PD0 create_supply_net VSS -domain PD1 -reuse connect_supply_net VSS -ports VSS
create_supply_port VDD1 -direction out create_supply_net VDD1 -domain PD0 create_supply_net VDD1 -domain PD1 -reuse connect_supply_net VDD1 -ports VDD1 set_domain_supply_net PD0 -primary_power_net VDD ¥ -primary_ground_net VSS set_domain_supply_net PD1 -primary_power_net VDD1 ¥ -primary_ground_net VSS create_power_switch PSW_PD1 ¥ -domain PD1 ¥ -input_supply_port {VDIN VDD} ¥ -output_supply_port {VDOUT VDD1} ¥ -control_port {IN uPMU/pso} ¥ -on_state {state VDIN {IN}} set_isolation ISO_PD1 ¥ -domain PD1 ¥ -isolation_power_net VDD ¥ -clamp_value 0 ¥ -applies_to outputs set_isolation_control ISO_PD1 ¥ -domain PD1 ¥ -isolation_signal uPMU/isoen ¥ -isolation_sense low ¥ -location parent
add_port_state VDD -state {ON 1.2}
add_port_state VDD1 -state {ON 1.2} -state {OFF off} create_pst PST -supplies {VDD VDD1}
add_pst_state PM1 -pst PST -state {ON ON} add_pst_state PM2 -pst PST -state {ON OFF} create_power_domain PD0
create_power_domain PD1 -elements uL1 create_supply_port VDD -direction in create_supply_net VDD -domain PD0 create_supply_net VDD -domain PD1 -reuse connect_supply_net VDD -ports VDD create_supply_port VSS -direction in create_supply_net VSS -domain PD0 create_supply_net VSS -domain PD1 -reuse connect_supply_net VSS -ports VSS
create_supply_port VDD1 -direction out create_supply_net VDD1 -domain PD0 create_supply_net VDD1 -domain PD1 -reuse connect_supply_net VDD1 -ports VDD1 set_domain_supply_net PD0 -primary_power_net VDD ¥ -primary_ground_net VSS set_domain_supply_net PD1 -primary_power_net VDD1 ¥ -primary_ground_net VSS create_power_switch PSW_PD1 ¥ -domain PD1 ¥ -input_supply_port {VDIN VDD} ¥ -output_supply_port {VDOUT VDD1} ¥ -control_port {IN uPMU/pso} ¥ -on_state {state VDIN {IN}} set_isolation ISO_PD1 ¥ -domain PD1 ¥ -isolation_power_net VDD ¥ -clamp_value 0 ¥ -applies_to outputs set_isolation_control ISO_PD1 ¥ -domain PD1 ¥ -isolation_signal uPMU/isoen ¥ -isolation_sense low ¥ -location parent
add_port_state VDD -state {ON 1.2}
add_port_state VDD1 -state {ON 1.2} -state {OFF off} create_pst PST -supplies {VDD VDD1}
add_pst_state PM1 -pst PST -state {ON ON} add_pst_state PM2 -pst PST -state {ON OFF}