完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在尝试分配大的ram空间(大约500K位)。
合成无法及时完成(我给它约1小时。)我应该等待还是有办法完成合成? 我的代码正在使用少量的RAM。 我直接将ram描述为模块中的寄存器。 |
|
相关推荐
9个回答
|
|
这些工具应该没有500kbit RAM的问题 - 只有16个块RAM实例。
合成花费很长时间的一个常见原因(尽管一小时不是那么长),RAM不能正确地作为RAM处理,而是实现为500,000个单独的触发器。 除了无法实现之外,这往往会使合成工具的内存占用空间爆炸,从而导致在运行该过程的机器上进行交换(因此永远占用)。 确保用于推断RAM的机制符合语言模板提供的RAM编码指南 工具 - >语言模板 - > {Verilog / VHDL} - >综合构造 - >编码示例 - > RAM - > BlockRAM - > {正确类型的RAM} 此外,由于您已经尝试使用较小的RAM,因此您应该能够打开合成设计并验证RAM是否实现为BlockRAM而不是触发器。 Avrum |
|
|
|
报告单元格用法:
+ ------ + ------- + ------ + | |细胞|计数| + ------ + ------- + ------ + | 1 | BUFG | 2 | | 2 | CARRY4 | 22 | | 3 | LUT1 | 80 | | 4 | LUT2 | 20 | | 5 | LUT3 | 32 | | 6 | LUT4 | 37 | | 7 | LUT5 | 1218 | | 8 | LUT6 | 477 | | 9 | MUXF7 | 80 | | 10 | MUXF8 | 4 | | 11 | FDRE | 1329 | | 12 | IBUF | 2 | | 13 | OBUF | 23 | + ------ + ------- + ------ + 报告实例区域: + ------ + ----------------- + -------------- + ------ + | |实例|模块|单元| + ------ + ----------------- + -------------- + ------ + | 1 | top | | 3326 | | 2 | nolabel_line30 | a | 1346 | | 3 | nolabel_line31 | b | 110 | | 4 | nolabel_line32 | c | 79 | | 5 | nolabel_line33 | d | 1727 | + ------ + ----------------- + -------------- + ------ + 模块d 详细的RTL组件信息: + ---注册: 4位寄存器:= 1201 + --- Muxes: 2输入1位多路复用器:= 1230 -------------------------------------------------- ------------------------------- 完成的RTL分层组件统计 -------------------------------------------------- ------------------------------- -------------------------------------------------- ------------------------------- 启动零件资源摘要 -------------------------------------------------- ------------------------------- 部分资源: DSP:90(长度:60) BRAMs:100(col长:RAMB18 60 RAMB36 30) 我将4800位内存定义为测试,它合成了大约2分钟。 结果是这样的。 我认为通过使用BRam它可以正常工作,或者我应该看看另一个地方。 如果是对的,我猜我应该等待合成的结束。 |
|
|
|
它不使用BRAM,(1200个4位寄存器是4800 DFF - 寄存器是DFF!)
它正在使用DFF。 所以对于500K,它永远不会工作。 Austin Lesea主要工程师Xilinx San Jose |
|
|
|
不,显然不使用BRAM。
如果使用BRAM,则RAMB18E1或RAMB36E1单元将显示在“报告单元使用情况”表中。 话虽如此,您的设计仅使用1329个FF,因此4800位存储器也不在触发器中。 因此,无论是使用LUT作为分布式RAM,还是代码存在问题,实际上并没有实现4800位的存储。 要查看它是否使用分布式RAM,请打开合成设计并执行“report_utilization” - 它将显示“LUT as Memory”计数。 每个LUT可以实现64x1 SRAM。 但是,对于500kbit的RAM,必须使用Block RAM。 即使是分布式RAM也会太大。 再次确保您正确使用RTL模板。 Block RAM必须是同步(1个时钟延迟)读取,而分布式RAM具有异步(0个时钟延迟)读取。 如果您的RTL调用异步读取,那么工具将别无选择,只能在分布式RAM中实现它们,尽管您要求的内存大小太大而无法在分布式RAM中执行... Avrum |
|
|
|
|
|
|
|
谢谢你的回答。
我相信我写的同步Ram。 我随机发现问题是总是阻塞if-else阻塞。 在零或一个条件下,它可以是可合成的。 但是,当我添加第二个条件时,无论是'else'还是另一个'if'在不同的always块中,我的内存块是不可解决的。 我该怎么办? |
|
|
|
If_else块用于决定写入或读取内存。
|
|
|
|
|
|
|
|
对不起,我以前的消息有点乱,所以我删除它。
首先,@ avrumwi在您第一次使用时查看了代码。 但是,我的主要目的是了解我做错了什么。 我成功地隔离了这个问题。 我用了一个内存模块。 我将我的meory定义为寄存器,用电线从外部获取数据并成功存储在我想要的内存地址中。 我也能够从选定的adres读取数据并写入小寄存器)。 当我将输出线连接到这个小寄存器时,问题就出现了。 当我这样做时,合成过程没有完成。 |
|
|
|
只有小组成员才能发言,加入小组>>
2385 浏览 7 评论
2800 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2264 浏览 9 评论
3336 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2433 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
762浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
548浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
375浏览 1评论
1970浏览 0评论
688浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 11:04 , Processed in 1.434814 second(s), Total 93, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号