diff options
Diffstat (limited to 'src/synth')
-rw-r--r-- | src/synth/netlists-expands.adb | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/synth/netlists-expands.adb b/src/synth/netlists-expands.adb index 37b00d64e..c6f2196e2 100644 --- a/src/synth/netlists-expands.adb +++ b/src/synth/netlists-expands.adb @@ -323,24 +323,24 @@ package body Netlists.Expands is (Ctxt, Build_Extract (Ctxt, Mem, Next_Off, Step), Build_Extract (Ctxt, Prev_Net, Step, Dat_W - Step)); - V := Build_Mux2 (Ctxt, Net_Arr (Sel), V, Dat); - Prev_Net := V; - Next_Off := Off + Dat_W; - elsif Next_Off = Off then - -- No overlap, no gap + else + -- No overlap. if Prev_Net /= No_Net then Append (Concat, Prev_Net); end if; + + if Next_Off < Off then + -- But there is a gap. + Append (Concat, Build_Extract (Ctxt, Mem, Next_Off, + Off - Next_Off)); + end if; V := Build_Extract (Ctxt, Mem, Off, Dat_W); - V := Build_Mux2 (Ctxt, Net_Arr (Sel), V, Dat); - Prev_Net := V; - Next_Off := Off + Dat_W; - else - pragma Assert (Next_Off < Off); - -- Gap. - raise Internal_Error; end if; + V := Build_Mux2 (Ctxt, Net_Arr (Sel), V, Dat); + Prev_Net := V; + Next_Off := Off + Dat_W; + Sel := Sel + 1; -- Increase Off. |