Verification of Parameterised FPGA Circuit Descriptions with Layout ...
Verification of Parameterised FPGA Circuit Descriptions with Layout ...
Verification of Parameterised FPGA Circuit Descriptions with Layout ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
APPENDIX C. PLACED COMBINATOR LIBRARIES 220<br />
struct:: "((((’t486*’t487)=>(’t488*’t489)=>bool,(’t486*’t487)=>(’t488*’t489)=>int<br />
)block)*(((’t489*’t491)=>(’t492*’t493)=>bool,(’t489*’t491)=>(’t492*’t493)=><br />
int)block))=>(’t486*(’t487*’t491))=>((’t488*’t492)*’t493)=>bool"<br />
height:: "((((’t486*’t487)=>(’t488*’t489)=>bool,(’t486*’t487)=>(’t488*’t489)=>int<br />
)block)*(((’t489*’t491)=>(’t492*’t493)=>bool,(’t489*’t491)=>(’t492*’t493)=><br />
int)block))=>(’t486*(’t487*’t491))=>((’t488*’t492)*’t493)=>int"<br />
width:: "((((’t486*’t487)=>(’t488*’t489)=>bool,(’t486*’t487)=>(’t488*’t489)=>int)<br />
block)*(((’t489*’t491)=>(’t492*’t493)=>bool,(’t489*’t491)=>(’t492*’t493)=>int<br />
)block))=>(’t486*(’t487*’t491))=>((’t488*’t492)*’t493)=>int"<br />
beside:: "(((((’t486*’t487)=>(’t488*’t489)=>bool,(’t486*’t487)=>(’t488*’t489)=><br />
int)block)*(((’t489*’t491)=>(’t492*’t493)=>bool,(’t489*’t491)=>(’t492*’t493)<br />
=>int)block))=>(’t486*(’t487*’t491))=>((’t488*’t492)*’t493)=>bool, ((((’t486<br />
*’t487)=>(’t488*’t489)=>bool,(’t486*’t487)=>(’t488*’t489)=>int)block)*(((’<br />
t489*’t491)=>(’t492*’t493)=>bool,(’t489*’t491)=>(’t492*’t493)=>int)block))<br />
=>(’t486*(’t487*’t491))=>((’t488*’t492)*’t493)=>int)block"<br />
defs<br />
struct_def: "struct == % (R, S) (a, (b, c)) ((d, e), f). EX (is::’t489). Def ((a,<br />
b) ;;; R ;;; (d, is)) & Def ((is, c) ;;; S ;;; (e, f))"<br />
height_def: "height == % (R, S) (a, (b, c)) ((d, e), f). let is = (THE (is::’t489<br />
). Def ((a, b) ;;; R ;;; (d, is)) & Def ((is, c) ;;; S ;;; (e, f))) in max (<br />
Height ((a, b) ;;; R ;;; (d, is))) (Height ((is, c) ;;; S ;;; (e, f)))"<br />
width_def: "width == % (R, S) (a, (b, c)) ((d, e), f). let is = (THE (is::’t489).<br />
Def ((a, b) ;;; R ;;; (d, is)) & Def ((is, c) ;;; S ;;; (e, f))) in (Width<br />
((a, b) ;;; R ;;; (d, is))) + (Width ((is, c) ;;; S ;;; (e, f)))"<br />
beside_def: "beside == (| Def = struct, Height = height, Width = width |)"<br />
declare width_def [simp]<br />
declare height_def [simp]<br />
declare struct_def [simp]<br />
section {* Validity <strong>of</strong> width and height functions *}<br />
theorem height_ge0_int: "!! (R::(((’t486*’t487)=>(’t488*’t489)=>bool,(’t486*’t487)<br />
=>(’t488*’t489)=>int)block)) (S::(((’t489*’t491)=>(’t492*’t493)=>bool,(’t489*’<br />
t491)=>(’t492*’t493)=>int)block)) (a::’t486) (b::’t487) (c::’t491) (d::’t488) (e<br />
::’t492) (f::’t493). [| ALL (qs704::(’t486*’t487)) (qs705::(’t488*’t489)). 0 bool,(’t486*’t487)=>(’<br />
t488*’t489)=>int)block)) (S::(((’t489*’t491)=>(’t492*’t493)=>bool,(’t489*’t491)<br />
=>(’t492*’t493)=>int)block)) (a::’t486) (b::’t487) (c::’t491) (d::’t488) (e::’<br />
t492) (f::’t493). [| ALL (qs704::(’t486*’t487)) (qs705::(’t488*’t489)). 0 bool,(’t486*’t487)=>(’<br />
t488*’t489)=>int)block)) (S::(((’t489*’t491)=>(’t492*’t493)=>bool,(’t489*’t491)<br />
=>(’t492*’t493)=>int)block)) (a::’t486) (b::’t487) (c::’t491) (d::’t488) (e::’