FC2カウンター yz92*コシノジュンコ*仕立上がり浴衣(綿100%)+両面小袋帯+JK下駄+飾り紐+JKスタッズバッグ+東レ浴衣スリップ***165cm位までの女性へ約60%OFF Yz92*(送料無料)**JK浴衣6点セット♪白地に艶やかな芍薬&紅葉~お届けしたその日に、ささ~っとすぐお出かけできますね~【smtb-k】【kb】【あす楽対応_関西】 レディースファッション

yz92*コシノジュンコ*仕立上がり浴衣(綿100%)+両面小袋帯+JK下駄+飾り紐+JKスタッズバッグ+東レ浴衣スリップ***165cm位までの女性へ約60%OFF Yz92*(送料無料)**JK浴衣6点セット♪白地に艶やかな芍薬&紅葉~お届けしたその日に、ささ~っとすぐお出かけできますね~【smtb-k】【kb】【あす楽対応_関西】

yz92*コシノジュンコ*仕立上がり浴衣(綿100%)+両面小袋帯+JK下駄+飾り紐+JKスタッズバッグ+東レ浴衣スリップ***165cm位までの女性へ約60%OFF Yz92*(送料無料)**JK浴衣6点セット♪白地に艶やかな芍薬&紅葉~お届けしたその日に、ささ~っとすぐお出かけできますね~【smtb-k】【kb】【あす楽対応_関西】

11115円

yz92*コシノジュンコ*仕立上がり浴衣(綿100%)+両面小袋帯+JK下駄+飾り紐+JKスタッズバッグ+東レ浴衣スリップ***165cm位までの女性へ約60%OFF Yz92*(送料無料)**JK浴衣6点セット♪白地に艶やかな芍薬&紅葉~お届けしたその日に、ささ~っとすぐお出かけできますね~【smtb-k】【kb】【あす楽対応_関西】

yz92*コシノジュンコ*仕立上がり浴衣(綿100%)+両面小袋帯+JK下駄+飾り紐+JKスタッズバッグ+東レ浴衣スリップ***165cm位までの女性へ約60%OFF Yz92*(送料無料)**JK浴衣6点セット♪白地に艶やかな芍薬&紅葉~お届けしたその日に、ささ~っとすぐお出かけできますね~【smtb-k】【kb】【あす楽対応_関西】:私たちの目標は、いつでもどこでも必要なときに利用できることです。以下に、テクノロジーについて学び、見、話し続けるためのさまざまなオプションを示します。 最大69%オフ!,73%以上節約,選ぶならyz92*コシノジュンコ*仕立上がり浴衣(綿100%)+両面小袋帯+JK下駄+飾り紐+JKスタッズバッグ+東レ浴衣スリップ***165cm位までの女性へ約60%OFF Yz92*(送料無料)**JK浴衣6点セット♪白地に艶やかな芍薬&紅葉~お届けしたその日に、ささ~っとすぐお出かけできますね~【smtb-k】【kb】【あす楽対応_関西】
fc2ブログ

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

FPGAの部屋

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







★☆【小粋なJK大人の女性綿絽プレタ浴衣セット】☆★

商品説明1*浴衣*小粋なJK*白地に艶やかな芍薬&紅葉 **綿絽製品ですので、夏の単としても重宝するお召物でございます

2**両面小袋帯 * 国産  ♪ポリ*100% 

3**JK桐下駄 :鼻緒→:ナイロン60%レーヨン40%**下駄 実寸約24、5cm(サイズ測りの多少の誤差はご容赦ください)
4**飾り紐

5**JKスタッズバッグ

6**東レ浴衣スリップ  上身頃→ 綿73%ポリエステル27%**下身頃*ポリエステル100%**上身頃部分の吸水速乾性により、サラサラした着心地を保ちます。通常小売価格3800円を当店では1800円しかも浴衣 セット等と同時お買い上げの方のみに特別価格1000円にてご奉仕価格でございます

JK)の浴衣単品のみでもメーカー希望小売価格35,000円(+消費税)ですので、約60%OFFとってもお買い得
JK単品のみお求めの方は備考欄にてお申し付けください。
14000円(+消費)でございます
JK下駄単品の場合は3300円(+消費税+送料)でございます
浴衣下肌着不要な方は(-1000円+消費税でございます)
浴衣  綿100%  ポリエステル 
【身丈→163cm 袖丈→49cm  裄→68cm】

適応身長約155cm~約165cm位までの女性へ
(その人の体型にもよります 一応の目安とお考えください)


家族 お友達 彼とカタカタ下駄ならし 出かけましょう~!
 




原則的には日曜日発送はしておりません
注意事項出来るだけ現物の色に近づける努力をしていますが、モニターの関係で

どうしても多少違う場合があります
また、御写真のものとおおくりするものの柄とりが多少違う場合がございます事ございます、予めご了承の上お買い上げください

@当店では納品書を発行しておりませんが、必要な方はお手数ですが 備考欄にて 【必要の旨】お書きください。領収書が必要な方も同様に 備考欄にてお書きくださいますようお願い申しあげます 【あす楽対応_東海】



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

こちらも変わっていない。
1日1本噛んで実感!オーラルケア!歯磨きおやつグリニーズ♪ グリニーズ プラス 成犬用 超小型犬用 60本 12個 セット ■ セット デンタル ハミガキ 歯磨き ケア ドッグ まとめ買い おまとめ【あす楽対応】 同梱不可【送料無料】マリメッコ ブビ marimekko BUBI 壁紙 北欧 マリメッコ ブビ 壁紙 幅70cm marimekko BUBI Marimekko5 【輸入壁紙】[地域限定 無料引取サービス] フランスベッド GR-02F DR 引き出し付き 引き出し収納ベッド ダブルサイズ ダブルベッド ベッドフレーム F4フォースター フラットタイプ 日本製 国産ベッド 同等商品無料引取サービス マットレス別売り2段階の首振り部のついたラチェットレンチです。 4977292296526 【送料込・まとめ買い×120個セット】藤原産業 SK11 ダブル ジョイント ラチェット MSFR-12DLeSportsac レスポートサック 手提げバッグ 【送料無料】 LeSportsac レスポートサック 3356/F101 手提げバッグ レディース 【送料無料】ハネ上げ式、しなやかなチタン合金ゴムメタル! 【DUN】ドゥアン 日本製 ゴムメタル チタン ハネ上げ式眼鏡メガネ フレーム DUN2102-5(度入り対応/フィット調整対応SEAGATE 3.5インチ内蔵HDD 4TB SATA6Gb 7.2K 128MB ST4000NE001ひな人形の脇飾りや命名旗などに♪お子様のお名前が入った名前旗でお祝い行事を華やかに演出します! 【女の子用 名前旗 大(全長90cm台付) 桜(さくら)・蝶(ちょう)/えんじ色・赤色/金文字刺繍】命名旗/名入れ/掛け軸/生年月日/桃の節句/初節句/ひな人形/脇飾り/雛飾り/ご出産祝い/お食い初め/記念品/贈り物【半額以下】
健やかな腸内環境をサポート ヒルズ サイエンスダイエット 小型犬用 腸の健康サポートプラス 1歳以上 チキン 2.5kg×4個 セット ■ ドッグフード 成犬 アダルト 高齢犬 シニア SCIENCE DIET 同梱不可
【送料無料】マイセン イエローローズ Meissen カップソーサー 食器 マイセン イエローローズ 020610-633 ティーカップ&ソーサー + 020610-472 プレート20cm 3ピースセット 【お皿】
[地域限定 無料引取サービス] フランスベッド GR-01F SC 引き出しなし ダブルサイズ ダブルベッド ベッドフレーム F4フォースター フラットタイプ 日本製 国産ベッド 同等商品無料引取サービス マットレス別売り
持ち運びにも便利な携帯用ハンドソープ 4537130102497 【送料込・まとめ買い×36個セット】ミヨシ石鹸 無添加せっけん 泡のハンドソープ 携帯用 30ml
面取り・バリ取りに最適な刃付けを施した超硬ロータリーバー 超硬ロータリーバー バリ取り用 軸径Φ6mm SG1011 1本
ファーストRayBanとしてお得な価格! 【Ray-Ban】レイバン サングラス RB4260D-710/80 YOUNGSTER ラージサイズ (度入り対応/フィット調整対応 送料無料!
GLOBBER ■ゴーアップ/ティール WLGB644105
【ボトルキャッププレゼント中!】アウトドア対応のハイチェア★ 【正規品】ONE2STAY ワンツーステイ ポータブルハイチェア 専用バッグ付き/テーブル付き/折りたたみ式/収納ポケット/シートベルト付き/屋外対応/ベビーチェア/ダイニング/ハイチェア/椅子/ベビー/赤ちゃん/子供/お食事/お出かけ/アウトドア【Femstar】【あす楽対応】
ゴローズ goro's 中古 SVコンチョ バッグ ゴローズ goro's 中古 SVコンチョ バッグ【エンポリオ アルマーニ 時計 AR11316】【送料無料】【新作モデル】 エンポリオアルマーニ 時計 EMPORIO ARMANI レディース 腕時計 Gianni T-Bar AR11316 【あす楽】【送料無料】 K18 WG あこや 真珠 パール ネックレス 本真珠 フォーマル パーティー 結婚式 成人式 冠婚葬祭 ムーンレーベル パール ネックレス 一粒 あこや真珠 8.0mm アコヤ 真珠 ペンダント K18WG ホワイトゴールド レディース HA00080R13CW0904W0 ムーンレーベル Moon Label和歌山市 ふるさと納税 有限会社 島本化繊起毛工場 【ふるさと納税】オーガニックコットン使用ボタニカル染めリバーシブルガーゼケット ピンク | 和歌山県 和歌山市 和歌山 ふるさと 納税 支援品 返礼品 ガーゼケット ガーゼ ケット オーガニックコットン 寝具 あったか 暖かい あったかグッズ あったか寝具Aランク 【1/5-1/6限定10%OFFクーポン】【MSOFFICE付】【展示品】 中古 ノートパソコン マイクロソフト Surface Laptop3 13 プラチナ Core i5 1035G7 1.2GHz メモリ8GB SSD128GB 13.5 アルカンターラ Windows10Home office2019 1年保証送料無料 あす楽 新品 ギフト 2021年秋冬新作 レビュー記入で次回から使える2000円クーポンプレゼント マルニ MARNI 財布 レディース PFMOE11U11 LV520 Z437N ラウンドファスナー長財布 DEEP RED+LIGHT PINK+SMOKE マルチカラーWA承認品、JAAF検定品 ニシ・スポーツ(NISHI)円盤 OTEカーボン 女子用 1.0kg NC718AJouete レディース アクセサリー ジュエッテ ラップイヤリング【size:M】 Jouete ジュエッテ アクセサリー イヤリング イエロー【送料無料】[Rakuten Fashion]
ゴローズ goro's 中古 OLDK18付フラワーコンチョ 大 ゴローズ goro's 中古 OLDK18付フラワーコンチョ 大
【送料無料】【ラッピング無料】ヴィヴィアンウエストウッド ピアス 62030032-G002 Vivienne Westwood ヴィヴィアンウエストウッド Vivienne Westwood ピアス Bobby Earring 62030032-G002 【あす楽】
【送料無料】 K18 WG 真珠 パール ペンダント トップ タヒチ 黒蝶真珠 ブラックパール 黒真珠 ムーンレーベル パール ペンダント トップ 9mm 黒蝶 真珠 ペンダント トップ K18 イエローゴールド レディース NB00009R21BK01278Y-T ムーンレーベル Moon Label
和歌山市 ふるさと納税 株式会社ティーエムテック 【ふるさと納税】「日本城」吟醸純米酒と特別本醸造1.8L×2種セット | 和歌山県 和歌山市 和歌山 ふるさと 納税 支援品 支援 返礼品 返礼 お礼の品 お取り寄せ 取り寄せ お酒 酒 おさけ さけ アルコール飲料 日本酒 吟醸 吟醸酒 純米 純米酒 ご当地 地酒
中古PC選びにお悩みの方へ店長がおすすめのパソコンをお選びします※注意※お届け機種スペックのご要望お受けできませんノートパソコン 中古ノートパソコン あす楽【外付けWEBカメラ付き】中古 ノートパソコン 第6世代 Core i5搭載 SSD480GB メモリ8GB 中古パソコン Windows10 A4 店長おまかせ 送料無料【インバースおまかせシリーズ 中古 1年保証 簡単設定! ECOぱそ Office付 お試しOK 高評価レビュー多数 プロにお任せ 】
送料無料 あす楽 新品 ギフト 2021年秋冬新作 レビュー記入で次回から使える2000円クーポンプレゼント マックス マーラ MAX MARA ポロシャツ レディース 13660419 600 020 半袖ポロシャツ RICORDO リコルド BROWN ブラウン
色々なスタイルの競技者におススメ ニシ・スポーツ(NISHI)ペーサーFXVポール 4.42m (14'6") NCFXV440 受注生産・直送品3 棒高跳
Jouete レディース アクセサリー ジュエッテ バングル Jouete ジュエッテ アクセサリー ブレスレット イエロー【送料無料】[Rakuten Fashion]
  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
»

yz92*コシノジュンコ*仕立上がり浴衣(綿100%)+両面小袋帯+JK下駄+飾り紐+JKスタッズバッグ+東レ浴衣スリップ***165cm位までの女性へ約60%OFF Yz92*(送料無料)**JK浴衣6点セット♪白地に艶やかな芍薬&紅葉~お届けしたその日に、ささ~っとすぐお出かけできますね~【smtb-k】【kb】【あす楽対応_関西】

yz92*コシノジュンコ*仕立上がり浴衣(綿100%)+両面小袋帯+JK下駄+飾り紐+JKスタッズバッグ+東レ浴衣スリップ***165cm位までの女性へ約60%OFF Yz92*(送料無料)**JK浴衣6点セット♪白地に艶やかな芍薬&紅葉~お届けしたその日に、ささ~っとすぐお出かけできますね~【smtb-k】【kb】【あす楽対応_関西】:私たちの目標は、いつでもどこでも必要なときに利用できることです。以下に、テクノロジーについて学び、見、話し続けるためのさまざまなオプションを示します。 最大69%オフ!,73%以上節約,選ぶならyz92*コシノジュンコ*仕立上がり浴衣(綿100%)+両面小袋帯+JK下駄+飾り紐+JKスタッズバッグ+東レ浴衣スリップ***165cm位までの女性へ約60%OFF Yz92*(送料無料)**JK浴衣6点セット♪白地に艶やかな芍薬&紅葉~お届けしたその日に、ささ~っとすぐお出かけできますね~【smtb-k】【kb】【あす楽対応_関西】