-
Notifications
You must be signed in to change notification settings - Fork 4
/
pcoeffProcessor.xml
99 lines (91 loc) · 5.01 KB
/
pcoeffProcessor.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<RTL_SPEC>
<!-- 'name' is how this function will be called from an OpenCL kernel.
'module' is the top-level HDL module name that implements the function. -->
<FUNCTION name="pcoeffProcessor" module="OpenCLFullPermutationPipeline">
<ATTRIBUTES>
<!-- Setting IS_STALL_FREE="yes" means the function neither generates stalls internally nor can it
properly handle incoming stalls (because it simply ignores its stall/valid inputs). If set
to "no", the function must properly handle stall/valid signals.
IS_STALL_FREE="yes" requires IS_FIXED_LATENCY="yes". -->
<IS_STALL_FREE value="no"/>
<!-- If the function always takes known number of clock cycles (specified by EXPECTED_LATENCY)
to compute its output, set IS_FIXED_LATENCY to "yes".
Note that IS_FIXED_LATENCY could be "yes" while IS_STALL_FREE="no". Such a function would
produce its output in fixed number of cycles but could still deal with stall signals
properly. -->
<IS_FIXED_LATENCY value="no"/>
<!-- Expected latency of this function. If IS_FIXED_LATENCY="yes", this is the number of
pipeline stages inside the function. In this case, EXPECTED_LATENCY must be set exactly
to the latency of the function, otherwise incorrect hardware will result.
For variable latency functions, pipeline around this function will be balanced to this
value. Setting EXPECTED_LATENCY to a different value will still produce correct results
but may affect number of stalls inside the pipeline. -->
<EXPECTED_LATENCY value="1000"/> <!-- mem size is 512, so just a bit more for stalls-->
<!-- Number of multiple inputs that can be processed simultaneously by this function.
If IS_STALL_FREE="no" and IS_FIXED_LATENCY="no", the CAPACITY value must be specified.
Otherwise, it is not required.
If CAPACITY is strictly less than EXPECTED_LATENCY, the compiler will automatically
insert capacity-balancing FIFOs after this function when required. -->
<CAPACITY value="16000"/> <!-- 2000 per 2xpipeline, 2x5 pipelines, should be enough. No stalling due to OpenCL please! -->
<!-- Set to "yes" to indicate that this function has side-effects. Calls to functions
with side-effects will not be optimized away and only valid data will be fed
to such functions.
Functions that have internal state or talk to external memories are examples of functions
with side-effects. -->
<HAS_SIDE_EFFECTS value="yes"/>
<!-- Set to "yes" to allow multiple instances of this function to be merged by the compiler.
This property should be set to "yes".
Note that marking function with HAS_SIDE_EFFECTS does not prevent merging. -->
<ALLOW_MERGING value="yes"/>
</ATTRIBUTES>
<INTERFACE>
<AVALON port="clock" type="clock"/>
<AVALON port="clock2x" type="clock2x"/>
<AVALON port="resetn" type="resetn"/>
<AVALON port="ivalid" type="ivalid"/>
<AVALON port="iready" type="iready"/>
<AVALON port="ovalid" type="ovalid"/>
<AVALON port="oready" type="oready"/>
<INPUT port="mbfUppers" width="128"/>
<INPUT port="mbfLowers" width="128"/>
<INPUT port="startNewTop" width="1"/>
<OUTPUT port="results" width="128"/>
</INTERFACE>
<C_MODEL>
<FILE name="src/pcoeffProcessorCModel.cl"/>
</C_MODEL>
<REQUIREMENTS>
<!--Verilog Headers -->
<FILE name="src/inlineVarSwap_header.v"/>
<FILE name="src/pipelineGlobals_header.v"/>
<FILE name="src/leafElimination_header.v"/>
<FILE name="src/ipSettings_header.v"/>
<!-- Source Files -->
<FILE name="src/OpenCLFullPermutationPipeline.v"/>
<FILE name="src/popcnt.v"/>
<FILE name="src/topManager.v"/>
<FILE name="src/cosmicRayDetection.v"/>
<FILE name="src/pcoeffProcessorUnit.v"/>
<FILE name="src/fullPermutationPipeline.v"/>
<FILE name="src/permutationGenerator.v"/>
<FILE name="src/multiPermutChecks.v"/>
<FILE name="src/aggregatingPermutePipeline.v"/>
<FILE name="src/botPermuter1234.v"/>
<FILE name="src/aggregatingPipeline.v"/>
<FILE name="src/leafElimination.v"/>
<FILE name="src/exactlyOne.v"/>
<FILE name="src/singletonElimination.v"/>
<FILE name="src/streamingCountConnectedCore.v"/>
<FILE name="src/pipelinedCountConnectedCore.v"/>
<FILE name="src/monotonize.v"/>
<!-- Utility files -->
<FILE name="src/hyperPipelining.v"/>
<FILE name="src/FIFO.v"/>
<FILE name="src/FastFIFO.v"/>
<FILE name="src/memory.v"/>
<FILE name="src/synchronizer.v"/>
<!-- Constraints -->
<!--<FILE name="src/pipelineClock.sdc"/>--> <!-- Can't use, damn Intel OpenCL -->
</REQUIREMENTS>
</FUNCTION>
</RTL_SPEC>