15
15
from artiq .transforms .lower_time import lower_time
16
16
from artiq .transforms .unparse import unparse
17
17
18
+ from artiq .coredevice .runtime import Environment
19
+
18
20
from artiq .py2llvm import get_runtime_binary
19
21
20
22
@@ -52,12 +54,10 @@ class DBKeys:
52
54
external_clock = Argument (False )
53
55
54
56
def build (self ):
55
- self .runtime_env = self . comm . get_runtime_env ()
57
+ self .first_run = True
56
58
self .core = self
57
59
self .comm .core = self
58
-
59
- self .comm .switch_clock (self .external_clock )
60
- self .initial_time = int64 (self .runtime_env .warmup_time / self .ref_period )
60
+ self .runtime_env = Environment ()
61
61
62
62
def transform_stack (self , func_def , rpc_map , exception_map ,
63
63
debug_unparse = _no_debug_unparse ):
@@ -79,7 +79,7 @@ def transform_stack(self, func_def, rpc_map, exception_map,
79
79
interleave (func_def )
80
80
debug_unparse ("interleave" , func_def )
81
81
82
- lower_time (func_def , self . initial_time )
82
+ lower_time (func_def )
83
83
debug_unparse ("lower_time" , func_def )
84
84
85
85
remove_inter_assigns (func_def )
@@ -113,17 +113,22 @@ def compile(self, k_function, k_args, k_kwargs, with_attr_writeback=True):
113
113
return binary , rpc_map , exception_map
114
114
115
115
def run (self , k_function , k_args , k_kwargs ):
116
+ if self .first_run :
117
+ self .comm .check_ident ()
118
+ self .comm .switch_clock (self .external_clock )
119
+
116
120
binary , rpc_map , exception_map = self .compile (
117
121
k_function , k_args , k_kwargs )
118
122
self .comm .load (binary )
119
- self .comm .run (k_function .__name__ )
123
+ self .comm .run (k_function .__name__ , self . first_run )
120
124
self .comm .serve (rpc_map , exception_map )
125
+ self .first_run = False
121
126
122
127
@kernel
123
128
def get_rtio_time (self ):
124
129
return cycles_to_time (syscall ("rtio_get_counter" ))
125
130
126
131
@kernel
127
132
def recover_underflow (self ):
128
- t = syscall ("rtio_get_counter" ) + self . initial_time
133
+ t = syscall ("rtio_get_counter" ) + 125000
129
134
at (cycles_to_time (t ))
0 commit comments