Verilog 我可以用$readmemb或$readmemh连接、重复或`定义吗?

Verilog 我可以用$readmemb或$readmemh连接、重复或`定义吗?,verilog,hdl,Verilog,Hdl,我正在实现一个单周期MIPS处理器,并使用$readmemb或$readmemh初始化内存。在这种情况下,我想用一些32位指令初始化我的寄存器文件,但我不想手工写出这些指令 我可以将下面这样的方案输入$readmemh并让它将我的内存初始化为这些值吗?我对这些$readmemh和$readmemb有什么限制 `define ADD 5'b0xx01 {1'b1, 5'd0, 5'd0, 5'd0, `ADD, 11'd1} {1'b1, 5'd0, 5'd0, 5'd0, `ADD, 11'd7

我正在实现一个单周期MIPS处理器,并使用
$readmemb
$readmemh
初始化内存。在这种情况下,我想用一些32位指令初始化我的寄存器文件,但我不想手工写出这些指令

我可以将下面这样的方案输入
$readmemh
并让它将我的内存初始化为这些值吗?我对这些
$readmemh
$readmemb
有什么限制

`define ADD 5'b0xx01
{1'b1, 5'd0, 5'd0, 5'd0, `ADD, 11'd1}
{1'b1, 5'd0, 5'd0, 5'd0, `ADD, 11'd7}

不能在传递给
$readmemb
$readmemh
的文件中使用串联、重复或
`define
宏。IEEE标准1800-2012“21.4从文件加载内存阵列数据”一节中描述了这些文件的语法。语法非常有限。值仅用空格分隔,可以包含可选下划线以便于阅读,并且允许使用注释(
/***/
/

可能的替代方案包括:

  • 使用脚本(如Perl)在Verilog之外生成readmem文件
  • 使用Verilog in for循环中显示的连接、重复和定义语法