2013-11-24 2 views
3

ModelSim Student Edition 10.2c를 사용하여 Verilog 프로젝트를 실행하는 데 문제가 있습니다.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를 새로운 오전, 나는 이것이 무엇을 의미하는지 아무 생각이 없다 : 모든 그러나 내가 런타임에 다음과 같은 오류가 오류없이 컴파일합니다. 나는 이것이 내가하고있는 간단한 실수라고 생각한다. 그러나 나는 그것을 해결하는 것처럼 보일 수없고, 구글을 통한 해결책을 찾지도 못했다. 아무도 내가 할 수있는 일이 무엇인지 알지 못해서 내 프로젝트가 잘될 것입니까?

편집 : 나는이 AND, ORNOT가 정의 된 파일을 포함하도록 무능력과 관련이있다 생각합니다. 검색 후, 파일 modelsim.ini이 프로젝트 디렉토리에 있어야 함을 발견했습니다. 그러나 올바른 디렉토리에 modelsim.ini을 배치했지만 여전히 작동하지 않습니다.

편집

: 지금 내 프로젝트에 대한 세 가지 소스 파일을 게시 한 (단순히 조합 회로를 테스트하고 ...) 여기 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

( 출력은, 출력 레지 B,를 REG 모듈 T1 출력 레지스터 ); 사전에

`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 

감사 :

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 

다음은 테스트 벤치 내 코드입니다.

+0

후 컴파일하려고하는 코드입니다. – Russell

+0

제안을 주셔서 감사합니다. 방금 모든 소스 코드를 추가했습니다. – CodeKingPlusPlus

+0

파일을 최상위 파일로 설정할 수 있습니다. –

답변

3

는 소문자 게이트 (and, or를, 등)를 사용하여 시도?

Verilog의 게이트 레벨 모델링의 모든 예에서 이러한 프리미티브는 대문자가 아닌 소문자로 보았습니다.

은 참조 : http://www.asic-world.com/verilog/gate1.html

1

circuit1_assign은 OR, NOT 및 AND라고하는 다른 모듈을 인스턴스화합니다. 도구가 해당 모듈을 찾고 있지만 찾을 수 없기 때문에 오류가 발생합니다. 이러한 모듈을 사용하려면 직접 모듈을 만들어야합니다. 그렇지 않으면 Verilog에서 assign 문을 사용하여 목표를 달성 할 수 있습니다. 이에 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 당신이 작성한 방식이 아닙니다. 위의 대답에서 내가 가지고있는 방법은 당신이 찾고있는 bit-wise, or, and 기능이 아닙니다. 이 기호는 Verilog에 내장되어 있습니다. 여러분이 작성한 방식은 내장 된 구조체를 사용하지 않고 대신 AND, OR 및 NOT이라는 타사 모듈을 찾아 보도록 도구에 지시하는 것입니다. – Russell