Verification of Parameterised FPGA Circuit Descriptions with Layout ...
Verification of Parameterised FPGA Circuit Descriptions with Layout ... Verification of Parameterised FPGA Circuit Descriptions with Layout ...
CHAPTER 7. CONCLUSION AND FUTURE WORK 170 7.3.3 Ruby and Lava Both Ruby [26] and Lava [7] have been used to generate placed circuit descriptions using their higher-order combinators. Ruby and Lava combinators can describe both function and placement, as with Quartz. Neither the Ruby nor Lava system supports the generation of parameterised output, instead they generate flattened netlists. Ruby uses a variable-free notation of relations to describe circuits and it is thus relatively easy to give key combinators, such as beside and below a layout interpretation which can then be used to generate placed output. Ruby’s design style does not support explicit instantiation and signal connection and can not support explicit co-ordinates. This is a limiting factor and the system can not support the irregular grid example. No explicit verification infrastructure is available for Ruby layouts, however since the output is a flattened netlist and placement is limited to beside/below relationships it should be impossible to describe invalid layouts. Lava is a more flexible system based on Haskell. Lava provides a combinators which place components below each other, beside each other or at the same location. Unlike Ruby, it does not enforce a variable-free notation and is thus more flexible. A version of Lava has also been demonstrated that supports layout with explicit co-ordinates [77]. While Lava provides constructs to aid the construction of correct layouts (using beside and below), it also permits possibly invalid layouts (by placing components in the same slice 2 , either explicitly or using the combinator provided for this purpose). Unlike Ruby, Lava does therefore permit the description of invalid layouts and there is no infrastructure available for verifying Lava layouts however our layout verification infrastructure could be adapted to this purpose. Ruby and Lava use recursion as their only means of repetition. The languages do not support iterative descriptions, which can be a clearer way of describing some circuit arrangements than recursion (although they are not more powerful per se), although this is less relevant than for Quartz since they do not produce output in a format that supports iteration. Ruby and Lava do not support giving combinators different layout interpretations in the 2 The version of Lava which supports placement was developed at Xilinx and is designed specifically to target Xilinx FPGAs.
CHAPTER 7. CONCLUSION AND FUTURE WORK 171 same way as our framework. Lava does support overloading but using Haskell type classes which are not suitable for overloading blocks with different parameterisations in the way that is required for providing additional layout parameters. 7.4 Future Work Several aspects of this work are particularly open ended and we will end by making a few recommendations for areas worthy of future investigation. 7.4.1 Further Support For Alternative Layout Interpretations We have demonstrated how blocks can be given different layout interpretations and over- loading used to give one of these interpretations the status of a “default”. However, this approach still requires that two or more different layouts are explicitly coded for combinator blocks. While there will be some cases where blocks are described with completely unrelated layout interpretations, in most cases we expect these different interpretations to be variations on a theme. It is possible that these operations could be better described by vertical and horizontal flipping or rotation and higher-order blocks which performed these operation on their parameter block could provide a simpler method of achieving this result. Combinators with could rotate or flip blocks allow abstraction of a particular kind of layout operation and promote separation of concerns in the same way as higher-order combinators do. Such layout-manipulation combinators would need to be based on a different theoretical basis to our current system, where one block can not alter the internal structure of another. The verification of such combinators would be an interesting exercise, particularly ensuring that they do not invalidate a previously valid layout. Another useful extension would be to provide a mechanism for series and parallel compositions to be given multiple layout interpretations. Lava achieves this for series composition by providing different combinators for different series composition layouts, Quartz could take a similar approach but achieve it more concisely since series composition is a language-level
- Page 129 and 130: CHAPTER 5. SPECIALISATION 119 Modif
- Page 131 and 132: CHAPTER 5. SPECIALISATION 121 Buffe
- Page 133 and 134: CHAPTER 5. SPECIALISATION 123 a fas
- Page 135 and 136: CHAPTER 5. SPECIALISATION 125 block
- Page 137 and 138: CHAPTER 5. SPECIALISATION 127 y y y
- Page 139 and 140: CHAPTER 5. SPECIALISATION 129 with
- Page 141 and 142: CHAPTER 6. LAYOUT CASE STUDIES 131
- Page 143 and 144: CHAPTER 6. LAYOUT CASE STUDIES 133
- Page 145 and 146: CHAPTER 6. LAYOUT CASE STUDIES 135
- Page 147 and 148: CHAPTER 6. LAYOUT CASE STUDIES 137
- Page 149 and 150: CHAPTER 6. LAYOUT CASE STUDIES 139
- Page 151 and 152: CHAPTER 6. LAYOUT CASE STUDIES 141
- Page 153 and 154: CHAPTER 6. LAYOUT CASE STUDIES 143
- Page 155 and 156: CHAPTER 6. LAYOUT CASE STUDIES 145
- Page 157 and 158: CHAPTER 6. LAYOUT CASE STUDIES 147
- Page 159 and 160: CHAPTER 6. LAYOUT CASE STUDIES 149
- Page 161 and 162: CHAPTER 6. LAYOUT CASE STUDIES 151
- Page 163 and 164: CHAPTER 6. LAYOUT CASE STUDIES 153
- Page 165 and 166: CHAPTER 6. LAYOUT CASE STUDIES 155
- Page 167 and 168: CHAPTER 6. LAYOUT CASE STUDIES 157
- Page 169 and 170: CHAPTER 6. LAYOUT CASE STUDIES 159
- Page 171 and 172: CHAPTER 6. LAYOUT CASE STUDIES 161
- Page 173 and 174: CHAPTER 6. LAYOUT CASE STUDIES 163
- Page 175 and 176: CHAPTER 7. CONCLUSION AND FUTURE WO
- Page 177 and 178: CHAPTER 7. CONCLUSION AND FUTURE WO
- Page 179: CHAPTER 7. CONCLUSION AND FUTURE WO
- Page 183 and 184: CHAPTER 7. CONCLUSION AND FUTURE WO
- Page 185 and 186: Bibliography [1] A. Aggoun and N. B
- Page 187 and 188: BIBLIOGRAPHY 177 [19] H. Gelernter.
- Page 189 and 190: BIBLIOGRAPHY 179 [41] Y. Li and M.
- Page 191 and 192: BIBLIOGRAPHY 181 [60] L. C. Paulson
- Page 193 and 194: BIBLIOGRAPHY 183 [83] J. Voeten. On
- Page 195 and 196: APPENDIX A. QUARTZ LANGUAGE GRAMMAR
- Page 197 and 198: Appendix B Theoretical Basis for La
- Page 199 and 200: APPENDIX B. THEORETICAL BASIS FOR L
- Page 201 and 202: APPENDIX B. THEORETICAL BASIS FOR L
- Page 203 and 204: APPENDIX B. THEORETICAL BASIS FOR L
- Page 205 and 206: APPENDIX B. THEORETICAL BASIS FOR L
- Page 207 and 208: APPENDIX B. THEORETICAL BASIS FOR L
- Page 209 and 210: APPENDIX B. THEORETICAL BASIS FOR L
- Page 211 and 212: APPENDIX B. THEORETICAL BASIS FOR L
- Page 213 and 214: APPENDIX B. THEORETICAL BASIS FOR L
- Page 215 and 216: APPENDIX B. THEORETICAL BASIS FOR L
- Page 217 and 218: Appendix C Placed Combinator Librar
- Page 219 and 220: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 221 and 222: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 223 and 224: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 225 and 226: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 227 and 228: APPENDIX C. PLACED COMBINATOR LIBRA
- Page 229 and 230: APPENDIX C. PLACED COMBINATOR LIBRA
CHAPTER 7. CONCLUSION AND FUTURE WORK 170<br />
7.3.3 Ruby and Lava<br />
Both Ruby [26] and Lava [7] have been used to generate placed circuit descriptions using<br />
their higher-order combinators. Ruby and Lava combinators can describe both function and<br />
placement, as <strong>with</strong> Quartz. Neither the Ruby nor Lava system supports the generation <strong>of</strong><br />
parameterised output, instead they generate flattened netlists.<br />
Ruby uses a variable-free notation <strong>of</strong> relations to describe circuits and it is thus relatively<br />
easy to give key combinators, such as beside and below a layout interpretation which can then<br />
be used to generate placed output. Ruby’s design style does not support explicit instantiation<br />
and signal connection and can not support explicit co-ordinates. This is a limiting factor and<br />
the system can not support the irregular grid example. No explicit verification infrastructure<br />
is available for Ruby layouts, however since the output is a flattened netlist and placement<br />
is limited to beside/below relationships it should be impossible to describe invalid layouts.<br />
Lava is a more flexible system based on Haskell. Lava provides a combinators which place<br />
components below each other, beside each other or at the same location. Unlike Ruby, it<br />
does not enforce a variable-free notation and is thus more flexible. A version <strong>of</strong> Lava has also<br />
been demonstrated that supports layout <strong>with</strong> explicit co-ordinates [77].<br />
While Lava provides constructs to aid the construction <strong>of</strong> correct layouts (using beside and<br />
below), it also permits possibly invalid layouts (by placing components in the same slice 2 ,<br />
either explicitly or using the combinator provided for this purpose). Unlike Ruby, Lava does<br />
therefore permit the description <strong>of</strong> invalid layouts and there is no infrastructure available for<br />
verifying Lava layouts however our layout verification infrastructure could be adapted to this<br />
purpose.<br />
Ruby and Lava use recursion as their only means <strong>of</strong> repetition. The languages do not support<br />
iterative descriptions, which can be a clearer way <strong>of</strong> describing some circuit arrangements<br />
than recursion (although they are not more powerful per se), although this is less relevant<br />
than for Quartz since they do not produce output in a format that supports iteration.<br />
Ruby and Lava do not support giving combinators different layout interpretations in the<br />
2 The version <strong>of</strong> Lava which supports placement was developed at Xilinx and is designed specifically to<br />
target Xilinx <strong>FPGA</strong>s.