The differences between CPF, UPF 1.0 and IEEE 1801 can be daunting. Understanding where they diverge will help.
By Luke Lang Last month, I discussed power domain for all three power formats: CPF, UPF 1.0, and IEEE 1801. I mentioned isolation but mainly used it to explain power domain. This month’s blog will address isolation in detail. First, isolation cells are required at off-to-on domain crossings. When a domain is shut off, all of its output nets become undriven. If these floating nets drive directly into active circuits, they could turn on both PMOS and NMOS transistors in the active circuit. This causes a huge short-circuit current in the on domain. The intent to insert isolation cells is called isolation rule in CPF and isolation strategy in UPF/1801. Other than differences in syntax, there are some fundamental differences in isolation intent amongst the three power formats. Let’s start with a simple example with 3 power domains: PDtop, PD1, and PD2. We want to isolate from PD1 to PD2.
The CPF isolation rule looks like: create_isolation_rule –name ISO1 –from PD1 –to PD2 … The isolation cell can be placed in any of the three power domains. In CPF, this can be controlled with: # place ISO in PD1 update_isolation_rules –name ISO1 –location from # place ISO in PD2 update_isolation_rules –name ISO1 –location to # place ISO in PDtop update_isolation_rules –name ISO1 –within_hierarchy / UPF 1.0 isolation strategy does not allow specifying both the source and destination domain together. Therefore, the domain that is specified in the isolation strategy depends on the location of the isolation cell. #place ISO in PD1 set_isolation ISO1 –domain PD1 –applies_to outputs … set_isolation_control ISO1 –domain PD1 –location self #place ISO in PD2 set_isolation ISO1 –domain PD2 –applies_to inputs … set_isolation_control ISO1 –domain PD2 –location self #place ISO in PDtop set_isolation ISO1 –domain PD1 –applies_to outputs … set_isolation_control ISO1 –domain PD1 –location parent Please keep in mind the discussion from last month. UPF 1.0 power domain is strictly hierarchy-based. Therefore, isolation is applied to input or output pins without regard to where the input is driven from or where the output drives to. This is a severe limitation for UPF 1.0 because it forces the designer to trace the design manually to determine the domain crossing for each port. (More about this later.) IEEE 1801 tries to overcome this deficiency with the –source or –sink options with respect to supply set. Here is what the 1801 isolation strategy might look like: (Please assume that supply sets SS_P1 and SS_P2 are associated with PD1 and PD2, respectively.) #place ISO in PD1 set_isolation ISO1 –domain PD1 –sink SS_P2 … set_isolation_control ISO1 –domain PD1 –location self #place ISO in PD2 set_isolation ISO1 –domain PD2 –source SS_P1 … set_isolation_control ISO1 –domain PD2 –location self #place ISO in PDtop set_isolation ISO1 –domain PDtop –source SS_P1 –sink SS_P2 … set_isolation_control ISO1 –domain PDtop –location self Notice that –source and –sink help to filter the domain crossing that are related to this isolation strategy. The usefulness of filtering domain crossing is not obvious in the above example. Here is a simple example that illustrates the power of filtering:
Let’s assume we want to isolate from PD1 to PD2 and PD3. We also want to place the isolation cells in PD1. UPF 1.0 is not very easy to write. set_isolation ISO1a –domain PD1 –applies_to outputs –elements {A} … set_isolation_control ISO1a –domain PD1 –location self set_isolation ISO1b –domain PD1 –applies_to outputs –elements {B} … set_isolation_control ISO1b –domain PD1 –location self You may think this doesn’t look so bad. But can you imagine PD1 driving out to 10 other power domains, and each of the 10 domain crossing have thousands of nets? I assure you that you don’t want to figure out and code those element (port) lists. Both CPF and 1801 have filtering capability, so you don’t have to list out the pins. The CPF isolation rules looks like: create_isolation_rule –name ISO1a –from PD1 –to PD2 … update_isolation_rules –name ISO1a –location from create_isolation_rule –name ISO1b –from PD1 –to PD3 … update_isolation_rules –name ISO1b –location from The 1801 isolation strategy looks like: set_isolation ISO1a –domain PD1 –sink SS_P2 … set_isolation_control ISO1a –domain PD1 –location self set_isolation ISO1b –domain PD1 –sink SS_P3 … set_isolation_control ISO1b –domain PD1 –location self Since this is just a blog and not a technical paper, I have selected trivial examples to illustrate the differences amongst the three power formats. I hope you can apply these concepts to your real design. –Luke Lang is senior product engineering manager at Cadence.
Leave a Reply