3 #define DESIGN "ram4x128"
8 int TCL
= 120, TCH
= 120, TCC
= 240;
18 long invert(long a
, long nb_bit
)
20 long i
, r
=0, m
=puiss2(nb_bit
-1);
22 for (i
= 0; i
< nb_bit
; i
++)
32 void cycle(int nbcycle
)
36 for (i
= 0; i
< nbcycle
; i
++)
40 int time(int i
, int a
)
42 return i
*TCC
+ TCL
+ a
;
46 int timer(int base
, int a
)
48 static int old
, obase
= 0;
78 Assign ("dout" , FORCE_UNK
);
79 Assign ("adr" , FORCE_UNK
);
80 Assign ("write" , FORCE_UNK
);
81 Assign ("ck" , FORCE_UNK
);
96 cycle(timer(TCH
,TCL
));
99 void write_mem(long nextadress
, long data
)
101 data
= invert(data
,4);
105 cycle (timer(TCH
,-40));
106 Assign ("write" , 1);
107 Assign ("dout" , data
);
111 cycle (timer(TCH
,80));
112 Assign ("adr" , nextadress
);
113 cycle (timer(TCH
,100));
114 Assign ("dout" , WEAK_UNK
);
115 cycle (timer(TCH
,TCL
));
119 void read_mem(long adress
)
124 cycle (timer(TCH
,-40));
125 Assign ("adr" , adress
);
126 Assign ("write" , 0);
130 cycle (timer(TCH
,100));
131 //Assign ("dout" , WEAK_UNK);
132 cycle (timer(TCH
,TCL
));
150 Design (DESIGN
".vhd", DESIGN
);
155 // read_write_mem(long adress, long data, int read, int write)
156 // for (i = 0; i < ValMax("adr"); i ++)
157 for (i
= 0; i
< 5; i
++)
158 write_mem(i
,i
%ValMax("dout"));
160 // for (i = 0; i < ValMax("adr"); i ++)
161 for (i
= 0; i
< 5; i
++)
167 GenerateTestbench ("TB_"DESIGN
);