完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在做一个与控制ddr sdram相关的项目,使用V2P并且必须将一个信号延迟几纳秒来捕获那些高速数据。
所以我做了一个实验,关于使用LUT来判断一个信号,看看这个技术是否可行。 然而,实施的结果不能满足我的期望。 关于映射过程和地图选项的这个问题困扰了我好几天,我真的希望有人可以给我一个建议。 以下是我的代码,d2是使用一个LUT的延迟信号://////代码的开头//////////////////////// ////////////////////////////////////////////////// ////////模块temp(输入clk,输入rst,输出reg [1:0] d1,输出d2); wire [1:0] datain;分配datain = d1 + 1'b1; always @( posedge clk)if(〜rst)d1 else d1 LUT4 one(.I0(1'b1),。I1(1'b1),. I2(1'b1),. I3(d1 [1]),. O( D2)); // d2是延迟信号defparam one.INIT = 16'hff00; ///////代码的结尾 不幸的是,虽然我可以在综合后看到技术原理图中的LUT“一”,但我无法通过FPGA编辑器在Place&amp; amp; 路线。 奇怪的是,我可以在映射过程之后使用Floorplanner看到这个LUT,我在MAP之后无法使用FPGA编辑器看到它。 然后只能通过制作这样的区域约束来阻止优化:“INST”一个“LOC =”SLICE_X7Y53“;” 以下是我对三个方面的提问: 1为什么我用来延迟信号的LUT被修剪了? 在我看来,如果电路的功能没有改变,软件可以优化实现过程。 例如,它可以在一个切片中交换两个LUT。 但在这种情况下,当没有添加约束时,输出“d2”已直接连接到寄存器“d1”的输出,这不符合我的要求。 从我上面的代码,我原来希望输出“d2”延迟一个LUT。 2如果我没有设置“-detail”选项,为什么地图报告不显示有关修剪逻辑的信息由于在实施过程中已经修剪了LUT,我真的希望这些报告向我显示相关信息。 但是,首先,我无法在地图报告的“删除的逻辑摘要”中看到有关我的LUT“one”的相关信息。 只有在我在映射过程中设置“-detail”选项后才能看到以下信息: ///地图报告中的相关部分第4节 - 删除逻辑摘要--------------------------------- 1 block (s)优化了3个块冗余第5节 - 删除逻辑-------------------------优化块:TYPE BLOCKVCC XST_VCCRedundant Block (s):TYPE BLOCKLUT4 one //这是LUT4,不应该被修剪INV rst_inv1_INV_0INV Mcount_d1_xor11_INV_0 ////////报告中的冗余块是否会被修剪? 如果确实如此,无论我看到“-detail”选项,都会显示此信息。但是为什么Map进程认为这个LUT4是多余的? 是因为除了延迟信号之外这个LUT没有效果(但这是我想要的)? 我想我应该知道这些信息,并在将来注意这些逻辑,以防止不必要的逻辑删除。 否则,该工具无法实现我想要的设计。 3为什么地图选项“-u”不起作用? 第三,我尝试设置MAP命令行选项以防止修剪发生。 我使用“-u”选项意味着不删除未使用的逻辑。 但无论如何,MAP过程修剪了这个LUT。 为什么这个选项不起作用? 这个问题困扰了我好几天,周围没有人可以清楚地解释原因。 所以,如果有人能解释为什么这些工具以这种方式实现我的代码,我将深表感谢。 问候,麦克 以上来自于谷歌翻译 以下为原文 I am doing a project, which is related to control ddr sdram, with V2P and have to delay one signal for several nanoseconds to capture those high-speed datas. So I have done an experiment about using LUT to dealy one signal to see whether this technique can work. However, the result of the implemention cannot meet my expectation. This problem about the mapping process and map option has puzzled me for several days and I really want someone can give me an advice. The following is my code and d2 is the delayed signal using one LUT: //////the start of the code ////////////////////////////////////////////////////////////////////////////////// module temp( input clk, input rst, output reg [1:0] d1, output d2 ); wire [1:0] datain; assign datain = d1 + 1'b1; always @ (posedge clk) if (~rst) d1 <= 0; else d1 <= datain; LUT4 one( .I0(1'b1), .I1(1'b1), .I2(1'b1), .I3(d1[1]), .O(d2)); //d2 is the delayed signal defparam one.INIT = 16'hff00; ///////the end of the code Unfortunately, although I can see the LUT "one" in Technology Schematic after synthesis, I cannot find it through FPGA Editor after Place & Route. And the strange thing is that I can see this LUT using Floorplanner after the process of mapping and I cannot see it using FPGA Editor after MAP. And afterwards only by making an area constraint like this can I prevent the optimization: "INST "one" LOC = "SLICE_X7Y53" ;" The following are my questions of three aspects: 1 Why this LUT, which I used to delay the signal has been trimmed? In my view, the software can optimize the process of implementation if the function of the circuit doesn't change. For example, it can swap the two LUTs in one slice. But in this case, output "d2" has been connected to the output of the register "d1" directly when no constraint has been added, which doesn't meet my requirement. From my code above, originally I want output "d2" is delayed by one LUT. 2 Why doesn't the Map report show those information about trimming the logic if I don't set "-detail" option Since that LUT has been trimmed during the implemetation process, I really want those reports show me the relevant information. However, at first, I cannot see the relevant information about my LUT "one" in the "Removed Logic Summary" in the Map Report. Only after I set "-detail" option during mapping process can I see the following information: ///the relevant part in the map report Section 4 - Removed Logic Summary --------------------------------- 1 block(s) optimized away 3 Block(s) redundant Section 5 - Removed Logic ------------------------- Optimized Block(s): TYPE BLOCK VCC XST_VCC Redundant Block(s): TYPE BLOCK LUT4 one //this is the LUT4 which should not be trimmed INV rst_inv1_INV_0 INV Mcount_d1_xor<0>11_INV_0 //////// Will the redundant block in report be trimmed? If it is true, this information should show up no matter I see "-detail" option. But why does the Map process consider this LUT4 redundant? Is it because this LUT has no effect other than delay a signal(but this is what I wanted)? I think I should know those information and pay attention to those logics in the future to prevent unwanted logic removal. Otherwise, the tool cannot implement the design as I want. 3 Why doesn't the map option "-u" work? Thirdly, I have tried to set the MAP command line options to prevent the trimming happen. And I have use "-u" option which means not to remove unused logic. But the MAP process trim this LUT anyway. Why doesn't this option work? This problem has puzzled me for several days and no one around me can explain the reason clearly. So, I will deeply appreciate if someone can explain why the tools implement my code that way. Regards, Mike |
|
相关推荐
5个回答
|
|
1为什么我用来延迟信号的LUT被修剪了?
默认情况下,只要不更改LOGICAL功能,map就可以优化逻辑。 在你的情况下,我知道你想插入一个延迟,但从地图的角度来看,LUT只是通过网络(即d2 = d1 [1]),这相当于一个简单的网络。 这就是LUT优化的原因。 2如果我没有设置“-detail”选项,为什么Map报告不会显示有关修剪逻辑的信息 在真实的设计中,优化的东西数量可能非常大。 默认情况下全部报告它们需要更长的时间并阻塞报告。 这就是默认情况下不会报告的原因。 3为什么地图选项“-u”不起作用? -u =不修剪“未使用”逻辑,这意味着逻辑输出不会在任何地方使用。 这与使用LUT4作为延迟元件的情况不同。 干杯, 吉姆 干杯,吉姆 在原帖中查看解决方案 以上来自于谷歌翻译 以下为原文 1 Why this LUT, which I used to delay the signal has been trimmed? By default, map can optimize the logic as long as it doesn't change the LOGICAL function. In your case, I understand you want to insert a delay, but from map's point of view, the LUT simply passes the net through (i.e. d2 = d1[1]), which is equivalent as a simple net. That's why the LUT is optimized. 2 Why doesn't the Map report show those information about trimming the logic if I don't set "-detail" option In a real design, the number of things optimized away can be really big. Reporting them all by default takes longer time and clog the report. That's why they are not reported by default. 3 Why doesn't the map option "-u" work? -u = don't trim "unused" logic, which means the output of the logic is not used anywhere. This is a different case than using LUT4 as a delay element. CHeers, Jim Cheers, JimView solution in original post |
|
|
|
1为什么我用来延迟信号的LUT被修剪了?
默认情况下,只要不更改LOGICAL功能,map就可以优化逻辑。 在你的情况下,我知道你想插入一个延迟,但从地图的角度来看,LUT只是通过网络(即d2 = d1 [1]),这相当于一个简单的网络。 这就是LUT优化的原因。 2如果我没有设置“-detail”选项,为什么Map报告不会显示有关修剪逻辑的信息 在真实的设计中,优化的东西数量可能非常大。 默认情况下全部报告它们需要更长的时间并阻塞报告。 这就是默认情况下不会报告的原因。 3为什么地图选项“-u”不起作用? -u =不修剪“未使用”逻辑,这意味着逻辑输出不会在任何地方使用。 这与使用LUT4作为延迟元件的情况不同。 干杯, 吉姆 干杯,吉姆 以上来自于谷歌翻译 以下为原文 1 Why this LUT, which I used to delay the signal has been trimmed? By default, map can optimize the logic as long as it doesn't change the LOGICAL function. In your case, I understand you want to insert a delay, but from map's point of view, the LUT simply passes the net through (i.e. d2 = d1[1]), which is equivalent as a simple net. That's why the LUT is optimized. 2 Why doesn't the Map report show those information about trimming the logic if I don't set "-detail" option In a real design, the number of things optimized away can be really big. Reporting them all by default takes longer time and clog the report. That's why they are not reported by default. 3 Why doesn't the map option "-u" work? -u = don't trim "unused" logic, which means the output of the logic is not used anywhere. This is a different case than using LUT4 as a delay element. CHeers, Jim Cheers, Jim |
|
|
|
非常感谢您的专业知识,并且我对映射过程的理解得到了改进。
只有一件事想要问你,除了像“LOCK_PINS”这样的约束之外,我如何设置地图选项以防止优化这个LUT。 我已阅读dev.pdf的相关部分,但未找到合适的选项。 以上来自于谷歌翻译 以下为原文 Thank you very much for your expert knowledge and my understanding about the process of mapping has been improved. Just one thing want to ask you, other than the constraints such as "LOCK_PINS", how can I set the map options to prevent the optimization of this LUT. I have read the relevant part of dev.pdf, and haven't find the appropriate option. |
|
|
|
只有一件事想要问你,除了像“LOCK_PINS”这样的约束之外,我如何设置地图选项以防止优化这个LUT。
我已阅读dev.pdf的相关部分,但未找到合适的选项。 我不认为有一个map命令行选项可以防止这种情况。 您需要使用约束。 干杯, 吉姆 干杯,吉姆 以上来自于谷歌翻译 以下为原文 I don't think there is a map command line option that can prevent this. You will need to use constraints for this. Cheers, Jim Cheers, Jim |
|
|
|
非常感谢您的回答。
问候, 麦克风 以上来自于谷歌翻译 以下为原文 Thank you very much for your answering. Regards, Mike |
|
|
|
只有小组成员才能发言,加入小组>>
2380 浏览 7 评论
2797 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2262 浏览 9 评论
3335 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2428 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
756浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
545浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
366浏览 1评论
1963浏览 0评论
682浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 02:53 , Processed in 1.278886 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号