2015-10-05 130 views
0

我嘗試添加MIF文件中的測試benh,我得到錯誤的未解決的參考「記憶」

這裏我使用的ModelSim仿真和我收到錯誤的 UNRESOLVED參考MEMEORY 非法輸出或端口'dout'的端口連接。

錯誤加載設計

`timescale 1ns/1ps 

    module ESC_tb; 


    // Internal TB Signal Definition 
    reg clock; 
    reg reset; 
    wire [4:0] pc_out; 
    wire [7:0] acc_out; 
    wire [7:0] mdr_out; 
    // DUT Instantiation 
    ESC instESC(.clock (clock), 
        .reset (reset), 
        .pc_out (pc_out), 
        .acc_out(acc_out), 
        .mdr_out(mdr_out) 
        ); 
    // Initialize block for Clock and Reset 
    initial 
    begin : RESET 

     reset = 0; 
     #7 reset = 1; 
     #18 reset = 0; 

    end 

    initial 
    begin : CLOCK 

     clock = 1; 
     #5 clock = 0; 
     forever #(5) clock = ~clock; 

    end 

    // Loading Program and Data Memory 
    initial 
    begin : MEMLOAD 
     #5; 
**// GETTING ERROR AT THIS POINT**  
     $readmemh("program.mif", memory); 

//

$display("Loaded Memory with program.mif file"); 
    end 

    initial 
    begin : DUMP_FINISH 
     $dumpvars; 
     #1000 
     $finish(2); 
    end 
    endmodule 

MEMORY.FILE

module memory (clock, addr, din, we, dout,clear); 
// Input/Output Declaration 
    input clock; 
    input [4:0] addr; 
    input [7:0] din; 
    input we,clear; 
    output [7:0] dout; 

    // Signal Type Definition 
    wire clock; 
    wire [4:0] addr; 
    wire [7:0] din; 
    wire we; 
    wire [7:0] dout;// Memory Array Declaration of Size 16x256 
    reg [7:0] mem [0:31]; 
// Memory Write Operation 
always @(posedge clock) 
begin 
    if(we) 
    mem[addr] <= din; 
    if(clear) 
    mem[addr] <= 0; 

end 
// Memory Read Operation 

assign dout = mem[addr]; 
// End of Module Declaration 


endmodule 

回答

0

memory是一個模塊,$readmemh正在尋找的陣列。您需要提供從測試臺到mem(在memory模塊內)的完整路徑,或在memory模塊內調用$readmemh

  • 從TB:$readmemh("program.mif", ESC_tb.instESC./*rest of path*/.mem);
  • memory模塊:initial $readmemh("program.mif", mem);