Power-Aware Static Checks: Static Checker Results And Debugging Techniques

Understand what PA-Static reports are telling you for efficient debugging.


In Part 1 of this three article series on power aware (PA) verification, we examined the foundations and verification features of PA static checks. In Part 2, we discussed the features of the static verification library and described best static verification practices.

Part 3 concludes this series with details of static PA verification tool procedures using a real example to analyze PA-Static results and reporting, as well as efficient debugging PA-Static anomalies.

PA-Static verification reporting of results are very straightforward and widely differ from PA-SIM in terms of format, contents, and representation. PA-Static reporting is mostly text based; however, visual representations of PA relevant logic and relevant UPF objects on schematic viewers often adds advantages for pinpointing bugs and fixing them quickly.

PA-Static verification is mainly UPF-strategy oriented, such as PSW, ISO, ELS, LS, RFF, and RTP etc. These are defined within the UPF explicitly through different UPF strategy commands (for example, set_isolation, and set_level_shifter), and their association with different power domains are validated through their definition and the add_power_state or PST states, as discussed in Part 1 and Part 2.

As the PA-Static tool conducts internal analysis on these UPF definitions and objects and formalizes the source-sink communication models, you must represent this information in an organized and simple searchable format.

While reviewing the PA-Static reports and results to pursue structural anomalies efficiently, you must fully comprehend the contents and context of these reports, the source of the contents, the organizational format, special terminologies, relevancy, and correlation between the represented information, and so on. PA-Static checks are originated and relevant to the following resources.

List 1 – UPF and Design Object Resources Relevant to PA-Static Checks

  • Power domains, domain boundary, domain interface, highconn, and lowconn side of ports
  • Domain crossings, source-sink communication models
  • The relevant power states for supply sets, supply ports, and supply nets
  • Power states from add_power_state or PSTs
  • Design abstraction levels (RTL, GL-netlist, PG-netlist, etc.)
  • Tool built-in multi-voltage (MV) and PA rules
  • Cell and pin-level attributes from Liberty libraries

These resources are for presenting quality PA-Static results, and they are generic as well as comprehensive for any PA-Static verification environment. The organization chart of reports and results further depends on the analytical approaches and processing capabilities of the tool, which can be best summarized as follows.

List 2 – UPF and Design Objects Resources Relevant to PA-Static Result Representation

  • Syntax and Semantics of UPF Definition – Reveals syntactic and semantic correctness of power intent in UPF files by referencing the appropriate revision and release of UPF LRM
  • UPF Strategy versus MV Cell – Reveals correct, incorrect, missing, redundant, and unanalyzed cells or strategies
  • UPF Strategy and MV Cell Mix – Reveals location, type, control signal polarity, library consistency, and PG-pin connectivity of the MV cells
  • Power Supplies – Reveals MV cell relevant supply set, supply port, supply net
  • Design Attributes – Reveals design control signals (like scan control), clock, reset, combinational logic path, etc. that are safe for deployment of UPF strategy or MV cells

Considering these two exhaustive lists of resources and reporting organization approaches, it is necessary to represent PA-Static results according to design abstraction levels and on the basis of UPF, Liberty, and design analysis. It is also evident that static verification reporting is overly mediated through UPF strategies and corresponding MV cells. Hence, PA-Static verification tools are often considered as ISO, ELS, LS, PSW, RFF, and RPT checkers. Though this consideration is not wrong, the scope of PA-Static verification is generally extended beyond checking only UPF strategies. The checker also validates UPF semantics and Liberty library consistency.

Thus, reflecting all the facts and features about PA-Static verification discussed so far, a standard PA-Static tool must provide, at a minimum, the following set of reports to achieve efficient debugging and to fully leverage structurally clean designs.

List 3 – Minimum Requirements of PA-Static Reports for Efficient Debugging

  • Power Intent and UPF Consistency Reports
  • Power domains (PD)
  • Hierarchical path of the created scope
  • Primary power ground of PDs
  • Supply set handles associated with PDs
  • Reference ground of supply set
  • UPF Strategy Reports (with ISO as an example)
  • ISO strategy name and relevant UPF file name
  • ISO supplies
  • ISO control, sense, clamp value
  • Isolated signals
  • PA Design Elements Reports
  • PA Static Reports (contents may vary depending on design at RTL, GL-netlist, or PG-netlist)
  • MV and Macro Cell Reports
  • MV and Macro Cell Connection Reports
  • Power States and PST Analysis Reports

The examples on the following pages show the practical UPF ISO strategy and sample results or reports for the ISO strategy (CAM_iso) checks.

Example 1 – Sample of PA-Static Reporting for ISO Checks (snippet of UPF file for ISO strategies)

set_isolation CAM_iso  -domain PD_camera  \
   -isolation_power_net VDD_cm  \
   -isolation_ground_net VGD  \
   -elements {mid_1/mt_1/camera_instance} \
   -clamp_value 0 -applies_to outputs
set_isolation_control CAM_iso  -domain PD_camera  \
   -isolation_signal /tb/is_camera_sleep_or_off_tb \
   -isolation_sense high  \
   -location parent
map_isolation_cell CAM_iso  -domain PD_camera  -lib_cells {ISO_LO}

Explanation of UPF Strategies: The snippet UPF code contains the definition of the ISO strategy name CAM_iso. The ISO cell is an AND type (clamp_value 0) and is located on the parent domain of PD_camera.

Example 2 – Snippet of PA Architecture Report File for CAM_iso Checks

Power Domain: PD_camera, File: ./mobile_top.upf(7).
   Creation Scope: /tb
      1. Instance : ~/camera_instance
   Isolation Strategy: CAM_iso, File: ./mobile_top.upf(64).
      Isolation Supplies:
         power  : /tb/VDD_cm
         ground : /tb/VGD
   Isolation Control (/tb/is_camera_sleep_or_off_tb), Isolation Sense (HIGH), Clamp Value (0), Location (parent)
   Signals with default isolation cells:
   1. Signal : ~/camera_instance/out_data, isolation cell : ~/out_data_UPF_ISO
   Signals with -instance isolation cells:
   1. Signal : ~/camera_instance/out_data, isolation cell : ~/iso_cm_o
   2. Signal : ~/camera_instance/camera_state[0], isolation cell : ~/iso_cm_s0
   3. Signal : ~/camera_instance/camera_state[1], isolation cell : ~/iso_cm_s1

Explanation of PA Architecture Report: The snippet shows all PA architecture information. These include PD, relevant UPF file, hierarchical instance scope of PD, ISO supply, ISO control, type, strategy deployed locations, and instance lists of already inserted ISO cells that may be essential to debug ISO issues later reported in a static report file.

Example 3 – Snippet of PA Design Element Report File

PD_camera.CAM_iso-instance: {Path7} = scope ~/iso_cm_s1
PD_camera.CAM_iso-instance: {Path8} = scope ~/iso_cm_s0
PD_camera.CAM_iso-instance: {Path9} = scope ~/iso_cm_o
PD_camera.CAM_iso-instance: {Path7}/Z
PD_camera.CAM_iso-instance: {Path8}/Z
PD_camera.CAM_iso-instance: {Path9}/Z

Explanation of PA Design Element Report: The design element paths that are relevant to the scope of instantiated ISO cells are listed in this report.

Example 4 – Snippet of MV and Macro Cell Connectivity Report File

Verification Model File : isolation.v(4)
   Liberty Model File : isolation.lib(7)
   is_isolation_cell : true, File : isolation.lib(7)
   Ports :
     ISO_EN, File : isolation.v(4)
          direction : input 
          related_power_pin : VDD, File : isolation.lib(27)
          related_ground_pin : VSS, File : isolation.lib(26)
          isolation_cell_enable_pin : true, File : isolation.lib(25)
     I, File : isolation.v(4)
          direction : input 
          related_power_pin : VDD, File : isolation.lib(21)
          related_ground_pin : VSS, File : isolation.lib(20)
          isolation_cell_data_pin : true, File : isolation.lib(19)
     Z, File : isolation.v(4)
          direction : output 
          functionality : ((~ISO_EN) & I), File : isolation.lib(32)
          power_down_function : ((~VDD) | VSS), File : isolation.lib(31)
          related_power_pin : VDD, File : isolation.lib(34)
          related_ground_pin : VSS, File : isolation.lib(33)
     VDD, File : isolation.lib(9)
          direction : input, File : isolation.lib(9)
          pg_type : primary_power, File : isolation.lib(10)
     VSS, File : isolation.lib(13)
          direction : input, File : isolation.lib(13)
          pg_type : primary_ground, File : isolation.lib(14)

Explanation of MV and Macro Cell Connectivity Report: The report in this file is extracted from the Liberty library of the corresponding MV (ISO in this example) and Macro cells.

Example 5  – Snippet of PA Static Report File

||                            Domain Crossing Checks Summary report                                             
 Check-ID                        Count 		 Severity  		 Description                                                      
 ISO_VALID                        7   		 Note      		Valid isolation cells                                           
||		                      GLS Checks Summary report                                                   +===============================================================================================+
 Check-ID        		  Count 	Severity  		 Description                                                      
ISO_VALID_CELL_WITH_STRATEGY    7   		Note       	Valid Isolation cell and strategy                               
ISO_VALID_STRATEGY_NO_CELL      1   		Note      	Isolation strategy with NO cell                                 
ISO_CTRL_REACH_DATA	         3   		Warning   Isolation cell with control reaching data                       
||                          Domain Crossing wise static Checks Detailed report                                      +===============================================================================================+
2. Source power domain: PD_camera to Sink power domain: PD_mobile_top.
	Total 4(1*) Valid isolation cells
	2.1. Source port: ~/camera_instance/camera_state[0] [LowConn] to Sink port: ~/iso_cm_s0/Z [LowConn], width:1
	Total 1 Valid isolation cells
	2.1.1. Inferred type: ISO_VALID, count: 1
	Candidate Port: ~/camera_instance/camera_state[0], Isolation Cell: ~/iso_cm_s0(ISO_LO), Strategy: CAM_iso,  Domain: PD_camera 
	Possible reason: 'Isolation is required and is present from (PD_camera) => (PD_mobile_top)'
	Analysis link: [PD1_to_PD2]

||                             	GLS Checks Detailed report                                                  ================================================================================================+
||                         ---- ISOLATION CELLS ----                         ||
|| DESIGN CELL : ~/iso_mem_s1(ISO_LO) ||
	CELL TYPE     : Isolation Cell
		Verification Model File: ~/libraries/isolation/isolation.v(4),
		Liberty Model File     : ~/libraries/isolation/isolation.lib(7)

		STRATEGY        : MEM_iso, File: ./mobile_top.upf(68)
		POWER DOMAIN    : /tb/PD_memory, File: ./mobile_top.upf(8)
		SOURCE PORT     : ~/internal_memory/mem_ls_lh3/I (PD: /tb/PD_memory)
		SINK PORT       : ~/iso_mem_s1/Z (PD: /tb/PD_mobile_top)
		ANALYSIS REASON : Isolation is required and is present from (PD_memory) => (PD_mobile_top). However ISO enable signal for UPF strategy reaches the data pin of the cell


		STRATEGY        : CAM_iso, File: ./mobile_top.upf(64)
		POWER DOMAIN    : /tb/PD_camera, File: ./mobile_top.upf(7)
		SOURCE PORT     : ~/camera_instance/out_data (PD: /tb/PD_camera)
		SINK PORT       : ~/camera_instance/out_data (PD: /tb/PD_mobile_top)
		ANALYSIS REASON : Isolation is required and is present from (PD_camera) => (PD_mobile_top). However corresponding cell is not found, hence inferred

Explanation of PA Static Report: This is the key report that summarizes the results of static checks on MV cells, specifically. However, when there are issues and anomalies, the corresponding issues are clearly explained in detail in several subsections.

For example, the results report ISO_CTRL_REACH_DATA with severity “Warning,” which requires the report to be addressed and issues possibly corrected. The ISOLATION Cells subsection provides every possible detail of information relevant to the issues for the cell with the following sub header:


It is clear that the issue occurred for a cell, which is an Isolation cell, the Library cell name is ISO_LO, the strategy name CAM_iso, and the relevant power domain is PD_camera. It also provides the source and sink port names, which are ~/camera_instance/out_data and ~/iso_cm_o/Z respectively.

As well it identifies the source-sink communication models, which are (PD_camera) => (PD_mobile_top). Hence, in order to resolve the issue, you must understand the inherent meaning of the “Mnemonic Identifier” ISO_CTRL_REACH_DATA. Literally and technically, this mnemonic indicates that a valid isolation strategy and cell are present from (SRC PD) => (SINK PD). However, a ISO enable signal for the UPF strategy reaches the data pin of the cell.

The succeeding report files actually facilitate pursuing the static issues and are equally important in the debugging phases.

Example 6 – Snippet of UPF, HDL and Liberty Connectivity Report File

-- This is the report of connections between UPF, HDL and
-- liberty files.
-- Format :
-- Hierarchical path of net/port [UNIQUE ID]   <=/<=>  Hierarchical path of net/port [UNIQUE ID] 
-- where :
-- UNIQUE ID : Unique id for UPF/HDL/Liberty nets/ports
--               UPFSN# ==> UPF supply net
--               UPFSP# ==> UPF supply port
--               UPFCP# ==> UPF control port
--               UPFAP# ==> UPF acknowledge port
--               UPFLP# ==> UPF logic port
--               UPFLN# ==> UPF logic net
--               HDL# ==> HDL port/net
--               LIB# ==> LIBERTY port/net
-- <= : LHS net/port is driven by RHS net/port
-- <=> : Inout connection
-- LHS VCT : VCT used for LHS side of connection
-- RHS VCT : VCT used for RHS side of connection
/tb/PD_camera.CAM_iso.PWR [UPFSP2] <= /tb/VDD_cm [UPFSN2]. ./mobile_top.upf(64)
/tb/PD_camera.CAM_iso.GND [UPFSP5] <= /tb/VGD [UPFSN3]. ./mobile_top.upf(64)
/tb/PD_camera.CAM_iso.isolation_signal [UPFCP1] <= /tb/is_camera_sleep_or_off_tb [HDL1]. ./mobile_top.upf(65)

Explanation of UPF, HDL, and Liberty Connectivity Report File: This file facilitates identifying that the isolation_signal which is a control port [UPFCP1] defined in the UPF file named “mobile_top.upf”, line number 65, is connected to HDL [HDL1] port “is_camera_sleep_or_off_tb” of design instance “/tb”, specifically (/tb/ is_camera_sleep_or_off_tb).

Checking the “mobile_top.upf” line 65 reveals the following information:

Line 65 of mobile_top.upf: set_isolation_control CAM_iso -domain PD_camera  -isolation_signal /tb/is_camera_sleep_or_off_tb -isolation_sense high  -location parent

However, the actual HDL design, where the ISO cell “ISO_LO” is instantiated with instance name “iso_cm_o”, is as follows:

ISO_LO iso_cm_o ( .I(camera_out_data),

.ISO_EN (is_camera_sleep_or_off), .Z(camera_out_data_isolated) );

As well, this is prominent from the information provided on the PA Static Report File, where the sink port is as follows:

SINK PORT: ~/iso_cm_o/Z (PD: /tb/PD_mobile_top)

Since the ISO strategy is applied at the output of PD_camera (~/camera_instance), and the cell location is specified to be parents from the UPF file, and “ISO_EN” is the enable port for the ISO cell (as noted in Example 4 – Snippet of MV and Macro Cell Connectivity Report File) it is required to modify the HDL instance .ISO_EN (is_camera_sleep_or_off) to correct the ISO_CTRL_REACH_DATA warning.

Once corrected, it is required to rerun the design and confirm that the ISO_EN or isolation control signal is connected to the proper HDL port or net.

Example 7 – Snippet of PST Analysis Report File

3. PD_camera -> PD_mobile_top [PD1_to_PD2]:
    Isolation: Required
    Level shifter: Not Required
      Maximum voltage difference: 0.00 V
      Analysis between supplies:
        Source Supply: VDD_cm, drives PD_camera.primary.power
        Source Supply: VSS, drives PD_camera.primary.ground
        Sink   Supply: VDD, drives PD_mobile_top.primary.power
        Sink   Supply: VSS, drives PD_mobile_top.primary.ground
          Reason: Same source and sink GROUND supplies.
        PST used for analysis: /tb/top_pst
      | State(s)    | VDD_cm   | VDD    |
      |             | {Source} | {Sink} |
      | {ON}        | ON_1_0   | ON_1_0 |
      | {SLEEP,OFF} | OFF      | ON_1_0 |Iso

Explanation of PST Analysis Report File: PST analysis reports, from either PST states or from add_power_states, provide the logical proposition of UPF strategy requirements as shown above. Here VDD_cm and VDD are power supplies for source and sink, respectively, and there is a state where VDD_cm is required to go OFF while VDD is still ON. Hence, ISO requirements are marked adjacent to the tabular format. Though this may appear insignificant for a small number of power domains and combinations of their states, for a large number this analysis report is an accommodating resource.

In addition, although the verification provides different severity levels (like Error, Warning, Info, or Note) there are different schemes to handle the severity levels. Primarily, Error and Warning are subject to be properly addressed and fixed, while there are certain classes of Warning which may be waived, suppressed, or downgraded to Info or Notes, depending on the sources of the issues. As well they are usually resolved on a case by case basis. These classes of Warning may broadly originate from DFT, scan insertion, ECO, and the like, since they are often performed after synthesis or after major MV cell physical insertion processes.

The primary objective of any verification environment is to achieve a bug-free design for implementation. Similarly, PA-Static verification requires ensuring that the design is physically correct in terms of power architecture and microarchitecture. It is evident that efficient debugging and fixing of issues, bugs, and anomalies are dependent on clear perceptions of the design specification, power specification, tool techniques, and methodologies, as well as comprehensive understanding of the reporting mechanisms. Although UPF imposes an extra layer of physical complexity on PA design, static verification does not require a testbench; as well, input requirements are simple and straightforward. The PA-Static verification is mandatory along with PA-SIM throughout the entire DVIF.

Leave a Reply