如何解决如何使每个模块实例从唯一文件中读取?
在top.v中,我生成pe
模块的X_MAX * Y_MAX实例。在pe.v中,我想初始化专门为该实例生成的内存。例如,在x = 0,y = 1处:“ pe_memory_x0_y0.dat”。这是我的顶级模块的样子:
genvar x,y;
generate for (y = 0; y < Y_MAX; y = y + 1) begin : ys
for (x = 0; x < X_MAX; x = x + 1) begin : xs
pe #(
.X_MAX(X_MAX),.Y_MAX(Y_MAX),.X(x),.Y(y)
)
pe_inst(
.clk(clk),...
);
在pe.v内部,类似
$display("Loading pe memory at (%0d,%0d)",X,Y);
在initial
块中工作!但是当我需要$readmem$
时,
$readmemb({"pe_memory_","_y",Y,".dat"},n_bound_sel_memory);
不起作用:
X的宽度不确定
指定X的宽度(其值来自parameter
的{{1}})会引发更多错误。
我的目标是Xilinx FPGA,我正在尝试使用genvar
模拟我的设计。
解决方法
您可以使用$sformatf
来构建文件名:
$readmemb($sformatf("pe_memory_%0d_y%0d.dat",X,Y),n_bound_sel_memory);
请参阅IEEE Std 1800-2017,第21.3.3节将数据格式化为字符串
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。