首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >很难让YOSYS推断块ram数组(而不是使用逻辑单元) verilog ice40

很难让YOSYS推断块ram数组(而不是使用逻辑单元) verilog ice40
EN

Stack Overflow用户
提问于 2020-07-02 19:42:46
回答 3查看 766关注 0票数 0

在最近的一段时间里,我遇到了一些麻烦,因为这个项目经常使用查找表数组,并让你把它们作为块块来推断。Yosys一直认为我的数组应该使用逻辑单元来实现。

示例:

代码语言:javascript
复制
reg signed [11:0] dynamicBuffer [0:2047];

推断为IceStorm LC,从而迅速溢出我的逻辑单元格预算。

代码语言:javascript
复制
Info: Device utilisation:
Info:            ICESTORM_LC: 83524/ 7680  1087%
Info:           ICESTORM_RAM:    18/   32    56%
Info:                  SB_IO:    36/  256    14%
Info:                  SB_GB:     8/    8   100%
Info:           ICESTORM_PLL:     2/    2   100%
Info:            SB_WARMBOOT:     0/    1     0%

我读过数组需要有一个注册的输出,或者Yosys不认为它是ram (这是真的吗?)我试着重新工作,这样我的数组最终会在每次时钟计数时被路由到寄存器。但我还是不能让它起作用。如何正确地处理多个数组,将其中一个数组复制到另一个数组中,并让yosys将它们推断为块ram?我需要避免什么?

EN

回答 3

Stack Overflow用户

发布于 2021-11-28 16:59:41

我读过数组需要有一个注册的输出,或者Yosys不认为它是ram (这是真的吗?)

是的,这是真的。唯一能使Yosys推断为BRAM的方法是使它成为一个具有输入和输出的异步BRAM。我从我的VFD显示控制器项目中获得了这个。

代码语言:javascript
复制
module GRAM(
input R_CLK,
input W_CLK,

input [7:0]GRAM_IN,
output reg [7:0]GRAM_OUT,

input [11:0] GRAM_ADDR_R,
input [11:0] GRAM_ADDR_W,

input G_CE_W,
input G_CE_R);

reg [7:0] mem [3002:0];// change this to what you want.

initial mem[0] <= 255;// fill the first byte to let Yosys infer to BRAM.

always@(posedge R_CLK) begin// reading from RAM sync with reading clock.
    if(G_CE_R)
        GRAM_OUT <= mem[GRAM_ADDR_R];   
end 

always@(posedge W_CLK) begin// writing to RAM sync with writing clock.
    if(G_CE_W)
        mem[GRAM_ADDR_W] <= GRAM_IN;
end

endmodule// GRAM
票数 1
EN

Stack Overflow用户

发布于 2020-07-03 08:22:00

假设您使用的是for循环,如上一个示例所示,硬件中的for循环不像在软件中那样按顺序运行,而是在一个时钟中执行整个副本。您需要使用计数器和状态机来复制副本,而不是使用Verilog for循环。

票数 0
EN

Stack Overflow用户

发布于 2020-07-07 17:57:19

在这种情况下,解决方案是实现异步fifo。

当我连接两个模块时,我正在跨越时钟域,这两个模块需要同步从数组中读取和写入。读写数组之间缺乏协调导致yosys推断该数组不作为块ram实现。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62703942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档