- m.d.sync += [
- dfi.phases[1].rddata[j].eq(dq_i_data[0]),
- dfi.phases[1].rddata[1*databits+j].eq(dq_i_data[1]),
- dfi.phases[1].rddata[2*databits+j].eq(dq_i_data[2]),
- dfi.phases[1].rddata[3*databits+j].eq(dq_i_data[3]),
- ]
- m.d.sync += [
- dfi.phases[0].rddata.eq(dfi.phases[1].rddata),
- ]
+ with m.If(~datavalid_prev & datavalid):
+ m.d.sync += [
+ dfi.phases[0].rddata[0*databits+j].eq(dq_i_data[0]),
+ dfi.phases[0].rddata[1*databits+j].eq(dq_i_data[1]),
+ dfi.phases[0].rddata[2*databits+j].eq(dq_i_data[2]),
+ dfi.phases[0].rddata[3*databits+j].eq(dq_i_data[3]),
+ ]
+ with m.Elif(datavalid):
+ m.d.sync += [
+ dfi.phases[1].rddata[0*databits+j].eq(dq_i_data[0]),
+ dfi.phases[1].rddata[1*databits+j].eq(dq_i_data[1]),
+ dfi.phases[1].rddata[2*databits+j].eq(dq_i_data[2]),
+ dfi.phases[1].rddata[3*databits+j].eq(dq_i_data[3]),
+ ]