def _impl(self) -> None: join = HsJoinPrioritized(self.INTF_CLS) join._updateParamsFrom(self) join.get_valid_signal = self.get_valid_signal join.get_ready_signal = self.get_ready_signal self.join = join # en override ens = [ self._reg(f"en{i:d}", def_val=0) for i in range(len(self.dataIn)) ] all_0 = ~Or(*ens) for en_flag, din, c_din in zip(ens, self.dataIn, self.join.dataIn): en = (all_0 | en_flag) vld = self.get_valid_signal(c_din) vld(en & self.get_valid_signal(din)) rd = self.get_ready_signal(din) rd(en & self.get_ready_signal(c_din)) self.dataConnectionExpr(din, c_din) If(rd & vld, en_flag(~din.last)) self.dataOut(join.dataOut)
def _declr(self): HsJoinPrioritized._declr(self) addClkRstn(self) if self.EXPORT_SELECTED: s = self.selectedOneHot = VldSynced()._m() s._replaceParam(s.DATA_WIDTH, self.INPUTS)
def _config(self): HsJoinPrioritized._config(self) self.EXPORT_SELECTED = Param(True)
def _declr(self): HsJoinPrioritized._declr(self) addClkRstn(self)
def _declr(self) -> None: addClkRstn(self) HsJoinPrioritized._declr(self)