1add_DRAM(Id) :-
2    is_list(Id),
3    (ID_GDDR0,INKIND_GDDR0,OUTKIND_GDDR0) = (["GDDR0" | Id],memory,memory),
4    (ID_RAMOUT,INKIND_RAMOUT,OUTKIND_RAMOUT) = (["RAMOUT" | Id],memory,memory),
5    (ID_DRAMMAP,INKIND_DRAMMAP,OUTKIND_DRAMMAP) = (["DRAMMAP" | Id],memory,memory),
6    assert(node_accept(ID_GDDR0,([block{base:0,limit:4276092927}]))),
7    assert(node_translate(ID_DRAMMAP,([block{base:0,limit:4276092927}]),ID_RAMOUT,([block{base:0,limit:4276092927}]))).
8
9add_SOCKET(Id) :-
10    is_list(Id),
11    (ID_LOCAL,INKIND_LOCAL,OUTKIND_LOCAL) = (["LOCAL" | Id],memory,memory),
12    (ID_LOCAL_SRC,INKIND_LOCAL_SRC,OUTKIND_LOCAL_SRC) = (["LOCAL_SRC" | Id],memory,memory),
13    ID_RAM = ["RAM" | Id],
14    assert(node_accept(ID_LOCAL,([block{base:0,limit:4276092927}]))),
15    (block_values([block{base:1,limit:2},block{base:10,limit:11}],IDL_x),(foreach(IDT_x,IDL_x),param(Id),param(ID_LOCAL),param(ID_LOCAL_SRC),param(ID_RAM) do
16
17    (block_values([block{base:10,limit:11}],IDL_y),(foreach(IDT_y,IDL_y),param(Id),param(ID_LOCAL),param(ID_LOCAL_SRC),param(ID_RAM),param(IDT_x) do
18        add_DRAM([[IDT_x,IDT_y] | ID_RAM]),
19        assert(node_overlay(["RAMOUT" | [[IDT_x,IDT_y] | ID_RAM]],ID_LOCAL)),
20        assert(node_translate(ID_LOCAL_SRC,([block{base:4096,limit:8192}]),["GDDR0" | [[IDT_x,IDT_y] | ID_RAM]],([block{base:4096,limit:8192}])))
21    ))
22)).
23
24