3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-08-22 11:07:52 +00:00

Do not SigSpec::extract() beyond bounds

This commit is contained in:
Eddie Hung 2019-08-07 13:58:26 -07:00
parent e3d898dccb
commit d90b8b081a
2 changed files with 10 additions and 8 deletions

View file

@ -156,15 +156,17 @@ endcode
match ffO_lo
select ffO_lo->type.in($dff)
filter nusers(sigO.extract(0,16)) == 2
filter includes(port(ffO_lo, \D).to_sigbit_set(), sigO.extract(0,16).to_sigbit_set())
filter GetSize(sigO) >= param(ffO_lo, \WIDTH).as_int()
filter nusers(sigO.extract(0,param(ffO_lo, \WIDTH).as_int())) == 2
filter includes(port(ffO_lo, \D).to_sigbit_set(), sigO.extract(0,param(ffO_lo, \WIDTH).as_int()).to_sigbit_set())
optional
endmatch
match ffO_hi
select ffO_hi->type.in($dff)
filter nusers(sigO.extract(16,16)) == 2
filter includes(port(ffO_hi, \D).to_sigbit_set(), sigO.extract(16,16).to_sigbit_set())
filter GetSize(sigO) >= 16+param(ffO_hi, \WIDTH).as_int()
filter nusers(sigO.extract(16,param(ffO_hi, \WIDTH).as_int())) == 2
filter includes(port(ffO_hi, \D).to_sigbit_set(), sigO.extract(16,param(ffO_hi, \WIDTH).as_int()).to_sigbit_set())
optional
endmatch
@ -184,7 +186,7 @@ code clock clock_pol sigO sigCD
clock = c;
clock_pol = cp;
if (port(ffO_lo, \Q) != sigO.extract(0,16))
if (port(ffO_lo, \Q) != sigO.extract(0,param(ffO_lo, \WIDTH).as_int()))
sigO.replace(port(ffO_lo, \D), port(ffO_lo, \Q));
}
@ -202,7 +204,7 @@ code clock clock_pol sigO sigCD
clock = c;
clock_pol = cp;
if (port(ffO_hi, \Q) != sigO.extract(16,16))
if (port(ffO_hi, \Q) != sigO.extract(16,param(ffO_hi, \WIDTH).as_int()))
sigO.replace(port(ffO_hi, \D), port(ffO_hi, \Q));
}