前言
vivado自带很多命令帮助编译器更好的实现设计者的想法,用得好会变成开发利器。比如,max_fanout命令,本身是用来约束扇出,减少布线拥塞的常用命令。然而很多读者向我反映,使用这个命令之后发现没有任何事情发生,完全没有任何效果。这里我就带大家理一理这个命令的使用方法。
max_fanout 起作用的条件
打算降低扇出的网络必须是reg驱动。因为降低扇出的原理就是reg驱动超过n(设置参数)条网络的时候,就复制一个同样的reg驱动其他n条网络,如果复制2个还不够就一直复制到足够为止,见图1。
-flatten_hierarchy不能设置为none。图形界面设置位置见图2。
如果需要优化的信号在ip核内部那么在布局完成后使用下面的命令phys_opt_design -force_replication_on_nets [get_nets net_name]来保证ip核取消对内部网络的保护,能够正常复制高扇出网络。
图1.寄存器复制示意图
图2.flatten_hierarchy设置位置
max_fanout 的使用形式
1. verilog综合属性设置:(*max_fanout = 50 *) reg test;
这里的综合属性必须设置在要降低扇出的寄存器前面,否则一定不会按照设计者意图综合。这种方法缺点是不能作用于ip核内部的某个信号。
2.set_property max_fanout 50 [get_nets {test}]或者
set_property max_fanout 50 [get_cells {test_r}]
注意get_cells选中的必须是要求编译器复制它来降低扇出的寄存器,因为verilog代码里面和最终实现的电路里面的寄存器名字很可能不一样,所以建议综合完成后在原理图里面去找到对应寄存器,然后复制他的名字,这样就不会弄错。很多时候读者使用命令的时候cells的名字就弄错了!用get_nets命令也一样最好去原理图里面找对应的网络,复制名字。xdc约束可以作用于ip核内部的某个信号。
max_fanout 的参数意义
(*max_fanout = 50 *) reg test;里面的参数就只有一个——50,网络扇出超过50就会复制一个,保证每个复制的寄存器下面的扇出都不超过此参数。xdc约束也一样,不再敖述。
注意,图1的综合设置里面有-fanout_limit这个参数,并且默认是10000。这里是约束全局扇出的,但是max_fanout命令的优先级会高于这里的设置参数。所以编译器会优先按照你的综合属性或者xdc约束来进行优化。
真一亿像素时代来临 如何辨别真假像素
我国机器人产业发展快,但虚火也旺
巴特沃斯滤波器的计算公式
通过高压放大器扩展库仑计的输入电压范围
消息称苹果新款MacBook Pro可能推迟至明年3月发布
max_fanout的使用方法和技巧
VR技术让你体验新的无人机操控方式
未来智能锁将取代机械门锁而成为消费主流
基于嵌入式操作系统μC/OS-Ⅱ的Chirp函数信号发生器设计
UART寄存器介绍与中断操作详解
高通创锐讯推出Wi-Fi无线显示对等连接方案
充电器电路详解(自激型电源的进一步优化)
直线马达真空包装机告诉你快速出餐的秘密
共模抑制:它与ECG子系统的关系以及用于提供卓越性能的技术
UGREEN绿联发布全新款无线投屏器
深度解析脑机接口技术
如何使用S7-1200/1500 CPU的各种访问等级
DS1867 EEPROM游标存储电源调理
小米智造入股智能激光器光源制造商公大激光
放大器偏移问题分析