#
8d2dfbce |
|
18-Nov-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove Globals.priming. Also remove references to it in code that isn't being tested in the regression checking build-sequence, and so is probably bit-rotted. Provide numvariant version of variant, which behaves like with_flag(Globals.priming,SOME "") (variant avoids) Document change/incompatibility in release notes.
|
#
4888f523 |
|
15-Oct-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Remove eqtype declaration for term type
|
#
97475109 |
|
27-Jul-2012 |
Michael Norrish <michael.norrish@nicta.com.au> |
Remove trailing whitespace in examples directory.
|
#
6acdb5d3 |
|
11-Jun-2012 |
Konrad Slind <konrad.slind@gmail.com> |
Updating h/w synthesis stuff so that it works again.
|
#
4ad190a9 |
|
25-Sep-2009 |
Peter Homeier <palantir@trustworthytools.com> |
Changed hol-mode.src and src/parse/PPBackEnd.sml so that type variables are displayed in purple. "Everybody's cute... Everybody's cute, even me. But in purple, I'm STUNNING!" (Centauri Ambassador Londo Molari, Babylon 5, The Parliament of Dreams)
|
#
4761143b |
|
10-Aug-2009 |
Tjark Weber <Tjark.Weber@cl.cam.ac.uk> |
Removed trailing whitespace from all .sml and .sig files. This affects over 900 files and was done using emacs's delete-trailing-whitespace function in batch mode. Building the system with Poly/ML and Moscow ML seems to work, so I'm hoping these changes don't break anything. Please complain if they do!
|
#
f39037ec |
|
20-Jan-2009 |
Konrad Slind <konrad.slind@gmail.com> |
Get dev stuff working again.
|
#
cf145d92 |
|
15-May-2008 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Avoid parsing incompatibilities with wordsTheory.
|
#
927035f4 |
|
12-May-2008 |
Anthony Fox <anthony.fox@cl.cam.ac.uk> |
Updated Juliano's hardware compilation to work with wordsTheory. There are now some nasty parser warnings with "===>", "<>" and possibly others. The dev/booth example was/is broken (I haven't attempted to repair it). Have updated dev/AES/word8 and Crypto/AES. Perhaps dev/AES should be removed? The hardware compilation for Crypto/TEA and Crypto/RC6 are now broken. Updating the Crypto examples should be straightforward. Once done I can delete src/n_bit.
|
#
1f43f91a |
|
27-Jan-2008 |
Konrad Slind <konrad.slind@gmail.com> |
Added propositional logic (pedagogical example) and updated the README. Some other files seem to have been changed as well.
|
#
76c6bb40 |
|
04-Dec-2006 |
Juliano Iyoda <jmi27@cam.ac.uk> |
Small change to hwDefine2: the function addTerminationTheorems allows the user to add new theorems to prove termination
|
#
c2c8a029 |
|
11-Sep-2006 |
Juliano Iyoda <jmi27@cam.ac.uk> |
Changed hwDefine to work with wordsTheory
|
#
8d1010a1 |
|
26-May-2006 |
Juliano Iyoda <jmi27@cam.ac.uk> |
Update NEW_MAKE_CIRCUIT with Mike Gordon's improvement of the synthesis for conditionals. Changes are indicated by (* new *)
|
#
93dd4003 |
|
15-May-2006 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Improve synthesis for conditionals.
|
#
1604d2a9 |
|
05-Apr-2006 |
Juliano Iyoda <jmi27@cam.ac.uk> |
Changed inlineCompile to accept Let-exps. Also updating Mike's change to COMB_SYNTH_CONV to deal with more cases involving tuples.
|
#
9a6ed4a4 |
|
10-Mar-2006 |
Konrad Slind <konrad.slind@gmail.com> |
Improved hwDefine to solve more termination problems ... don't always have to give a measure, for example.
|
#
9605317c |
|
18-Feb-2006 |
Konrad Slind <konrad.slind@gmail.com> |
Catching up MAKE_NETLIST to recent changes.
|
#
41bcddef |
|
09-Feb-2006 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Initial (probably buggy) release of a new Verilog back end. This generates "behavioral" rather than "structural" Verilog (i.e. the body of a generated module consists of continuous assignments and always statements rather than module instances). I haven't deleted the code for generating separate module definitions and instances for components (this is now obsolete and I'll delete it once the new approach has been validated). There is now a single way of linking combinational HOL code to Verilog: (*****************************************************************************) (* Library associating HOL terms with ML functions for generating *) (* combinational Verilog. Typical example: *) (* *) (* add_vsynth *) (* [(``\(in1,in2). in1 >> in2``, *) (* (fn[i1,i2] => ("{{31{" ^ i1 ^ "[31]}}," ^ i1 ^ "} >> " ^i2))), *) (* (``UNCURRY $>>``, *) (* (fn[i1,i2] => ("{{31{" ^ i1 ^ "[31]}}," ^ i1 ^ "} >> " ^i2)))] *) (* *) (* which will cause both *) (* *) (* ``COMB (\(in1,in2). in1 >> in2) (x<>y, z)`` *) (* *) (* and *) (* *) (* ``COMB (UNCURRY $>>) (x<>y, z)`` *) (* *) (* to generate the Verilog statement *) (* *) (* assign z = {{31{x[31]}},x} >> y; *) (*****************************************************************************) AddBinop can now be defined by: fun AddBinop (_:string, (hbinop,vbinop)) = add_vsynth[(hbinop, fn[i1,i2] => (i1 ^ " " ^ vbinop ^ " " ^ i2))]; [Note that a module name isn't needed anymore.]
|
#
abe217f8 |
|
04-Feb-2006 |
Konrad Slind <konrad.slind@gmail.com> |
Spotted another optimization (getting rid of unnecessary applications of higher-order rewriting, as usual). Also added newcirDefine, which should behave as cirDefine, except faster.
|
#
f490eeb2 |
|
05-Feb-2006 |
Konrad Slind <konrad.slind@gmail.com> |
Made STEP5 of MAKE_NETLIST (and NEW_MAKE_CIRCUIT) much faster. Seems basically constant time now, rather than being the bottleneck it was before.
|
#
2053bdae |
|
04-Feb-2006 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Commenting out some rewrites that were (apparently) generating: CONSTANT (0w,1w,2w,3w) (* COMB_CONSTANT_1,COMB_CONSTANT_2,COMB_CONSTANT_3, *) This make break other things. Also various changes to enhance COMB_SYNTH_CONV which I wrongly thought was the problem, but which may also break synthesis.
|
#
86b52901 |
|
04-Feb-2006 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Not sure what changed in compile.sml, but better diagnostics added to vsynth.sml
|
#
e85dabc2 |
|
03-Feb-2006 |
Konrad Slind <konrad.slind@gmail.com> |
*** empty log message ***
|
#
6e8d4049 |
|
02-Feb-2006 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Preliminary attempt to handle combinational lets. Example: > val H_def = |- H x = x + 1 : thm - add_combinational["H"]; > val J_def = |- J x = (let y = H x in y + y + y) : thm - MAKE_CIRCUIT(EXPAND_COMPONENTS(REFINE_ALL J_dev)); > val it = |- InfRise clk ==> (?v0 v1 v2 v3 v4 v5 v6. DtypeT (clk,load,v3) /\ NOT (v3,v2) /\ AND (v2,load,v1) /\ NOT (v1,done) /\ CONSTANT 1 v5 /\ COMB (UNCURRY $+) (inp <> v5,v4) /\ COMB (UNCURRY $+) (v4 <> v4,v6) /\ COMB (UNCURRY $+) (v6 <> v4,v0) /\ Dtype (clk,v0,out)) ==> DEV J (load at clk,inp at clk,done at clk,out at clk) : thm
|
#
565c48ab |
|
02-Feb-2006 |
Konrad Slind <konrad.slind@gmail.com> |
Support for lets, by having a Let combinator. The intent is to use Let as a way of avoiding the translation to Seq and Par, which doesn't keep the sharing of the let. The Let expression eventually is replaced by an ordinary "let" which, thanks to Mike, is dealt with in COMB_SYNTH_CONV.
|
#
5904c6ad |
|
01-Feb-2006 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Improving COMB_SYNTH_CONV treatment of ``let (v1,v2) = ... in ...``. Example: > val tm = ``COMB (\(x1,x2,x3,x4). (let (y1,(y2,y3),y4) = (x1 + x2,(x3,x2),x3 + x4) in let (z1,z2) = (y1 + y2,y3 + y4) in z1 - z2 + (z2 - z1))) (in1 <> in2 <> in3 <> in4,out)`` : term - (TOP_DEPTH_CONV COMB_SYNTH_CONV THENC EXISTS_OUT_CONV) tm; > val it = |- COMB (\(x1,x2,x3,x4). (let (y1,(y2,y3),y4) = (x1 + x2,(x3,x2),x3 + x4) in let (z1,z2) = (y1 + y2,y3 + y4) in z1 - z2 + (z2 - z1))) (in1 <> in2 <> in3 <> in4,out) = ?v0 v1 v2 v3 v4 v5. COMB (UNCURRY $+) (in1 <> in2,v1) /\ COMB (UNCURRY $+) (in3 <> in4,v0) /\ COMB (UNCURRY $+) (v1 <> in3,v3) /\ COMB (UNCURRY $+) (in2 <> v0,v2) /\ COMB (UNCURRY $-) (v3 <> v2,v5) /\ COMB (UNCURRY $-) (v2 <> v3,v4) /\ COMB (UNCURRY $+) (v5 <> v4,out) : thm
|
#
eb4d93ef |
|
01-Feb-2006 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Changing a dest_abs to dest_pabs makes paired lets work: - (REDEPTH_CONV(COMB_SYNTH_CONV) THENC EXISTS_OUT_CONV) ``COMB(\(x1,x2,x3). (let (y1,(y2,y3),y4) = (x1+x2,(x1+1,x2-1),x3) in y1+y1+y2+y4+y3)) (in1 <> in2 <> in3,out)``; <<HOL message: inventing new type variable names: 'a>> > val it = |- COMB (\(x1,x2,x3). (let (y1,(y2,y3),y4) = (x1 + x2,(x1 + 1,x2 - 1),x3) in y1 + y1 + y2 + y4 + y3)) (in1 <> in2 <> in3,out) = ?v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15. COMB (UNCURRY $+) (in1 <> in2,v2) /\ CONSTANT 1 v6 /\ COMB (UNCURRY $+) (in1 <> v6,v5) /\ CONSTANT 1 v7 /\ COMB (UNCURRY $-) (in2 <> v7,v4) /\ COMB (UNCURRY $,) (v5 <> v4,v3) /\ COMB (UNCURRY $,) (v3 <> in3,v1) /\ COMB (UNCURRY $,) (v2 <> v1,v0) /\ COMB (\((x1,x2,x3),y1,(y2,y3),y4). y1) ((in1 <> in2 <> in3) <> v0,v15) /\ COMB (\((x1,x2,x3),y1,(y2,y3),y4). y1) ((in1 <> in2 <> in3) <> v0,v14) /\ COMB (UNCURRY $+) (v15 <> v14,v13) /\ COMB (\((x1,x2,x3),y1,(y2,y3),y4). y2) ((in1 <> in2 <> in3) <> v0,v12) /\ COMB (UNCURRY $+) (v13 <> v12,v11) /\ COMB (\((x1,x2,x3),y1,(y2,y3),y4). y4) ((in1 <> in2 <> in3) <> v0,v10) /\ COMB (UNCURRY $+) (v11 <> v10,v9) /\ COMB (\((x1,x2,x3),y1,(y2,y3),y4). y3) ((in1 <> in2 <> in3) <> v0,v8) /\ COMB (UNCURRY $+) (v9 <> v8,out) : thm - May need to do something to eliminate the `rewiring' COMBs.
|
#
6a5fe8f5 |
|
01-Feb-2006 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Added a case to COMB_SYNTH_CONV to handle let-terms (experimental extension intended to be useful for Konrad). For example: - COMB_SYNTH_CONV ``COMB(\(x1,x2,x3). let y = x1 + x2 in y - x3) (in1 <> in2 <> in3, out)``; > val it = |- COMB (\(x1,x2,x3). (let y = x1 + x2 in y - x3)) (in1 <> in2 <> in3,out) = ?%%genvar%%805. COMB (\(x1,x2,x3). x1 + x2) (in1 <> in2 <> in3,%%genvar%%805) /\ COMB (\((x1,x2,x3),y). y - x3) ((in1 <> in2 <> in3) <> %%genvar%%805,out) : thm
|
#
378d1050 |
|
26-Jan-2006 |
Juliano Iyoda <jmi27@cam.ac.uk> |
unimportant changes
|
#
a01df5de |
|
26-Jan-2006 |
Juliano Iyoda <jmi27@cam.ac.uk> |
Added new compiler with whole program compaction optimisation
|
#
6a618bd4 |
|
12-Nov-2005 |
Konrad Slind <konrad.slind@gmail.com> |
Have added an optimized version of MAKE_CIRCUIT, called NEW_MAKE_CIRCUIT. It should be a drop-in replacement, although the circuits it returns are not always alpha-convertible with those of MAKE_CIRCUIT. Please try it out ... it's much faster (6 secs vs 45 for final call to MAKE_CIRCUIT in dev/FactScript.sml).
|
#
df021246 |
|
30-Oct-2005 |
Konrad Slind <konrad.slind@gmail.com> |
Added a new "sw" directory for the software compiler being written by Li, Owens, and Slind. This is a temporary hiding place for work-in-progress.
|
#
e9f227aa |
|
11-Jul-2005 |
Konrad Slind <konrad.slind@gmail.com> |
Optimization of standardization apart of variables, done in first phase of MOVE_EXISTS_OUT_CONV. My previous solution, using subst, was dumb. By building up a substitution continuation on the way down from the root of the term, and applying it at all variables, things are much faster. There may be lessons for the implementation of Term.subst here ...
|
#
9758bec1 |
|
09-Jul-2005 |
Konrad Slind <konrad.slind@gmail.com> |
Optimized renaming done in STANDARDIZE_EXISTS_CONV. Still too slow ... good test of subst.
|
#
db0a1c48 |
|
09-Jul-2005 |
Konrad Slind <konrad.slind@gmail.com> |
Yet another insignificant tweak.
|
#
4290968c |
|
08-Jul-2005 |
Konrad Slind <konrad.slind@gmail.com> |
Duh. Changed ifprint to if_print.
|
#
2f00fb8f |
|
08-Jul-2005 |
Konrad Slind <konrad.slind@gmail.com> |
Fixed subtle bug in COMB_SYNTH_CONV where COMB (\(x,x).t) (inp,out) not being dealt with properly in processing results of BUS_MATCH. Also added a bit of debug support.
|
#
e63dc3ee |
|
07-Jul-2005 |
Konrad Slind <konrad.slind@gmail.com> |
Optimizations to MAKE_NETLIST. It runs much faster on most examples now. The optimizations should get moved to MAKE_CIRCUIT as well.
|
#
32c8fdd9 |
|
23-Jun-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Better error message when trying to hwDefine a non-function. Need to think about hwDefine `c = (T,F,F,T)`, which Konrad needs.
|
#
70372d5e |
|
30-May-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Added cirDefine to generate circuits in one step. Tweaked examples. Updated README.
|
#
7e7a141e |
|
17-May-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Added REFINE_ALL that uses previous results of hwDefine that are now stored in a reference hwDefineLib. See Fact.ml for an example. Various other tweaks and improvements (e.g. refinement combinators simplified and extended). Proved |- !n. FACT n < 2 ** WL ==> (FACT n = w2n(Fact32(n2w n))) and similar results for Mult, MultIter in Fact32Script.sml. README updated.
|
#
2e3a1bf2 |
|
20-Apr-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Lots of changes aimed at partially automating the adding of new HOL and Verilog unary and binary operators to synthesis. Read about AddUnop, AddBinop in README and see how they are used in Fact.ml and Fact32/Fact32.ml
|
#
c59fd332 |
|
16-Apr-2005 |
Juliano Iyoda <jmi27@cam.ac.uk> |
Changed the proof in RecCompileConvert to a (hopefully) more general one able that accepts the interface of APPLY_NEXTd (Booth multiplier example).
|
#
8d97f4fc |
|
12-Apr-2005 |
Konrad Slind <konrad.slind@gmail.com> |
Extended hwDefine to automatically handle decrement-based iterations on words. Also the reference variable "termination_simps" can be updated to add in new theorems that help establish termination. Note that we can't handle the problem once-and-forall, since each different word length needs a new theorem (wordnTheory.WORD_PRED_THM).
|
#
87132fce |
|
07-Apr-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Various tweaks. Added a preliminary very version of the factorial example that works with values of type ``:word32`` rather than with ``:num``. Needed some messy support for n-bit numerals (``0w``, ``1w``, ``2w``, ... etc).
|
#
f8a3d313 |
|
04-Apr-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Mainly a bugfix for a nested varstruct problem spotted by Konrad whilst compiling AES. Also, taking the opportunity to checkin Various other tweaks (e.g. FlipFlopT/F renamed to DtypeT/F).
|
#
93ac2dba |
|
29-Mar-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Fixed a bug in RecConvert causing looping. Added a check to hwDefine to print an error message if a recursive definition doesn't have a measure.
|
#
6a6d56e8 |
|
29-Mar-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
General tidy up, including replacing the odd and ad-hoc definition of DEL by a more conventional one (and thereby eliminating the need for REG and REGF). README file has been updated. Some, but not all, of the "x" value simulation problems have now gone away.
|
#
5dbd6c7a |
|
19-Feb-2005 |
Konrad Slind <konrad.slind@gmail.com> |
First hack at fixing problem in hwDefine.
|
#
e2ab0866 |
|
19-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Simplified the API for generating Verilog and updated README (old stuff still exists in vsynth.sml). Added Verilog support for =,+,-,< (need a uniform way of doing this as currently one has to edit compile.sml, compileScript.sml and vsynth.sml).
|
#
42498f01 |
|
15-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Have changed the way inputs and outputs are split by MAKE_NETLIST and MAKE_CIRCUIT. This is partly to improve the circuits (fewer variables) and partly to make the representation in HOL closer to Verilog. A benificial side-effect is that the code is simpler (and probably more efficient - ABS_IN_OUT_SPLIT_CONV has gone, for example). See README for updated descriptions. Note that synthesis to Verilog (vsynth.sml) is broken -- but I'm revising that so that separate modules are generated for the design and the stimulus (i.e. environment). Will fix soon(ish).
|
#
967281d5 |
|
13-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Minor tweak to stuff in comments. No code changes.
|
#
d6c07324 |
|
11-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Tidying up.
|
#
dd4850db |
|
11-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Some tweaks, and rollback to (hopefully) working version of MAKE_CIRCUIT.
|
#
1cf1a965 |
|
11-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Reverting to old and inefficent version of COMB_SYNTH_CONV. I ran regression test on new code, but didn't check results fully (I wonder how common this is in the real world). Was failing to split inputs in: val MULTd_net = time MAKE_NETLIST MULTd_dev; from booth/boothDevScript.sml.
|
#
d8120346 |
|
11-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Code improvements from KXS. Not sure what are the other things "cvs ci" is picking up!
|
#
bc99607c |
|
10-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Refine away "at clk" temporal abstractions on ``inp`` and ``out`` in circuits made with MAKE_CIRCUIT.
|
#
63e9a942 |
|
10-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Split inputs and outputs. Now get the following from Konrad's example: val to_state_net = |- (\(load,inp,done,out). ?v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34. (inp = v15 <> v14 <> v13 <> v12 <> v11 <> v10 <> v9 <> v8 <> v7 <> v6 <> v5 <> v4 <> v3 <> v2 <> v1 <> v0) /\ (out = v31 <> v30 <> v29 <> v28 <> v27 <> v26 <> v25 <> v24 <> v23 <> v22 <> v21 <> v20 <> v19 <> v18 <> v17 <> v16) /\ DEL (load,v34) /\ NOT (v34,v33) /\ AND (v33,load,v32) /\ NOT (v32,done) /\ DEL (v15,v31) /\ DEL (v11,v30) /\ DEL (v7,v29) /\ DEL (v3,v28) /\ DEL (v14,v27) /\ DEL (v10,v26) /\ DEL (v6,v25) /\ DEL (v2,v24) /\ DEL (v13,v23) /\ DEL (v9,v22) /\ DEL (v5,v21) /\ DEL (v1,v20) /\ DEL (v12,v19) /\ DEL (v8,v18) /\ DEL (v4,v17) /\ DEL (v0,v16)) ===> DEV to_state : thm Also made MK_CIRCUIT split inputs and outputs. Seems to work. Probably needs tuning.
|
#
9d8af654 |
|
09-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Currently failing attempt to split up input and output busses. See: BUS_SPLIT and ABS_IN_OUT_SPLIT_CONV. Will slog on in the morning, but totally burned out now. Need to get unwinding working.
|
#
e4408f6f |
|
09-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Another tweak and removed some annoying warning messages. I hope the Utah examples are compiling better now. I'm still tuning though ...
|
#
251d102d |
|
09-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Another tweak (use COMB_ID more aggressively).
|
#
e8ab00cb |
|
09-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Experimental tweak to compiler to better handle Konrad's examples like: to_state (b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15) = (b0,b4,b8,b12,b1,b5,b9,b13,b2,b6,b10,b14,b3,b7,b11,b15) Not fully tested (but have to dash to Wadler's talk).
|
#
cefd64ef |
|
08-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Existentially quantify local wires in circuits using (*****************************************************************************) (* |- P ==> Q *) (* ---------------- (x not free in Q) *) (* |- (?x. P) ==> Q *) (*****************************************************************************) fun ANTE_EXISTS_INTRO v th = (let val (t1,t2) = dest_imp(concl th) val exists_tm = mk_exists(v,t1) val th1 = ASSUME exists_tm val th2 = UNDISCH th val th3 = CHOOSE (v,th1) th2 in DISCH exists_tm th3 end) handle HOL_ERR _ => th; For some reason rewriting with LEFT_FORALL_IMP_THM didn't work.
|
#
9e9c55b8 |
|
07-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Made COMB_SYNTH_CONV compile conditionals using MUX. A few other tweaks and renamings.
|
#
a103edaa |
|
07-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Removing tex (renamed to doc). Tweak to compiler.
|
#
f4647602 |
|
06-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Tweaks to compiler. Also added ML function "add_combinational" to declare functions as combinational for synthesis (see README for details).
|
#
fb79d3c8 |
|
06-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Added MAKE_CIRCUIT that generates circuits build out of clocked dtype registers. Details in the the updated README.
|
#
cc005825 |
|
01-Feb-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Minor tweaks to MAKE_NETLIST and COMB_SYNTH_CONV. Also a few theorems for later use in temporal refinement.
|
#
d7715c8d |
|
31-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Add "0" to combinational_constants. Further improves circuit for FACT.
|
#
8e06a101 |
|
30-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Implemented DEL in terms of simpler primitives (DEL_def replaced by DEL_THM).
|
#
6eab9e91 |
|
30-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
I may reimplement COMB_SYNTH_CONV to be less clunky (it currently uses unwindLib and tactics to validate synthesis on-the-fly). Until I get around to this, I've added some diagnostic printing if a proof failure happens.
|
#
c3897653 |
|
29-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Added a crude tool COMB_SYNTH_CONV to synthesise functions representing combinational circuits to netlists. Probably not robust, but works on FactScript.sml. Added REDEPTH_CONV COMB_SYNTH_CONV to MAKE_NETLIST.
|
#
384a988a |
|
27-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Tidy up. Upated README. Added more optimisations (see description of PRECEDE and FOLLOW in README).
|
#
2f25456d |
|
27-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Improvements to synthesis (both to speed and generated netlists). Aiming to get to a form that can be pretty printed to Verilog.
|
#
5e71c8a1 |
|
26-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Minor cleanup and improvement of netlist synthesis.
|
#
43460aef |
|
25-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Improved synthesis of comninational circuits: - val (RightShift,_,RightShift_dev) = hwDefine `RightShift (b1,b2,b3,b4,b5,b6,b7,b8) = (F,b1,b2,b3,b4,b5,b6,b7)`; <<HOL message: inventing new type variable names: 'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h>> Definition has been stored under "RightShift_def". > val RightShift = |- !b1 b2 b3 b4 b5 b6 b7 b8. RightShift (b1,b2,b3,b4,b5,b6,b7,b8) = (F,b1,b2,b3,b4,b5,b6,b7) : thm val RightShift_dev = |- DEV (Par (\(b1,b2,b3,b4,b5,b6,b7,b8). F) (Par (\(b1,b2,b3,b4,b5,b6,b7,b8). b1) (Par (\(b1,b2,b3,b4,b5,b6,b7,b8). b2) (Par (\(b1,b2,b3,b4,b5,b6,b7,b8). b3) (Par (\(b1,b2,b3,b4,b5,b6,b7,b8). b4) (Par (\(b1,b2,b3,b4,b5,b6,b7,b8). b5) (Par (\(b1,b2,b3,b4,b5,b6,b7,b8). b6) (\(b1,b2,b3,b4,b5,b6,b7,b8). b7)))))))) ===> DEV RightShift : thm - val RightShift_cir = MAKE_NETLIST (REFINE (DEPTHR ATM_REFINE) RightShift_dev); > val RightShift_cir = |- (\(load,inp,done,out). ?v0 v1 v2 v3. DEL (load,v3) /\ NOT (v3,v2) /\ AND (v2,load,v1) /\ NOT (v1,done) /\ COMB ((\x. F) <> (FST <> ((\x. FST (SND x)) <> ((\x. FST (SND (SND x))) <> ((\x. FST (SND (SND (SND x)))) <> ((\x. FST (SND (SND (SND (SND x))))) <> ((\x. FST (SND (SND (SND (SND (SND x)))))) <> (\x. FST (SND (SND (SND (SND (SND (SND x)))))))))))))) (inp,v0) /\ DEL (v0,out)) ===> DEV RightShift : thm
|
#
7fcb1c6c |
|
25-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Renamed "Compile" to "CompileProg" and defined Compile to have a more useful meaning. Renamed ConvertCompile to CompileConvert (as it now does Compile(Convert ...)). Updated README.
|
#
de634257 |
|
24-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Removing some junk from a failed experiment (FactTheory now builds much more quickly).
|
#
65627f2d |
|
24-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Very preliminary attempt to improve netlist synthesis by merging combinational logic preceding a DEV into the interface to the DEV. Goal is to cut down the number of handshakes, especially those packaging up 'selector' logic like ``\(m,n).n`` etc. Needs further thought and examples.
|
#
708bf31d |
|
20-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Minor tweaks; improved and updated README.
|
#
9ad09cd6 |
|
20-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Tweaks to improve netlists created with MAKE_NETLIST (see README). May add more such changes tomorrow.
|
#
5b205277 |
|
20-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Added MAKE_NETLIST to generate netlist representations in HOL. See README and revised FactScript.sml. Used some old code to drag existential quantifiers to the head of a conjunction in which I spotted the rather unacceptable: mk_oracle_thm(Tag.read "EXISTS_OUT_CONV")([],mk_eq(t,t3)) Will need to make this respectable sometime soon. May be a performance challenge though. Konrad: is there something better to use off-the-shelf (EXISTS_OUT_CONV is hol88 era code)
|
#
80e73386 |
|
19-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Revision of yesterday's version to make refinements more analogous to conversions. I've also changed some names around (Sorry). See README for latest stuff. Main changes are: 1. Refine renamed to REFINE and now doesn't "depth" scan the circuit. The scanning is done explicitly by an operator DEPTHR (which is analogous to DEPTH_CONV). 2. Have added refinement combining operators THENR, ORELSER. 3. Lib renamed to LIB_REFINE. 4. ATMfn renamed to ATM_REFINE. An example (see FactScript.sml) is: REFINE (DEPTHR(LIB_REFINE[FactIter_dev]) THENR DEPTHR(LIB_REFINE[SUBS [MultThm] Mult_dev]) THENR DEPTHR(LIB_REFINE[MultIter_dev]) THENR DEPTHR ATM_REFINE) Fact_dev; I hope this is converging! I should take a rest and do some more PSL proofs now.
|
#
3344cf34 |
|
18-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Changed the "design flow" model to be more flexible. Hardware can now be refined, so top-down development better supported. See README and revised FactScript.sml example. Libraries are only used for refinement, not in generating hardware (so library argument of hwDefine has gone). This is experimental. Comments?
|
#
a6a5ef8a |
|
17-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Installing KXS's hwDefine. See README.
|
#
2474032c |
|
13-Jan-2005 |
Mike Gordon <mjcg@cl.cam.ac.uk> |
Adding Juliano Iyoda's theory of handshaking devices and various supporting HOL tools. See the README file. Putting the stuff here so that Cambridge and Utah can collaborate on further developments ---------------------------------------------------------------------- composeScript.sml devScript.sml compileScript.sml CVS: compile.sml FactScript.sml CVS: ----------------------------------------------------------------------
|