GET THE LATEST VERSION OF SYNTHAGATE — V2.3.2 IS NOW AVAILABLE
Design Technology
High Level Synthesis
#include "Funcmi.h"
void Funcmi::main_proc() {
if (rst.read() == 1) {
bitcnt.write(0);
br.write(0);
cnt.write(0);
cnt_elem.write(0);
cnt_m1_m3.write(0);
cnt_m2.write(0);
codcomplete.write(0);
decodcomplete.write(0);
ext_in.write(0);
idle.write(0);
mac1.write(0);
mac2.write(0);
rbyte.write(0);
rd.write(0);
relem.write(0);
rfilelength.write(0);
rlengthd.write(0);
rmask.write(0);
rmax.write(0);
rmin.write(0);
rt1.write(0);
rt2.write(0);
rtemp1.write(0);
rwrite2m2.write(0);
rwrite2m3.write(0);
shcnt.write(0);
for (unsigned int i = 0; i < 65536; ++i) {
m1[i].write(0);
}
for (unsigned int i = 0; i < 65536; ++i) {
m2[i].write(0);
}
for (unsigned int i = 0; i < 65536; ++i) {
m3[i].write(0);
}
currentState = a1;
idle.write(1);
} else {
idle.write(0);
proc_Funcmi();
}
}
void Funcmi::proc_Funcmi() {
sc_uint<8> rbyte_tmp = rbyte.read();
codcomplete.write(0);
decodcomplete.write(0);
ext_in.write(0);
idle.write(0);
rwrite2m2.write(0);
rwrite2m3.write(0);
switch (currentState) {
case a1:
if (s.read() && dma.read() && ext_rdwr.read()) {
m1_address = ext_adr.read();
currentState = a2;
m1[m1_address].write(ext_out.read());
} else if (s.read() && dma.read() && !ext_rdwr.read() && m.read()) {
m3_address = ext_adr.read();
currentState = a3;
} else if (s.read() && dma.read() && !ext_rdwr.read() && !m.read()) {
m2_address = ext_adr.read();
currentState = a4;
} else if (s.read() && !dma.read() && bit0.read()) {
currentState = a5;
decodcomplete.write(0);
} else if (s.read() && !dma.read() && !bit0.read()) {
currentState = a6;
relem.write(nelem.read());
codcomplete.write(0);
} else {
currentState = a1;
idle.write(1);
}
break;
// ... (The rest of the state machine continues as in the original code)
}
}
#ifdef MTI_SYSTEMC
SC_MODULE_EXPORT(Funcmi);
#endif