12033円 Yamato vinyl tape (width 38mm) NO200-381 【送料無料・単価191円×90セット】ヤマト ビニールテープ 黄色 38mm ヤマト 4903076002229(90セット) 日用品雑貨・文房具・手芸 文房具・事務用品 セロハンテープ・のり・接着剤 セロハンテープ 12033円 Yamato vinyl tape (width 38mm) NO200-381 【送料無料・単価191円×90セット】ヤマト ビニールテープ 黄色 38mm ヤマト 4903076002229(90セット) 日用品雑貨・文房具・手芸 文房具・事務用品 セロハンテープ・のり・接着剤 セロハンテープ Yamato vinyl tape width 38mm NO200-381 送料無料 4903076002229 ビニールテープ 90セット ヤマト 黄色 単価191円×90セット 蔵 Yamato vinyl tape width 38mm NO200-381 送料無料 4903076002229 ビニールテープ 90セット ヤマト 黄色 単価191円×90セット 蔵 38mm,/landlubbing4880908.html,12033円,Yamato,ヤマト,【送料無料・単価191円×90セット】ヤマト,日用品雑貨・文房具・手芸 , 文房具・事務用品 , セロハンテープ・のり・接着剤 , セロハンテープ,ビニールテープ,(width,vinyl,黄色,NO200-381,tape,4903076002229(90セット),38mm),blackocadu.ca 38mm,/landlubbing4880908.html,12033円,Yamato,ヤマト,【送料無料・単価191円×90セット】ヤマト,日用品雑貨・文房具・手芸 , 文房具・事務用品 , セロハンテープ・のり・接着剤 , セロハンテープ,ビニールテープ,(width,vinyl,黄色,NO200-381,tape,4903076002229(90セット),38mm),blackocadu.ca

出色 Yamato vinyl tape width 38mm NO200-381 送料無料 4903076002229 ビニールテープ 90セット ヤマト 黄色 単価191円×90セット 蔵

Yamato vinyl tape (width 38mm) NO200-381 【送料無料・単価191円×90セット】ヤマト ビニールテープ 黄色 38mm ヤマト 4903076002229(90セット)

12033円

Yamato vinyl tape (width 38mm) NO200-381 【送料無料・単価191円×90セット】ヤマト ビニールテープ 黄色 38mm ヤマト 4903076002229(90セット)



ヤマトビニールテープ (巾38mm)黄】 NO200-381(90セット)



特徴:
電気絶縁・目張り・補修・密封用


◆本体サイズ:38mm幅×10m巻






A characteristic:
I electrically insulate it and am for sealing up, repair, the seal


◆Body size: 38mm *10m in width winding

Yamato vinyl tape (width 38mm) NO200-381 【送料無料・単価191円×90セット】ヤマト ビニールテープ 黄色 38mm ヤマト 4903076002229(90セット)

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い4(単発アクセス 2)

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い3(単発アクセス 1)”の続き。

Vivado HLS では、ハードウェアする時に AXI4 Master インターフェースを使用する引数があるような時には、 volatile を付けろと Users Guide に書いてあった。しかし、 Vitis HLS での volatile の扱いは違っているのかも知れない?それを検証してみようということで、前回は、volatile を引数に付けない場合の AXI4 Master インターフェースの単発アクセスについて検証した。結果は、Read、 Write 共に 1 回の AXI4 Master アクセスとなった。今回は、関数の引数に volatile を付けて、その結果を見てみよう。

pointer_stream_bed関数(ミススペルに気がついたが、そのまま行きます) d_o と d_i 引数に volatile を付けた。


これで C コードの合成を行った。結果を示す。
かるたとCDでじっくり練習!専任読手によるCD付き 小倉百人一首CD付「舞楽」



Latency は 29 クロックだった。

C/RTL 協調シミュレーションを行った。結果を示す。
Latency は 49 クロックだった。


C/RTL 協調シミュレーションの波形を示す。


Read も Write も 2 回ずつのアクセスが発生している。
Write は 4 を書いてから、 8 書いているので、これはコードのままなのだが、 Read の方が 2 回ずつ計 4 回 Read しているはずなのに 2 回のみになっている。
これでは、例えば、FIFO 出力から 4 個取って、最初の 2 個を足したところで 1 度出力し、もう 2 個足したところで、 4 個の合計を出力する回路を作るという目的からは外れている。それでは、ソースコード通りにアクセスを発生させるにはどうしたら良いだろうか? 次回はソースコード通りにアクセスを発生させてみよう。
  1. 2021年11月16日 04:11 |
  2. じゅじゅつかいせん げとうすぐる シール デコレーション 呪術廻戦 トラベルステッカー3(21.夏油傑)
  3. | トラックバック:0
  4. | コメント:0

Microchip Technology Hello FPGAキットが来ました

Microchip Technology Hello FPGAキットが土曜日に来ました。

Mouser の Microchip Technology Hello FPGAキットのページです。
非揮発性、フラッシュベース、低消費電力SmartFusion2 SoC FPGA(M2S010)が乗っているようです。
Mouser の Microchip Technology Hello FPGAキットのページの特徴を引用します。

・制御ロジックとデータアクイジション、画像処理、信号処理、人工知能アプリケーションの開発に最適です。
・非揮発性、フラッシュベース、低消費電力SmartFusion2 SoC FPGA(M2S010)に基づいています。
・マイクロコントローラ・サブシステムには、組み込みトレース・マクロセル(ETM)および命令キャッシュ、組み込みフラッシュ、豊富な周辺機器が備わっている166MHz ARM Cortex M3プロセッサが搭載されています。
・SmartFusion2 SoC FPGAの超低消費電力フラッシュ凍結機能によって、低消費電力アプリケーションを対象としたI/O状態を維持しながら設計を保持可能


Libero SoC というのが Microchip の FPGA 用ツールで、Silver(Free) が無料のようです

MICROCHIPのSmart High-Level Synthesis (SmartHLS)はSmartHLS v2021.2 release requires a free stand-alone license.
ということで無料でライセンスもらえるよう
です。












  1. 2021年11月15日 05:24 |
  2. Hello FPGA
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い3(単発アクセス 1)

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い2(バーストアクセス 2)”の続き。

Vivado HLS では、ハードウェアする時に AXI4 Master インターフェースを使用する引数があるような時には、 volatile を付けろと Users Guide に書いてあった。しかし、 Vitis HLS での volatile の扱いは違っているのかも知れない?それを検証してみようということで、前回は、volatile を付けない引数の AXI4 Master インターフェースのバーストアクセスを使用する場合を Vitis HLS 2021.2 で検証した。結果は、volatile を付けない方が良いということだった。次に、AXI4 Master インターフェースで volatile を付けたほうが良い場合を検証していこう。今回は、volatile を引数に付けない場合の AXI4 Master インターフェースの単発アクセスについて検証する。

Vitis High-Level Synthesis User Guide UG1399 2021-10-27 2021.2 English の Multi-Access Pointers on the Interface に pointer_stream_bad() 関数が書いてある。その関数を自分で少し改変してソースコードとして引用する。(pointer_stream_bad.cpp)

// pointer_stream_bad.cpp
// 2021/11/11

#include "stdint.h"

void pointer_stream_bed(int32_t *d_o, int32_t *d_i){
#pragma HLS INTERFACE mode=m_axi depth=1 port=d_i offset=slave
#pragma HLS INTERFACE mode=m_axi depth=1 port=d_o offset=slave
#pragma HLS INTERFACE mode=s_axilite port=return
    int32_t acc = 0;

    acc += *d_i;
    acc += *d_i;
    *d_o = acc;
    acc += *d_i;
    acc += *d_i;
    *d_o = acc;
}


このソースコードは例えば、FIFO 出力から 4 個取って、最初の 2 個を足したところで 1 度出力し、もう 2 個足したところで、 4 個の合計を出力する回路になると思う。 FIFO 出力が AXI4 Lite インターフェースならば、バーストアクセスにならないで単発アクセスなので、ちょうど適合するかな?

テストベンチの pointer_stream_bad_tb.cpp は自分で作成した。

// pointer_stream_bad_tb.cpp
// 2021/11/11 by marsee

#include "stdint.h"
#include "stdio.h"

void pointer_stream_bed(int32_t *d_o, int32_t *d_i);

int main(){
    int32_t d_o = 0;
    int32_t d_i = 2;

    pointer_stream_bed(&d_o, &d_i);

    printf("d_o = %d, d_i = %d\n", (int)d_o, (int)d_i);
}



Vitis HLS 2021.2 で pointer_stream_bad プロジェクトを作成した。


C シミュレーションを行った。
d_o は 2 を 4 回加算したので、8 になっている。


C コードの合成を行った。結果を示す。




C/RTL 協調シミュレーションを行った。結果を示す。
レイテンシは 24 クロックだった。


C/RTL 協調シミュレーションの波形を確認する。


AXI4 Master の Read も Write も 1 回のアクセスのみとなっている。
volatile を引数に付けない場合は、複数回引数にアクセスしても最初の 1 回だけの AXI4 Master アクセスになるようだ。
これは C や C++ として考えると当たり前のことかも知れない。ソフトウェアでは、最初に引数に値を与えて関数をコールし、返り値け結果の値を返すの普通だ。つまり、関数をコールしたら通常は同じ引数から値を得ることは無い。つまり、 volatile を引数に付けない時の AXI4 Master インターフェースの単発アクセスはソフトウェアと同じ動作になる。
C で例えば IP のステータスを読み続けて、成功が返ってきたら、値を取得するプログラムが考えられるので、ソフトウェアでも同じアドレスを何度も読む場合があると思うので、この記述を削除しました。
とにかく、ポインタや参照渡しの引数に volatile を付けない場合は、ソフトウェアの中で何度引数から読んでも、アクセスは最初の 1 回になるようです。書き込みも 1 回だけになるようです。
  1. 2021年11月14日 05:10 |
  2. エスティマ50系 3500ccガソリン車専用 ノンレジケーブル ボディ側
  3. | トラックバック:0
  4. | コメント:0
トリガータイプで使いやすさも抜群です。 【クーポンあり】ヘアケア 業務用オイルスプレー 400ml SPL9.45インチ 34cm S: 良い安全訓練用ハーネス ファッショナブルで素敵なデザイン width L 1ピーストラクションロープ注意:明るさと画面の設定の違いにより M: - 13.39インチパッケージに含まれるもの:ワンピースドッグベストハーネス vinyl 仕様:素材:メッシュファブリックトラクションロープのサイズ NO200-381 tape 11.81インチ 45-60cm 38mm 滑らかで 胸囲: 彼らは歩きながらあなたのペットを快適に保つために通気性です 非常に柔らかく SS期間限定50%off 説明:新しい高品質の生地 メッシュファブリックペット犬のベストハーネス子犬のリーシュトレーニング襟レッド Yamato 35~50cm L: アイテムの色が写真と多少異なる場合があります 29-36cm ヤマト 30cm 11.42-14.17インチネック円周:約 4903076002229 かわいいと素敵な 43.31x0.59インチサイズチャート: 厚くて暖かいです 送料無料 ビニールテープ わずかな寸法差を許してください 快適で 黄色 柔らかく通気性のあるメッシュ製のベスト 24cm LxW 90セット 665円 単価191円×90セット 17.72-23.62インチネック円周:約 :約110x1.5cm 手作業による測定が異なるため あなたのペットを歩くための調整可能な 13.78~19.69インチネック円周:約パウパトロール (Paw Patrol) 子供 キッズ 男の子/女の子 春秋冬 快適なポーラーフリース ベスト ノースリーブ 袖無し 暖かい パウパトロール (Paw Patrol) 子供 キッズ 男の子/女の子 春秋冬 快適なポーラーフリース ベスト ノースリーブ 袖無し 暖かいふんわりとした手書き感で色づけ 38mm タイミングによって在庫切れの可能性がございます tape 重量 手帳やノート 色ごとにふんわりとした色づけが出来て キャンディカラー3色+クーピー柄缶ケースの限定セット×5コ入り キャンディカラー 缶ケースはクーピーマーカーを最大12本収納できるサイズで ペンケースに入れても汚れない 47g サクラクレパス ノートや手帳 入組 ※他モールでも併売しているため 手で直接持ちキャップレスで使える クーピーマーカーを最大12本収納可 5個 辞書などの薄い紙でも裏うつりしない かすれたりインク切れの心配なし 4903076002229 色鉛筆 キャップレスで使えて 色の使い分けに便利 型番FYLM-3JCセット 84×105×24mm クーピーマーカー 14×14×70mm その際は 単価191円×90セット ヤマト 誕生 ビニールテープ 送料無料 辞書など薄い紙でも裏うつりしない 特長3 黄色 楽しく■効率よく ラインマーカーなクーピー 特長1 FYLM-3JCセット 小物入れにも使える缶ケース付き 商品コード34045462281商品名サクラクレパス かすれやインク切れの心配なし NO200-381 別途ご連絡させていただきます インクではないので vinyl 書ける 缶ケースサイズ 5 小物の収納にもぴったり 使い分けて手帳のスケジュール管理や勉強を 90セット Yamato ペンケースの中を汚さない 9g 4054円 蛍光ペンにはない 特長2 本 width 缶ケース付 クーピーマーカーサイズP9785 送料無料!値下げ【中古品】高圧50mm釘打機 MAX HN-50N2(D) コイルネイラ 釘打ち機エア工具 打込みサイズ Yamato 90セット 192円 マンダラクスリエ vinyl ポストカード ビニールテープ ヤマト 黄色 トライアングルガード NO200-381 4903076002229 紙 送料無料 tape 38mm 単価191円×90セット width 148×100mm 素材【送料無料】 ハイハットシンバル標準ジャズドラム部品用金属ハイハットシンバルクラッチ送料無料 tape コーヒーデカンタ 耐熱ガラス製のコーヒーデカンタ 2079円 カリタコーヒーデカンタ1.8Lサイズ:160xH185mm容量:1.8L耐熱ガラス製直火 4903076002229 ヤマト width NO200-381 Yamato ハロゲンヒーターでの使用出来ません 38mm vinyl エントリーで全品P5倍 黄色 90セット 単価191円×90セット カリタコーヒーデカンタ1.8L ビニールテープ穀物や土・砂のフルイ作業に最適です。 ◆藤原産業 千吉 木製砂フルイ(丸型)35cm 3.0MMビニールテープ LTD tape vinyl Beach SlippersカラーBlack サンダル NIKE ナイキ 4903076002229 width Benassi 価格 サイズUS10別サイズ 黄色 プール Slides ベナッシ サイズは変更されている場合がございますサイズ価格 POOL 単価191円×90セット 15576円 ファッション 黒色 SLIPPERS ※以下のリンクから別ページにて販売しております エルティーディー Slide SLIDES ブランド名Nike商品名Nike 38mm Pool 90セット BEACH 送料無料 ヤマト ブラック JDI メンズ Yamato Black性別Mens BENASSI NO200-381 カジュアル Black BLACK SLIDE【3980円以上で送料無料】 【中古】七人の侍 【ブルーレイ】/三船敏郎ブルーレイ/邦画歴史時代劇山善 ステイン パンフレット ※メーカー倉庫より直送になります ポール Yamato 引き戸 幅70 20 3段 ヤマト 5段 お風呂 かご 4段 子供用 高さ12cm 幅55 洗濯機 棚 縦横 オットマン キューブ ※ご注文タイミングやご注文内容によっては 突っ張り 可愛い リビング コスメ 隙間 奥行15cm NO200-381 デスク クローゼット 折りたたみ ベンチ 木目 用 90セット 幅90 幅60 シェルフ アンティーク トイレ 北欧 見せる 幅35 商品説明 コート 18センチ ホワイト 40 スリム 書類 ゴミ箱 奥行き50cm 段 奥行40 高さ50cm 棚付き カーテン付き ソファ 幅70cm 120 布 家具 キャスター 服 モダン az-wis-551br送料無料 屋外 畳 木 購入履歴からのご注文内容の修正を受け付けることができない場合がございます コンテナ 幅25 ハイタイプ 幅 木製 奥行20 送料無料 かばん 後払い 蓋つき カバー付き 白 カゴ トランク 幅30 吊り下げ ダブル キッチン ワゴン プラスチック かわいい 30 替え ドウシシャ 幅50 回転 ベッド 60cm width 38mm 約3.7キロ生産国中国備考全国一律無料 W57.5×D57×H174 収納ボックス 60センチ 幅80 テイスト カバー ミラー付 洗える 椅子 小物 二段 奥行45 フルカバー 奥行30 ボトル キャンプ 黒 ケース 洗面所 120kg アジアン 子供 1段 ディスプレイラック オススメ 幅120 おしゃれ ステンレス 高さ180 150 電子レンジ ガーデニング ラック 収納ケース ラック付きデスク キッズ カーテン 奥行30cm クリア フラップ 扉 タンス シート ハンガー ゴールド ナチュラル 下着 キャビネット 脱衣所 tape 収納棚 スツール 貼箱 シンプル ※欠品中の場合は次回入荷後の発送になります vinyl おもちゃ 机 メタル チェスト 付き 仕切り 沖縄 黄色 本棚 奥行 ビーチ キャスター付き おすすめ 180 7007円 キャスター付 高さ90 洋服 カバーのみ 単価191円×90セット 30cm 壁 センターテーブル 伸縮 フタ付き 北海道 コンパクト ウレタン塗装スペックねじ込み商品重量 ※お急ぎの場合は必ず事前に在庫確認を行って下さい ビニールテープ パイプ 幅40 吸盤 ブラウン ハンガーラック インテリア このカテゴリー商品をお探しの方がよくご利用されている検索ワードです 頑丈 4903076002229 仕様天然木 衣類 バケツ スチール お洒落 3 つっぱり 収納 ユニット畳 アイアン フタなし 60 離島は配達不可 コミック 120cm 引き出し 省スペース 浅 2段 カウンター下 座れる バスケット w1200 押入れ カラーボックス 丈夫 前開き ダンボール 洗い 新生活 奥行25 商品検索にぜひ御利用下さいませ 防水 spec等 ボックス サイズW57.5×D57×H174素材 薄型 浅型ELPA コンセントキャップ ホワイト AN-101B(W)mm 個にアウディA4L2017-18 4個入りインテリアドアボールステッカー注意:すべての寸法は手で測定されます 説明:アウディA4Lのためのフィット2017-2018 それを貼り付ける前にターゲットの表面をきれいにするために洗剤を使用してください一次サイズのデザインは 90セット ビニールテープ 4903076002229 ヤマト 穴あけや切断は簡単なインストールのために必要とされません仕様:材質:カーボンファイバーサイズチャート:サイズ:約80 色が多少異なる場合があります 単価191円×90セット この車のインテリアドアのボウルカバーはあなたの車のために完璧にフィットするようになりますこの炭素繊維のステッカーを使用するとき width 送料無料 ブラックカーボンファーインテリアドアハンドルボウルカバートリム4ピース SS期間限定50%off カーインナーデカールには 45 vinyl NO200-381 わずかな偏差があるかもしれません各モニターの色設定により 3.15 38mm 3 Yamato tape 黄色 簡単に使用できるように接着テープがあらかじめ貼られています 0.12インチパッケージに含まれるもの: 1.77 902円【送料無料】【定形外郵便対応商品】 PICK BOY ピックボーイ ストリングカッター スチール弦用 KSC-150カウンタービズ やむをえずキャンセルさせて頂く可能性がございます ヒップ:129.2 在庫切れの場合 ハネクトーン ヒップ:123.2 単位 5-19号 複合繊維 両脇ポケット ご注文を頂いたタイミングによっては欠品中または製作をお待ちいただくことがございます 単価191円×90セット width ■在庫有り通常3~4営業日以内に発送致します お気軽にお問合せください ヤマト tape ウエスト:75 スカート 7407円 ウエスト:69 vinyl ウエスト:80 スカート丈:5815号 メーカーへ在庫の確認を行う為 何卒ご理解いただきますようお願い致します 欠品の恐れがございます Yamato ウエスト:66 スカート丈:58 cm 製作をお待ちいただくことがございます ■欠品ご注文頂いた後在庫の確認を行うため スカート丈:5817号 NO200-381 90セット スカート丈:549号 ウエスト:60 在庫管理には細心の注意を払っておりますが ご注文前に在庫の確認をすることも可能です 4903076002229 R ヒップ:137.2 送料無料 ■素材プルエラ スカート丈:5611号 ヒップ:126.2 ヒップ:142.2 スカート丈:547号 スカート丈:5613号 ご注文確認後 スカート丈:5819号 事務服 5号 ウエスト:63 ■製作中一時欠品の為 後ろファスナー開き ヒップ:120.2 42%■カラー5.ベージュ8.ブラック■サイズ 予めご了承くださいませ ※天候の影響などで入荷が遅れる場合がございます 後ろウエストゴム仕様 9857 滑り止め☆手洗い☆ストレッチ ポリエステル 黄色 ビニールテープ ヒップ:117.2 ウエスト:72 38mm ツイルポリエステル58% Biz ウエスト:85 納期については別途メールにてご連絡致します HANECTONECounter ヒップ:132.2 お取り寄せ商品

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い2(バーストアクセス 2)

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い1(バーストアクセス 1)”の続き。

Vivado HLS では、ハードウェアする時に AXI4 Master インターフェースを使用する引数があるような時には、 volatile を付けろと Users Guide に書いてあった。しかし、 Vitis HLS での volatile の扱いは違っているのかも知れない?それを検証してみようということで、前回は、volatile を付けた引数を AXI4 Master インターフェースと使用する場合を Vitis HLS 2021.2 で検証した。今回は、前回から volatile を除いた場合について検証していこう。

s_squares_axim3.cpp ソースコードを示す。前回のソースコードから引数の volatile を削除した。

#include <stdint.h>

int s_squares_axim(int8_t *x, int8_t *y,
    int32_t *result){
#pragma HLS INTERFACE m_axi depth=10 port=y offset=slave bundle=y
#pragma HLS INTERFACE m_axi depth=10 port=x offset=slave bundle=x
#pragma HLS INTERFACE m_axi depth=10 port=result offset=slave bundle=result
#pragma HLS INTERFACE s_axilite port=return

    for(int i=0; i<10; i++){
#pragma HLS PIPELINE II=1
        result[i] = x[i]*x[i] + y[i]*y[i];
    }

    return(0);
}


テストベンチの s_squares_axim_tb.cpp を示す。

#include <iostream>
#include <stdint.h>

int s_squares_axim(int8_t *x, int8_t *y,
    int32_t *result);

int main(){
    int8_t x[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int8_t y[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int32_t result[10];

    s_squares_axim(x, y, result);

    for(int i=0; i<10; i++){
        std::cout << "x[" << i << "]= " << (int)x[i] <<
                ", y[" << i << "] = " << (int)y[i] <<
                ", result[" << i << "] = " <<
                (int)result[i] << std::endl;
    }
}


C シミュレーションは前回と同じなので、C コードの合成からやってみよう。結果を示す。


前回の Latency は 28 クロックだったが、今回の実装では、31 クロックになっている。
しかも Modules & Loops に s_squares_axim_Pipline_VITIS_LOOP_10_1 が増えている。
前回のFFは 2143 個、LUT は 2698 個だった。今回の FF は 2214 個、LUT は 3151 個だった。
残りの C コードの合成レポートを示す。



M_AXI Burst Information が変更になっている。
Inferred Burst Summary がきちんとレポートされている。
Inferred Burst and Widening Missed も表示されているが、volatile のじゃなくなっている。
残りの C コードの合成レポートを示す。


C/RTL 協調シミュレーションの結果を示す。
前回のクロック数は 37 クロックで、前回と同じだった。


C/RTL 協調シミュレーションの波形を示す。
これも前回と同じでバーストアクセスとなっている。



IMPLEMENTATION を行った。
これも、全く前回と一緒の結果になった。


AXI4 Master インターフェースの引数から volatile を除いた場合は、C コードの合成では、異なる結果になった。実際に Verilog HDL のコードもファイルが増えていた。しかし、C/RTL 協調シミュレーションでの結果は前回と同じだった。IMPLEMENTATION の結果も前回と全く同じだった。つまり、Vivado で合成すると待った同じ回路になった。同じ回路にはなったが、C コードの合成で Problem が出ていることから考えても Vitis HLS では、AXI4 Master インターフェースのバーストアクセスを希望する場合は、volatile を付けないほうが良さそうだ。
Vivado HLS でもポインタか参照渡しの引数ならば、AXI4 Master インターフェースのバーストアクセスが可能だった。
  1. 2021年11月13日 04:59 |
  2. HJP623 マウスベント i50 ホワイト HJC
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い1(バーストアクセス 1)

Vivado HLS では、ハードウェアする時に AXI4 Master インターフェースを使用する引数があるような時には、 volatile を付けろと Users Guide に書いてあった。しかし、 Vitis HLS での volatile の扱いは違っているのかも知れない?それを検証してみよう。

Vivado HLS 2019.2 UG902 (v2019.2) 2020 年 1 月 13 日 の volatile の説明を引用する。


Vitis HLS 2020.1 UG1399 (v2020.1) 2020 年 6 月 24 日 の volatile の説明を引用する。

バーストアクセスなし等の文言が増えている。

さて、Vitis HLS 2021.2 で実際にやってみよう。

s_squares_axim3.cpp ソースコードを示す。これは Vivado HLS 時代からセミナの実装例として使用している。
AXI4 Master インターフェースを 3 個持ったデザインとなっている。ここでは、関数を読んだ時に複数個データを Read したり、データを Write したりしているので、 volatile を付けている。

#include <stdint.h>

int s_squares_axim(volatile int8_t *x, volatile int8_t *y,
    volatile int32_t *result){
#pragma HLS INTERFACE m_axi depth=10 port=y offset=slave bundle=y
#pragma HLS INTERFACE m_axi depth=10 port=x offset=slave bundle=x
#pragma HLS INTERFACE m_axi depth=10 port=result offset=slave bundle=result
#pragma HLS INTERFACE s_axilite port=return

    for(int i=0; i<10; i++){
#pragma HLS PIPELINE II=1
        result[i] = x[i]*x[i] + y[i]*y[i];
    }

    return(0);
}


テストベンチの s_squares_axim_tb.cpp を示す。

#include <iostream>
#include <stdint.h>

int s_squares_axim(volatile int8_t *x, volatile int8_t *y,
    volatile int32_t *result);

int main(){
    int8_t x[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int8_t y[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int32_t result[10];

    s_squares_axim(x, y, result);

    for(int i=0; i<10; i++){
        std::cout << "x[" << i << "]= " << (int)x[i] <<
                ", y[" << i << "] = " << (int)y[i] <<
                ", result[" << i << "] = " <<
                (int)result[i] << std::endl;
    }
}



s_squares_axim プロジェクトを示す。


C シミュレーションを行った。結果を示す。


C コードの合成を行った。結果を示す。




M_AXI Burst Information に Volatile の Problem が出ているのが分かる。UG1399 でバーストアクセスなしになっているからだろう?
214-227 をクリックすると Burst Interface Failure 5 が表示された。


つまり、volatile を削除しろと言っている。

volatile そのままで C/RTL 協調シミュレーションを行った。結果を示す。
Latency は 37 クロックだった。


C/RTL 協調シミュレーションの波形を見た。
バーストアクセスなしとはなっていても、Read も Write もバーストアクセスしている。



Implementation の結果を示す。


Vitis HLS 2021.2 では、引数に volatile を付けていてもバーストアクセスすることができている。しかし、C コードの合成で volatile を付けていることの Problem が出ている。
次回は、volatile を削除してやってみよう。
  1. 2021年11月12日 05:12 |
  2. ★2999円以上で送料無料!11月12日9:59まで★排尿痛、残尿感、頻尿、むくみなどを改善します 【第2類医薬品】JPS漢方顆粒-32号 猪苓湯28日分(84包)※※
  3. | トラックバック:0
  4. | コメント:0

KV260 で ikwzm さんの ZynqMP-FPGA-Linux を試してみる5(OpenCV 4.5.4 をインストール、その2)

KV260 で ikwzm さんの ZynqMP-FPGA-Linux を試してみる4(OpenCV 4.5.4 をインストール、その1)”の続き。

KV260 に ikwzm さんの ZynqMP-FPGA-Linux をインストールして、前回は、OpenCV 4.5.4 をインストールしようということで、cmake まで実行した。今回は、OpenCV 4.5.4 の残りのインストールを行う。

make -j4
で、4 個のプロセッサを使用して、make したが、74 % で止まってしまった。反応が相当遅くなっているみたいだ。



一旦リブートして、もう一度 2 プロセッサで make を実行した。
make -j2


さまざまなシーンで人々の生活を支えています。 アズワン (+)皿小ネジ_M4×15_チタン 4-288-32 《開発・試作支援》

make が終了した。

sudo make install


sudo ldconfig


1 つ上のディレクトリに上がって、 samples/python ディレクトリに入った。
cd ../samples/python/
ls



デモ・ソフトウェアを起動した。
python3 demo.py


facedetect.py を Run した。




asift.py を Run した。




これもうまく行った。

画像を見るのに、 viewnior をインストールした。
sudo apt install viewnior


calibrate.py を Run した。カメラのレンズの歪みを補正するソフトウェアのようだ。


これが元画像。


これが補正画像だ。


find_oby.py を Run した。画像が何処にあるかを調べるソフトウェアのようだ。


結果のウインドウ。


OpenCV 4.5.4 はきちんと動作するようだ。
  1. 2021年11月11日 03:54 |
  2. KRIA KV260 Vision AI Starter Kit
  3. | トラックバック:0
  4. | コメント:0

KV260 で ikwzm さんの ZynqMP-FPGA-Linux を試してみる4(OpenCV 4.5.4 をインストール、その1)

KV260 で ikwzm さんの ZynqMP-FPGA-Linux を試してみる3”の続き。

ikwzm さんの ZynqMP-FPGA-Linux を KV260 にインストールしてみようということで、前回は、KV260 上でパッケージをインストールし、 nautilus や geany GUI アプリケーションをインストールした。今回は、OpenCV 4.5.4 をインストールしよう。cmake までを書いた。

OpenCV 4.5.4 をインストールするために参考にしたサイトは”OpenCVが4.0になっていたのでcontribも含めてコンパイルしてみる。
それと、自分のブログの”Ultra96-V2 に ikwzm/ZynqMP-FPGA-Linux をインストール4(OpenCV 4.1.0 のインストール)

OpenCVが4.0になっていたのでcontribも含めてコンパイルしてみる。”を参考にして、必要なパッケージをインストールする。

sudo apt install build-essential


sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev


sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev


OpenCV 4.5.4 を git clone する。
git clone https://github.com/opencv/opencv.git
ls
cd opencv
ls
git checkout -b 4.5.4 refs/tags/4.5.4



Ultra96-V2 に ikwzm/ZynqMP-FPGA-Linux をインストール4(OpenCV 4.1.0 のインストール)”のパッケージをインストールする。

sudo apt install python3-tk libgtk2.0-dev pkg-config


sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev


sudo apt-get install libcanberra-gtk-module


build ディレクトリを作成した。build ディレクトリに入った。
cmake を行った。
mkdri build
cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DINSTALL_PYTHON_EXAMPLES=ON \
-DINSTALL_C_EXAMPLES=ON \
-DPYTHON_EXECUTABLE=/usr/bin/python3 \
-DBUILD_EXAMPLES=ON \
-DWITH_GTK=ON \
-DWITH_FFMPEG=ON ..




-- General configuration for OpenCV 4.5.4 =====================================
--   Version control:               4.5.4
-- 
--   Platform:
--     Timestamp:                   2021-11-09T19:34:09Z
--     Host:                        Linux 5.10.0-xlnx-v2021.1-zynqmp-fpga aarch64
--     CMake:                       3.13.4
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /usr/bin/make
--     Configuration:               RELEASE
-- 
--   CPU/HW features:
--     Baseline:                    NEON FP16
-- 
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ standard:                11
--     C++ Compiler:                /usr/bin/c++  (ver 8.3.0)
--     C++ flags (Release):         -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG  -DNDEBUG
--     C++ flags (Debug):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -g  -O0 -DDEBUG -D_DEBUG
--     C Compiler:                  /usr/bin/cc
--     C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -O3 -DNDEBUG  -DNDEBUG
--     C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -g  -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      -Wl,--gc-sections -Wl,--as-needed  
--     Linker flags (Debug):        -Wl,--gc-sections -Wl,--as-needed  
--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          dl m pthread rt
--     3rdparty dependencies:
-- 
--   OpenCV modules:
--     To be built:                 calib3d core dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo python2 python3 stitching ts video videoio
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 java
--     Applications:                tests perf_tests examples apps
--     Documentation:               NO
--     Non-free algorithms:         NO
-- 
--   GUI:                           GTK2
--     GTK+:                        YES (ver 2.24.32)
--       GThread :                  YES (ver 2.58.3)
--       GtkGlExt:                  NO
--     VTK support:                 NO
-- 
--   Media I/O: 
--     ZLib:                        /usr/lib/aarch64-linux-gnu/libz.so (ver 1.2.11)
--     JPEG:                        /usr/lib/aarch64-linux-gnu/libjpeg.so (ver 62)
--     WEBP:                        build (ver encoder: 0x020f)
--     PNG:                         /usr/lib/aarch64-linux-gnu/libpng.so (ver 1.6.36)
--     TIFF:                        /usr/lib/aarch64-linux-gnu/libtiff.so (ver 42 / 4.1.0)
--     JPEG 2000:                   build (ver 2.4.0)
--     OpenEXR:                     build (ver 2.3.0)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
--     PFM:                         YES
-- 
--   Video I/O:
--     DC1394:                      YES (2.2.5)
--     FFMPEG:                      YES
--       avcodec:                   YES (58.35.100)
--       avformat:                  YES (58.20.100)
--       avutil:                    YES (56.22.100)
--       swscale:                   YES (5.3.100)
--       avresample:                NO
--     GStreamer:                   NO
--     v4l/v4l2:                    YES (linux/videodev2.h)
-- 
--   Parallel framework:            pthreads
-- 
--   Trace:                         YES (with Intel ITT)
-- 
--   Other third-party libraries:
--     Lapack:                      NO
--     Eigen:                       NO
--     Custom HAL:                  YES (carotene (ver 0.0.1))
--     Protobuf:                    build (3.5.1)
-- 
--   OpenCL:                        YES (no extra features)
--     Include path:                /home/fpga/opencv/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
-- 
--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.16)
--     Libraries:                   /usr/lib/aarch64-linux-gnu/libpython2.7.so (ver 2.7.16)
--     numpy:                       /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.16.2)
--     install path:                lib/python2.7/dist-packages/cv2/python-2.7
-- 
--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.7.3)
--     Libraries:                   /usr/lib/aarch64-linux-gnu/libpython3.7m.so (ver 3.7.3)
--     numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.16.2)
--     install path:                lib/python3.7/dist-packages/cv2/python-3.7
-- 
--   Python (for build):            /usr/bin/python2.7
-- 
--   Java:                          
--     ant:                         NO
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO
-- 
--   Install to:                    /usr/local
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/fpga/opencv/build

  1. 2021年11月10日 05:11 |
  2. KRIA KV260 Vision AI Starter Kit
  3. | トラックバック:0
  4. | コメント:0
»