2

コンポーネントに必要なフリップフロップの数を数えることで、リソースの使用量を見積もっています。たとえば、ins_controldata(単純なカウンターといくつかの I/O) を見積もると、32 個のフリップフロップを使用します。このコンポーネントの詳細なマップ レポート (セクション 13 - 階層別の使用率) を見ると、見積もりがこのコンポーネントに使用されているスライス レジスタの数に近いことがわかります。各スライスには 4 つの LUT と 8 つのフリップフロップがあります。

ここで、有限状態マシン に対して同じことを行う inst_xtm640と、フリップフロップの使用量は約 43 と推定されます (6 つの状態に必要な 3 つのフリップフロップを含む)。マップ レポートを見ると、私の推定はほぼ正しい (+-10% の誤差) ことがわかります。ただし、必要なスライス数は、必要なスライス レジスタと LUT よりもはるかに多くなります。使用されている LUT を見ると 40 ですが、20 程度しかないはずです。

このコンポーネントに余分なスライスが使用されるのはなぜですか? 速度の最適化のためですか?

+----------------------------------------------------------------------------------+
| Module               | Partition | Slices*       | Slice Reg     | LUTs          |                                                            
+----------------------------------------------------------------------------------+
| ++inst_controldata   |           | 6/6           | 35/35         | 20/20         |
| +++inst_xtm640       |           | 40/40         | 57/57         | 88/88         |
+----------------------------------------------------------------------------------+

編集:自分で見つけたと思いますが、他の入力はいつでも歓迎します:

すべてのスライスが完全に使用されているわけではありません。したがって、88 個の LUT と 57 個のスライス レジスタを使用しても、22 個のスライスを使用することになるわけではありません。一部のスライスは十分に使用されていないため、スライスの使用率が高くなります。また、タイミング制約を満たすために追加のスライスが使用されます。

4

2 に答える 2