Tech と Culture

テクノロジーとカルチャー

FPGA仮インプリ

メモリとコントローラを以前のものを変更してコーディングし、接続してISEにかけてみました。
面積と周波数(クリティカルパスの遅延)を見るためです。
合成結果は、、、、、

Device utilization summary:
---------------------------

Selected Device : 3s1500fg456-4

Number of Slices: 12207 out of 13312 91%
Number of Slice Flip Flops: 7839 out of 26624 29%
Number of 4 input LUTs: 23772 out of 26624 89%
Number used as logic: 22727
Number used as Shift registers: 29
Number used as RAMs: 1016
Number of IOs: 265
Number of bonded IOBs: 178 out of 333 53%
IOB Flip Flops: 273
Number of BRAMs: 32 out of 32 100%
Number of MULT18X18s: 25 out of 32 78%
Number of GCLKs: 7 out of 8 87%
Number of DCMs: 3 out of 4 75%

ロジック部分は91%でなんとか収まっています。
BRAMが32個中の32個です。もっと増えるかと思ったのですが、一応収まっています。
乗算器が32個中の25個で、これもなんとか収まっています。

しかし、マッピング結果は以下のようにエラーとなりました。

ERROR:Place:665 - The design has 32 block-RAM components of which 15 block-RAM
components require the adjacent multiplier site to remain empty. This is
because certain input pins of adjacent block-RAM and multiplier sites share
routing ressources. In addition, the design has 25 multiplier components.
Therefore, the design would require a total of 40 multiplier sites on the
device. The current device has only 32 multiplier sites.

以前のエラーと同じく、メモリと乗算器マクロを両方同時に使用できない部分があって入りきらないと怒られます。
メッセージをみると、乗算器とメモリを併せて8個削減できれば入りそうです。
もっと全然入らないかと思っていたのですが、頑張れば全て入るかもしれません(入らないかも)。
微妙な感じです。

論理合成のクリティカルパス遅延レポートは以下のようになりました。
Delay: 32.037ns (Levels of Logic = 29)
Source: jpg/huffman/r.valuebit_1_1 (FF)
Destination: jpg/dctmem1/cram1/inf.x0/Mram_memarr45 (RAM)
Source Clock: clk rising 0.8X
Destination Clock: clk rising 0.8X

Data Path: jpg/huffman/r.valuebit_1_1 to jpg/dctmem1/cram1/inf.x0/Mram_memarr45
Gate Net
Cell:in->out fanout Delay Delay Logical Name (Net Name)
---------------------------------------- ------------
FDR:C->Q 9 0.720 1.463 jpg/huffman/r.valuebit_1_1 (jpg/huffman/r.valuebit_1_1)
LUT4:I0->O 1 0.551 0.996 jpg/huffman/vintshift_sub0002(3)1 (jpg/huffman/vintshift_sub0002(3))
LUT2:I1->O 1 0.551 0.000 jpg/huffman/Madd_vintshift_add0001_Madd_lut(3) (jpg/huffman/Madd_vintshift_add0001_Madd_lu
t(3))
MUXCY:S->O 0 0.500 0.000 jpg/huffman/Madd_vintshift_add0001_Madd_cy(3) (jpg/huffman/Madd_vintshift_add0001_Madd_cy(
3))
XORCY:CI->O 2 0.904 0.903 jpg/huffman/Madd_vintshift_add0001_Madd_xor(4) (jpg/huffman/vintshift_add0001(4))
LUT4_D:I3->O 15 0.551 1.256 jpg/huffman/vintshift_mux0004(4)122 (jpg/huffman/vintshift_mux0004(4))
LUT4:I2->O 2 0.551 0.877 jpg/huffman/Mdecod_bin_mux0000311 (jpg/huffman/bin_mux0000(31))
MULT18X18:B14->P14 1 3.493 1.140 jpg/huffman/Mmult_ss_mult0000_submult_1 (jpg/huffman/Mmult_ss_mult0000_submult_1_14)
LUT2:I0->O 1 0.551 0.000 jpg/huffman/Mmult_ss_mult0000_Madd_lut(16) (jpg/huffman/Mmult_ss_mult0000_Madd_lut(16))
MUXCY:S->O 1 0.500 0.000 jpg/huffman/Mmult_ss_mult0000_Madd_cy(16) (jpg/huffman/Mmult_ss_mult0000_Madd_cy(16))
XORCY:CI->O 1 0.904 0.996 jpg/huffman/Mmult_ss_mult0000_Madd_xor(17) (jpg/huffman/Mmult_ss_mult0000_Madd_32)
LUT2:I1->O 1 0.551 0.000 jpg/huffman/Mmult_ss_mult0000_Madd1_lut(32) (jpg/huffman/Mmult_ss_mult0000_Madd1_lut(32))
MUXCY:S->O 1 0.500 0.000 jpg/huffman/Mmult_ss_mult0000_Madd1_cy(32) (jpg/huffman/Mmult_ss_mult0000_Madd1_cy(32))
XORCY:CI->O 25 0.904 2.152 jpg/huffman/Mmult_ss_mult0000_Madd1_xor(33) (jpg/huffman/Madd_outb_add00014)
LUT1:I0->O 1 0.551 0.000 jpg/huffman/Madd_outb_share0000_cy(2)_rt (jpg/huffman/Madd_outb_share0000_cy(2)_rt)
MUXCY:S->O 1 0.500 0.000 jpg/huffman/Madd_outb_share0000_cy(2) (jpg/huffman/Madd_outb_share0000_cy(2))
XORCY:CI->O 1 0.904 0.869 jpg/huffman/Madd_outb_share0000_xor(3) (jpg/huffman/outb_share0000(3))
LUT3:I2->O 1 0.551 0.996 jpg/huffman/outb_mux0021(3)2 (jpg/huffman/outb_mux0021(3)2)
LUT3_D:I1->LO 1 0.551 0.168 jpg/huffman/outb_mux0021(3)26 (N6665)
LUT3:I2->O 1 0.551 0.801 jpg/huffman/outb_mux0021(3)87 (jpg/huffman/outb_mux0021(3))
MUXCY:DI->O 1 0.889 0.000 jpg/huffman/Madd_kdata_addsub0000_cy(3) (jpg/huffman/Madd_kdata_addsub0000_cy(3))
MUXCY:CI->O 1 0.064 0.000 jpg/huffman/Madd_kdata_addsub0000_cy(4) (jpg/huffman/Madd_kdata_addsub0000_cy(4))
MUXCY:CI->O 1 0.064 0.000 jpg/huffman/Madd_kdata_addsub0000_cy(5) (jpg/huffman/Madd_kdata_addsub0000_cy(5))
MUXCY:CI->O 1 0.064 0.000 jpg/huffman/Madd_kdata_addsub0000_cy(6) (jpg/huffman/Madd_kdata_addsub0000_cy(6))
MUXCY:CI->O 1 0.064 0.000 jpg/huffman/Madd_kdata_addsub0000_cy(7) (jpg/huffman/Madd_kdata_addsub0000_cy(7))
MUXCY:CI->O 1 0.064 0.000 jpg/huffman/Madd_kdata_addsub0000_cy(8) (jpg/huffman/Madd_kdata_addsub0000_cy(8))
MUXCY:CI->O 1 0.064 0.000 jpg/huffman/Madd_kdata_addsub0000_cy(9) (jpg/huffman/Madd_kdata_addsub0000_cy(9))
MUXCY:CI->O 0 0.064 0.000 jpg/huffman/Madd_kdata_addsub0000_cy(10) (jpg/huffman/Madd_kdata_addsub0000_cy(10))
XORCY:CI->O 1 0.904 0.827 jpg/huffman/Madd_kdata_addsub0000_xor(11) (jpg/huffman/kdata_addsub0000(11))
LUT4:I3->O 8 0.551 0.000 jpg/huffman/kdata(11)1 (jpg/kdata1(11))
RAM16X1D:D 0.462 jpg/dctmem1/cram1/inf.x0/Mram_memarr45
----------------------------------------
Total 32.037ns (18.593ns logic, 13.444ns route)
(58.0% logic, 42.0% route)

32nsです。
value_bレジスタからシフタを通って、64画素メモリへつながるパスがクリティカルパスになっています。
以前のDCT&YCC-RGB変換の時の合成結果は25.7nsでしたので、こちらもちょっと厳しい感じでマッピングが可能になったとしても、少し頑張る必要がありそうです。。。

けど、面積と速度どちらともなんとかなる可能性は少しはあるみたいです。