Low Power Design | Isolation Cell

Low Power Design | Isolation Cell

In multi-voltage design, isolation cells are often used; this article briefly introduces what an iso cell is, how to use an iso cell, when to add an iso cell, and the insertion location of the iso cell.

1. What is an iso cell?

Isolation cell (隔离单元) is typically used in power shutdown technology (PSO) and multi-supply multi-voltage technology (MSMV). It serves to clamp and isolate the voltage between different voltage domains.

An isolation cell acts as an interface between the shutdown module and the always-on module, isolating two different power domains.

The schematic diagram of the isolation cell is as follows:

Low Power Design | Isolation Cell

The iso cell has a control pin EN. When EN is inactive, the signal from pin A is directly sent to pin Y, making the iso cell equivalent to a buffer; when EN is active, the buffer disconnects, and pin Y maintains a fixed high or low level.

To ensure that the isolation cell can still function properly during power down, it generally has a primary power and a secondary power, the latter ensuring that the device continues to operate when the former is powered down.

As shown in the diagram above: the two power supplies of the iso cell are primary power VDD and backup power VDDB. When the left domain is turned off, VDD is off, and at this time, VDDB provides power to maintain a fixed level at pin Y.

2. How to use an iso cell?

Typically, isolation cells are used in conjunction with level shifters. Both AND and OR gates can form an isolation cell;

1. AND type: outputs iso to 0;

2. OR type: outputs iso to 1;

Low Power Design | Isolation Cell

3. When is an iso cell needed?

When a signal is transmitted from one module to another, if the power of the shutdown module is turned off, the output signal may exhibit unpredictable values. If this value is passed to the always-on module, it may cause functional issues. Therefore, it is necessary to isolate the output signal of the powered-down module from other modules by adding isolation cells (ISO) to all boundary signals.

The role of the isolation cell is to fix a signal level to high or low after the power is turned off, ensuring that the output signal is a definite value (1 or 0). As shown in the diagram below:

Low Power Design | Isolation Cell

When a signal crosses from one off domain to another domain (on or off), if domain A is turned off while domain B is still running, B’s input may float, potentially causing errors due to the undefined state of the input. Therefore, when the signal moves from A to B, an iso cell is needed to ensure that the output signal from A remains at a stable level when A is turned off.

4. Insertion location of iso cell?

Regarding the insertion location of the isolation cell, we need to decide whether to place it within the power-gated module (source module) or the always-on module (destination module).

  • Inserting it at the output end of the source module can save the number of isolation cells needed, considering the case where the output of one module connects to the inputs of multiple module pins, and it is also easier to check.

  • Inserting it at the input end of the destination module has the advantage that the isolation cell requires always-on power. If placed at the output end of the source module, it will also need to bring over the always-on power rail. (Considering the routing of the power-on rail and the power consumption of the isolation cell itself, it is generally better to place it at the input end, as it does not require always-on power.)

No matter where it is placed, the power connections need to be noted: the location of the isolation cell needs to have both gated power and always-on power present, and the physical and logical connections must be correct. Therefore, it is common to designate a fixed area for placing the isolation cell, where two different power stripes and power rails can be connected, or to allow the tool to automatically route the secondary power connection, which mainly occurs in non-advanced processes.

Summary:

Where can the isolation cell be placed, in which domain, or independently? This can be considered from several angles:

1) Isolation cell power issue.

The significance of the isolation cell’s operation is that the power-gated domain being turned off does not affect the always-on domain, so it should not use the power of the power-gated domain to operate.

Thus, it is better for the isolation cell to be placed in the always-on domain or independently.

2) Isolation cell quantity issue. For a power-gated domain:always-on domain ratio of 1:n, to achieve one isolation cell controlling all outputs, there are two choices: power-gated domain and independent, while always-on domain cannot achieve this.

3) Isolation cell area issue. If the isolation cell is independent, the area occupied by a single isolation cell can be slightly larger. Therefore, it can be seen that the position of the isolation cell is related to the specific scenario and is not unique.

If the power-gated domain:always-on domain ratio is 1:1, then placing it in the always-on domain should be the optimal solution, as it can directly use the power, with a quantity of 1, and the smallest area.

Note:

1) Power-gated domain: a domain where the power can be turned off, i.e., in low power mode, it is in the off state.

2) Always-on domain: a domain where the power is always on, i.e., the primary processing domain of the device, and the power cannot be turned off.

Below is the lib iso cell:

cell(Isolation_Cell) {
  is_isolation_cell : true;
  dont_touch : true;
  dont_use : true;
  pg_pin(VDD) {
    voltage_name : VDD;
    pg_type : primary_power;
  }
  pg_pin(VSS) {
    voltage_name : VSS;
    pg_type : primary_ground;
  }
  ...
  pin(A) {
    direction : input;
    related_power_pin : VDD;
    related_ground_pin : VSS;
    isolation_cell_data_pin : true;
  }
  pin(EN) {
    direction : input;
    related_power_pin : VDD;
    related_ground_pin : VSS;
    isolation_cell_enable_pin : true;
  }
  pin(Y) {
    direction : output;
    related_power_pin : VDD;
    related_ground_pin : VSS;
    function : "A * EN";
    power_down_function : "!VDD + VSS";
    timing() {
      related_pin : "A EN";
      cell_rise(template) {
        ...
      }
      ...
    }
  }
  ...
}

References:

  • <Synopsys®Low-Power Flow>
  • https://aijishu.com/q/1010000000133347
  • https://www.sohu.com/a/220628287_99933533
  • https://www.cnblogs.com/xiaoxie2014/p/10837155.html
  • https://blog.csdn.net/qq_36480087/article/details/111589349

Leave a Comment