2016-05-21 5 views
-2

Я новичок в этом цифрового моделирования, и я написал код ниже. Это всего лишь один сегмент дисплея, в данном случае «e». Я использовал http://www.edaplayground.com/ для пытаться имитировать его, однако я получил следующий каждый раз, когда я пытаюсь запустить его:Какая ошибка в моем коде Verilog?

testbench.sv:13: error: Unable to bind wire/reg/memory Seg_e in `Seg_e_testbench' 1 error(s) during elaboration. Exit code expected: 0, received: 1

module Seg_e (
output reg seg, 
input [3: 0] BCD 
); 


parameter ZERO = 1'b0; 
parameter ONE = 1'b1; 

always @ (BCD) 
    case (BCD) 
    0: seg = ONE; 
    1: seg = ZERO; 
    2: seg = ONE; 
    3: seg = ZERO; 
    4: seg = ZERO; 
    5: seg = ZERO; 
    6: seg = ONE; 
    7: seg = ZERO; 
    8: seg = ONE; 
    9: seg = ZERO; 
default: seg = ZERO; 
endcase 

endmodule 

module Seg_e_testbench; 


wire seg; 
reg [3: 0] BCD; 

parameter ZERO = 1'b0; 
parameter ONE = 1'b1; 

initial #250 $finish; 

initial fork 
    $dumpfile("dump.vcd"); 
    $dumpvars(1,Seg_e); 

    #10 BCD = 0; 
    #20 BCD = 1; 
    #30 BCD = 2; 
    #40 BCD = 3; 
    #50 BCD = 4; 
    #60 BCD = 5; 
    #70 BCD = 6; 
    #80 BCD = 7; 
    #90 BCD = 8; 
    #100 BCD = 9; 

join 
    Seg_e M0 (seg, BCD); 


endmodule 
+1

У вас есть условие гонки с $ DUMPFILE и $ dumpvars. Нет гарантии, что $ dumpfile выполнит 1-й. Вы можете заключить их в начало/конец. – toolic

ответ

2

Укажите имя модуля экземпляра, а не имя модуля в $dumpvars заявлении:

$dumpvars(1, M0); 

См. Раздел IEEE Std 1800-2012, раздел «21.7.1.2. Указание переменных, подлежащих сбросу ($ dumpvars)».

Смежные вопросы