ARM - Divyeshkumar Vora PDF
ARM - Divyeshkumar Vora PDF
Library Views
Liberty – IO, Mem
RTL,
PA Sim Functional Verilog
Design UPF
– IO, Mem
endmodule
and I0 (out_temp, A, EN);
assign Y = ((VDDO === 1'b1) && (BIASNW ===
1'b1) && (VPW === 1'b0) && (VSS === 1'b0) &&
(!EN|VDD === 1'b1))? out_temp : 1'bx;
endmodule
0 On On 1 1 1 1 On On A A
0 Off On 1 0 - 0 Off On z 0
0 On Off 0 0 - x On Off x x
LIBERTY BASED ASSERTIONS
Problem Statement
• Today’s designs exhibit complex retention capabilities
– Even basic save and restore operation could depend on complex
sequences of various control signals
– Any incorrect state of the register controls like clock, set, reset
or violation of power control sequence could cause incorrect
retention values
• Synthesis tools pick retention cells only based on the cell
classification and functionality
– Cell-level protocol requirements are not enforced
– If escapes happen, it can lead to silicon failures
pin(RETN) {
pin(CK) { direction : input;
clock : true ; related_power/ground_pin : VDDG/VSSG;
direction: input; always_on : true;
related_power/ground_pin : VDD/VSS ; retention_pin (save_restore, "1");
save_action : H;
pin(D) { restore_action : L;
direction: input; restore_condition : !CK;
related_power/ground_pin : VDD/VSS ; restore_edge_type : trailing;
add_power_state PVDD \
-state P1 { -logic_expr {(AVDD1p8swSupply == avdd_on) && (VDDswSupply == vdd_on)} } \
-state P2 { -logic_expr {(AVDD1p8swSupply == avdd_on) && (VDDswSupply == vdd_off)} } \
-state P3 { -logic_expr {(AVDD1p8swSupply == avdd_off) && (VDDswSupply == vdd_on)} } \
-state P4 { -logic_expr {(AVDD1p8swSupply == avdd_off) && (VDDswSupply == vdd_off)} }
PANALOG
PBRKANA
PBRKANA
PVSENSE
PBIDIR
PVDD
RTO
SNS
DVDD
Validation LP
Liberty(UPF) Verilog
UPF vectors
Design UPF
Verilog Testbench
containing all
cells
containing all cells
Simulation
Library Validation
Validation UPF
create_power_domain Paon -supply {AONSupply}
create_power_domain Psw -supply {SWSupply} \
-elements { u1}
create_power_switch uVDDsw -domain Psw \
VDD
-input_supply_port {in AONSupply.power} \
-output_supply_port {out SWSupply.power} \
-control_port {sw_ctr VDD} \
-on_state {on_state in {sw_ctr}} \
RETN -off_state {off_state {!sw_ctr}}
create_power_switch uVSSsw -domain Psw \
(switchable) -input_supply_port {in AONSupply.ground} \
VDDsw = 1.0 -output_supply_port {out SWSupply.ground} \
VSSsw = 0.0 -control_port {sw_ctr VSS} \
-on_state {on_state in {!sw_ctr}} \
VSS -off_state {off_state {sw_ctr}}
set_retention uretain -domain Psw \
(always on) -retention_supply_set AONSupply
VDDon = 1.0 -save_signal {RETN high} \
VSSon = 0.0 -restore_signal {RETN low}
Testbench and LP Vectors
module TEST_DRFFQ_X1_0; LP Vectors
wire VDDG, VSSG, VDD, VSS;
wire RETN, D, CK, Q_exp; V V V V D C R Q
D S D S K E
DRFFQ_X1 u1 (.VDD(VDD), .VSS(VSS), D S D S T
.RETN(RETN), .D(D), .CK(CK), .Q(Q)); G G N
always @(VDDG) 1 0 1 0 0 0 1 0
if(VDDG) pg_VDD = supply_on("u1/VDDon",1.0);
else pg_VDD = supply_off("u1/VDDon");
1 0 1 0 0 1 1 0
1 0 1 0 1 0 1 1
assign {VDDG, VSSG, VDD, VSS, RETN, D, CK, Q_exp}
= presentVector; 1 0 1 0 1 1 1 1
Save
1 0 1 0 1 0 0 1
initial begin Power off
$readmemb(vector_file,tstvector,0,depth-1); 1 0 0 0 x x 0 x
for (n=0; n<depth; n=n+1) Power on
presentVector = tstvector[n];
1 0 1 0 x 0 0 1
Restore
if (Q !== Q_exp) $display("Mismatch”); 1 0 1 0 x 0 1 1
end
endmodule
Summary
• PA simulation is a very powerful way to check the design
power requirement early in the implementation cycle
• PA simulation is still in early phase and with increasing
complexity, more check points need to be put in place to
catch issues
• Identified enhancements fix some of the quality holes in
existing PA simulation flow
• Library validation flow enables ARM to carry out
comprehensive verification of cell power aware
behaviour, thereby ensuring seamless PA simulation flow
for our partners