aboutsummaryrefslogtreecommitdiffstats
path: root/src/translation/HTLgen.v
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2020-06-12 13:18:40 +0100
committerYann Herklotz <git@yannherklotz.com>2020-06-12 13:18:40 +0100
commit0f9ab38389000edfa2376fabace69d2366d32647 (patch)
tree54701827fe527c87c1bb64365e3f848416b54a6a /src/translation/HTLgen.v
parentc54b32a91427e5342ce5ffa94b2398a2fcb8c144 (diff)
downloadvericert-0f9ab38389000edfa2376fabace69d2366d32647.tar.gz
vericert-0f9ab38389000edfa2376fabace69d2366d32647.zip
Fix declaring function arguments correctly
Diffstat (limited to 'src/translation/HTLgen.v')
-rw-r--r--src/translation/HTLgen.v13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/translation/HTLgen.v b/src/translation/HTLgen.v
index 15100bf..bbce47c 100644
--- a/src/translation/HTLgen.v
+++ b/src/translation/HTLgen.v
@@ -125,28 +125,28 @@ Proof.
Qed.
Lemma declare_reg_state_incr :
- forall s r sz,
+ forall i s r sz,
st_incr s
(mkstate
s.(st_st)
s.(st_freshreg)
s.(st_freshstate)
- (AssocMap.set r (None, Scalar sz) s.(st_scldecls))
+ (AssocMap.set r (i, Scalar sz) s.(st_scldecls))
s.(st_arrdecls)
s.(st_datapath)
s.(st_controllogic)).
Proof. auto with htlh. Qed.
-Definition declare_reg (r : reg) (sz : nat) : mon unit :=
+Definition declare_reg (i : option io) (r : reg) (sz : nat) : mon unit :=
fun s => OK tt (mkstate
s.(st_st)
s.(st_freshreg)
s.(st_freshstate)
- (AssocMap.set r (None, Scalar sz) s.(st_scldecls))
+ (AssocMap.set r (i, Scalar sz) s.(st_scldecls))
s.(st_arrdecls)
s.(st_datapath)
s.(st_controllogic))
- (declare_reg_state_incr s r sz).
+ (declare_reg_state_incr i s r sz).
Definition add_instr (n : node) (n' : node) (st : stmnt) : mon unit :=
fun s =>
@@ -359,7 +359,7 @@ Definition transf_instr (fin rtrn stack: reg) (ni: node * instruction) : mon uni
| Inop n' => add_instr n n' Vskip
| Iop op args dst n' =>
do instr <- translate_instr op args;
- do _ <- declare_reg dst 32;
+ do _ <- declare_reg None dst 32;
add_instr n n' (nonblock dst instr)
| Iload mem addr args dst n' =>
do src <- translate_arr_access mem addr args stack;
@@ -437,6 +437,7 @@ Definition transf_module (f: function) : mon module :=
do rtrn <- create_reg (Some Voutput) 32;
do stack <- create_arr None 32 (Z.to_nat (f.(fn_stacksize) / 4));
do _ <- collectlist (transf_instr fin rtrn stack) (Maps.PTree.elements f.(RTL.fn_code));
+ do _ <- collectlist (fun r => declare_reg (Some Vinput) r 32) f.(RTL.fn_params);
do start <- create_reg (Some Vinput) 1;
do rst <- create_reg (Some Vinput) 1;
do clk <- create_reg (Some Vinput) 1;