FC2カウンター 24.7シリーズのネイビーブルーチノパンツ 【定価42,900円(税込)】tramarossa トラマロッサ ロングフライトやドライブなどどんな時でも穿きたくなるほどの伸縮性が売り!美脚シルエットのスーパーストレッチカラーチノパンツ≪24.7≫20071348 ネイビーブルー LUIS SLIM-ルイススリム- 28 29 30 31 32 33 34 35 36 ズボン・パンツ

24.7シリーズのネイビーブルーチノパンツ 【定価42,900円(税込)】tramarossa トラマロッサ ロングフライトやドライブなどどんな時でも穿きたくなるほどの伸縮性が売り!美脚シルエットのスーパーストレッチカラーチノパンツ≪24.7≫20071348 ネイビーブルー LUIS SLIM-ルイススリム- 28 29 30 31 32 33 34 35 36

24.7シリーズのネイビーブルーチノパンツ 【定価42,900円(税込)】tramarossa トラマロッサ ロングフライトやドライブなどどんな時でも穿きたくなるほどの伸縮性が売り!美脚シルエットのスーパーストレッチカラーチノパンツ≪24.7≫20071348 ネイビーブルー LUIS SLIM-ルイススリム- 28 29 30 31 32 33 34 35 36

12870円

24.7シリーズのネイビーブルーチノパンツ 【定価42,900円(税込)】tramarossa トラマロッサ ロングフライトやドライブなどどんな時でも穿きたくなるほどの伸縮性が売り!美脚シルエットのスーパーストレッチカラーチノパンツ≪24.7≫20071348 ネイビーブルー LUIS SLIM-ルイススリム- 28 29 30 31 32 33 34 35 36

24.7シリーズのネイビーブルーチノパンツ 【定価42,900円(税込)】tramarossa トラマロッサ ロングフライトやドライブなどどんな時でも穿きたくなるほどの伸縮性が売り!美脚シルエットのスーパーストレッチカラーチノパンツ≪24.7≫20071348 ネイビーブルー LUIS SLIM-ルイススリム- 28 29 30 31 32 33 34 35 36:拡大を続ける中国の卸売メーカーのネットワークから直接購入するため、最高水準を維持しながらコストを低く抑えることができます。 いよいよ人気ブランド,大人気定番商品,新登場24.7シリーズのネイビーブルーチノパンツ 【定価42,900円(税込)】tramarossa トラマロッサ ロングフライトやドライブなどどんな時でも穿きたくなるほどの伸縮性が売り!美脚シルエットのスーパーストレッチカラーチノパンツ≪24.7≫20071348 ネイビーブルー LUIS SLIM-ルイススリム- 28 29 30 31 32 33 34 35 36
fc2ブログ

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

FPGAの部屋

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












ITEM INFORMATION
ブランドtramarossa #8211;トラマロッサ
カラーネイビーブルー
素材コットン87%
ポリエステル9%
ポリウレタン4% 
パッチ部分:牛革
仕様スリムストレート〈ルイス・スリム〉
ダブル裾
ジッパーフライ
フレバー(香り)付き
イタリア製
シルバーの金具飾り
《購入時備考欄に「好きなアルファベット2文字」をご記載ください。金具飾りは、在庫がある限りはご対応させて頂きますが、在庫切れの場合は、恐縮ではございますが、ご記載頂きましても付属せずに発送させて頂きます。予めご了承ください。》
例)SとT
定価39,000円+税
ご注意※ウォッシュ加工されているアイテムにつきましては若干の誤差はご容赦ください。
※採寸方法については コチラをご確認くださいませ。
※実物を巻尺で採寸しての平均値です。お手持ちのアイテムとのご比較にご利用くださいませ。
※店頭でも販売させていただいておりますので、売り違いの際はご容赦願います。
サイズウエスト股上股下わたり幅裾幅
2874cm21cm81.5cm25cm15cm
2975cm21cm82cm25cm15cm
3076cm22.5cm82.5cm25.5cm15cm
3178cm23cm83.5cm25.5cm15cm
3279cm23.5cm84.5cm26cm15.5cm
3380cm24.5cm85cm27cm16cm
3481cm25.5cm86cm27.5cm17cm
3582cm26cm87cm28cm17.5cm
3684cm26.5cm88cm28.5cm18cm
■メーカー希望小売価格はメーカー商品タグに基づいて掲載しています

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

こちらも変わっていない。
ランドセルや帽子など、お子様の身の回りの物をすっきりコンパクトに収納できるランドセルラック。収納するものから考えられたデザインは、シンプルながらも機能性抜群! 24時間限定クーポン利用で8%OFF1月5日~ ランドセルラック カウンター下 多機能 幅80 高さ62.5 奥行30 ランドセル 収納 キャスター付き 木製 本棚 子供 スリム ラック 絵本ラック キッズ リビング 【直送】【鑑定書付き】【D・VS-2・EXCELLENT】 【中古】PT900ダイヤモンドリング 0.501ct 約11号 約6.6g【USED-AB】シューズbox シューズラック 靴収納 約18足 収納 棚 木製シューズボックス 多目的ラック おしゃれ 【ポイント10倍 1/5まで】 完成品も選べる 木製 下駄箱 シューズボックス 3段 スリム 靴箱 玄関収納 完成品 選べる 全3色 SBX100760ペルシャ絨毯 クム2401315 / シルク100% 手織り ペルシャ絨毯 クム 89×57cm / シルク100% 手織り 手作業 織り子 イラン製 ラグ マット 絨毯 qum【観葉植物 植物 置物 モダン インテリア おしゃれ 人気 引越し祝い 開店祝い 新築祝い 転居祝い お祝い 通販 鉢植え育てやすい 観葉 大型 ギフト プレゼント】 シェフレラ グリーン 8号【バスケット鉢カバー付き/アイボリー】【植物 インテリア おしゃれ 人気 引越し祝い 開店祝い 新築祝い お祝い 通販 鉢植え観葉 ギフト プレゼント】衝撃、熱、薬品に強いアクリストン浴槽。 クリナップ アクリストン浴槽 フォーンス サイズ110X75X62.5cm 満水量240L クリアカラー 埋込式1方半エプロン 定価¥218350- メーカー便にて配送の為代引き不可。【送料無料】堺南海 牛刀 AS-3 24cm ANV02003 堺南海 牛刀 AS-3 24cm ANV02003【送料無料】PENDLETON ペンドルトン LOGGER JACKET SHIRT ロガージャケット チェックシャツジャケット ウール アウター セール品お買い得 PENDLETON ペンドルトン LOGGER JACKET SHIRT ロガージャケット 0575-2010 39ショップ 送料無料 セール品お買い得
【あす楽】布団カバー 布団カバー3点セット セミダブル ホワイト パープル フリル 可愛い ゴージャス 姫 24時間限定クーポン利用で8%OFF1月5日~ 布団カバー3点セット E41 和ダブル (hocola) 布団カバー 布団カバーセット ホワイト パープル フリル 可愛い ゴージャス 姫
【送料無料】 【中古】 OAKLEY (オークリー) 03-781 コミットスクウェア スタンダードフィット サングラス ブラック 眼鏡 ゴルフ 野球 サイクリング 【USED-B】
スチールと木が融合したおしゃれなロートアイアンシリーズ。クラシックな大人かわいいデザインが特徴のテレビ台幅90。 【ポイント10倍 1/5まで】 ヨーロッパ風 ロートアイアン 家具 テレビ台 テレビボード コンパクト 40型 対応 幅90 奥行 42 テレビラック アイアン 脚 アンティーク風
イギリス製 本革 チェスターフィールド 2人掛けソファ Gladstone チェスターフィールド ブルチャート 幅132cm / オールドタイムス ソファ 2Pソファ 二人掛けソファ 二人掛け 2人掛けインテリア 椅子 チェア クラブチェア イギリス 革 本革 牛革 高級 高級家具 輸入家具 最高級 Chester field
【おしゃれな編みこみの幹】【モードな鉢カバー付き】 【スターターセット付】パキラ 7号【ビアス鉢カバー/ブラック】【観葉植物/インテリア/おしゃれ/ナチュラル/鉢植え/贈り物//通販/ミドルサイズ/人気商品/サスティー/SUSTEE/リーフクリン/IBのチカラ】
アンティーク調でお洒落ハワードミラー掛け時計! アンティーク調でお洒落!ハワード・ミラーHoward Miller社製掛け時計 Back 40 625-598 大型掛け時計
【送料無料】フジノス 18-10ロイヤル 外輪鍋 XSD-300 AST05300 フジノス 18-10ロイヤル 外輪鍋 XSD-300 AST05300【送料無料】
2015-1 DENIM CHORE JACKET 10.5oz PW Military Denim ウォッシュ済み 送料無料 2015-1 DENIM CHORE JACKET 10.5oz PW Military Denim ウォッシュ済み
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】【あす楽対応】
  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
»

24.7シリーズのネイビーブルーチノパンツ 【定価42,900円(税込)】tramarossa トラマロッサ ロングフライトやドライブなどどんな時でも穿きたくなるほどの伸縮性が売り!美脚シルエットのスーパーストレッチカラーチノパンツ≪24.7≫20071348 ネイビーブルー LUIS SLIM-ルイススリム- 28 29 30 31 32 33 34 35 36

24.7シリーズのネイビーブルーチノパンツ 【定価42,900円(税込)】tramarossa トラマロッサ ロングフライトやドライブなどどんな時でも穿きたくなるほどの伸縮性が売り!美脚シルエットのスーパーストレッチカラーチノパンツ≪24.7≫20071348 ネイビーブルー LUIS SLIM-ルイススリム- 28 29 30 31 32 33 34 35 36:拡大を続ける中国の卸売メーカーのネットワークから直接購入するため、最高水準を維持しながらコストを低く抑えることができます。 いよいよ人気ブランド,大人気定番商品,新登場24.7シリーズのネイビーブルーチノパンツ 【定価42,900円(税込)】tramarossa トラマロッサ ロングフライトやドライブなどどんな時でも穿きたくなるほどの伸縮性が売り!美脚シルエットのスーパーストレッチカラーチノパンツ≪24.7≫20071348 ネイビーブルー LUIS SLIM-ルイススリム- 28 29 30 31 32 33 34 35 36