2013-11-24 2 views
3

У меня возникли проблемы с запуском проекта Verilog с ModelSim Student Edition 10.2c. Все компилируется без ошибок, однако я получаю следующее сообщение об ошибке во время выполнения:Ошибка времени выполнения Verilog и ModelSim

# vsim -gui work.testbench 
# Loading work.testbench 
# Loading work.circuit1_assign 
# ** Error: (vsim-3033) C:/Modeltech_pe_edu_10.2c/examples/circuit1_assign.v(14): Instantiation of 'OR' failed. The design unit was not found. 
# 
#   Region: /testbench/c 
#   Searched libraries: 
#    C:/Modeltech_pe_edu_10.2c/examples/hw4 
# ** Error: (vsim-3033) C:/Modeltech_pe_edu_10.2c/examples/circuit1_assign.v(16): Instantiation of 'NOT' failed. The design unit was not found. 
# 
#   Region: /testbench/c 
#   Searched libraries: 
#    C:/Modeltech_pe_edu_10.2c/examples/hw4 
# ** Error: (vsim-3033) C:/Modeltech_pe_edu_10.2c/examples/circuit1_assign.v(18): Instantiation of 'AND' failed. The design unit was not found. 
# 
#   Region: /testbench/c 
#   Searched libraries: 
#    C:/Modeltech_pe_edu_10.2c/examples/hw4 
# Loading work.t1 
# Error loading design 

Как я новичок в Verilog, я понятия не имею, что это значит. Я думаю, что это простая ошибка, которую я делаю, но я не могу ее решить, и не нашел решения через Google. Кто-нибудь знает, что я могу сделать, чтобы мой проект работал?

EDIT: Я считаю, что это связано с невозможностью включить файл, где AND, OR и NOT определены. После googling я обнаружил, что файл modelsim.ini должен быть помещен в каталог проекта. Тем не менее, я разместил modelsim.ini в правильном каталоге, но он все равно не работает.

EDIT: Теперь я отправил все три исходные файлы для моего проекта (который просто тестирование комбинационной схемы ...) Вот мой код circuit1_assign.v:

module circuit1_assign 
    (
    input x, 

    input y, 

    input z, 

    output f 
); 

    wire w1, w2; 

    OR o1 (.i0(x), .i1(y), .o(w1)); 

    NOT n1 (.i2(z), .o(w2)); 

    AND a1 (.i3(w1), .i4(w2), .o(f)); 


endmodule 

Вот код для теста:

`Временные рамки 1ns/1ps

модуль t1 ( выходной рег а, выход р б, выход reg c );

initial 
    begin 
     a = 0;  //Do all combinations of possible input values  
     b = 0; 
     c = 0; 
     #10 a = 0; 
     #10 b = 0; 
     #10 c = 1; 
     #10 a = 0; 
     #10 b = 1; 
     #10 c = 0; 
     #10 a = 0; 
     #10 b = 1; 
     #10 c = 1; 
     #10 a = 1; 
     #10 b = 0; 
     #10 c = 0; 
     #10 a = 1; 
     #10 b = 0; 
     #10 c = 1; 
     #10 a = 1; 
     #10 b = 1; 
     #10 c = 0; 
     #10 a = 1; 
     #10 b = 1; 
     #10 c = 1; 
     #10 $finish; 
    end 
endmodule 

Вот мой код тестбенча:

`timescale 1ns/1ps 
module testbench(); 
    wire l, m, n, o; 

    circuit1_assign c 
    (
     .x (l), 
     .y (m), 
     .z (n), 
     .f (o) 
    ); 

    t1 t 
    (
     .a (l), 
     .b (m), 
     .c (n) 
    ); 

    initial 
    begin 
     $monitor ($time,,"l=%b, m=%b, n=%b, o=%b", 
         l, m, n, o); 
    end 

endmodule 

Спасибо заранее.

+0

Post код, который вы пытаетесь скомпилировать. – Russell

+0

Спасибо за предложение, я просто добавил весь исходный код. – CodeKingPlusPlus

+0

Вы можете попробовать установить файл как файл верхнего уровня –

ответ

3

Вы пробовали строчные ворота (and, or, и т.д.)?

В каждом примере моделирования уровня ворот в verilog я видел эти примитивы в нижнем регистре, а не в верхнем регистре.

См: http://www.asic-world.com/verilog/gate1.html

1

Ваша схема1_assign создает другие модули, называемые OR, NOT, AND. Инструменты ищут эти модули, но не могут их найти, поэтому они вызывают ошибку. Если вы хотите использовать эти модули, вам необходимо создать их самостоятельно. В противном случае вы можете использовать операторы присваивания в Verilog для достижения своей цели. Вы можете изменить circuit1_assign к этому:

assign w1 = x | y; 
assign w2 = ~z; //I think this is right? 
assign f = w1 & w2; 
+0

'AND',' OR' и 'NOT' не включены в какой-либо стандартный заголовок? – CodeKingPlusPlus

+0

@CodeKingPlusPlus Не так, как вы их написали. То, как я их отвечу в ответ выше, является бит-мудрой и, или, а не функциональностью, которую вы ищете. Эти символы встроены в Verilog. То, как вы написали это, подразумевает, что вы не хотите использовать какие-либо встроенные конструкции, вместо этого он говорит, что инструменты должны искать некоторые сторонние модули под названием AND, OR и NOT. – Russell

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