2017-03-17 1 views
0

いいえ、私にとっては機能しません。合成中にエラーが表示されています。先頭の機能Adderには出力がありません。考えられる原因は次のとおりですVIVADO HLS合成エラー

  1. 出力パラメータが

ヘッダファイル

#ifndef ADDERS_H_ 
#define ADDERS_H_ 
#include <cmath> 
#include <fstream> 
#include <iostream> 
#include <iomanip> 
#include <cstdlib> 
using namespace std; 

// Types and top-level function prototype // 
int adders(int in1, int in2, int in3); 
#include "ap_int.h" 
typedef ap_int<8> in1_t; 
typedef ap_int<8> in2_t; 
typedef ap_int<8> out_t; 
void Adder(in1_t inA, in2_t inB, out_t sumAB); 
#endif 

テストベンチコード

を書かされることはありません値
  • 意図出力(パラメータまたはグローバル変数)によって渡されます
    #include <stdio.h> 
    #include "ap_int.h" 
    #include "Adder.h" 
    
    int main() 
    { 
        in1_t inA; 
        in2_t inB; 
        out_t sumAB; 
    
        inA = 15; 
        inB = 15; 
    
        sumAB = inA + inB; 
    
        Adder(inA, inB, sumAB); 
        cout << "A = "<< inA; 
        printf("\n"); 
        cout << "B = " << inB; 
        printf("\n"); 
        cout << "SUM = "<< sumAB; 
        printf("\n"); 
    } 
    
  • +0

    コンテンツを貼り付ける際に、Stackoverflowの書式に従うのが難しい。 – Saras

    +1

    加算器には戻り値の型が 'void'です。 AをBに追加しようとしていますか? int Adder(int a、int b){return a + b;} –

    +0

    ご回答ありがとうございます。私の誤りを指摘している場所。私は理解できません。はい、私はVIVADO HLS 2014を使用して2つの数字を追加しています。3.1 – Saras

    答えて

    0

    あなたのエラーは、加算値関数の出力パラメータを渡していることです。 Cでは、このような値への更新は関数内でのみ表示され、呼び出し元に伝播されません。それをポインタまたは参照で渡すか、@ jp-hellemonsが示唆するように関数から値を返すだけです。例:

    void adder(in_t inA, in_t inB, out_t& sumAB); 
    

    Hereは、関数の引数を参照渡しで説明する素晴らしい記事です。

    関連する問題