完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,
我正在建模一个小的fifo,在合成后vivado 2015.3总是显示以下警告: [Synth 8-3332]顺序元素( fifo_control / read_ptr_reg_reg_rep [0])未使用,将从模块fifo中删除。 我注意到删除的寄存器有'_rep'posfix,在这个论坛的其他帖子上我读到这意味着它们区域重复的寄存器,但是我没有在我的RTL中描述这些寄存器。 有没有人知道什么可以推断那些重复的寄存器?这是我的RTL: 模块fifo ( 输入线clk, 输入线复位, // - 输入--------------------------------------------- ---- >>>>> 输入线write_strobe_din, 输入线read_strobe_din, 输入线[31:0] write_data_din, // - 输出--------------------------------------------- --- >>>>> 输出线empty_flag_dout, 输出线full_flag_dout, 输出线[31:0] read_data_dout ); wire [3:0] write_addr; wire [3:0] read_addr; wire write_enable; fifo_control fifo_control ( .clk(CLK), .reset段(重置), // - 输入--------------------------------------------- ---- >>>>> .write_strobe_din(write_strobe_din), .read_strobe_din(read_strobe_din), // - 输出--------------------------------------------- --- >>>>> .empty_flag_dout(empty_flag_dout), .full_flag_dout(full_flag_dout), .write_enable_dout(WRITE_ENABLE), .write_addr_dout(WRITE_ADDR), .read_addr_dout(read_addr) ); registerFile_distRAM register_file ( .clk(CLK), // - 输入--------------------------------------------- >>>>> .write_strobe_din(WRITE_ENABLE), .write_address_din(WRITE_ADDR), .write_data_din(write_data_din), .read_address_din(read_addr), // - 输出--------------------------------------------> >>>> .read_data_dout(read_data_dout) ); endmodule // fifo 模块fifo_control#( 参数BUFFER_WIDTH = 10 ) ( 输入线clk, 输入线复位, // - 输入--------------------------------------------- ---- >>>>> 输入线write_strobe_din, 输入线read_strobe_din, // - 输出--------------------------------------------- --- >>>>> 输出线empty_flag_dout, 输出线full_flag_dout, 输出线write_enable_dout, 输出线[3:0] write_addr_dout, 输出线[3:0] read_addr_dout ); reg [3:0] write_ptr_reg; wire [3:0] write_ptr_next; reg [3:0] read_ptr_reg; wire [3:0] read_ptr_next; reg full_reg; wire full_next; reg empty_reg; wire empty_next; // - Elementos de memoria --------------------------------------- >>>> > 永远@(posedge clk) 开始 如果(重置) 开始 write_ptr_reg >>>> assign write_addr_dout = write_ptr_reg; assign read_addr_dout = read_ptr_reg; 分配write_enable_dout = ~full_reg& write_strobe_din; assign empty_flag_dout = empty_reg; assign full_flag_dout = full_reg; // - Logica de estado siguiente --------------------------------- >>>>> wire [3:0] write_ptr_succ; wire [3:0] read_ptr_succ; assign write_ptr_succ =(write_ptr_reg == BUFFER_WIDTH)? {4 {1'b0}}: write_ptr_reg + 1'b1; 分配read_ptr_succ =(read_ptr_reg == BUFFER_WIDTH)? {4 {1'b0}}: read_ptr_reg + 1'b1; assign write_ptr_next =(write_strobe_din& ~full_reg)? write_ptr_succ:write_ptr_reg; 分配read_ptr_next =(read_strobe_din&〜empty_reg)? read_ptr_succ:read_ptr_reg; assign full_next =(write_ptr_succ == read_ptr_reg)? 1'b1:1'b0; assign empty_next =(read_ptr_succ == write_ptr_reg)? 1'b1:1'b0; endmodule // fifo_control 模块registerFile_distRAM ( 输入线clk, // - 输入--------------------------------------------- ---- >>>>> 输入线write_strobe_din, 输入线[3:0] write_address_din, 输入线[31:0] write_data_din, 输入线[3:0] read_address_din, // - 输出--------------------------------------------- --- >>>>> 输出线[31:0] read_data_dout ); // --- Definiciones Locales -------------------------------------- >>>>> // - Modelado de matriz de almacenamiento ----------------------- >>>>> reg [31:0] REG_FILE [0:9]; // - Puerto de escritura sincrono ------------------------------- >>>>> 永远@(posedge clk) if(write_strobe_din) REG_FILE [write_address_din] >>>> assign read_data_dout = REG_FILE [read_address_din]; // - Codigo no sintetizable ------------------------------------- >>>>> // - Funciones --------------------------------------------- - >>>>> // - Rutina de Inicializacion de Registro --------------- >>>>> / *整数rf_index; 初始 for(rf_index = 0; rf_index >>>> 函数整数clog2; 输入整数深度; for(clog2 = 0; depth> 0; clog2 = clog2 + 1) depth = depth >> 1; endfunction这样 endmodule 谢谢! |
|
相关推荐
2个回答
|
|
Hi@hector.cabrera.v,
要保留等效寄存器,请更改综合设置中的参数。(请参阅快照) 谢谢,Arpan 谢谢,Arpan ----------------------------------------------- - - - - - - - - - - - - - - - - - - - - - - - -请注意- 如果提供的信息有用,请将答案标记为“接受为解决方案”。给予您认为有用且回复的帖子。感谢Kudos .-------------------- -------------------------------------------------- ------------------------ 在原帖中查看解决方案 |
|
|
|
谢谢,删除警告,但是,我没有在我的RTL上描述那些额外的4个寄存器。
如果我合成控制模块它只需要10 FF,如果我合成分布式RAM它不需要任何FF,但是当我合成整个设计时,我激活了保持等效寄存器选项它需要14 FF。 这4个额外的FF来自哪里? 问候 |
|
|
|
只有小组成员才能发言,加入小组>>
2388 浏览 7 评论
2803 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2270 浏览 9 评论
3338 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2438 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
765浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
549浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
379浏览 1评论
1972浏览 0评论
689浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 13:36 , Processed in 1.427020 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号