This appendix contains a full XML stylesheet for PE Data Model.
<ProcUnitModel version = "0.0.1">
<ProcUnit type="MICROBLAZE">
<ExecModel sched="PIPELINE">
<Operation name="ret">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="reg" mode="RdReg"/>
</StgRef>
</Operation>
<Operation name="malloc"> <!-- allocate memory from system heap -->
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="reg" mode="WrReg"/>
</StgRef>
</Operation>
<Operation name="free"> <!-- returns memory back to system heap -->
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="reg" mode="WrReg"/>
</StgRef>
</Operation>
<Operation name="alloca"> <!-- allocate memory from current stack frame -->
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="reg" mode="WrReg"/>
</StgRef>
</Operation>
<Operation name="load"> <!-- read from memory -->
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="mem-Port" mode="RdPort"/>
</StgRef>
</Operation>
<Operation name="store"> <!-- write to memory -->
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="mem-Port" mode="WrPort"/>
</StgRef>
</Operation>
<Operation name="call"> <!-- function call -->
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="reg" mode="RdReg"/>
</StgRef>
</Operation>
<Operation name="br">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="add" var_type="int">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="add" var_type="float">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="FP-ALU" mode="FPAdd"/>
</StgRef>
</Operation>
<Operation name="sub" var_type="int">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="sub" var_type="float">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="FP-ALU" mode="FPAdd"/>
</StgRef>
</Operation>
<Operation name="mul" var_type="int">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-Mult/Div" mode="IntMult"/>
</StgRef>
</Operation>
<Operation name="mul" var_type="float">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="FP-Mult/Div" mode="FPMult"/>
</StgRef>
</Operation>
<Operation name="udiv">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-Mult/Div" mode="IntDiv"/>
</StgRef>
</Operation>
<Operation name="sdiv">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-Mult/Div" mode="IntDiv"/>
</StgRef>
</Operation>
<Operation name="fdiv">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="FP-Mult/Div" mode="FPDiv"/>
</StgRef>
</Operation>
<Operation name="urem"> <!-- returns remainder of a division -->
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-Mult/Div" mode="IntDiv"/>
</StgRef>
</Operation>
<Operation name="srem">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-Mult/Div" mode="IntDiv"/>
</StgRef>
</Operation>
<Operation name="frem">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="FP-Mult/Div" mode="FPDiv"/>
</StgRef>
</Operation>
<Operation name="shl"> <!-- shift -->
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="shr"> <!-- shift -->
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="lshr"> <!-- logical shift -->
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="ashr"> <!-- arithmetic shift -->
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="and">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="or">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="xor">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="fptoui">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="FP-ALU" mode="FPCvt"/>
</StgRef>
</Operation>
<Operation name="fptosi">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="FP-ALU" mode="FPCvt"/>
</StgRef>
</Operation>
<Operation name="uitofp">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="FP-ALU" mode="FPCvt"/>
</StgRef>
</Operation>
<Operation name="sitofp">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="FP-ALU" mode="FPCvt"/>
</StgRef>
</Operation>
<Operation name="icmp">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="fcmp">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="FP-ALU" mode="FPCmp"/>
</StgRef>
</Operation>
<Operation name="seteq">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="setne">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="setle">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="setge">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="setlt">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="setgt">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="cast" var_type="int">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="cast" var_type="float">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="FP-ALU" mode="FPCvt"/>
</StgRef>
</Operation>
<Operation name="cast" var_type="double">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="FP-ALU" mode="FPCvt"/>
</StgRef>
</Operation>
<Operation name="getelementptr">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="phi">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="unreachable">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="invoke">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="unwind">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="switch">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
<Operation name="select">
<StgRef name = "IF">
<FURef type = "InstFetch" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "ID" flags ="DEMAND">
<FURef type = "InstDecode" mode = "DEFAULT"/>
</StgRef>
<StgRef name = "EX" flags ="COMMIT">
<FURef type="int-ALU" mode="IntALU"/>
</StgRef>
</Operation>
</ExecModel>
<MemModel>
<Cache policy = "D-Mapped" i_cache_delay = "1" d_cache_delay = "1">
<InstCache i_cache_size = "1K" i_cache_ratio = "0.6614"/>
<InstCache i_cache_size = "2K" i_cache_ratio = "0.7917"/>
<InstCache i_cache_size = "4K" i_cache_ratio = "0.8606"/>
<InstCache i_cache_size = "8K" i_cache_ratio = "0.9503"/>
<InstCache i_cache_size = "16K" i_cache_ratio = "0.9779"/>
<InstCache i_cache_size = "32K" i_cache_ratio = "0.9805"/>
<InstCache i_cache_size = "64K" i_cache_ratio = "0.9817"/>
<DataCache d_cache_size = "2K" d_cache_ratio = "0.6379"/>
<DataCache d_cache_size = "4K" d_cache_ratio = "0.6661"/>
<DataCache d_cache_size = "8K" d_cache_ratio = "0.6714"/>
<DataCache d_cache_size = "16K" d_cache_ratio = "0.6996"/>
<DataCache d_cache_size = "32K" d_cache_ratio = "0.6996"/>
<DataCache d_cache_size = "64K" d_cache_ratio = "0.6996"/>
</Cache>
<Memory r_delay = "8" w_delay = "3"/>
</MemModel>
<DPModel>
<Pipeline name = "default" br_pred_policy = "TAKEN" br_pred_hit_ratio = "60.00" br_penalty = "2">
<Stage name = "IF">
<FURef type = "InstFetch" quantity = "1"/>
</Stage>
<Stage name = "ID">
<FURef type = "InstDecode" quantity = "1"/>
</Stage>
<Stage name = "EX">
<FURef type = "reg" quantity = "32"/>
<FURef type = "mem-Port" quantity = "1"/>
<FURef type = "int-ALU" quantity = "1"/>
<FURef type = "int-Mult/Div" quantity = "1"/>
<FURef type = "FP-ALU" quantity = "1"/>
<FURef type = "FP-Mult/Div" quantity = "1"/>
</Stage>
</Pipeline>
<FuncUnit type="InstFetch" quantity="1">
<OperMode mode="DEFAULT" oplat="1"/>
</FuncUnit>
<FuncUnit type="InstDecode" quantity="1">
<OperMode mode="DEFAULT" oplat="1"/>
</FuncUnit>
<FuncUnit type="reg" quantity="32">
<OperMode mode="RdReg" oplat="1"/>
<OperMode mode="WrReg" oplat="1"/>
</FuncUnit>
<FuncUnit type="mem-Port" quantity="1">
<OperMode mode="RdPort" oplat="2"/>
<OperMode mode="WrPort" oplat="1"/>
</FuncUnit>
<FuncUnit type="int-ALU" quantity="1">
<OperMode mode="IntALU" oplat="1"/>
</FuncUnit>
<FuncUnit type="int-Mult/Div" quantity="1">
<OperMode mode="IntMult" oplat="3"/>
<OperMode mode="IntDiv" oplat="34"/>
</FuncUnit>
<FuncUnit type="FP-ALU" quantity="1">
<OperMode mode="FPAdd" oplat="6"/>
<OperMode mode="FPCmp" oplat="3"/>
<OperMode mode="FPCvt" oplat="3"/>
</FuncUnit>
<FuncUnit type="FP-Mult/Div" quantity="1">
<OperMode mode="FPMult" oplat="6"/>
<OperMode mode="FPDiv" oplat="30"/>
<OperMode mode="FPSqrt" oplat="6"/>
</FuncUnit>
</DPModel>
</ProcUnit>
</ProcUnitModel>