samples_per_miss = 1000 (procedure (abWaveToList wave @key transpose) (let (xList yList xyList len (xVec (drGetWaveformXVec wave)) (yVec (drGetWaveformYVec wave)) ) (setq len (drVectorLength xVec)) ;----------------------------------------------------------------- ; Return value of this if is the list ;----------------------------------------------------------------- (if transpose (progn (for i 0 (sub1 len) (setq xList (tconc xList (drGetElem xVec i))) (setq yList (tconc yList (drGetElem yVec i))) ) (list (car xList) (car yList)) ) ; else (progn (for i 0 (sub1 len) (setq xyList (tconc xyList (list (drGetElem xVec i) (drGetElem yVec i)))) ) (car xyList) ) ) ; if ) ; let ) ; procedure data_path = sprintf(nil "%s/data" cur_path) if( (isDir data_path) (is_dir_created = t) (is_dir_created = createDir(data_path)) ) if( (is_dir_created == nil) printf("Could not create dir: %s\n" data_path) ) for(i 1 8 res_file = outfile(sprintf(nil "%s/data/timging_file.csv" cur_path) "w") trace_file = outfile(sprintf(nil "%s/traces_out.dat" data_path) "w") for(sample_idx 0 samples_per_miss cur_res_path = sprintf(nil "%s/simulations/out/spec_sim.raw" cur_path) is_res_open = openResults(cur_res_path) if( (is_res_open == nil) printf("Could not open result: %s\n" cur_res_path )) selectResult('"tran-tran") latency = cross( v( "node_of_interest" ) ((atof cur_volt)/2) 1 'falling ) - start latency = latency / 1e-9 trace = getData("node_of_interest") trace = lshift(trace start) trace = clip(trace 0 2n) trace_as_list = abWaveToList(trace) fprintf(trace_file "Time[ns] volts\n") foreach( point trace_as_list fprintf(trace_file "%.16f %.16f\n" (car(point) / 1e-9) nth(1 point)) ) fprintf(trace_file "\n") fprintf(res_file "%2.16f\n" latency) closeResults(cur_res_path) ) close(res_file) )