Dec
20
有时候,可能ISE会将一个你认为不是时钟的信号认成了时钟,有时加上BUFG,有时甚至通不过布局布线,建议添加XIL_PLACE_ALLOW_LOCAL_BUFG_ROUTING环境变量。
这时候,应该首先考虑:
1、是否在设计中用了EJTAG_CLK的上升沿作为触发信号。
解决方法:请检查这个上升沿是否必须,是不是可以改为时钟为clk而EJTAG_CLK作为Enable信号。
2、如果一定要用上升沿,那么XST就会认为是时钟信号。为了让它继续布线,你可以让它使用BUFG或者设置XIL_PLACE_ALLOW_LOCAL_BUFG_ROUTING,只要资源允许,使用时钟资源是没有多少害处的。
暂时设置环境变量方法我有在以前的Blog中写过
永久设置,请到我的电脑-> 右键 -> 属性 -> 高级 -> 环境变量 -> 添加环境变量
3、设置约束,指定BUFFER类型
具体方法参见XST UserGuide (ISE安装目录下搜索xst.pdf),buffer_type约束。
有时候对一个net设置了buffer_type为普通buffer,XST会有让另一条net占用BUFG,以此类推,构成循环。解决方法是,XST属性里面可以设置这个设计总共使用多少个BUFG。设到一个想要的个数就可以了。
总结:虽然改代码可能被认为是最麻烦的解决方法,但这是最安全的,因为整个设计都会按照你想要的方式进行下去。
这时候,应该首先考虑:
1、是否在设计中用了EJTAG_CLK的上升沿作为触发信号。
解决方法:请检查这个上升沿是否必须,是不是可以改为时钟为clk而EJTAG_CLK作为Enable信号。
2、如果一定要用上升沿,那么XST就会认为是时钟信号。为了让它继续布线,你可以让它使用BUFG或者设置XIL_PLACE_ALLOW_LOCAL_BUFG_ROUTING,只要资源允许,使用时钟资源是没有多少害处的。
暂时设置环境变量方法我有在以前的Blog中写过
永久设置,请到我的电脑-> 右键 -> 属性 -> 高级 -> 环境变量 -> 添加环境变量
3、设置约束,指定BUFFER类型
具体方法参见XST UserGuide (ISE安装目录下搜索xst.pdf),buffer_type约束。
有时候对一个net设置了buffer_type为普通buffer,XST会有让另一条net占用BUFG,以此类推,构成循环。解决方法是,XST属性里面可以设置这个设计总共使用多少个BUFG。设到一个想要的个数就可以了。
总结:虽然改代码可能被认为是最麻烦的解决方法,但这是最安全的,因为整个设计都会按照你想要的方式进行下去。





