Revision 333e3a25
Added by Pierre-Loïc Garoche over 5 years ago
src/clocks.ml | ||
---|---|---|
33 | 33 |
{mutable carrier_desc: carrier_desc; |
34 | 34 |
mutable carrier_scoped: bool; |
35 | 35 |
carrier_id: int} |
36 |
|
|
36 |
|
|
37 | 37 |
type clock_expr = |
38 | 38 |
{mutable cdesc: clock_desc; |
39 | 39 |
mutable cscoped: bool; |
... | ... | |
422 | 422 |
| Carry_name -> cr.carrier_desc <- Carry_const const |
423 | 423 |
| _ -> assert false |
424 | 424 |
|
425 |
|
|
426 |
(* Used in rename functions in Corelang. We have to propagate the renaming to |
|
427 |
ids of variables clocking the signals *) |
|
428 |
|
|
429 |
(* Carrier are not renamed. They corresponds to enumerated type constants *) |
|
430 |
(* |
|
431 |
let rec rename_carrier f c = |
|
432 |
{ c with carrier_desc = rename_carrier_desc fvar c.carrier_desc } |
|
433 |
and rename_carrier_desc f |
|
434 |
let re = rename_carrier f |
|
435 |
match cd with |
|
436 |
| Carry_const id -> Carry_const (f id) |
|
437 |
| Carry_link ce -> Carry_link (re ce) |
|
438 |
| _ -> cd |
|
439 |
*) |
|
440 |
|
|
441 |
|
|
442 |
let rec rename_clock_expr fvar c = |
|
443 |
{ c with cdesc = rename_clock_desc fvar c.cdesc } |
|
444 |
and rename_clock_desc fvar cd = |
|
445 |
let re = rename_clock_expr fvar in |
|
446 |
match cd with |
|
447 |
| Carrow (c1, c2) -> Carrow (re c1, re c2) |
|
448 |
| Ctuple cl -> Ctuple (List.map re cl) |
|
449 |
| Con (c1, car, id) -> Con (re c1, car, fvar id) |
|
450 |
| Cvar |
|
451 |
| Cunivar -> cd |
|
452 |
| Clink c -> Clink (re c) |
|
453 |
| Ccarrying (car, c) -> Ccarrying (car, re c) |
|
454 |
|
|
425 | 455 |
(* Local Variables: *) |
426 | 456 |
(* compile-command:"make -C .." *) |
427 | 457 |
(* End: *) |
Also available in: Unified diff
[general] Refactor get_node_eqs to produce (eqs, auts) with automatons