编程语言及工具
在 multi-voltage design 中,常常用到isolation cell;
本文简单介绍什么是 iso cell,
如何使用 iso cell,
何时需要加 iso cell,
iso cell的插入位置。
1. 什么是 iso cell ?
isolation cell(隔离单元),通常用于电源关断技术(PSO)和多电源多电压技术(MSMV)。起到不同电压域之间的电压钳制和隔离作用。
isolation cell是shutdown模块和always on模块之间的接口,用于隔离两个不同的 power domain。
isolation cell示意图如下:
iso cell 有一个控制端 EN,
当 EN 无效时, A 端信号直接送到 Y 端,此时 iso cell 等效于一个buffer;
当 EN 有效时,buffer 断开,Y 端保持固定的高电平或者低电平;
为了保证isolation cell能够在power down的时候仍然能够正常工作,一般来说isolation cell都会有一个primary power和一个secondary power,后者能够保证前者power down时器件仍然能够工作。
即如上图所示:
iso cell 的两组 power:primary power VDD 和 backup power VDDB,当 左边domain 关掉时, VDD off,此时就由 VDDB 供电,维持 Y 端的固定电平。
2. 如何使用 iso cell ?
通常isolation cell和Level Shifter一起连用,AND和OR门都可以组成一个isolation cell;
1. AND类型:输出iso成0;
2. OR类型:输出iso成1;
3. 何时需要用到 iso cell ?
当信号从一个module传入另一个module,如果shutdown模块的电源关闭,则输出信号可能出现不可预测的数值,若此数值传递给always on模块,可能会导致功能出现问题。因此需要将电源关闭module的输出信号和其他module隔离开来,给所有的边界信号加入isolation cell(ISO)。
isolation cell的作用在于在电源关掉之后,将某个信号电位固定到高电位或低电位,保证输出的信号是一个确定值(1或0)。如下图所示:
当信号从一个 off domain 穿到 另一个 domain (on 或者 off)时,如果 domain A 关掉,而 domain B 还在运行,就会出现 B 的input floating,此时 B 就可能会因为输入不定态而出现错误;所以当信号从 A 到 B 时,需要加 iso cell,保证在 A 关掉时,A 的输出信号维持在稳定的电平;
4.iso cell的插入位置?
关于isolation cell的插入位置,我们需要决定是放在power gated module (source module)内还是always-on module (destination module)内。
插在 source module 的ouput 端一是可以节省所需要的 isolation cell 数量,考虑一个模块引脚的输出连到多个模块引脚的输入的情况,二是便于检查。
插在destination module的input 端优点是 isolation cell 需要 always-on 的 power。若放在 source module的output端,还需要引 always-on 的 power rail 过来。
(考虑到power-on rail的走线,isolation cell自身的功耗,一般还是放在input端比较好,因为放在input端不需要always-on的power)
不管放在那里,其power的连接都需要注意:
isolation放置的地方都需要gated power和always-on power同时存在并且物理和逻辑连接都正确,因此经常会把isolation cell指定一个固定的区域放置,可以选择在此区域中打上两种不同的power stripe和power rail来连接它们,或者选择让工具以自动routing的方式将secondary power连接起来,后者主要出现在非先进工艺中。
总结:
isolation_cell可以放在哪个domain,或者独立呢?可以从几个角度思考:
1)isolation_cell电源问题。
isolation_cell工作的意义就在于power_gated_domian关闭不影响always_on_domain,所以其本身要工作至少不能使用power_gated_domian的电源。
所以isolation_cell放在always_on_domain或者独立更好。
2)isolation_cell数量问题。
对于power_gated_domian:always_on_domain=1:n时,要实现一个isolation_cell可以控制所有输出,有两个选择power_gated_domian和独立,而always_on_domain肯定不能实现。
3)isolation_cell所占的面积问题。
如果isolation_cell独立,单个isolation_cell所占的面积可以稍微大一些。因此,可以看出isolation_cell的位置是与具体的场景有关,并不是唯一的。
如果power_gated_domian:always_on_domain=1:1,那放在always_on_domain中应该是最优解,因为可以直接使用电源,数量为1,面积最小。
注:
1)power_gated_domian:电源可关闭域,即低功耗下,为关闭状态。
2)always_on_domain:电源常开域,即器件主要处理域,电源工作状态不可关闭。
下面是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) { ... } ... } ...
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !