完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
嗨,
我即将写一个简单的非常小的收缩处理器(2-4 Virtex5-Slices)。 所有LUT,CARRY和FFplacements 手工完成(包括BEL限制),以达到最佳性能和面积效果。 我的问题是,我在PlanAhead中的一个Slice中发现了LUT6实例的BEL位置的差异 FPGA编辑器(由于没有放置FF,因此额外路由的成本会再次进入Slice 适当) 。 一个简单的例子:我定义 LUT1 BEL = A6LUT FF1 BEL = AFF LUT2 BEL = B6LUT FF2 BEL = BFF LUT3 BEL = C6LUT FF3 BEL = CFF LUT4 BEL = D6LUT FF4 BEL = DFF 当FPGA-Editor以相反的顺序显示LUT时,PlanAhead按预期显示所有内容: LUT1 BEL = D6LUT FF1 BEL = AFF LUT2 BEL = C6LUT FF2 BEL = BFF LUT3 BEL = B6LUT FF3 BEL = CFF LUT4 BEL = A6LUT FF4 BEL = DFF, 还示出了LUT-o6-信号被路由出并再次进入切片(FF不适合放置)。 我目前的解决方案是逆转以下FlipFlop-BEL-Constraints(AFF..DFF => DFF..AFF) FF-Stage没有额外的路由成本(静态时序报告具有更好的结果),但这只是一个黑客, 没有真正的解决 任何人都可以帮我解决这个问题吗? 谢谢, Jotta |
|
相关推荐
7个回答
|
|
|
|
|
|
None
|
|
|
|
|
|
|
|
这看起来与此线程中讨论的LUT6_2的问题相同:http://forums.xilinx.com/xlnx/board/crawl_message?board.id = IMPBD& message.id = 808
其他信息可以在这个博客中找到。 我修改了你的测试用例(参见***体变化),现在一切看起来都很好(参见FED中的附件快照)。 库IEEE;使用IEEE.STD_LOGIC_1164.ALL;使用IEEE.NUMERIC_STD.ALL;库UNISIM;使用UNISIM.vcomponents.all; ----------------------- --------------------------实体root是端口(clock:在std_logic中;输入:在std_logic_vector中(7 downto 0);输出:out std_logic_vector (7 downto 0)); end root; ---------------------------------------- ---------架构根的根是常数宽度:整数:= 8; - inbut buffer FFs signal ib_ffd_i:std_logic_vector(width-1 downto 0); signal ib_ffd_o:std_logic_vector(width-1 downto 0); - LUT测试LUT6s信号lt_lut_i:std_logic_vector(width-1 downto 0); 信号lt_lut_o5:std_logic_vector(width-1 downto 0); 信号lt_lut_o6:std_logic_vector(width-1 downto 0); - LUT测试FFDs信号lt_ffd_i:std_logic_vector(width-1 downto 0); 信号lt_ffd_o:std_logic_vector(width-1 downto 0); 属性LOCK_PINS:string; 属性S:string; lt_ffd_o的属性S:signal为“TRUE”; lt_lut_i的属性S:signal为“TRUE”; begin - 输入缓冲区FFDs ib_ffd_gen:for i in 0 to width-1生成FDRSE_inst:FDRSE通用映射(INIT =>'0')端口映射(C => clock,CE =>'1',R =>'0 ',S =>'0',D => ib_ffd_i(i),Q => ib_ffd_o(i)); 结束生成; - LUTs lt_lut_gen:for i in 0 to width-1生成LUT6_inst的属性LOCK_PINS:label为“ALL”; 开始LUT6_inst:LUT6_2通用映射(INIT => X“0000_0006_0000_0002”)端口映射(I0 => lt_ffd_o(i),I1 => lt_lut_i(i),I2 =>'0',I3 =>'0',I4 = >'0',I5 =>'1',O5 => lt_lut_o5(i),O6 => lt_lut_o6(i)); 结束生成; - FFDs lt_ffd_gen:for 0 in 0 to width-1生成FDRSE_inst:FDRSE通用映射(INIT =>'0')端口映射(C =>时钟,CE =>'1',R =>'0',S =>'0',D => lt_ffd_i(i),Q => lt_ffd_o(i)); 结束生成; - 连接ib_ffd_i lt_lut_i lt_ffd_i - 输出结束拱; 干杯,吉姆 |
|
|
|
吉姆,嗨,
只是尝试了成功,谢谢你的时间。 我也试过它没有LOCK_PINS属性,也工作。 我对路由和映射算法一无所知, 但我认为如果没有LOCK_PINS,你可以为PAR提供更多的优化自由,而对于我而言,用户却没有 PAR是否替换了输入引脚(只要他满足我的BEL约束并保持语义不变)。 谢谢, jotta |
|
|
|
我看到的不是这种精确的行为,但是放置指令无法正常运行。
特别是,BEL =“?6LUT”指令似乎对LUT6_2实例没有任何影响。 它适用于LUT6_D或LUT6实例,但不适用于LUT6_2。 LOC指令似乎确实很好用。 软件通过将第一个LUT6_2 I声明放在D6LUT位置,第二个放在C6LUT位置来响应,依此类推,但我没有运行足够的测试用例来查看它是否是通用的。 第二个问题(不相关但两者都影响我)是Spartan 6切片中有8个触发器,但我只能找到其中四个的BEL说明符:FFA,FFB,FFC,FFD。 这些说明符中的每一个似乎在切片的该部分中指定了“触发器”对,并且软件似乎使用它感觉到的任何一个。 如何指定*完全*八个触发器中的任何一个? 我的应用程序支持使用所有八个切片触发器(我对此感到非常高兴),但我需要弄清楚如何获得我需要的放置控件。 最好的祝福, 基普 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
2424 浏览 7 评论
2826 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2294 浏览 9 评论
3375 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2465 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1242浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
590浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
453浏览 1评论
2008浏览 0评论
732浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 17:14 , Processed in 1.459660 second(s), Total 88, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号