一种SoC芯片在Magma Talus下的物理实现
时间:11-10
来源:互联网
点击:
2.3非时序逻辑时序弧(data-to-data timing arc)的处理
SoC中使用到的EE模块是一个异步IP,时序模型存在非时序逻辑的时序弧(non-sequential library arc,也即data-to-data timing arc):输入的数据或控制信号与输入pin——CEN、WEN之间有data-to-data 的时序弧存在、其中的控制信号CHER、CHWR、ER_ONLY、WR_ONLY与输出pin——READY之间也存在着data-to-data 的时序弧。综合工具并不区分时序逻辑与非时序逻辑的时序弧,只要设计中有时序弧的单元存在,综合工具就认为应该在相应pin脚设置时钟,因此在综合的过程中会认为在CEN、WEN、READY这几个信号pin应设置时钟。如果不设置,在综合过程中,综合工具的时序分析引擎是报不出任何经过或到CEN、WEN、READY的路径。而一旦设置为时钟,就会产生很多false path。我们最后的做法是不在逻辑综合阶段将其设为时钟,而是将该问题留到时钟树优化时,使用config timing check data_to_data on 将data-to-data check选项打开,并使用force timing check命令约束相应的时序关系。
第三章 布局规划
该设计采用flatten的方式进行布局规划,使用2P/6M EE工艺,包含Hard Macros 94个,共占面积50.3mm2。其中有13种81个由memory compiler生成的memory、7个定制模拟/数模混合模块、2个PLL以及其它IP模块。为两个同为1.8v相互隔离的电压域创建两个floorplan,并使用polygon相关的命令为primary flloorplan创建多边形形状。另外,以data create cluster region命令将PMC模块中除PLL部分外的其他逻辑以region的形式固定到布局的中央位置。
在IO布局上,除了由memory compiler生成的memory IP不需单独供电,其余宏模块均需单独供电,其中为RTC供电定制的电源切换模块所需的电源PAD的隔离还更加复杂。
由于需要单独供电的模拟/数模混合模块较多,电源域较多,在布局规划阶段就确定了各模拟/数模混合模块在芯片中的大致位置及其供电pad在pad环上的顺序。
7个定制的模拟/数模混合模块及2个PLL均位于pad环和电源环之间;位于内部的存储器模块和CPU core由于数量众多,其位置的摆放首先考虑的是固定几个尺寸较大的IP模块的位置,并使用force plan clearance添加blockage;然后使用Magma Talus Vortex中的run place cluster命令来自动摆放余下较小存储器,确定初步的布局规划,而后微调各存储器的相对位置,做到规则规整,控制各个存储器模块之间的布线通道的布局利用率,在较窄的地方不允许任何标准单元摆放,在一些较宽的布线通道我们设置了50%-100%不等的blockage利用率。最后的布局规划如图5所示:
图5 布局规划
第四章 时钟树设计
时钟树设计的内容包括时钟树约束的设置、MMMC、OCV(On Chip Variation)及 CPPR (Clock Path Pessimism Removal,或称 Clock Reconvergence Pessimism Removal)的考虑等。
本芯片时钟树设计的难点在于基于latch的时钟门控单元、时钟分频电路以及动态选择电路带来的时钟树平衡问题而导致的时钟树约束的复杂性。
4.1 分离时钟门控单元的时钟树约束
由于PMC模块中存在大量的由latch和and标准单元构成的非集成的时钟门控单元, latch的D端具有endpoint属性,如果不做特殊处理,在时钟树生成时会与其它具有endpoint属性的触发器、锁存器一起进行平衡。这不是我们想要的结果,我们想要的平衡是把latch和and一起构成的时钟门控单元看成一个组合门电路,仅需要其后的触发器和其它没有受时钟门控控制的触发器一起进行平衡,而将latch排除在外。如图6所示:
图6 分离门控时钟电路的skew group
为了达到上述目的,我们将分离分控时钟的latch和and置于一个skew group之内,并将and门的时钟输入端设置为skew anchor。以下面的SoC芯片中的一个分离门控时钟电路为例,约束如下:
force plan clock $m -pin ".../PmcHCLKGate_Inst/i_latch/GN \
.../PmcHCLKGate_Inst/i_and/A" -skew_group 49
force plan clock $m -pin .../PmcHCLKGate_Inst/i_and/A -skew_anchor
4.2 分频电路时钟树约束
SoC芯片的PMC模块中分频时钟之间,以及分频时钟和源时钟之间,存在非例外的时钟路径,因此,我们将分频电路时钟域和未分频电路时钟域内的触发器置于一个skew group之内。分频电路本身由于是孤立的逻辑,与其它功能逻辑电路的触发器之间在逻辑上不存在有效数据路径,因此可以单独做成一个skew group。但由于它处于分频时钟域路径上,为使置于同一skew group之内的分频时钟域和源时钟域内的触发器之间的skew在规定的范围内,必须控制分频电路的时钟路径,如图7所示:
图7 分频电路的skew group
我们以某三分频电路为例,下面的命令是对其时钟树创建时的相关约束:
force plan clock $m -pin "…/PmcFHClkDiv3/QQ_reg[0]/CK \
…/PmcFHClkDiv3/QQ_reg/CK" -skew_group 54
force plan clock $m -pin "…/PmcFHClkDiv3/QQ_reg/CK" -skew_anchor
force plan clock $m -pin "…/PmcFHClkDiv3/DQ_reg/CKN \
…/PmcFHClkDiv3/OR2CLK_Inst/A" -skew_group 55
force plan clock $m -pin …/PmcFHClkDiv3/OR2CLK_Inst/A -skew_anchor
SoC中使用到的EE模块是一个异步IP,时序模型存在非时序逻辑的时序弧(non-sequential library arc,也即data-to-data timing arc):输入的数据或控制信号与输入pin——CEN、WEN之间有data-to-data 的时序弧存在、其中的控制信号CHER、CHWR、ER_ONLY、WR_ONLY与输出pin——READY之间也存在着data-to-data 的时序弧。综合工具并不区分时序逻辑与非时序逻辑的时序弧,只要设计中有时序弧的单元存在,综合工具就认为应该在相应pin脚设置时钟,因此在综合的过程中会认为在CEN、WEN、READY这几个信号pin应设置时钟。如果不设置,在综合过程中,综合工具的时序分析引擎是报不出任何经过或到CEN、WEN、READY的路径。而一旦设置为时钟,就会产生很多false path。我们最后的做法是不在逻辑综合阶段将其设为时钟,而是将该问题留到时钟树优化时,使用config timing check data_to_data on 将data-to-data check选项打开,并使用force timing check命令约束相应的时序关系。
第三章 布局规划
该设计采用flatten的方式进行布局规划,使用2P/6M EE工艺,包含Hard Macros 94个,共占面积50.3mm2。其中有13种81个由memory compiler生成的memory、7个定制模拟/数模混合模块、2个PLL以及其它IP模块。为两个同为1.8v相互隔离的电压域创建两个floorplan,并使用polygon相关的命令为primary flloorplan创建多边形形状。另外,以data create cluster region命令将PMC模块中除PLL部分外的其他逻辑以region的形式固定到布局的中央位置。
在IO布局上,除了由memory compiler生成的memory IP不需单独供电,其余宏模块均需单独供电,其中为RTC供电定制的电源切换模块所需的电源PAD的隔离还更加复杂。
由于需要单独供电的模拟/数模混合模块较多,电源域较多,在布局规划阶段就确定了各模拟/数模混合模块在芯片中的大致位置及其供电pad在pad环上的顺序。
7个定制的模拟/数模混合模块及2个PLL均位于pad环和电源环之间;位于内部的存储器模块和CPU core由于数量众多,其位置的摆放首先考虑的是固定几个尺寸较大的IP模块的位置,并使用force plan clearance添加blockage;然后使用Magma Talus Vortex中的run place cluster命令来自动摆放余下较小存储器,确定初步的布局规划,而后微调各存储器的相对位置,做到规则规整,控制各个存储器模块之间的布线通道的布局利用率,在较窄的地方不允许任何标准单元摆放,在一些较宽的布线通道我们设置了50%-100%不等的blockage利用率。最后的布局规划如图5所示:
图5 布局规划
第四章 时钟树设计
时钟树设计的内容包括时钟树约束的设置、MMMC、OCV(On Chip Variation)及 CPPR (Clock Path Pessimism Removal,或称 Clock Reconvergence Pessimism Removal)的考虑等。
本芯片时钟树设计的难点在于基于latch的时钟门控单元、时钟分频电路以及动态选择电路带来的时钟树平衡问题而导致的时钟树约束的复杂性。
4.1 分离时钟门控单元的时钟树约束
由于PMC模块中存在大量的由latch和and标准单元构成的非集成的时钟门控单元, latch的D端具有endpoint属性,如果不做特殊处理,在时钟树生成时会与其它具有endpoint属性的触发器、锁存器一起进行平衡。这不是我们想要的结果,我们想要的平衡是把latch和and一起构成的时钟门控单元看成一个组合门电路,仅需要其后的触发器和其它没有受时钟门控控制的触发器一起进行平衡,而将latch排除在外。如图6所示:
图6 分离门控时钟电路的skew group
为了达到上述目的,我们将分离分控时钟的latch和and置于一个skew group之内,并将and门的时钟输入端设置为skew anchor。以下面的SoC芯片中的一个分离门控时钟电路为例,约束如下:
force plan clock $m -pin ".../PmcHCLKGate_Inst/i_latch/GN \
.../PmcHCLKGate_Inst/i_and/A" -skew_group 49
force plan clock $m -pin .../PmcHCLKGate_Inst/i_and/A -skew_anchor
4.2 分频电路时钟树约束
SoC芯片的PMC模块中分频时钟之间,以及分频时钟和源时钟之间,存在非例外的时钟路径,因此,我们将分频电路时钟域和未分频电路时钟域内的触发器置于一个skew group之内。分频电路本身由于是孤立的逻辑,与其它功能逻辑电路的触发器之间在逻辑上不存在有效数据路径,因此可以单独做成一个skew group。但由于它处于分频时钟域路径上,为使置于同一skew group之内的分频时钟域和源时钟域内的触发器之间的skew在规定的范围内,必须控制分频电路的时钟路径,如图7所示:
图7 分频电路的skew group
我们以某三分频电路为例,下面的命令是对其时钟树创建时的相关约束:
force plan clock $m -pin "…/PmcFHClkDiv3/QQ_reg[0]/CK \
…/PmcFHClkDiv3/QQ_reg/CK" -skew_group 54
force plan clock $m -pin "…/PmcFHClkDiv3/QQ_reg/CK" -skew_anchor
force plan clock $m -pin "…/PmcFHClkDiv3/DQ_reg/CKN \
…/PmcFHClkDiv3/OR2CLK_Inst/A" -skew_group 55
force plan clock $m -pin …/PmcFHClkDiv3/OR2CLK_Inst/A -skew_anchor
SoC CMOS EDA USB Mentor Cadence 电子 电压 电路 总线 仿真 相关文章:
- 统一功率格式降低SoC的功耗(05-28)
- 第三方IP:SoC设计的一种不稳固基础(09-15)
- 赛普拉斯智能照明解决方案支持欧司朗 DRAGON LED 以精简照明设计流程(11-26)
- 基于改进的遗传算法软硬件划分方法研究(07-20)
- 锂电池均衡处理技术解决SOC和C/E失配问题(06-28)
- PSoC3应用于多通讯接口时的DMA设计 (03-05)