//来自微信公众号 "数字芯片实验室"
UPF语言提供了一种指定设计电源要求的方法,但是没有明确说明如何实施这些要求。
它不包含任何布局或走线的信息。
UPF规范与RTL设计是分开的。
在UPF语言中,电源域是设计中一些单元共享的电源需求。 默认情况下,电源域中的所有逻辑单元都使用相同的电源和地连接。
设计中的每个scope都有电源网络和电源端口。
电源开关是一种打开和关闭电源网络的单元。 一个开关有一个输入电源,一个输出电源,和至少一个控制开关的输入信号。
power state table列出了设计中所有电压域的电压值组合和电源开关状态。
当逻辑信号离开一个电源域并进入另一个电源域时,需要一个level shifter。 level shifter将第一个电源域的逻辑信号转换为第二个电源域的逻辑信号。
当逻辑信号离开可开关的电源域时需要一个isolation cell。如果两个电源域的电压电平差别很大,接口单元必须能够执行level shifter和isolation两种功能,这是需要使用enable level shifter
在具有电源开关的电源域中,在断电期间保留数据的寄存器需要使用retention registers实现。retention registers有一个单独的,always-on供电网络,有时也称为备用电源,可以在电源域断电的时候保持数据稳定。
图1中所示的电源网络示例了一些电源概念。
该芯片设计有三个always on电源,有三种不同的电压等级。 电源域PD\_TOP具有四个电源端口:VDD1,VDD2,VDD3和GND。
沿着电源域边界的黑色方块代表其电源端口。
此图仅显示了电源域之间的连接,而不是代表芯片的实际物理布局。
除了top-level电源域PD\_TOP之外,还有三个电源域定义,称为PD1,PD2和PD3,分别在Block1,Block2和Block3创建。 每个模块都有相应的电源端口(显示为黑色方块)。
在此示例中,PD\_TOP,PD2和PD3是always-on的不同电源电压的电源域,VDD1,VDD2和VDD3。 PD1电源域有两个电源:一个叫做VDD1g的可开关电源和一个来自的always-on的VDD1电源。 always-on电源在VDD1g断电时,保持retention registers的值。
电源开关控制电源网络VDD1g的连接。 Top level的Power down controller block生成开关的控制信号。 它还会为PD1中的retention registers生成save和restore信号,为PD1与always-on电源域PD2和PD3之间isolation cells的生成控制信号。 这些isolation cells产生在VDD1g断电期间的产生一个恒定信号。
因为电源域PD1,PD2和PD3在不同的电源电压下工作,所以需要level shifter。 这种情况下,在信号离开PD1并进入PD2或PD3中,接口单元必须能够执行level shifter和isolation两种功能。
假设要在Block1模块和电源域PD1创建电源网络VDD1和一个名为PRT1的电源端口
。我们可以使用以下命令:
create\_supply\_net VDD1 -domain Block1/PD1
create\_supply\_port PRT1 -domain Block1/PD1
connect\_supply\_net Block1/VDD1 -ports { Block1/PRT1 }
另一种命令输入方法是使用:
set\_scope Block1
create\_supply\_net VDD1 -domain PD1
create\_supply\_port PRT1 -domain PD1
connect\_supply\_net VDD1 -ports { PRT1 }
本文转载自公众号:芯片数字实验室
原文链接:https://mp.weixin.qq.com/s/klLXbPXAiHwBKP0J49zcuw
未经作者同意,请勿转载!
推荐阅读
想了解更多内容,欢迎关注芯片数字实验室专栏