変数をRAMにマッピング

cherry synで高位合成される回路は、変数はレジスタにマッピングされる。もちろんレジスタのシェアリングは行われるけど、変数をRAMにマッピングできると、より便利だと思ったので、実装してみたよ!


process process1(clkin uint#1 clk, rstin uint#1 rst, ram uint#9 r0[2048])
{
	uint#8 onram<r0>  a;    // mapped at address 0
	uint#8 onram<r0>  b;    // mapped at address 1
        uint#16 onram<r0> c;    // mapped at address 1,2
	uint#8 onram<r0> d[16]; // mapped at address 0x3 - 0x12
	uint#8 i;
	
	a = 1;
	b = a;
	c = 300;

	for (i=0; i!=16; i++) d[i] = i;

	while (1) ;
}

この例では、RAM r0 に変数 a, b, c, 配列 d をマッピングしてる。

変数は、RAM の先頭から順にマッピングされていく。RAM の途中からマッピングしたい場合は、その前にダミーの配列をマッピングしよう。RAMのビット幅より大きいビット幅の変数をマッピングする場合、複数回のアクセスで実現されるよ。

それでは皆さん、ごきげんよう!