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のビット幅より大きいビット幅の変数をマッピングする場合、複数回のアクセスで実現されるよ。
それでは皆さん、ごきげんよう!