FC2カウンター FPGAの部屋 Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする1
FC2ブログ

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

FPGAの部屋

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

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする1

Vivado HLS 2013.4 で作ってあったラプラシアンフィルタのIPをVivado HLS 2014.1 に移行することにした。(Vivado HLS 2013.4の記事は、”Vivado HLS 2013.4でラプラシアン・フィルタ関数をaxi masterモジュールにする6(実機でテスト)”を参照のこと)

・Vivado HLS 2014.1 を立ちあげた。GUIが変わっている。Vivado 2014.1とデザインが統一されているようだ。
Vivado_HLS_2014_1_1_140419.png

・ラプラシアンフィルタの新規プロジェクトを作って、以前のラプラシアンフィルタのCソースを入れてみた。
Vivado_HLS_2014_1_2_140419.png

・C Simulation は成功した。
Vivado_HLS_2014_1_3_140419.png

・Run C Synthesis を行った。
Vivado_HLS_2014_1_4_140419.png

そのログを下に示す。DIFFを取るとVivado 2013.4でラプラシアンフィルタを合成した時のログとは結構違っているようだ。

================================================================
== Vivado HLS Report for 'lap_filter_axim'
================================================================
* Date: Sat Apr 19 05:31:00 2014

* Version: 2014.1 (build date: Fri Apr 04 13:20:25 PM 2014)
* Project: lap_filter_axim_2014_1
* Solution: solution1
* Product family: zynq zynq_fpv6
* Target device: xc7z020clg484-1


================================================================
== Performance Estimates
================================================================
+ Timing (ns):
* Summary:
+---------+-------+----------+------------+
| Clock | Target| Estimated| Uncertainty|
+---------+-------+----------+------------+
|default | 10.00| 8.75| 1.25|
+---------+-------+----------+------------+

+ Latency (clock cycles):
* Summary:
+---------+------------+---------+------------+---------+
| Latency | Interval | Pipeline|
| min | max | min | max | Type |
+---------+------------+---------+------------+---------+
| 1450201| 6930730201| 1450202| 6930730202| none |
+---------+------------+---------+------------+---------+

+ Detail:
* Instance:
N/A

* Loop:
+-------------------------------+---------+------------+-----------------+-----------+-----------+------+----------+
| | Latency | Iteration | Initiation Interval | Trip | |
| Loop Name | min | max | Latency | achieved | target | Count| Pipelined|
+-------------------------------+---------+------------+-----------------+-----------+-----------+------+----------+
|- Loop 1 | 1450200| 6930730200| 2417 ~ 11551217 | -| -| 600| no |
| + Loop 1.1 | 1600| 11550400| 2 ~ 14438 | -| -| 800| no |
| ++ Loop 1.1.1 | 14427| 14427| 4809| -| -| 3| no |
| +++ memcpy.line_buf.cam_fb | 806| 806| 8| 1| 1| 800| yes |
| +++ lap_filter_axim_label0 | 4000| 4000| 5| -| -| 800| no |
| ++ memcpy.line_buf.cam_fb | 806| 806| 8| 1| 1| 800| yes |
| ++ lap_filter_axim_label1 | 4800| 4800| 6| -| -| 800| no |
| + memcpy.lap_fb.lap_buf | 801| 801| 3| 1| 1| 800| yes |
+-------------------------------+---------+------------+-----------------+-----------+-----------+------+----------+



================================================================
== Utilization Estimates
================================================================
* Summary:
+-----------------+---------+-------+--------+-------+
| Name | BRAM_18K| DSP48E| FF | LUT |
+-----------------+---------+-------+--------+-------+
|Expression | -| 10| 0| 815|
|FIFO | -| -| -| -|
|Instance | -| 2| 330| 390|
|Memory | 10| -| 0| 0|
|Multiplexer | -| -| -| 305|
|Register | -| -| 940| 26|
+-----------------+---------+-------+--------+-------+
|Total | 10| 12| 1270| 1536|
+-----------------+---------+-------+--------+-------+
|Available | 280| 220| 106400| 53200|
+-----------------+---------+-------+--------+-------+
|Utilization (%) | 3| 5| 1| 2|
+-----------------+---------+-------+--------+-------+

+ Detail:
* Instance:
+---------------------------------------------+------------------------------------------+---------+-------+-----+-----+
| Instance | Module | BRAM_18K| DSP48E| FF | LUT |
+---------------------------------------------+------------------------------------------+---------+-------+-----+-----+
|lap_filter_axim_mul_8ns_7ns_15_3_U3 |lap_filter_axim_mul_8ns_7ns_15_3 | 0| 1| 0| 0|
|lap_filter_axim_mul_8ns_7ns_15_3_U4 |lap_filter_axim_mul_8ns_7ns_15_3 | 0| 1| 0| 0|
|lap_filter_axim_srem_11ns_11ns_11_14_seq_U0 |lap_filter_axim_srem_11ns_11ns_11_14_seq | 0| 0| 110| 130|
|lap_filter_axim_urem_10ns_10ns_10_13_seq_U1 |lap_filter_axim_urem_10ns_10ns_10_13_seq | 0| 0| 110| 130|
|lap_filter_axim_urem_10ns_10ns_10_13_seq_U2 |lap_filter_axim_urem_10ns_10ns_10_13_seq | 0| 0| 110| 130|
+---------------------------------------------+------------------------------------------+---------+-------+-----+-----+
|Total | | 0| 2| 330| 390|
+---------------------------------------------+------------------------------------------+---------+-------+-----+-----+

* Memory:
+------------+--------------------------+---------+------+-----+------+-------------+
| Memory | Module | BRAM_18K| Words| Bits| Banks| W*Bits*Banks|
+------------+--------------------------+---------+------+-----+------+-------------+
|lap_buf_U |lap_filter_axim_lap_buf | 2| 800| 24| 1| 19200|
|line_buf_U |lap_filter_axim_line_buf | 8| 2400| 32| 1| 76800|
+------------+--------------------------+---------+------+-----+------+-------------+
|Total | | 10| 3200| 56| 2| 96000|
+------------+--------------------------+---------+------+-----+------+-------------+

* FIFO:
N/A

* Expression:
+--------------------------+----------+-------+---+----+------------+------------+
| Variable Name | Operation| DSP48E| FF| LUT| Bitwidth P0| Bitwidth P1|
+--------------------------+----------+-------+---+----+------------+------------+
|p_addr12_fu_1034_p2 | * | 1| 0| 0| 10| 10|
|p_addr6_fu_758_p2 | * | 1| 0| 0| 11| 10|
|p_addr7_fu_1073_p2 | * | 1| 0| 0| 10| 10|
|p_addr_fu_738_p2 | * | 1| 0| 0| 10| 10|
|tmp_2_fu_605_p2 | * | 1| 0| 0| 10| 10|
|tmp_35_i1_fu_791_p2 | * | 1| 0| 0| 8| 8|
|tmp_35_i_fu_959_p2 | * | 1| 0| 0| 8| 8|
|tmp_36_i1_fu_781_p2 | * | 1| 0| 0| 8| 5|
|tmp_36_i_fu_949_p2 | * | 1| 0| 0| 8| 5|
|y_i38_op_cast_fu_1218_p2 | * | 1| 0| 1| 24| 17|
|a_1_fu_848_p2 | + | 0| 0| 2| 2| 1|
|b_2_fu_911_p2 | + | 0| 0| 10| 10| 1|
|b_fu_725_p2 | + | 0| 0| 10| 10| 1|
|grp_fu_560_p0 | + | 0| 0| 11| 11| 2|
|grp_fu_566_p0 | + | 0| 0| 10| 10| 1|
|indvar_next1_fu_1241_p2 | + | 0| 0| 10| 10| 1|
|indvar_next2_fu_694_p2 | + | 0| 0| 10| 10| 1|
|indvar_next_fu_879_p2 | + | 0| 0| 10| 10| 1|
|next_mul1_fu_532_p2 | + | 0| 0| 19| 19| 10|
|next_mul2_fu_830_p2 | + | 0| 0| 12| 12| 10|
|next_mul_fu_836_p2 | + | 0| 0| 12| 12| 10|
|p_addr10_fu_1051_p2 | + | 0| 0| 13| 13| 13|
|p_addr11_fu_1110_p2 | + | 0| 0| 12| 12| 12|
|p_addr13_fu_1061_p2 | + | 0| 0| 13| 13| 13|
|p_addr14_fu_1100_p2 | + | 0| 0| 12| 12| 12|
|p_addr2_fu_1129_p2 | + | 0| 0| 12| 12| 12|
|p_addr3_fu_1021_p2 | + | 0| 0| 13| 13| 13|
|p_addr4_fu_921_p2 | + | 0| 0| 12| 12| 12|
|p_addr5_fu_1124_p2 | + | 0| 0| 12| 12| 12|
|p_addr8_fu_1120_p2 | + | 0| 0| 13| 13| 13|
|p_addr9_fu_1007_p2 | + | 0| 0| 13| 13| 13|
|p_sum1_fu_590_p2 | + | 0| 0| 33| 33| 33|
|p_sum2_fu_858_p2 | + | 0| 0| 33| 33| 33|
|p_sum_fu_673_p2 | + | 0| 0| 33| 33| 33|
|sum3_i_fu_1163_p2 | + | 0| 0| 16| 32| 32|
|tmp3_fu_1087_p2 | + | 0| 0| 32| 32| 32|
|tmp4_fu_1147_p2 | + | 0| 0| 16| 32| 32|
|tmp5_fu_1142_p2 | + | 0| 0| 16| 32| 32|
|tmp_10_fu_710_p2 | + | 0| 0| 12| 12| 12|
|tmp_11_fu_998_p2 | + | 0| 0| 11| 11| 2|
|tmp_12_fu_895_p2 | + | 0| 0| 12| 12| 12|
|x_1_fu_617_p2 | + | 0| 0| 10| 10| 1|
|tmp_38_i_fu_1173_p2 | - | 0| 0| 32| 32| 32|
|tmp_39_i_fu_1179_p2 | - | 0| 0| 32| 32| 32|
|tmp_i2_fu_1167_p2 | - | 0| 0| 16| 32| 32|
|y_4_fu_1184_p2 | - | 0| 0| 32| 32| 32|
|phitmp_fu_1223_p3 | Select | 0| 0| 24| 1| 2|
|ap_sig_bdd_114 | and | 0| 0| 1| 1| 1|
|ap_sig_bdd_141 | and | 0| 0| 1| 1| 1|
|ap_sig_bdd_407 | and | 0| 0| 1| 1| 1|
|exitcond1_fu_873_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond2_fu_1235_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond3_fu_905_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond4_fu_842_p2 | icmp | 0| 0| 2| 2| 2|
|exitcond5_fu_611_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond6_fu_538_p2 | icmp | 0| 0| 11| 10| 10|
|exitcond7_fu_688_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond_fu_719_p2 | icmp | 0| 0| 11| 10| 9|
|icmp_fu_1208_p2 | icmp | 0| 0| 30| 24| 1|
|isIter0_fu_889_p2 | icmp | 0| 0| 11| 10| 1|
|isIter1_fu_704_p2 | icmp | 0| 0| 11| 10| 1|
|isIter_fu_1247_p2 | icmp | 0| 0| 11| 10| 1|
|tmp_26_fu_645_p2 | icmp | 0| 0| 11| 10| 9|
|tmp_27_fu_651_p2 | icmp | 0| 0| 11| 10| 1|
|tmp_4_fu_663_p2 | icmp | 0| 0| 11| 10| 1|
|tmp_6_fu_627_p2 | icmp | 0| 0| 11| 10| 10|
|tmp_8_fu_633_p2 | icmp | 0| 0| 11| 10| 1|
|tmp_9_fu_581_p2 | icmp | 0| 0| 11| 10| 1|
|tmp_18_fu_639_p2 | or | 0| 0| 1| 1| 1|
|tmp_29_fu_657_p2 | or | 0| 0| 1| 1| 1|
+--------------------------+----------+-------+---+----+------------+------------+
|Total | | 10| 0| 815| 940| 739|
+--------------------------+----------+-------+---+----+------------+------------+

* Multiplexer:
+-----------------------------+----+-----------+-----+-----------+
| Name | LUT| Input Size| Bits| Total Bits|
+-----------------------------+----+-----------+-----+-----------+
|a_reg_375 | 2| 2| 2| 4|
|b1_reg_421 | 10| 2| 10| 20|
|b_1_reg_364 | 10| 2| 10| 20|
|cam_fb_address | 32| 3| 32| 96|
|indvar1_reg_450 | 10| 2| 10| 20|
|indvar9_reg_353 | 10| 2| 10| 20|
|indvar_reg_410 | 10| 2| 10| 20|
|lap_buf_address0 | 10| 3| 10| 30|
|lap_fil_val_1_phi_fu_436_p8 | 24| 2| 24| 48|
|lap_fil_val_1_reg_432 | 24| 2| 24| 48|
|line_buf_address0 | 24| 10| 12| 120|
|line_buf_address1 | 12| 6| 12| 72|
|line_buf_d0 | 32| 4| 32| 128|
|phi_mul1_reg_329 | 19| 2| 19| 38|
|phi_mul2_reg_398 | 12| 2| 12| 24|
|phi_mul_reg_386 | 12| 2| 12| 24|
|reg_491 | 32| 2| 32| 64|
|x_reg_341 | 10| 2| 10| 20|
|y_reg_317 | 10| 2| 10| 20|
+-----------------------------+----+-----------+-----+-----------+
|Total | 305| 54| 293| 836|
+-----------------------------+----+-----------+-----+-----------+

* Register:
+-----------------------------------------+----+----+-----+-----------+
| Name | FF | LUT| Bits| Const Bits|
+-----------------------------------------+----+----+-----+-----------+
|a_1_reg_1429 | 2| 0| 2| 0|
|a_reg_375 | 2| 0| 2| 0|
|ap_CS_fsm | 6| 0| 6| 0|
|ap_reg_ppiten_pp0_it0 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it1 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it2 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it3 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it4 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it5 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it6 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it7 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it0 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it1 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it2 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it3 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it4 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it5 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it6 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it7 | 1| 0| 1| 0|
|ap_reg_ppiten_pp2_it0 | 1| 0| 1| 0|
|ap_reg_ppiten_pp2_it1 | 1| 0| 1| 0|
|ap_reg_ppiten_pp2_it2 | 1| 0| 1| 0|
|ap_reg_ppstg_exitcond2_reg_1618_pp2_it1 | 1| 0| 1| 0|
|ap_reg_ppstg_isIter_reg_1627_pp2_it1 | 1| 0| 1| 0|
|b1_reg_421 | 10| 0| 10| 0|
|b_1_reg_364 | 10| 0| 10| 0|
|b_2_reg_1461 | 10| 0| 10| 0|
|b_3_reg_1395 | 8| 0| 8| 0|
|b_4_reg_1471 | 8| 0| 8| 0|
|b_reg_1378 | 10| 0| 10| 0|
|cam_fb_addr_1_reg_1434 | 32| 0| 32| 0|
|cam_fb_addr_reg_1314 | 32| 0| 32| 0|
|exitcond1_reg_1440 | 1| 0| 1| 0|
|exitcond2_reg_1618 | 1| 0| 1| 0|
|exitcond4_reg_1425 | 1| 0| 1| 0|
|exitcond7_reg_1357 | 1| 0| 1| 0|
|fl_reg_1300 | 11| 0| 11| 0|
|icmp_reg_1603 | 1| 0| 1| 0|
|indvar1_reg_450 | 10| 0| 10| 0|
|indvar9_reg_353 | 10| 0| 10| 0|
|indvar_reg_410 | 10| 0| 10| 0|
|isIter0_reg_1449 | 1| 0| 1| 0|
|isIter1_reg_1366 | 1| 0| 1| 0|
|isIter_reg_1627 | 1| 0| 1| 0|
|lap_buf_load_reg_1636 | 24| 0| 24| 0|
|lap_fb_addr_reg_1352 | 32| 0| 32| 0|
|lap_fil_val_1_reg_432 | 24| 0| 24| 0|
|line_buf_addr_11_reg_1466 | 12| 0| 12| 0|
|line_buf_addr_reg_1383 | 12| 0| 12| 0|
|line_buf_load_5_reg_1544 | 32| 0| 32| 0|
|next_mul1_reg_1273 | 19| 0| 19| 0|
|next_mul2_reg_1415 | 12| 0| 12| 0|
|next_mul_reg_1420 | 12| 0| 12| 0|
|p_addr2_reg_1569 | 12| 0| 12| 0|
|p_addr5_reg_1564 | 12| 0| 12| 0|
|p_addr6_reg_1388 | 8| 0| 13| 5|
|p_addr8_reg_1559 | 13| 0| 13| 0|
|phi_mul1_reg_329 | 19| 0| 19| 0|
|phi_mul2_reg_398 | 12| 0| 12| 0|
|phi_mul_reg_386 | 12| 0| 12| 0|
|phitmp_reg_1613 | 24| 0| 24| 0|
|reg_482 | 32| 0| 32| 0|
|reg_487 | 8| 0| 8| 0|
|reg_491 | 32| 0| 32| 0|
|sl_reg_1305 | 10| 0| 10| 0|
|tl_reg_1293 | 10| 0| 10| 0|
|tmp3_reg_1539 | 32| 0| 32| 0|
|tmp4_reg_1584 | 32| 0| 32| 0|
|tmp_10_reg_1370 | 12| 0| 12| 0|
|tmp_12_reg_1453 | 12| 0| 12| 0|
|tmp_18_reg_1340 | 1| 0| 1| 0|
|tmp_22_trn_cast_reg_1491 | 13| 0| 13| 0|
|tmp_29_reg_1344 | 1| 0| 1| 0|
|tmp_2_reg_1320 | 7| 0| 12| 5|
|tmp_31_reg_1507 | 7| 0| 12| 5|
|tmp_32_reg_1513 | 8| 0| 13| 5|
|tmp_33_reg_1528 | 7| 0| 12| 5|
|tmp_34_reg_1534 | 8| 0| 13| 5|
|tmp_36_i1_reg_1405 | 14| 0| 14| 0|
|tmp_36_i_reg_1481 | 14| 0| 14| 0|
|tmp_36_reg_1599 | 1| 0| 1| 0|
|tmp_38_i_reg_1594 | 32| 0| 32| 0|
|tmp_39_reg_1608 | 24| 0| 24| 0|
|tmp_4_cast_reg_1262 | 32| 0| 33| 1|
|tmp_4_reg_1348 | 1| 0| 1| 0|
|tmp_5_cast_reg_1268 | 32| 0| 33| 1|
|tmp_9_reg_1310 | 1| 0| 1| 0|
|x_1_reg_1328 | 10| 0| 10| 0|
|x_cast_reg_1335 | 10| 0| 11| 1|
|x_reg_341 | 10| 0| 10| 0|
|y_1_reg_1282 | 10| 0| 10| 0|
|y_2_reg_1410 | 8| 0| 8| 0|
|y_3_reg_1486 | 8| 0| 8| 0|
|y_reg_317 | 10| 0| 10| 0|
|exitcond1_reg_1440 | 0| 1| 1| 0|
|exitcond7_reg_1357 | 0| 1| 1| 0|
|tmp_10_reg_1370 | 0| 12| 12| 0|
|tmp_12_reg_1453 | 0| 12| 12| 0|
+-----------------------------------------+----+----+-----+-----------+
|Total | 940| 26| 999| 33|
+-----------------------------------------+----+----+-----+-----------+



================================================================
== Interface
================================================================
* Summary:
+--------------------+-----+-----+------------+-----------------+--------------+
| RTL Ports | Dir | Bits| Protocol | Source Object | C Type |
+--------------------+-----+-----+------------+-----------------+--------------+
|ap_clk | in | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_rst | in | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_start | in | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_done | out | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_idle | out | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_ready | out | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_return | out | 32| ap_ctrl_hs | lap_filter_axim | return value |
|cam_addr | in | 32| ap_none | cam_addr | scalar |
|lap_addr | in | 32| ap_none | lap_addr | scalar |
|cam_fb_req_din | out | 1| ap_bus | cam_fb | pointer |
|cam_fb_req_full_n | in | 1| ap_bus | cam_fb | pointer |
|cam_fb_req_write | out | 1| ap_bus | cam_fb | pointer |
|cam_fb_rsp_empty_n | in | 1| ap_bus | cam_fb | pointer |
|cam_fb_rsp_read | out | 1| ap_bus | cam_fb | pointer |
|cam_fb_address | out | 32| ap_bus | cam_fb | pointer |
|cam_fb_datain | in | 32| ap_bus | cam_fb | pointer |
|cam_fb_dataout | out | 32| ap_bus | cam_fb | pointer |
|cam_fb_size | out | 32| ap_bus | cam_fb | pointer |
|lap_fb_req_din | out | 1| ap_bus | lap_fb | pointer |
|lap_fb_req_full_n | in | 1| ap_bus | lap_fb | pointer |
|lap_fb_req_write | out | 1| ap_bus | lap_fb | pointer |
|lap_fb_rsp_empty_n | in | 1| ap_bus | lap_fb | pointer |
|lap_fb_rsp_read | out | 1| ap_bus | lap_fb | pointer |
|lap_fb_address | out | 32| ap_bus | lap_fb | pointer |
|lap_fb_datain | in | 32| ap_bus | lap_fb | pointer |
|lap_fb_dataout | out | 32| ap_bus | lap_fb | pointer |
|lap_fb_size | out | 32| ap_bus | lap_fb | pointer |
+--------------------+-----+-----+------------+-----------------+--------------+


・C/RTL Cosimulation を行った。これはエラーになってしまった。
Vivado_HLS_2014_1_5_140419.png

・Export RTL でXPSのPcoreとしてIP化を行った。
Vivado_HLS_2014_1_6_140419.png

・Vivado HLS 2013.4とVivado HLS 2014.1の生成されたIPを構成するVerilog HDLファイルの比較を行った。Vivado HLS 2014.1で生成されたVerilog HDLファイルのほうが減っている。
Vivado_HLS_2014_1_7_140419.png
  1. 2014年04月22日 04:56 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/2797-d9c3104a
この記事にトラックバックする(FC2ブログユーザー)