FC2カウンター ターコイズ シルバーバングル トルコ石 ブレスレット ココペリ ココペリ バングル【受注製作】音楽の妖精 925 ウェブターコイズ シルバー 925 ハンドメイド シルバー職人 手作り【長さ 約15cmから16cm】 バングル

ターコイズ シルバーバングル トルコ石 ブレスレット ココペリ ココペリ バングル【受注製作】音楽の妖精 925 ウェブターコイズ シルバー 925 ハンドメイド シルバー職人 手作り【長さ 約15cmから16cm】

ターコイズ シルバーバングル トルコ石 ブレスレット ココペリ  ココペリ バングル【受注製作】音楽の妖精 925 ウェブターコイズ シルバー 925 ハンドメイド シルバー職人 手作り【長さ 約15cmから16cm】

9881円

ターコイズ シルバーバングル トルコ石 ブレスレット ココペリ ココペリ バングル【受注製作】音楽の妖精 925 ウェブターコイズ シルバー 925 ハンドメイド シルバー職人 手作り【長さ 約15cmから16cm】

ターコイズ シルバーバングル トルコ石 ブレスレット ココペリ ココペリ バングル【受注製作】音楽の妖精 925 ウェブターコイズ シルバー 925 ハンドメイド シルバー職人 手作り【長さ 約15cmから16cm】:私たちの目標は、いつでもどこでも必要なときに利用できることです。以下に、テクノロジーについて学び、見、話し続けるためのさまざまなオプションを示します。 【人気ショップが最安値挑戦!】,【即出荷】,即納最大半額ターコイズ シルバーバングル トルコ石 ブレスレット ココペリ ココペリ バングル【受注製作】音楽の妖精 925 ウェブターコイズ シルバー 925 ハンドメイド シルバー職人 手作り【長さ 約15cmから16cm】
fc2ブログ

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

FPGAの部屋

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







ココペリバングル 音楽の妖精
【受注製作】メンズ&レディース シルバーブレス

スパイダーウェブ ターコイズ(トルコ石)付
ハンドメイドシルバー バングル(ブレスレット)。

POW-WOW(パウワウ)RTの手作りシルバーアクセサリー

微細な黒系マトリックスが目を引くターコイズ(トルコ石)と
約1.6mm厚の平うちアームにシンプルながらバランス良く打ち込まれた、
ココペリ他ネイティブモチーフが、中心のターコイズを引き立て
このシルバーバングルを、より個性的でインパクトある作品へと、
その魅力を倍増させています。

※バングルの長さ 約15cmの場合、手首周り約17~17.5cmの方にオススメ♪

ご参考までにバングルの着け方。

【受注製作ご希望の場合】
※長さ 【約15cmから16cm】で
ご希望の長さをプルダウンにてお選び下さいませ。

※参考商品と同じ大きさのスパイダーウェブ ターコイズ ルース
下記を使用してお作りいたします。
約10×12mm

※この石の特徴でクラック、凸凹があります。
予めご了承くださいませ。

※工法上(銀地金からダイレクトに手作りのため)、
微妙に大きさ、形は変わりますが
手作りの良さとして予めご了承くださいませ。
画像とニュアンスは同じになるように
最善を尽くしますので宜しくお願いいたします。

※ご注文頂き、こちらでご入金確認後、製作に取り掛からせていただきます。
約3~4週間前後でこちらより発送いたしますので宜しくお願いいたします。

※代金引換及びご注文後のキャンセルはお受けできませんので予めご了承くださいませ。


■長さ 約15cmから16cm
■最大幅 約17.7mm
■最大厚み 約6.8mm
■アーム部幅 約15~15.5mm
■アーム部シルバー板厚 約1.6mm使用
■ターコイズ 約10.2×11.9mm

⇒他の代官山銀細工工房発 新作
 ターコイズアクセサリーもご覧下さいませ。

⇒他の代官山銀細工工房
 ターコイズバングル☆

⇒パウワウ銀細工工房 銀細工師にオーダーしよう!

※撮影条件やお客様のモニターによっては
画像の色が実際のものと多少異なって見える場合がございますので
あらかじめご了承下さい。


【表記部位 参考画像】



手首の長さ(外周)とバングル(Bangle)の長さの関係について

※この資料はあくまでも参考として考えて下さい。

なぜなら、手首の形(OVAL気味かROUND気味)や
バングルの幅、また、好みのフィット感(ピッタリが好きかゆるめが好きか)
等の諸条件によって変わってきますので。

ただ、開口部の幅を広げたり、せまくすることによって
ある程度は対応することが出来ます。

※天然石付のバングルは
開口部の調節の際には
石に負担をかけないようにして下さい。
石が取れたり、割れたりする
場合がありますので。

手首の長さ(外周)の測り方

1cm幅くらいの巻尺か
紙できつく引っ張らないで何cmになるか図って下さい。

手首の長さ(外周)バングルの長さ
14cm位13.5cm~
15cm位14cm~
16cm位14.5cm~
17cm位15cm~
18cm位16cm~

Vivado HLS, Vitis HLS の 2022 年問題にパッチを当てる

Vivado HLSリビジョンオーバーフロー問題のパッチの当て方”(参考にさせて頂きます)を見て Vivado HLS, Vitis HLS の 2022 年問題のパッチが出ていることに気がついたので、私もやってみることにした。

Vivado HLS, Vitis HLS の 2022 年問題については、”Vivado HLS, Vitis HLS で 2022 年問題発生”を参照のこと。

パッチは”Export IP Invalid Argument / Revision Number Overflow Issue (Y2K22)”にあった。
ファイル名は、y2k22_patch-1.2.zip だった。
HLS_problem_2022_7_220109.png


Ubuntu 18.04 LTS での Vitis HLS 2021.2 のパッチ
y2k22_patch-1.2.zip をダウンロードして展開した。
HLS_problem_2022_8_220109.png

展開された y2k22_patch ディレクトリを確認した。
HLS_problem_2022_9_220109.png

README ファイルを確認した。
パッチのやり方が書いてある。
HLS_problem_2022_10_220109.png

Vitis hLS 2021.2 にパッチを当てよう。
Vivado などのインストール・ディレクトリに移動して LD_LIBRARY_PATH 環境変数を設定して、パッチを当てた。
cd /media/masaaki/Ubuntu_Disk/tools/Xilinx/
export LD_LIBRARY_PATH=$PWD/Vivado/2021.2/tps/lnx64/python-3.8.3/lib/
Vivado/2021.2/tps/lnx64/python-3.8.3/bin/python3 y2k22_patch/patch.py

HLS_problem_2022_11_220109.png
HLS_problem_2022_12_220109.png

これでパッチが当たったはずなので、Vitis HLS 2021.2 を起動して、Export RTL を行ったところ成功した。
HLS_problem_2022_13_220109.png

solution1/impl ディレクトリに export.zip ができている。
HLS_problem_2022_14_220109.png

solution1/impl/ip ディレクトリにも IP が生成されていた。
HLS_problem_2022_20_220109.png


Windows11 のパッチ
Windows11 に y2k22_patch-1.2.zip をダウンロードして解凍した。
HLS_problem_2022_15_220109.png

Windows ターミナルを起動して、C:\Xilinx フォルダに移動した。
Vivado21.2\tps\win64\python-3.8.3\python.exe y2k22_patch\patch.py
を実行した。
HLS_problem_2022_16_220109.png

Vitis HLS 2021.2 を起動して Export RTL を実行したところ、Windows11 でも成功した。
HLS_problem_2022_17_220109.png

solution1/impl ディレクトリに export.zip ができている。
HLS_problem_2022_18_220109.png

solution1/impl/ip ディレクトリにも IP が生成されていた。
HLS_problem_2022_19_220109.png

(追加)
Linux の 2019.2 のパッチ・コマンドが間違っていました。正しくは、
Vivado/2019.2/tps/lnx64/python-2.7.5/bin/python2.7 y2k22_patch/patch.py
です。

Linux の 2020.1 のパッチ・コマンドも間違っていました。正しくは、
Vivado/2020.1/tps/lnx64/python-2.7.16/bin/python2.7 y2k22_patch/patch.py
です。

Linux の 2020.2 のパッチ・コマンドも間違っていました。正しくは、
Vivado/2020.2/tps/lnx64/python-3.8.3/bin/python3.8 y2k22_patch/patch.py
です。

Linux の 2020.3 のパッチ・コマンドはやってないですが、間違っているんじゃないでしょうか?
  1. 2022年01月09日 05:23 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定する7

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定する6”の続き。

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定してみようということで、前回は、FCLK_CLK0 が 100 MHz 、FCLK_CLK1 が 50 MHz で再度やり直したところ、タイミング・エラーは発生しなかった。今回は、実際に動作するか?を調べてみよう。

ハードウェアをエクスポートした。
DMA_pow2_defclk_bd_wrapper.xsa ファイルが生成された。
AXI4-Lite_defclk_43_220107.png

Vivado の Tools メニューから Launch Vitis IDE を選択して、Vitis 2021.2 を起動する。
Vitis IDE Launcher が起動する。
vitis_work ディレクトリを作成して、Launch ボタンをクリックする。
AXI4-Lite_defclk_44_220107.png

Vitis 2021.2 が起動した。
AXI4-Lite_defclk_45_220107.png

Create Application Project をクリックして、DMA_pow2_defclk_test アプリケーション・プロジェクトを作成した。DMA_pow2_defclk_bd_wrapper プラットフォーム・プロジェクトも作成した。
AXI4-Lite_defclk_46_220108.png

DMA_pow2_defclk_test.c を作成した。
AXI4-Lite_defclk_47_220108.png

トンカチアイコンをクリックして、ビルドを行った。
DMA_pow2_defclk_test.elf ファイルが生成された。
AXI4-Lite_defclk_48_220108.png

Explorer で DMA_pow2_defclk_test_system を選択して、Run アイコンをクリックすると ZYBO Z7-20 がコンフィギュレーションされて、DMA_pow2_defclk_test.elf ファイルが実行された。
AXI4-Lite_defclk_49_220108.png

Tera Term に 2 乗したデータが表示された。成功だ。
AXI4-Lite_defclk_50_220108.png

結局、Vitis HLS 2021.2 の AXI4-Lite インターフェースのクロックを独自に生成する機能は、クロック載せ替えがされていないので、特定の周波数しか Vivado でのタイミングがメットしないようだ。今回は、IP 全体の動作周波数が 100 MHz で AXI4-Lite インターフェースが 50 MHz で動作確認した。
  1. 2022年01月09日 04:19 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定する6

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定する5”の続き。

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定してみようということで、前回は、タイミング・エラーを検証して FCLK_CLK0 が 100 MHz 、FCLK_CLK1 が 75 MHz ではダメそうだということが分かった。今回は、FCLK_CLK0 が 100 MHz 、FCLK_CLK1 が 50 MHz で再度やり直してみよう。

DMA_pow2_defclk_bd ブロック・デザインを再度示す。
AXI4-Lite_defclk_26_220105.png

ブロック・デザインで processing_system7_0 をダブルクリックして設定画面を開く。
FCLK_CLK1 を 50 MHz に設定する。
AXI4-Lite_defclk_38_220107.png

これで、論理合成、インプリメンテーション、ビットストリームの生成を行ったところ、今度はタイミング・エラーが発生しなかった。
Project Summary を示す。
AXI4-Lite_defclk_39_220107.png

Open Implemented Design を開いた。
Inter-Clock Paths も問題ない。
AXI4-Lite_defclk_40_220107.png

Report CDC... をやってみた。
clk_fpga_0 to clk_fpga_1 を示す。
AXI4-Lite_defclk_41_220107.png

これは何も変わっていない。

clk_fpga_1 to clk_fpga_0 を示す。
AXI4-Lite_defclk_42_220107.png

こちらも変わっていない。
壁厚を利用してシューズラックがすっきり収納できます 【送料無料】ウッドワン壁厚収納 薄型シューズラック壁面収納 システム収納 ipkf30f収納 システム収納 埋め込み収納写真の袴は参考商品です 袴も選んで同時購入できます 袴用着物5点セット やわらかな縮緬の白 肩にこぼれる枝垂れ桜「美しい」がずっと続く。自然な色合い、表情が美しい人工植物。 /人工植物/グリーンデコ センリョウ板付 80cm送料込みです。超特価品・油彩額縁・油額・セール・はじめて額装される方にも ★激安★油絵用額縁 F12号キャンバス用 7874【送料無料】(大額)ミュゼ・デユ 激安 油彩画プレゼント・贈答品・ギフト・お祝いに人気新築 テナント 会議室 店舗 オフィス ホテル 不動産 病院 【高級肉筆】【複製名画】【馬】【壁掛け】【油絵】【絵画】【アート】【金運】【風水】【運気】【動物】ジャック=ルイ・ダヴィッドサン・ベルナール峠のナポレオンオーダーメイド制作 F6 F8 F10 F12 F15 F20 F30 F40 F50品質保証日本製額縁付SFD1【中古】Go!プリンセスプリキュア シールあそびえほん (たの幼テレビデラックス) [Mook] 講談社【送料無料】【別注】 SUGAR CANE シュガーケーン パンツ 9oz. WABASH STRIPE ENGINEER PANTS SC40786A【限定 メンズ ジーパン ジーンズ】10P03Dec16HATAKEYAMA(ハタケヤマ) 一般硬式キャッチャーミット axシリーズ 捕手用 右投げ用 ブラウン ax-222F
【送料無料】 INAX イナックス LIXIL リクシル 激安 トイレ手洗器 住宅設備 DIY LIXIL リクシル トイレ手洗 キャパシア フルキャビネットプラン 手洗器一体型人造大理石カウンター カウンター奥行160mm ハンドル水栓 AN-AM■EAEKXH■■
上品な光沢の着物が品質の良さを感じさせます♪ 二尺袖着物+袴+半衿付き長襦袢+袴帯+重ね衿+巾着の6点セット販売 身長約149から152cm 枝垂れ桜を揺らす春風 ふんわりイエロー
つっぱり式の日よけで簡単設置 自立型 日よけ シェード クールサマーオーニング 自立型 モカ 3000【メーカー直送/代金引換・同梱不可】/サンシェード / シェード/日よけ / 日除け/オーニング/自立式/RCP
お好みのサイズ・寸法でオリジナルのフレーム・額縁をお作りします。 オーダーサイズ・オリジナルフレーム・別注フレーム・カスタムフレーム製作 LARSON-JUHL(ラーソン・ジュール) A-21027 カラー:銀 縦+横の寸法(実寸・組寸)計 499mmまで
本物肉筆油絵 インテリアリビング ダイニング エントランス子供部屋 学校 塾 図書館 病院 レストラン 店舗 ミュゼ・デユ オイルペイントモダン ファブリックパネルアート ペット 絵画 動物 油彩絵 壁掛け 手書き アートパネル 犬 猫 鳥 魚 鹿 猿 熊 蛙 虫 馬 象 『ゾウさんのデート』フレームなし ADD097
【中古】Game Programming Gems
【送料無料】【STAR OF HOLLYWOOD】【スターオブハリウッド】【アロハシャツ】 STAR OF HOLLYWOOD スターオブハリウッド 東洋エンタープライズ半袖シャツ"MANHATTAN"SH37281【アメカジ】fs04gm【smtb-k】【ky】10P03Dec16
鏡面研磨仕上げを施した、職人製ステンレスフレームマスク!選べるフランジで最適カスタム! ダイビング マスク アポロ apollo バイオメタルマスク pro ゴールド bio metal mask 二眼 水中マスク スキューバダイビング スキューバ
前飾り付き 天然木 木製ウッドブラインド ウッドブラインド 35mm オーダーメイドヴィンテージvintageクラシック単車旧車ライダービンテージバイク用チョッパーバイク乗りchopperハーレーharleyオールドスクールoldskoolお洒落オシャレバイカーファッションツーリング アンティークウォールクロック SYROCO 【海外直輸入中古品】北欧usaお洒落オシャレおしゃれカワイイかわいい静音静かアナログインテリアデザインヴィンテージ壁掛け時計アメリカ製usa製ミッドセンチュリーモダン北欧昭和レトロ50s60s70sL-DESKシリーズの キャスター付き ワゴン シリーズの 学習机 と合わせても単品でも使える 木製 キャビネット 引き出し 3枚 【1/5限定★ポイント最大14倍!※条件達成時】学習ワゴン プリンタカート 学習家具 学習収納 勉強机 学習机 デスク アルダー材 無垢材 木製 リビング 高さ調節可能 L-DESK-3 SHOKO WAGON (NA) インテリア おしゃれ 家具 送料無料 isseiki 101-01787国産 おしゃれラック カスタマイズ本棚 映えるインテリア 魅せる収納 日本製 オーダーメイド本棚 受注生産ラック 高さ120cm 横幅15~34cm 奥行19cm(通常棚板)F★★ タナリオシリーズKF880W KVK (寒)サーモスタット式シャワー 【メーカー直送】 KF880W KVK (寒)サーモスタット式シャワー 【メーカー直送】超大画面の4Kテレビが登場! SHION 65V型4K対応液晶テレビ HLE-6501KNICOLE メンズ コート/ジャケット ニコル MONSIEUR NICOLE 【ex/tra】ストレッチボンディングコート MONSIEUR NICOLE ニコル コート/ジャケット コート/ジャケットその他 ブラック ブルー【送料無料】[Rakuten Fashion]プレゼント品あり 犬用 ドライフード イベント時の増量おまけキャンペーン特典対象外 【最安値に挑戦中】ニュートロ シュプレモ 犬用 エイジングケア 7.5kg×2袋
ダブルロールスクリーン パステル調生地にシースルー生地 ダブルロールスクリーンパステル調プレーン生地&シースルー生地オーダー 横幅30~50cm × 高さ【90cm固定】(Bタイプ チェーン式 × チェーン式) ホワイト ロールカーテン 日本製 ダブル シースルー 遮光 防炎
ヴィンテージvintageクラシック単車旧車ライダービンテージバイク用チョッパーバイク乗りchopperハーレーharleyオールドスクールoldskoolお洒落オシャレバイカーファッションツーリング Dead Stock 新品 箱付 BUCO WHITE 56cm 【海外直輸入新古品】デッドストック未使用品nosスモールジェットヘルメットオープンフェイスアメリカンブコホワイト白色Sサイズ
コードは天板から裏面のフック、脚部へと通せて外観すっきり。アルダー材を使用した使い勝手の良いデスク 【1/5限定★ポイント最大14倍!※条件達成時】学習デスク 学習家具 学習机 勉強机 子供 木製 ダイニング 学習 パソコンデスク 在宅 引き出し 収納 モダン DALDIA DESK 155 (AL-MBR)インテリア おしゃれ 家具 送料無料 入学祝い isseiki 101-01945
国産 おしゃれラック カスタマイズ本棚 映えるインテリア 魅せる収納 日本製 オーダーメイド本棚 受注生産ラック 高さ90cm 横幅15~34cm 奥行44cm(通常棚板)F★★ タナリオシリーズ
KM800T KVK サーモスタット式混合栓 【メーカー直送】 KM800T KVK サーモスタット式混合栓 【メーカー直送】
セミダブルサイズ セミダブルベット キャスター付き 収納ベッド 収納付きベッド 収納付ベッド 引き出し付き 引出し付き フレーム ベット べっど 宮棚 棚付き 棚付き 木製 収納ベッドセミダブル ボンネルコイルマットレス付き 棚付き コンセント付き 引出し付き シンプル ヘッドボード 収納付きベッド ベッド下収納 木製 ベッド ベット おしゃれ 新生活 一人暮らし 木製ベッド 収納ベット※同梱・代引不可
NICOLE メンズ ビジネス/フォーマル ニコル MONSIEUR NICOLE SUPER BLACKセットアップスーツ MONSIEUR NICOLE ニコル ビジネス/フォーマル スーツ グレー ブラック レッド【送料無料】[Rakuten Fashion]
お庭やベランダのスペースをもっと豊かで楽しい生活の空間に フラット屋根タイプテラス 2階用 間口3.0間5490mm×出幅7尺2070mm×高さ2300mm 移動桁仕様 安心の国内メーカー 安心の国内メーカー 格安 送料無料 F2Izrjbd
  1. 2022年01月08日 04:25 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定する5

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定する4”の続き。

itis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定してみようということで、前回は、前回 IP を作成できたので、Vivado 2021.2 でプロジェクトを作成し、作成した DMP_pow2_defclk IP を使用して、ブロック・デザインを作成した。そして、論理合成、インプリメンテーション、ビットストリームの生成を行ったが、タイミングでエラーになった。今回は、タイミング・エラーを検証する。

Vivado 2021.2 GUI の Flow Navigator から IMPLEMENTATION -> Open Implemented Design をクリックして起動した。
AXI4-Lite_defclk_29_220106.png

Inter-Clock Paths の”clk_fpga_0 to clk_fpga_1”と”clk_fpga_1 to clk_fpga_0”にエラーが出ている。

”clk_fpga_0 to clk_fpga_1”のエラーを見た。
AXI4-Lite_defclk_30_220106.png

”clk_fpga_1 to clk_fpga_0”のエラーを見た。
AXI4-Lite_defclk_31_220106.png

Clock Domain Crossing のレポートを見てみよう。
Vivado の Reports メニューから Timing -> Report CDC... を選択する。
Report CDC ダイアログが開く。
Clocks の From に clk_fpga_0 を To に clk_fpga_1 を入れて OK ボタンをクリックした。
AXI4-Lite_defclk_32_220106.png

Endpoint は 37 個, Unsafe は 0 個だった。 Unknown は 5 個ある。
AXI4-Lite_defclk_33_220106.png

CDC Details の”clk_fpga_0 to clk_fpga_1”をクリックした。
AXI4-Lite_defclk_34_220106.png

CDC-1 と CDC-15 が出ている。
Vivado Design Suite ユーザー ガイド デザイ ン解析およびク ロージ ャテクニック UG906 (v2018.2) 2018 年 6 月 6 日”の 76 ページの”表 2‐3: CDC ルールおよび説明”によると CDC-1 は

1 ビッ ト CDC CDC-1 クリティカル 1 ビッ ト CDC パスが、 同期化されていないか、 または不明の CDC 回路を含みます。


CDC-15 は

CE 制御の CDC CDC-15 警告 ク ロ ッ ク イネーブルで制御された CDC。

だそうだ。
やはり、ダメっぽい?

次に”clk_fpga_1 to clk_fpga_0”のパスの CDC を見てみよう。
AXI4-Lite_defclk_35_220106.png

こちらは Endpoints が 232 個で、Unknonwn がやはり、232 個になっている。
AXI4-Lite_defclk_36_220106.png

CDC Details の”clk_fpga_1 to clk_fpga_0”をクリックした。
AXI4-Lite_defclk_37_220106.png

全部 CDC-1 だけだった。
これはあまり良くないか。。。
もう一度 AXI4-Lite のクロックを 50 MHz でやってみよう。
  1. 2022年01月07日 04:32 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定する4

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定する3”の続き。

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定してみようということで、前回は、 C コードの合成の AXI4 Master のアドレス幅が 64 ビットになっていたので、32 ビットに変更し、もう一度 C コードの合成と Export RTL をやり直した。更に C/RTL 協調シミュレーションも Dump Trace の設定を port にしたら成功した。今回は、前回 IP を作成できたので、Vivado 2021.2 でプロジェクトを作成し、作成した DMP_pow2_defclk IP を使用して、ブロック・デザインを作成した。そして、論理合成、インプリメンテーション、ビットストリームの生成を行ったが、タイミングでエラーになった。

Vivado 2021.2 で ZYBO Z7-20 用の DMA_pow2_defclk_test プロジェクトを作成した。
AXI4-Lite_defclk_16_220105.png

IP Catalog に Dma_pow2 IP を登録した。
AXI4-Lite_defclk_17_220105.png

DMA_pow2_defclk_bd ブロック・デザインを作成した。
ZYNQ7 Processing System を Add IP した。
Run Block Automation を行った状態だ。
AXI4-Lite_defclk_18_220105.png

ZYNQ7 Processing System を ダブルクリックして設定画面を開く。
FCLK_CLK0 を 100 MHz に設定した。これは、DMA _pow2 IP の AXI4 Master インターフェースのクロックとする。
FCLK_CLK1 を 75 MHz に設定した。これは、DMA_pow2 IP の AXI4-Lite インターフェースのクロックとする。Vitis HLS の C/RTL 協調シミュレーションのクロックは 50 MHz だったが Vivado でタイミング・エラーがでるかどうか?見るために 75 MHz に設定した。
AXI4-Lite_defclk_19_220105.png

DMA_pow2 を Add IP した。
AXI4-Lite_defclk_20_220105.png

Run Connection Automation で s_axi_control のクロックを FCLK_CLK1 ( 76 MHz ) に設定した。
AXI4-Lite_defclk_21_220105.png

配線が行われた。
AXI4-Lite_defclk_22_220105.png

Run Connection Automation が表示されないかと思っていたら、 ZYNQ7 Processing System に HP Slave AXI interface を追加するのを忘れていた。
ZYNQ7 Processing System をダブルクリックして、設定画面を開く。
PS-PL Configuration をクリックして、HP Slave AXI interface を展開し、S AXI HP0 interface の Select ボックスにチェックを入れた。
AXI4-Lite_defclk_23_220105.png

Run Connection Automation が表示された。
AXI4-Lite_defclk_24_220105.png

Run Connection Automation をクリックした。
S_AXI_HP0 を FCLK_CLK0 ( 100 MHz ) に接続した。
AXI4-Lite_defclk_25_220105.png

ブロック・デザインが完成した。
AXI4-Lite_defclk_26_220105.png

Create HDL Wrapper... でトップの Verilog HDL ファイル DMA_pow2_defclk_bd_wrapper.v を作成した。
AXI4-Lite_defclk_27_220105.png

Flow Navigator の PROGRAM AND DEBUG から Generate Bitstream をクリックして、論理合成、インプリメンテーション、ビットストリームの生成を行った。
Project Summary を示す。
AXI4-Lite_defclk_28_220106.png

タイミング・エラーが出ている。
  1. 2022年01月06日 04:25 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定する3

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定する2”の続き。

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定してみようということで、前回は、C コードの合成と C/RTL 協調シミュレーションを行ったが、C/RTL 協調シミュレーションがエラーで停止してしまった。Export RTL と Implementation は Vitis HLS 2022 年問題が出てしまった。今回は、前回の C コードの合成の AXI4 Master のアドレス幅が 64 ビットになっていたので、32 ビットに変更し、もう一度 C コードの合成と Export RTL をやり直した。更に C/RTL 協調シミュレーションも Dump Trace の設定を port にしたら成功した。

前回の C コードの合成の AXI4 Master のアドレス幅が 64 ビットになっていたので、32 ビットに変更しよう。
Vitis HLS 2021.2 の Solution メニューから Solution Settings... を選択する。
Solution Settings (solutiojn1) ダイアログが開く。
config_interface を展開して、 m_axi_addr64 の Value のチェックボックスのチェックをクリックして外す。
AXI4-Lite_defclk_8_220105.png

これで、もう一度 C コードの合成を行った。
HW interface -> M_AXI -> m_axi_gmem の Address Width が 32 ビットになった。
AXI4-Lite_defclk_9_220105.png

C/RTL 協調シミュレーションを行う時に、Co-Simulation ダイアログで Dump Trace を port に設定した。(前回は、all に設定してエラーになった)
AXI4-Lite_defclk_11_220105.png

C/RTL 協調シミュレーションが成功した。
AXI4-Lite_defclk_12_220105.png

C/RTL 協調シミュレーションの波形を示す。
ap_clk は 10 ns つまり 100 MHz になっている。
AXI4-Lite_defclk_13_220105.png

axi4l_clk は 20 ns つまり、50 MHz だった。
AXI4-Lite_defclk_14_220105.png

Export RTL を行うと、 Vitis HLS 2022 年問題でエラーになった。
AXI4-Lite_defclk_10_220105.png

Vivado HLS, Vitis HLS で 2022 年問題発生”でエラーを回避して、 IP 化することができた。
AXI4-Lite_defclk_15_220105.png
  1. 2022年01月05日 04:37 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定する2

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定する”の続き。

Vitis HLS 2021.2 で AXI4-Lite インターフェースのクロックに別のクロックを指定してみようということで、前回は、Vitis HLS 2021.2 のプロジェクトを作成し、C シミュレーションを行った。今回は、C コードの合成と C/RTL 協調シミュレーションを行ったが、C/RTL 協調シミュレーションがエラーで停止してしまった。Export RTL と Implementation は Vitis HLS 2022 年問題が出てしまった。

最初に C コードの合成を行った。
AXI4-Lite_defclk_3_220103.png

特段変わったことはない。
合成結果の DMA_pow2.v を見ると、クロックが ap_clk と axi4l_clk と 2 つある。リセットも ap_rst_n と ap_rst_n_axi4l_clk と 2 つある。
AXI4-Lite_defclk_5_220103.png
AXI4-Lite_defclk_6_220103.png

AXI4-Lite インターフェースを司る DMA_pow2_control_s_axi.v を見ると ACLK と clk の 2 つのクロックがある。
ACLK がAXI4-Lite インターフェースのクロックで、 clk が内部クロックだ。
AXI4-Lite_defclk_7_220103.png

Verilog HDL ソースコードを見るとクロック載せ替えには注意が払われていないように見える?

C/RTL 協調シミュレーションを行ったが信号が無いと言われてエラーだった。
AXI4-Lite_defclk_4_220103.png

## add_wave /apatb_DMA_pow2_top/m_axi_gmem_BUSER -into $wdata_group -radix hex
ERROR: [Wavedata 42-471] Note: Nothing was found for the following items: /apatb_DMA_pow2_top/m_axi_gmem_BUSER 
ERROR: [Common 17-39] 'add_wave' failed due to earlier errors.

    while executing
"add_wave /apatb_DMA_pow2_top/m_axi_gmem_BUSER -into $wdata_group -radix hex"
    (file "DMA_pow2.tcl" line 103)



Export RTL と Implementation は Vitis HLS 2022 年問題が出てしまった。

最後に AXI4-Lite インターフェースを司る DMA_pow2_control_s_axi.v を貼っておく。

// ==============================================================
// Vitis HLS - High-Level Synthesis from C, C++ and OpenCL v2021.2 (64-bit)
// Copyright 1986-2021 Xilinx, Inc. All Rights Reserved.
// ==============================================================
`timescale 1ns/1ps
module DMA_pow2_control_s_axi
#(parameter
    C_S_AXI_ADDR_WIDTH = 6,
    C_S_AXI_DATA_WIDTH = 32
)(
    input  wire                          ACLK,
    input  wire                          ARESET,
    input  wire                          ACLK_EN,
    input  wire [C_S_AXI_ADDR_WIDTH-1:0] AWADDR,
    input  wire                          AWVALID,
    output wire                          AWREADY,
    input  wire [C_S_AXI_DATA_WIDTH-1:0] WDATA,
    input  wire [C_S_AXI_DATA_WIDTH/8-1:0] WSTRB,
    input  wire                          WVALID,
    output wire                          WREADY,
    output wire [1:0]                    BRESP,
    output wire                          BVALID,
    input  wire                          BREADY,
    input  wire [C_S_AXI_ADDR_WIDTH-1:0] ARADDR,
    input  wire                          ARVALID,
    output wire                          ARREADY,
    output wire [C_S_AXI_DATA_WIDTH-1:0] RDATA,
    output wire [1:0]                    RRESP,
    output wire                          RVALID,
    input  wire                          RREADY,
    output wire                          interrupt,
    input  wire                          clk,
    input  wire                          rst,
    output wire                          ap_start,
    input  wire                          ap_done,
    input  wire                          ap_ready,
    input  wire                          ap_idle,
    input  wire [31:0]                   ap_return,
    output wire [63:0]                   in_r,
    output wire [63:0]                   out_r,
    input  wire [0:0]                    ap_local_deadlock
);
//------------------------Address Info-------------------
// 0x00 : Control signals
//        bit 0  - ap_start (Read/Write/COH)
//        bit 1  - ap_done (Read/COR)
//        bit 2  - ap_idle (Read)
//        bit 3  - ap_ready (Read/COR)
//        bit 7  - auto_restart (Read/Write)
//        others - reserved
// 0x04 : Global Interrupt Enable Register
//        bit 0  - Global Interrupt Enable (Read/Write)
//        others - reserved
// 0x08 : IP Interrupt Enable Register (Read/Write)
//        bit 0 - enable ap_done interrupt (Read/Write)
//        bit 1 - enable ap_ready interrupt (Read/Write)
//        bit 5 - enable ap_local_deadlock interrupt (Read/Write)
//        others - reserved
// 0x0c : IP Interrupt Status Register (Read/TOW)
//        bit 0 - ap_done (COR/TOW)
//        bit 1 - ap_ready (COR/TOW)
//        bit 5 - ap_local_deadlock (COR/TOW)
//        others - reserved
// 0x10 : Data signal of ap_return
//        bit 31~0 - ap_return[31:0] (Read)
// 0x18 : Data signal of in_r
//        bit 31~0 - in_r[31:0] (Read/Write)
// 0x1c : Data signal of in_r
//        bit 31~0 - in_r[63:32] (Read/Write)
// 0x20 : reserved
// 0x24 : Data signal of out_r
//        bit 31~0 - out_r[31:0] (Read/Write)
// 0x28 : Data signal of out_r
//        bit 31~0 - out_r[63:32] (Read/Write)
// 0x2c : reserved
// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake)

//------------------------Parameter----------------------
localparam
    ADDR_AP_CTRL      = 6'h00,
    ADDR_GIE          = 6'h04,
    ADDR_IER          = 6'h08,
    ADDR_ISR          = 6'h0c,
    ADDR_AP_RETURN_0  = 6'h10,
    ADDR_IN_R_DATA_0  = 6'h18,
    ADDR_IN_R_DATA_1  = 6'h1c,
    ADDR_IN_R_CTRL    = 6'h20,
    ADDR_OUT_R_DATA_0 = 6'h24,
    ADDR_OUT_R_DATA_1 = 6'h28,
    ADDR_OUT_R_CTRL   = 6'h2c,
    WRIDLE            = 2'd0,
    WRDATA            = 2'd1,
    WRRESP            = 2'd2,
    WRRESET           = 2'd3,
    RDIDLE            = 2'd0,
    RDDATA            = 2'd1,
    RDRESET           = 2'd2,
    ADDR_BITS                = 6;

//------------------------Local signal-------------------
    reg  [1:0]                    wstate = WRRESET;
    reg  [1:0]                    wnext;
    reg  [ADDR_BITS-1:0]          waddr;
    wire [C_S_AXI_DATA_WIDTH-1:0] wmask;
    wire                          aw_hs;
    wire                          w_hs;
    reg  [1:0]                    rstate = RDRESET;
    reg  [1:0]                    rnext;
    reg  [C_S_AXI_DATA_WIDTH-1:0] rdata;
    wire                          ar_hs;
    wire [ADDR_BITS-1:0]          raddr;
    // internal registers
    reg                           int_ap_idle;
    reg                           int_ap_ready = 1'b0;
    reg                           int_ap_done = 1'b0;
    wire                          ap_done_get;
    reg                           ap_done_ext;
    reg                           int_ap_start = 1'b0;
    wire                          ap_start_set;
    reg                           ap_start_mask;
    reg                           int_auto_restart = 1'b0;
    wire                          auto_restart_set;
    reg                           int_gie = 1'b0;
    reg  [5:0]                    int_ier = 6'b0;
    wire                          ier_toggle;
    reg                           ier_mask;
    reg  [5:0]                    int_isr = 6'b0;
    wire                          isr_toggle;
    reg                           isr_mask;
    reg  [31:0]                   int_ap_return;
    reg  [63:0]                   int_in_r = 'b0;
    reg  [63:0]                   int_out_r = 'b0;

//------------------------Instantiation------------------


//------------------------AXI write fsm------------------
assign AWREADY = (wstate == WRIDLE);
assign WREADY  = (wstate == WRDATA);
assign BRESP   = 2'b00;  // OKAY
assign BVALID  = (wstate == WRRESP);
assign wmask   = { {8{WSTRB[3]}}, {8{WSTRB[2]}}, {8{WSTRB[1]}}, {8{WSTRB[0]}} };
assign aw_hs   = AWVALID & AWREADY;
assign w_hs    = WVALID & WREADY;

// wstate
always @(posedge ACLK) begin
    if (ARESET)
        wstate <= WRRESET;
    else if (ACLK_EN)
        wstate <= wnext;
end

// wnext
always @(*) begin
    case (wstate)
        WRIDLE:
            if (AWVALID)
                wnext = WRDATA;
            else
                wnext = WRIDLE;
        WRDATA:
            if (WVALID)
                wnext = WRRESP;
            else
                wnext = WRDATA;
        WRRESP:
            if (BREADY)
                wnext = WRIDLE;
            else
                wnext = WRRESP;
        default:
            wnext = WRIDLE;
    endcase
end

// waddr
always @(posedge ACLK) begin
    if (ACLK_EN) begin
        if (aw_hs)
            waddr <= AWADDR[ADDR_BITS-1:0];
    end
end

//------------------------AXI read fsm-------------------
assign ARREADY = (rstate == RDIDLE);
assign RDATA   = rdata;
assign RRESP   = 2'b00;  // OKAY
assign RVALID  = (rstate == RDDATA);
assign ar_hs   = ARVALID & ARREADY;
assign raddr   = ARADDR[ADDR_BITS-1:0];

// rstate
always @(posedge ACLK) begin
    if (ARESET)
        rstate <= RDRESET;
    else if (ACLK_EN)
        rstate <= rnext;
end

// rnext
always @(*) begin
    case (rstate)
        RDIDLE:
            if (ARVALID)
                rnext = RDDATA;
            else
                rnext = RDIDLE;
        RDDATA:
            if (RREADY & RVALID)
                rnext = RDIDLE;
            else
                rnext = RDDATA;
        default:
            rnext = RDIDLE;
    endcase
end

// rdata
always @(posedge ACLK) begin
    if (ACLK_EN) begin
        if (ar_hs) begin
            rdata <= 'b0;
            case (raddr)
                ADDR_AP_CTRL: begin
                    rdata[0] <= int_ap_start;
                    rdata[1] <= int_ap_done;
                    rdata[2] <= int_ap_idle;
                    rdata[3] <= int_ap_ready;
                    rdata[7] <= int_auto_restart;
                end
                ADDR_GIE: begin
                    rdata <= int_gie;
                end
                ADDR_IER: begin
                    rdata <= int_ier;
                end
                ADDR_ISR: begin
                    rdata <= int_isr;
                end
                ADDR_AP_RETURN_0: begin
                    rdata <= int_ap_return[31:0];
                end
                ADDR_IN_R_DATA_0: begin
                    rdata <= int_in_r[31:0];
                end
                ADDR_IN_R_DATA_1: begin
                    rdata <= int_in_r[63:32];
                end
                ADDR_OUT_R_DATA_0: begin
                    rdata <= int_out_r[31:0];
                end
                ADDR_OUT_R_DATA_1: begin
                    rdata <= int_out_r[63:32];
                end
            endcase
        end
    end
end


//------------------------Register logic-----------------
assign interrupt        = int_gie & (|int_isr);
assign ap_start         = int_ap_start;
assign ap_start_set     = w_hs && waddr == ADDR_AP_CTRL && WSTRB[0] && WDATA[0];
assign ap_done_get      = ar_hs && raddr == ADDR_AP_CTRL && int_ap_done;
assign auto_restart_set = w_hs && waddr == ADDR_AP_CTRL && WSTRB[0];
assign isr_toggle       = w_hs && waddr == ADDR_ISR && WSTRB[0];
assign in_r             = int_in_r;
assign out_r            = int_out_r;
// ap_start_mask
always @(posedge clk) begin
    if (rst)
        ap_start_mask <= 1'b0;
    else
        ap_start_mask <= ap_start_set;
end
// int_ap_start
always @(posedge clk) begin
    if (rst)
        int_ap_start <= 1'b0;
    else if (ap_start_set == 1'b1 && ap_start_mask == 1'b0)
        int_ap_start <= 1'b1;
    else if (ap_ready)
        int_ap_start <= int_auto_restart; // clear on handshake/auto restart
end
// ap_done_ext
always @(posedge clk) begin
    if (rst)
        ap_done_ext <= 1'b0;
    else
        ap_done_ext <= ap_done_get;
end
// int_ap_done
always @(posedge clk) begin
    if (rst)
        int_ap_done <= 1'b0;
    else if (ap_done)
        int_ap_done <= 1'b1;
    else if (ap_done_get == 1'b0 && ap_done_ext == 1'b1)
        int_ap_done <= 1'b0; // clear on read
end
// int_ap_idle
always @(posedge clk) begin
    if (rst)
        int_ap_idle <= 1'b0;
    else
        int_ap_idle <= ap_idle;
end
// int_ap_ready
always @(posedge clk) begin
    if (rst)
        int_ap_ready <= 1'b0;
    else
        int_ap_ready <= ap_ready;
end
// int_auto_restart
always @(posedge clk) begin
    if (rst)
        int_auto_restart <= 1'b0;
    else if (auto_restart_set == 1'b1)
        int_auto_restart <=  WDATA[7];
end
// int_gie
always @(posedge clk) begin
    if (rst)
        int_gie <= 1'b0;
    else if (w_hs && waddr == ADDR_GIE && WSTRB[0])
        int_gie <= WDATA[0];
end
// int_ier
always @(posedge clk) begin
    if (rst)
        int_ier <= 'b0;
    else if (w_hs && waddr == ADDR_IER && WSTRB[0])
        int_ier <= WDATA[5:0];
    else if (w_hs && waddr == ADDR_IER && WSTRB[0])
        int_ier <= WDATA[5:0];
end
// isr_mask
always @(posedge clk) begin
    if (rst)
        isr_mask <= 1'b0;
    else
        isr_mask <= isr_toggle;
end
// int_isr[0]
always @(posedge clk) begin
    if (rst)
        int_isr[0] <= 1'b0;
    else if (int_ier[0] & ap_done)
        int_isr[0] <= 1'b1;
    else if (isr_toggle == 1'b1 && isr_mask == 1'b0)
        int_isr[0] <= int_isr[0] ^ WDATA[0]; // toggle on write
end
// int_isr[1]
always @(posedge clk) begin
    if (rst)
        int_isr[1] <= 1'b0;
    else if (int_ier[1] & ap_ready)
        int_isr[1] <= 1'b1;
    else if (isr_toggle == 1'b1 && isr_mask == 1'b0)
        int_isr[1] <= int_isr[1] ^ WDATA[1]; // toggle on write
end
// int_isr[5]
always @(posedge clk) begin
    if (rst)
        int_isr[5] <= 1'b0;
    else if (int_ier[5] & ap_local_deadlock)
        int_isr[5] <= 1'b1;
    else if (isr_toggle == 1'b1 && isr_mask == 1'b0)
        int_isr[5] <= int_isr[5] ^ WDATA[5]; // toggle on write
end
// int_ap_return
always @(posedge clk) begin
    if (rst)
        int_ap_return <= 0;
    else if (ap_done)
        int_ap_return <= ap_return;
end
// int_in_r[31:0]
always @(posedge clk) begin
    if (rst)
        int_in_r[31:0] <= 0;
    else if (w_hs && waddr == ADDR_IN_R_DATA_0)
        int_in_r[31:0] <= (WDATA[31:0] & wmask) | (int_in_r[31:0] & ~wmask);
end
// int_in_r[63:32]
always @(posedge clk) begin
    if (rst)
        int_in_r[63:32] <= 0;
    else if (w_hs && waddr == ADDR_IN_R_DATA_1)
        int_in_r[63:32] <= (WDATA[31:0] & wmask) | (int_in_r[63:32] & ~wmask);
end
// int_out_r[31:0]
always @(posedge clk) begin
    if (rst)
        int_out_r[31:0] <= 0;
    else if (w_hs && waddr == ADDR_OUT_R_DATA_0)
        int_out_r[31:0] <= (WDATA[31:0] & wmask) | (int_out_r[31:0] & ~wmask);
end
// int_out_r[63:32]
always @(posedge clk) begin
    if (rst)
        int_out_r[63:32] <= 0;
    else if (w_hs && waddr == ADDR_OUT_R_DATA_1)
        int_out_r[63:32] <= (WDATA[31:0] & wmask) | (int_out_r[63:32] & ~wmask);
end

//------------------------Memory logic-------------------

endmodule

  1. 2022年01月03日 05:10 |
  2. Vitis HLS
  3. | トラックバック:0
  4. | コメント:0
»

ターコイズ シルバーバングル トルコ石 ブレスレット ココペリ ココペリ バングル【受注製作】音楽の妖精 925 ウェブターコイズ シルバー 925 ハンドメイド シルバー職人 手作り【長さ 約15cmから16cm】

ターコイズ シルバーバングル トルコ石 ブレスレット ココペリ ココペリ バングル【受注製作】音楽の妖精 925 ウェブターコイズ シルバー 925 ハンドメイド シルバー職人 手作り【長さ 約15cmから16cm】:私たちの目標は、いつでもどこでも必要なときに利用できることです。以下に、テクノロジーについて学び、見、話し続けるためのさまざまなオプションを示します。 【人気ショップが最安値挑戦!】,【即出荷】,即納最大半額ターコイズ シルバーバングル トルコ石 ブレスレット ココペリ ココペリ バングル【受注製作】音楽の妖精 925 ウェブターコイズ シルバー 925 ハンドメイド シルバー職人 手作り【長さ 約15cmから16cm】