Verification of Parameterised FPGA Circuit Descriptions with Layout ...

Verification of Parameterised FPGA Circuit Descriptions with Layout ... Verification of Parameterised FPGA Circuit Descriptions with Layout ...

24.04.2013 Views

APPENDIX C. PLACED COMBINATOR LIBRARIES 252 by auto end bool,(’t11*’t12)=>(’t13*’t14)=>int)block) *(((’t16=>’t11=>bool,’t16=>’t11=>int)block)*((’t18=>’t12=>bool,’t18=>’t12=> int)block))*(((’t13=>’t20=>bool,’t13=>’t20=>int)block)*((’t14=>’t22=>bool,’ t14=>’t22=>int)block)))=>(’t16*’t18)=>(’t20*’t22)=>bool" height:: "((((’t11*’t12)=>(’t13*’t14)=>bool,(’t11*’t12)=>(’t13*’t14)=>int)block) *(((’t16=>’t11=>bool,’t16=>’t11=>int)block)*((’t18=>’t12=>bool,’t18=>’t12=> int)block))*(((’t13=>’t20=>bool,’t13=>’t20=>int)block)*((’t14=>’t22=>bool,’ t14=>’t22=>int)block)))=>(’t16*’t18)=>(’t20*’t22)=>int" width:: "((((’t11*’t12)=>(’t13*’t14)=>bool,(’t11*’t12)=>(’t13*’t14)=>int)block) *(((’t16=>’t11=>bool,’t16=>’t11=>int)block)*((’t18=>’t12=>bool,’t18=>’t12=> int)block))*(((’t13=>’t20=>bool,’t13=>’t20=>int)block)*((’t14=>’t22=>bool,’ t14=>’t22=>int)block)))=>(’t16*’t18)=>(’t20*’t22)=>int" surround:: "(((((’t11*’t12)=>(’t13*’t14)=>bool,(’t11*’t12)=>(’t13*’t14)=>int) block)*(((’t16=>’t11=>bool,’t16=>’t11=>int)block)*((’t18=>’t12=>bool,’t18=>’ t12=>int)block))*(((’t13=>’t20=>bool,’t13=>’t20=>int)block)*((’t14=>’t22=> bool,’t14=>’t22=>int)block)))=>(’t16*’t18)=>(’t20*’t22)=>bool, ((((’t11*’t12) =>(’t13*’t14)=>bool,(’t11*’t12)=>(’t13*’t14)=>int)block)*(((’t16=>’t11=>bool ,’t16=>’t11=>int)block)*((’t18=>’t12=>bool,’t18=>’t12=>int)block))*(((’t13=>’ t20=>bool,’t13=>’t20=>int)block)*((’t14=>’t22=>bool,’t14=>’t22=>int)block))) =>(’t16*’t18)=>(’t20*’t22)=>int)block" defs struct_def: "struct == % (A, (B, C), (D, E)) (l, t) (b, r). EX (l2::’t11) (t2::’ t12) (b2::’t13) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)" height_def: "height == % (A, (B, C), (D, E)) (l, t) (b, r). let l2 = (THE (l2::’t11). EX (t2::’t12) (b2::’t13) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in

APPENDIX C. PLACED COMBINATOR LIBRARIES 253 let t2 = (THE (t2::’t12). EX (l2::’t11) (b2::’t13) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in let b2 = (THE (b2::’t13). EX (l2::’t11) (t2::’t12) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in let r2 = (THE (r2::’t14). EX (l2::’t11) (t2::’t12) (b2::’t13). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in max ((Height (b2 ;;; D ;;; b)) + (Height (r2 ;;; E ;;; r))) ((max (Height (b2 ;;; D ;;; b)) ((max ((Height (b2 ;;; D ;;; b)) + (Height ((l2, t2) ;;; A ;;; (b2, r2)))) ((max ((max ((Height (b2 ;;; D ;;; b)) + (Height (r2 ;;; E ;;; r))) ((Height (b2 ;;; D ;;; b)) + (Height ((l2, t2) ;;; A ;;; (b2, r2))))) + (Height (t ;;; C ;;; t2))) ((Height (b2 ;;; D ;;; b)) + ( Height (l ;;; B ;;; l2)))))))))" width_def: "width == % (A, (B, C), (D, E)) (l, t) (b, r). let l2 = (THE (l2::’t11). EX (t2::’t12) (b2::’t13) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in let t2 = (THE (t2::’t12). EX (l2::’t11) (b2::’t13) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in let b2 = (THE (b2::’t13). EX (l2::’t11) (t2::’t12) (r2::’t14). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in let r2 = (THE (r2::’t14). EX (l2::’t11) (t2::’t12) (b2::’t13). Def (l ;;; B ;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def (b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in max ((Width (l ;;; B ;;; l2)) + (Width ((l2, t2) ;;; A ;;; (b2, r2))) + ( Width (r2 ;;; E ;;; r))) ((max ((Width (l ;;; B ;;; l2)) + (Width (b2 ;;; D ;;; b))) ((max ((Width (l ;;; B ;;; l2)) + (Width ((l2, t2) ;;; A ;;; (b2, r2)))) ((max ((Width (l ;;; B ;;; l2)) + (Width (t ;;; C ;;; t2 ))) (Width (l ;;; B ;;; l2))))))))" surround_def: "surround == (| Def = struct, Height = height, Width = width|)" declare width_def [simp] declare height_def [simp] declare struct_def [simp] section {* Validity of width and height functions *} theorem height_ge0_int : "!! (A::(((’t11*’t12)=>(’t13*’t14)=>bool,(’t11*’t12)=>(’t13 *’t14)=>int)block)) (B::((’t16=>’t11=>bool,’t16=>’t11=>int)block)) (C::((’t18=>’ t12=>bool,’t18=>’t12=>int)block)) (D::((’t13=>’t20=>bool,’t13=>’t20=>int)block)) (E::((’t14=>’t22=>bool,’t14=>’t22=>int)block)) (l::’t16) (t::’t18) (b::’t20) (r ::’t22). [| ALL (qs32::(’t11*’t12)) (qs33::(’t13*’t14)). 0

APPENDIX C. PLACED COMBINATOR LIBRARIES 253<br />

let t2 = (THE (t2::’t12). EX (l2::’t11) (b2::’t13) (r2::’t14). Def (l ;;; B<br />

;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />

(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />

let b2 = (THE (b2::’t13). EX (l2::’t11) (t2::’t12) (r2::’t14). Def (l ;;; B<br />

;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />

(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />

let r2 = (THE (r2::’t14). EX (l2::’t11) (t2::’t12) (b2::’t13). Def (l ;;; B<br />

;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />

(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />

max ((Height (b2 ;;; D ;;; b)) + (Height (r2 ;;; E ;;; r))) ((max (Height (b2<br />

;;; D ;;; b)) ((max ((Height (b2 ;;; D ;;; b)) + (Height ((l2, t2) ;;; A<br />

;;; (b2, r2)))) ((max ((max ((Height (b2 ;;; D ;;; b)) + (Height (r2 ;;;<br />

E ;;; r))) ((Height (b2 ;;; D ;;; b)) + (Height ((l2, t2) ;;; A ;;; (b2,<br />

r2))))) + (Height (t ;;; C ;;; t2))) ((Height (b2 ;;; D ;;; b)) + (<br />

Height (l ;;; B ;;; l2)))))))))"<br />

width_def: "width == % (A, (B, C), (D, E)) (l, t) (b, r).<br />

let l2 = (THE (l2::’t11). EX (t2::’t12) (b2::’t13) (r2::’t14). Def (l ;;; B<br />

;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />

(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />

let t2 = (THE (t2::’t12). EX (l2::’t11) (b2::’t13) (r2::’t14). Def (l ;;; B<br />

;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />

(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />

let b2 = (THE (b2::’t13). EX (l2::’t11) (t2::’t12) (r2::’t14). Def (l ;;; B<br />

;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />

(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />

let r2 = (THE (r2::’t14). EX (l2::’t11) (t2::’t12) (b2::’t13). Def (l ;;; B<br />

;;; l2) & Def (t ;;; C ;;; t2) & Def ((l2, t2) ;;; A ;;; (b2, r2)) & Def<br />

(b2 ;;; D ;;; b) & Def (r2 ;;; E ;;; r)) in<br />

max ((Width (l ;;; B ;;; l2)) + (Width ((l2, t2) ;;; A ;;; (b2, r2))) + (<br />

Width (r2 ;;; E ;;; r))) ((max ((Width (l ;;; B ;;; l2)) + (Width (b2<br />

;;; D ;;; b))) ((max ((Width (l ;;; B ;;; l2)) + (Width ((l2, t2) ;;; A<br />

;;; (b2, r2)))) ((max ((Width (l ;;; B ;;; l2)) + (Width (t ;;; C ;;; t2<br />

))) (Width (l ;;; B ;;; l2))))))))"<br />

surround_def: "surround == (| 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 : "!! (A::(((’t11*’t12)=>(’t13*’t14)=>bool,(’t11*’t12)=>(’t13<br />

*’t14)=>int)block)) (B::((’t16=>’t11=>bool,’t16=>’t11=>int)block)) (C::((’t18=>’<br />

t12=>bool,’t18=>’t12=>int)block)) (D::((’t13=>’t20=>bool,’t13=>’t20=>int)block))<br />

(E::((’t14=>’t22=>bool,’t14=>’t22=>int)block)) (l::’t16) (t::’t18) (b::’t20) (r<br />

::’t22). [| ALL (qs32::(’t11*’t12)) (qs33::(’t13*’t14)). 0

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!