打印
[Quartus]

如何使用约束 将一个接收模块放在接近IO脚的区域

[复制链接]
5941|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
使用SPARTAN-6 45T,想请教一下各位高手,比如设计了一个接收模块,在FPGA中有8路完全相同的接收模块,每个接收模块调用了一个IDDR2,其余都是用户逻辑,需要将每个模块放到离相应的I/O脚接近的区域,如何约束???(是不是使用RLOC约束)

俺的设计用register_duplicate + register_balance不行
将综合器设置为speed优化也不行
将布局布线器的努力程度开到最大也不行
使用SmartExplorer执行多个策略也不行
也就是说,试遍了工具的所有speed优化选项都不行
然后就人工用PlanAhead优先布这个关键路径以后,又会出现另一路径的timing错误

相关帖子

沙发
钻研的鱼| | 2011-6-20 09:15 | 只看该作者
synthesize-XST选项里有一个xilinx specific options里面,有个pack IO registers into IOBs,选择yes,试一试

使用特权

评论回复
板凳
钻研的鱼| | 2011-6-20 09:20 | 只看该作者
另外,如果准确添加,参照ddr的一些设计约束,我发个例子:
INST "ddr2_top0/controller0/ddr_address*" IOB = TRUE;
甚至可以进一步约束使用的具体寄存器,如
INST "ddr2_top0/data_path0/data_read_controller0/dqs_delay4_col0/one" LOC = SLICE_X100Y59;

使用特权

评论回复
地板
年轻不再| | 2011-6-20 21:16 | 只看该作者
:Q,不明白的东西这么多。

使用特权

评论回复
5
wahahaabc|  楼主 | 2011-6-20 22:44 | 只看该作者
3# 钻研的鱼
鱼哥 俺的设计这样约束不行

再问下鱼哥 INST "ddr2_top0/data_path0/data_read_controller0/dqs_delay4_col0/one" LOC = SLICE_X100Y59;
因为SPARTAN-6的一个slice中有8个触发器,如果需要约束的寄存器的位数超过8bit,比如,上例的one寄存器是10bit,则这个约束是否会报错???

使用特权

评论回复
6
钻研的鱼| | 2011-6-21 08:14 | 只看该作者
鱼哥 俺的设计这样约束不行 。哪个地方不行?

另外一个,我还真没试过!
我感觉应该不会出错,它会自动使用周边的slice。
你可试试,有结果告诉一声

使用特权

评论回复
7
钻研的鱼| | 2011-6-21 08:34 | 只看该作者
对了,xilinx的约束里面还用一个AREA_GROUP RANGE=SLICE_Xm1Yn1:SLICE_xm2Yn2的约束

使用特权

评论回复
8
SuperX-man| | 2011-6-21 10:28 | 只看该作者
顶!!或者用PlanAhead可以更直观一点

使用特权

评论回复
9
wahahaabc|  楼主 | 2011-6-22 08:31 | 只看该作者
6# 钻研的鱼
这两天太忙了 还没有时间来弄这个 过两天试一下

使用特权

评论回复
10
wahahaabc|  楼主 | 2011-6-23 09:58 | 只看该作者
5# wahahaabc

鱼哥 俺试了一下 如果one寄存器是10bit 则MAP错误 提示如下:
ERROR:Pack:2811 - Directed packing was unable to obey the user design
   constraints (LOC=SLICE_X1Y125) which requires the combination of the symbols
   listed below to be packed into a single SLICEX component.

使用特权

评论回复
11
SuperX-man| | 2011-6-23 10:29 | 只看该作者
建议你用PlanAhead看一下,你约束的这个Slice周边的具体情况

使用特权

评论回复
12
钻研的鱼| | 2011-6-23 16:09 | 只看该作者
如果不可以的话,你可以对每个bit用loc来进行约束,xilinx的约束可以非常精确

使用特权

评论回复
13
wahahaabc|  楼主 | 2011-6-23 16:14 | 只看该作者
12# 钻研的鱼
一个一个bit定位 这个倒是可以 就是比较麻烦

使用特权

评论回复
14
wahahaabc|  楼主 | 2011-6-23 16:31 | 只看该作者
再问一下各位高手 俺的源代码中写的寄存器的名称是serial_stream_pos,如下:

为什么.UCF进行约束的时候,比如只约束serial_stream_pos的bit0,写寄存器的名称serial_stream_pos_0(这个0表示bit0)会翻译出错,用planahead看了一下,发现名称已经被改为Mshreg_serial_stream_pos_1???像下面这样写才能通过:

以前好像在哪里看过一个资料,说是XST综合器如果不设置了“保持层次”选项,会更改网络名,不便于调试,不知道是不是这样???

但是,如果设置了“保持层次”选项,则会影响性能。晕

Snap1.jpg (24.65 KB )

Snap1.jpg

使用特权

评论回复
15
wahahaabc|  楼主 | 2011-6-23 16:41 | 只看该作者
11# SuperX-man
超人大侠,用planahead看了一下,slice周围比较空。如下:

使用特权

评论回复
16
AutoESL| | 2011-6-23 17:13 | 只看该作者
还是PA强大

使用特权

评论回复
17
wahahaabc|  楼主 | 2011-6-24 09:07 | 只看该作者
顶一个

使用特权

评论回复
18
网络小蜻蜓| | 2011-11-23 10:44 | 只看该作者
使用SPARTAN-6 45T,想请教一下各位高手,比如设计了一个接收模块,在FPGA中有8路完全相同的接收模块,每个接收模块调用了一个IDDR2,其余都是用户逻辑,需要将每个模块放到离相应的I/O脚接近的区域,如何约束??? ...
wahahaabc 发表于 2011-6-20 08:58



楼主你好,你的这个问题解决了吗?我也遇到相同问题了。

使用特权

评论回复
19
edacsoft| | 2011-11-23 16:04 | 只看该作者
楼主,请参考XAPP485,你应该能找到答案。
我最近也在看,有问题咱们一起讨论,还有几位版主也在这。绝对可以的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

119

主题

627

帖子

0

粉丝