インテルのみ表示可能 — GUID: syi1468877626861
Ixiasoft
1.9.1. メモリー属性の使用例
コードにさまざまな組み合わせのメモリー属性を組み込むことで、HLSコンパイラーがコンポーネントに実装するメモリー・アーキテクチャーをオーバーライドすることができます。
オンチップ・メモリーブロックを節約するための統合メモリーのオーバーライド例
次のコード例は、次のメモリー属性を使用して結合メモリーをオーバーライドする方法を示しています。
- hls_bankwidth(n)
- hls_numbanks(n)
- hls_singlepump
- hls_numports_readonly_writeonly(m,n)
オリジナルコードは、64 ビット幅の 256 の深さ ( 256x64 ビット ) のメモリー、つまり、2 つのオンチップ・メモリーブロックを統合します。
component unsigned int mem_coalesce(unsigned int raddr, unsigned int waddr, unsigned int wdata){ unsigned int data[512]; data[2*waddr] = wdata; data[2*waddr + 1] = wdata + 1; unsigned int rdata = data[2*raddr] + data[2*raddr + 1]; return rdata; }
変更されたコードは、32 ビット幅の 512 の深さ ( 512×32 ビット ) で、ストール可能な調停を備えたシンプル・デュアルポート・オンチップ・メモリーブロックを実装しています。
component unsigned int mem_coalesce(unsigned int raddr, unsigned int waddr, unsigned int wdata){ //Attributes that stop memory coalescing hls_bankwidth(4) hls_numbanks(1) //Attributes that specify a simple dual port hls_singlepump hls_numports_readonly_writeonly(1,1) unsigned int data[512]; data[2*waddr] = wdata; data[2*waddr + 1] = wdata + 1; unsigned int rdata = data[2*raddr] + data[2*raddr + 1]; return rdata; }
注: hls_singlepumpとhls_numports_readonly_writeonly(1,1)属性の指定の代わりに、hls_simple_dual_port_memory属性でこのコンフィグレーションを指定することができます。
オンチップ・メモリーブロックを節約するバンクメモリー・オーバーライドの例
次のコード例は、下のメモリー属性を使用してバンクメモリーをオーバーライドする方法を示しています。
- hls_bankwidth(n)
- hls_numbanks(n)
- hls_singlepump
- hls_doublepump
オリジナルコードは、シングルポンプ・オンチップ・メモリーブロックのバンクを 2 つ作成します。
component unsigned short mem_banked(unsigned short raddr, unsigned short waddr, unsigned short wdata){ unsigned short data[1024]; data[2*waddr] = wdata; data[2*waddr + 9] = wdata +1; unsigned short rdata = data[2*raddr] + data[2*raddr + 9]; return rdata; }
バンクメモリーの節約のために、data[1024] の宣言前に次の属性を追加することで、ダブルポンプ・オンチップ・バンクメモリーのバンクを 1 つ実装するオプションがあります。
hls_bankwidth(2) hls_numbanks(1)hls_doublepump unsigned short data[1024];
あるいは、次の属性をdata[1024] の宣言前に追加することでストール可能な調停のシングルポンプ・オンチップ・メモリーブロックのバンクを 1 つ実装することもできます。
hls_bankwidth(2) hls_numbanks(1)hls_singlepump unsigned short data[1024];