Abstract
Manual placement of components is often used in FPGA circuit design in order to achieve better results than would be generated by automatic place and route algorithms. However, explicit placement of basic elements in parametrized hardware descriptions is tedious and error-prone. We describe a framework for the description and verification of parametrized hardware libraries with layout information, supporting both placing components with explicit symbolic coordinates and ‘neighboring’ placement directives such as A beside B. The correctness of generated layouts is established by proof in higher-order logic, automated by using the Isabelle theorem prover. We have developed an extensive library of theorems describing properties of layouts that are combined by our compiler and the theorem prover to achieve a high level of automation in the verification of complete circuit layouts, making formal verification of circuit layouts practical with minimal user effort. Our system has been used to verify layout descriptions for a range of circuits that have been mapped to Xilinx FPGAs.
Similar content being viewed by others
References
IEEE: IEEE standard VHDL language reference manual, IEEE Std. pp. 1076–1987. New York (1998)
DS031: Virtex-II platform FPGAs: complete data sheet, Xilinx, Inc., San Jose, California (2005)
Aagaard, M., Leeser, M., Windley, P.: Towards a super duper hardware tactic. In: HUG’93, vol. 780 of LNCS, pp. 400–412. Springer, Berlin Heidelberg New York (1993)
Aggoun, A., Beldiceanu, N.: Extending CHIP in order to solve complex scheduling and placement problems. J. Math. Comput. Model. 17(7), 57–73 (1993)
Andraka, R.: A survey of CORDIC algorithms for FPGA based computers. In: Proceedings FPGA ’98: 6th ACM/SIGDA International Symposium on Field Programmable Gate Arrays, pp. 191–200. New York (1998)
Beldiceanu, N., Carlsson, M.: Sweep as a generic pruning technique applied to the non-overlapping rectangles constraint. In: Walsh, T. (ed.) Proceedings Constraint Programming 2001, vol. 2239 of LNCS, pp. 377–391. Springer, Berlin Heidelberg New York (2001)
Bjesse, P., Claessen, K., Sheeran, M., Singh, S.: Lava: hardware design in Haskell. In: Proceedings ICFP ’98: 3rd ACM SIGPLAN International Conference on Functional Programming, pp. 174–184. New York (1998)
Boulton, R., Gordon, A., Gordon, M., Harrison, J., Herbert, J., Tassel, J.V.: Experience with embedding hardware description languages in HOL. In: Stavridou, V., Melham, T.F., Boute, R.T. (eds.) IFIP TC10/WG 10.2 International Conference on Theorem Provers in Circuit Design: Theory, Practice and Experience, pp. 129–156. North-Holland, Amsterdam, The Netherlands (1992)
Boyer, R.S., Moore, J.S.: A Computational Logic. Academic, New York (1979)
Cyrluk, D., Rajan, S., Shankar, N., Srivas, M.K.: Effective theorem proving for hardware verification. In: Proceedings TPCD’94: 2nd International Conference on Theorem Provers in Circuit Design, pp. 203–222. Bad Herrenalb, Germany (1994)
Damas, L., Milner, R.: Principal type-schemes for functional programs. In: Proceedings POPL ’82: 9th ACM Symposium on Principles of Programming Languages, pp. 207–212. New York (1982)
Guo, S., Luk, W.: An integrated system for developing regular array designs. J. Systems Archit. 47(3–4), 315–337 (2001)
Hindley, R.: The principal type scheme of an object in combinatory logic. Trans. Am. Math. Soc. 146, 29–60 (1969)
Jones, G., Sheeran, M.: Circuit design in Ruby. In: Staunstrup, J. (ed.) Formal Methods for VLSI Design, pp. 13–70. North-Holland, Amsterdam, The Netherlands (1990)
Kaufmann, M., Moore, J.S.: An Industrial Strength Theorem Prover for a Logic Based on Common Lisp. IEEE Trans. Softw. Eng. 23(4), 203–213 (1997)
Luk, W., McKeever, S.: Pebble: a language for parameterised and reconfigurable hardware design. In: Hartenstein, R.W., Keevallik, A. (eds.) Proceedings FPL’98: Field-Programmable Logic and Applications, vol. 1482 of LNCS, pp. 9–18. Springer, Berlin Heidelberg New York (1998)
Matthews, J., Launchbury, J.: Elementary microarchitecture algebra. In: Proceedings CAV’99: Computer Aided Verification, vol. 1633 of LNCS, pp. 288–300. Springer, Berlin Heidelberg New York (1999)
McKeever, S., Luk, W., Derbyshire, A.: Compiling hardware descriptions with relative placement information for parameterised libraries. In: Aagaard, M., O’Leary, J. (eds.) Proceedings FMCAD 2002: 4th International Conference on Formal Methods in Computer-Aided Design, vol. 2517 of LNCS, pp. 342–359. Springer, Berlin Heidelberg New York (2002)
McKeever, S., Luk, W., Derbyshire, A.: Towards verifying parametrised hardware libraries with relative placement information. In: Proceedings HICSS ’03: 36th Hawaii International Conference on System Sciences, p. 10. Washington, District of Columbia (2003)
Melham, T.: Higher Order Logic and Hardware Verification, Cambridge Tracts in Theoretical Computer Science. Cambridge University Press, Cambridge, UK (1993)
Milner, R.: A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17, 348–375 (1978)
Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL: A Proof Assistant for Higher-Order Logic, vol. 2283 of LNCS. Springer, Berlin Heidelberg New York (2002)
Paulson, L.C.: Isabelle: A Generic Theorem Prover, vol. 828 of LNCS. Springer, Berlin Heidelberg New York (1994)
Pell, O., Luk, W.: Quartz: a framework for correct and efficient reconfigurable design. In: Proceedings RECONFIG’05: International Conference on Reconfigurable Computing and FPGAs. IEEE Computer Society Press, Los Alamitos, California (2005a).
Pell, O., Luk, W.: Resolving quartz overloading. In: Borrione, D., Paul, W. (eds.) Proceedings CHARME’05: 13th Conference on Correct Hardware Design and Verification Methods, vol. 3725 of LNCS, pp. 380–383. Springer, Berlin Heidelberg New York (2005b)
Rasmussen, O.: An embedding of Ruby in Isabelle. In: Slaney, J.K. (ed.) Proceedings CADE: 13th International Conference on Automated Deduction, vol. 1104 of LNCS, pp. 186–200. Springer, Berlin Heidelberg New York (1996)
Singh, S.: Death of the RLOC? In: Proceedings FCCM’00: 8th IEEE Symposium on Field-Programmable Custom Computing Machines, pp. 145–152. Washington, District of Columbia (2000)
Thomes, D.E., Moorby, P.: The Verilog Hardware Description Language. Kluwer, Norwell, Massachusetts 3rd edn. (1996)
Wadler, P., Blott, S.: How to make ad hoc polymorphism less ad hoc. In: Proceedings POPL ’89: 16th ACM Symposium on Principles of Programming Languages, pp. 60–76. New York (1989)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Pell, O. Verification of FPGA Layout Generators in Higher-Order Logic. J Autom Reasoning 37, 117–152 (2006). https://doi.org/10.1007/s10817-006-9039-9
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10817-006-9039-9