我有一个3级移位寄存器,软件始终在双端口RAM中实现它,如何避免基于RAM的移位寄存器?
以下是原始VeriLog代码:
reg [6:0] shft_reg1,shft_reg2,shft_reg3;
总是@(posedge pclk)开始
shft_reg1 <= din;
shft_reg2 <= shft_reg1;
shft_reg3 <= shft_reg2;
结尾
我想将这些转移组件保留为寄存器。
解决方案1:
合成工具将基于某些标准确定是否将顺序移位寄存器作为寄存器,分配-RAM或块RAM实现。用户可以通过指定syn_ramstyle或syn_srlstyle属性来选择不同的实现。该属性可以全局应用于模块或RAM实例。举些例子:
模块(...)/ *综合syn_ramstyle =“block_ram”* /;
或者
reg [3:0] regbank [15:0] / *综合SYN_SRLSTYLE =“寄存器”* /;
有关语法和属性值的更多详细信息,请参阅联机帮助同步参考手册。
解决方案2:
替代解决方案是使用SYN_KEEP属性来保留这些寄存器信号。Synplify将自动实现换档组件作为寄存器。