实实在在进行过XilinxVirtex – 7 FPGA高速设计项目的操作,遭遇过因动态功耗急剧飙升导致芯片温度过高从而出现降频情况的陷阱,萌新只要一步步依照步骤去实施操作,就能轻易躲开这类常见的问题。
第一步 锁定全局时钟网络的门控使能
把Vivado的Synthesis设置给打开,在Power Optimization选项卡那儿将Clock Gating勾选上,其使能值设定成Auto。随后在Implementation阶段的时候,以右键点击Report Power,去确认时钟树功耗的占比情况。在XDC约束文件里添加,关键操作是: set_clock_gating_style -control_signal enable -minimum_bitwidth 4。
需要避免踩坑,这里存在一种报错现象,那就是综合以后功耗不但没有下降,反而出现了上升的情况,其核心的原因在于,没有针对低翻转率这个时钟域进行单独断绝。后续想出了一个解决的办法,这个办法是运用report_clock_gating命令去查验门控覆盖的比率,从而确保比70%要低的时钟域能够使用手动添加上去进行set_clock_gating_style这个操作,并且要给它最小值的位宽2来强制进行门控。
第二步 调整IO标准与驱动电流匹配
位于, IO Planning界面内,把,所有的,高速差分信号对,其IO Standard,从,原本默认的, LVCMOS18,转变成为, LVDS_25。进行具体操作时的路径是这样的:先将所有的差分对选中,之后通过右键点击的方式,找到Set I/O Standard选项,再从其中选择LVDS_25。
关于新手需要避开的坑,其中常见一种报错,存在时序违例的情况,而这种时序违例导致布局布线出现失败,其最关键之核心原因在于,当驱动电流有所降低以后,引发信号上升沿变得迟缓。其解决办法为,先运行Report Timing,接着针对违例路径上的IO Buffer手动添加set output delay且以get clocks for sys clk,使得达到max 2.0数值,随后回退驱动电流直至到达数值12mA,同时保留Slew Rate FAST。
至关重要的参数,存在能达到最佳效果的推荐数值:针对于那种采用1.8V来供电的DDR接口而言,其中的ODT电阻,被设置成为40Ω,而并非初始设定的60Ω,这样做的话,一方面能够与50Ω的传输线阻抗相匹配,另一方面还可以将反射功耗降低大概15%。
第三步 动态电压频率调整与电源域隔离
在Block Design环境里,给每一个电压的领域,添加上Power Management Bus的接口。具体的操作步骤是,对ZYNQ7 Processing System进行双击操作,在PS-PL Configuration这个设置里头,让Power A9_0以及A9_1的独立电源管理功能能启用。1. Vivado下到Power Constraints里录入该1.0V动态变域,是针对PL侧的VCCINT的。2. 就关于PL侧的VCCINT来讲,为其在Vivado的Power Constraints当中输入1.0V动态调整范围。
有两种实操方案对比,其中方案A采用的是片上LDO降压,而方案B采用的是外挂DC-DC转换器。方案A适用于功耗敏感的低成本设计,其布局简单,不过转换效率仅有70%;方案B适合高功率场景,其转换效率达到90%以上,可是需要额外的PCB面积。取舍的逻辑是,当总功耗低于3W时需选择方案A,而当功耗高于5W时则要强制选择方案B。
高频出现完整报错情况,报错内容为: ERROR,即 [Power 44 – 157],其中提到 VCCINT 电压为 0.95V,此电压低于最低要求的 1.0V。完备的排解过程:核查Power Management Bus里的I2C地址有无冲突情况,确认外部DC-DC反馈电阻所形成的分压比是不是正确的,在U-Boot内对pmic_set_voltage vccint 1.05修改,再度运行Power Report去验证实际的电压数值,要是依旧出现报错现象,手动给PMBus增添1kΩ上拉电阻。
纯模拟电路或者射频前端设计并不适用此方法,因为在这些场景里信号抖动容限低到极点,门控时钟引发的毛刺会直接将信噪比破坏掉。替代方案是运用固定电压供电加上金属屏蔽罩的方式,用物理隔离去替换动态功耗优化。










