HOME       UP       PREV       FURTHER NOTES       NEXT (Static versus Dynamic Scheduling)  

Classical High-Level Synthesis Continued

Profile-directed guidance or explicit datapath description hints, such as unroll progmas, or explicit datapath description hints, such as unroll progmas, are needed for a sensible datapath structure since sequencer states are not equiprobable and we do not want to deploy resource on seldom-used data paths.

For example, best mapping of the record fields x and y to RAMs is different in the two foreach loops:

    class IntPair
    {   
	public bool c;     public int x, y;
    }

    IntPair [] ipairs = new IntPair [1024];

    void customer(bool qcond)
    {
        int sum1 = 0, sum2 = 0;
        if (qcond) then foreach (IntPair pp in ipairs)
         {   
             sum1 += pp.x + pp.y;
         }
        else foreach (IntPair pp in ipairs)
         {   
             sum2 += pp.c ? pp.y: pp.x;
         }
      ...
    }

The fields x and y could be kept in separate RAMs or a common one. If qcond rarely holds then a common RAM will serve since there is little contention. Whereas if qcond holds most of the time then keeping x and y in separate RAMs will boost performance. When dual-port RAMs are available, serving x and y from separate ports of a common RAM could also be used when qcond is frequent.


35: (C) 2012-18, DJ Greaves, University of Cambridge, Computer Laboratory.