2014-10-26 205 views
0

我想编译我的模块,当我从测试台中删除badData寄存器时,它工作正常。然而,我添加它的那一刻,verilog抱怨“错误加载设计”。Verilog:无法将寄存器作为输出连接?

模块代码:

module hamming_code #(parameter TOTAL_LENGTH = 15, 
           parameter PARITY_BITS = 4 
          ) 
       (
        //inputs 
        input [TOTAL_LENGTH-1:0] codeword, 

        //outputs 
        output [TOTAL_LENGTH-1:0] correctedWord, 
       output reg badData 
       ); 

测试平台代码:

`timescale 1ns/1ps 
module tb(); 
integer pass_count, fail_count; 
reg clock; 
reg [14:0] cw; 
wire [14:0] ccw; 
reg error; 
integer i; 

hamming_code uut (// Inputs 
          .codeword(cw), 
          // Outputs 
          .correctedWord(ccw), 
          .badData(error) 

         ); 

initial begin 
// initial values 
clock <= 0; 
pass_count <= 0; 
fail_count <= 0; 
error <= 0; 
wait(0); 
end 

[email protected](*) 
#5 clock <= ~clock; 

endmodule 
+0

你是否也删除了尾随逗号?你可以发布失败和正在运行的版本,并包括你得到的实际错误。 – Morgan 2014-10-26 17:17:54

+0

我已将代码移至pastebin,因为它有点长:http://pastebin.com/u9w5Ef8Y 这是失败的版本。 – Faytll 2014-10-26 17:22:25

+1

我已将它复制到[EDA Playground](http://www.edaplayground.com/x/Xim),但看起来像问题中发布的相同版本。在那里编译好。 – Morgan 2014-10-26 20:19:28

回答

1

BadData是从uut输出。 它应该连接到TB中的wire。也不应该在TB中分配任何值(您正在分配0)。

当你删除reg error时,它自动推断为wire。这就是为什么没有错误。