2011-08-04 4 views
1

Verilog에서 FatICA 알고리즘을 구현하려고합니다. 나는 전체 코드를 작성했으나 시뮬레이션 할 때까지 오류는 보이지 않지만 코드를 합성하려고 할 때 ""; 대신 ""대신에 ""을 기대하는 오류가 발생합니다. "Verilog에서 합성 오류

나는 4 개의 부동 소수점 모듈을 산술에 사용하고 있습니다. 이제 도트 연산자

을 사용하여 개별 인스턴스를 액세스하고

genvar s; 

generate 
    for(s=1;s<=4000;s=(s+1)) 

    begin:cov_mul_ins 
      Float32Mul cov_mul (.CLK(clk), 
         .nRST(1'b1), 
         .leftArg(dummy_14), 
         .rightArg(dummy_15), 
         .loadArgs(1'b1) 
         ); 
    end 
endgenerate 

생성 대해 calculations.Following 사이에 대한 루프에 사용 I가 SQRT, 합계 1000 개 인스턴스를 생성하고 계산 ... 등은 코드

for(d=1;d<=2;d=(d+1)) 

begin 
    for(e=1;e<=2;e=(e+1)) 
    begin 
     for(c=1;c<=1000;c=(c+1)) 
      begin 
     if((d==1)&&(e==1)) 
      begin 
      dummy_14=centered_data_copy[d][c]; 
      dummy_15=Parent.centered_data_float_trans[c][e]; 

     #10 ***cov_mul_ins[c].cov_mul***(.CLK(clk), 
          .nRST(1'b1), 
          .leftArg(dummy_14), 
          .rightArg(dummy_15), 
          .loadArgs(1'b1), 
          .product(cov_temp[c][1]) 
          ); 

감사하겠습니다. 누군가 내가 잘못하고있는 것을 지적 할 수 있다면. 고맙습니다! 사물의

+0

@osgx 나는 생성 문에 오류가 없다고 생각하지만 적절한 way.I에서 인스턴스화 된 모듈을 처리하는 경우 잘 모르겠습니다. 웹에서 검색했지만 아무 것도 찾지 못했습니다. 그런 다음 비슷한 배열 인스턴스화가있는 samir palnitkar의 책에 예제가 있었기 때문에이를 따라했습니다. 시뮬레이션 중에는 오류가 나타나지 않지만 합성하는 동안 오류가 발생합니다. 답장을 보내 주셔서 감사합니다. – optimus

답변

2

커플주의해야 :

  • 모듈 참조 중 합성 할 수 없습니다. 즉, 코드를 합성 할 수 있도록하려면 인스턴스화 된 모듈을 "들여다보고"그물을 보거나 함수를 호출 할 수 없습니다. 그래도 테스트 벤치는 대단한거야.
  • 귀하의 시도 함수 호출이 나는 softwarey에서 당신의 생각을 볼 수 있습니다 #10 cov_mul_ins[c].cov_mul (...);

무시됩니다 그것에 지연, 즉,이 - 모든 -에 - A-클래스를 할 수-넣어 앤 콜 - 방법 방법. 이것은 테스트 벤치에 완벽하지만, 합성은 불평 할 것입니다. 하드웨어에 관해서는, 하드웨어를 생각할 필요가 있습니다. 알고리즘을 실행하기 위해 어떤 블록을 빌드해야하는지 스스로에게 물어보십시오. 예를 들어, 알고리즘이 각 입력 샘플에 30 곱셈을 필요로한다면, 곱셈기의 30 인스턴스 나 하나의 곱셈기가 필요하며이를 통해 30 연산을 순서대로 처리해야합니다. 또는 샘플주기 당 2 곱셈을하는 15 개의 곱셈기 또는 3을하는 10 곱셈기 ...

+0

당신이 제안하는 것이 제 것보다 더 나은 접근이라고 생각합니다. – optimus

+2

빌드하려는 회로의 블록 다이어그램이 있습니까? 그렇지 않다면, 일반적으로 하나를 그리는 것이 좋습니다. 거대한 데이터 경로라면 모든 인스턴스를 그릴 필요가 없습니다. 러프 블록 다이어그램은 반복되는 블록을 확인하고 코드를 작성하는 데 도움을줍니다. – Marty

+1

또한 인스턴스화 할 때 곱셈기의 출력을 연결해야합니다. – Marty

0

"# 10"은 합성 할 수 없기 때문에 삭제하십시오.