parent
de34728bf8
commit
964c67453f
|
@ -505,6 +505,18 @@ class _RHSValueCompiler(_ValueCompiler):
|
||||||
"B_WIDTH": rhs_bits,
|
"B_WIDTH": rhs_bits,
|
||||||
"Y_WIDTH": res_bits,
|
"Y_WIDTH": res_bits,
|
||||||
}, src=src(value.src_loc))
|
}, src=src(value.src_loc))
|
||||||
|
if value.op in ("//", "%"):
|
||||||
|
# RTLIL leaves division by zero undefined, but we require it to return zero.
|
||||||
|
divmod_res = res
|
||||||
|
res = self.s.rtlil.wire(width=res_bits, src=src(value.src_loc))
|
||||||
|
self.s.rtlil.cell("$mux", ports={
|
||||||
|
"\\A": divmod_res,
|
||||||
|
"\\B": self(ast.Const(0, (res_bits, res_sign))),
|
||||||
|
"\\S": self(lhs == 0),
|
||||||
|
"\\Y": res,
|
||||||
|
}, params={
|
||||||
|
"WIDTH": res_bits
|
||||||
|
}, src=src(value.src_loc))
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def on_Operator_mux(self, value):
|
def on_Operator_mux(self, value):
|
||||||
|
|
Loading…
Reference in a new issue