Appendix B Recommended Priority.rules Synthesis Script file
We found the following choice of options in the
synthesis script produces the best synthesis results for
data-intensive designs with complex control flow.
//line format: <functiontype>=<functionvalue>
[SchedulerFunctions]
ScheduleRegionWalkerFunction=topDownBasicBlockNoEmpty
CandidateValidatorFunction=candidateValidatorPriority
CandidateMoverFunction=TbzMover
LoopSchedulingFunction=RDLP
CandidateRegionWalkerFunction=topDownGlobal
PreSchedulingStepFunction=preSchedulingPriority
PostSchedulingStepFunction=postSchedulingPriority
PreLoopSchedulingFunction=prepareForRDLP
PostLoopSchedulingFunction=constantPropagation
PreSchedulingFunction=initPriorities
ReDoHTGsForDupUp=false // true or false - false is better
ReassignPriorityForCS=true // true or false - true is better
PriorityType=max // max, sum, maxNoCond - max is best
RestrictDupUpType=targetBBUnsched // none, afterSchedOnce, targetBBUnsched
BranchBalancingDuringCMs=true // true or false - true is better
BranchBalancingDuringTraversal=true // true or false - true is better
DynamicCSE=true
[CodeMotionRules]
RenamingAllowed=true
AcrossHTGCodeMotionAllowed=true
SpeculationAllowed=true
ReverseSpeculationAllowed=true
EarlyCondExecAllowed=true
ConditionalSpeculationAllowed=true
// the higher the cost, the more profitable a code motion is
// total cost = basicCost * CostOfEachCodeMotion
[CodeMotionCosts]
WithinBB 1
AcrossHTGCodeMotion 1
Speculation 1
DuplicationUp 1