An interpolation between two files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting An interpolation between two files
# 1  
Old 03-25-2016
An interpolation between two files

Dear all,

I always appreciate your help. I am an electrical engineer. I am using a tool for timing analysis of a circuit. I would like to interpolate results from two timing reports at different voltages (0.945V and 0.78V). If voltage is decreased, data arrival time is increased.

For example,
At 0.945V, data arrival time is 0.70
At 0.78V, data arrival time is 0.72

I wanted to know voltage when the data arrival time reaches 0.714 using a linear interpolation.

In this case, I could calculate
(0.78-0.945)/(0.72-0.70)*0.714+(0.945-0.70*(0.78-0.945)/(0.72-0.70))

Voltage information such 0.78, 0.945 and the target data arrival time 0.714 are fixed. However, data arrival times at 0.945V and 0.78V are changed.

There is one more requirement. If data arrival time at 0.945V is above 0.714, then output is 0.714.


0p945.rpt_in:
Code:
  Startpoint: dtu_inst_d[23]
               (input port)
  Endpoint: ifu_exu_aluop_d[0]
               (output port)
  Path Group: (none)
  Path Type: max

  Point                                           Incr       Path
  ----------------------------------------------------------------------
  input external delay                            0.00       0.00 f
  dtu_inst_d[23] (in)                             0.00       0.00 f
  U533/Y (INVX16_LVT)                             0.52       0.52 r
  U739/Y (AND4X1_LVT)                             0.07       0.58 r
  U572/Y (NAND4X0_LVT)                            0.05       0.64 f
  U607/Y (INVX0_LVT)                              0.04       0.68 r
  U609/Y (AO221X1_LVT)                            0.02       0.70 r
  ifu_exu_aluop_d[0] (out)                        0.00       0.70 r
  data arrival time                                          0.70
  ----------------------------------------------------------------------
  (Path is unconstrained)


  Startpoint: dtu_inst_d[21]
               (input port)
  Endpoint: imsk_ff_q_reg_0_
               (rising edge-triggered flip-flop clocked by rclk)
  Path Group: (none)
  Path Type: max

  Point                                           Incr       Path
  ----------------------------------------------------------------------
  input external delay                            0.00       0.00 f
  dtu_inst_d[21] (in)                             0.00       0.00 f
  U613/Y (INVX8_LVT)                              0.44       0.44 r
  U702/Y (XOR2X1_LVT)                             0.08       0.52 r
  U984/Y (NAND4X0_LVT)                            0.04       0.56 f
  U604/Y (OR3X1_LVT)                              0.05       0.61 f
  U605/Y (AO22X1_LVT)                             0.04       0.65 f
  U986/Y (NOR4X1_LVT)                             0.06       0.71 r
  imsk_ff_q_reg_0_/D (DFFX1_LVT)                  0.02       0.73 r
  data arrival time                                          0.73
  ----------------------------------------------------------------------
  (Path is unconstrained)
.
.
.


0p78.rpt_in:
Code:
  Startpoint: dtu_inst_d[23]
               (input port)
  Endpoint: ifu_exu_aluop_d[0]
               (output port)
  Path Group: (none)
  Path Type: max

  Point                                           Incr       Path
  ----------------------------------------------------------------------
  input external delay                            0.00       0.00 f
  dtu_inst_d[23] (in)                             0.00       0.00 f
  U533/Y (INVX16_LVT)                             0.52       0.52 r
  U739/Y (AND4X1_LVT)                             0.07       0.58 r
  U572/Y (NAND4X0_LVT)                            0.05       0.64 f
  U607/Y (INVX0_LVT)                              0.04       0.68 r
  U609/Y (AO221X1_LVT)                            0.05       0.72 r
  ifu_exu_aluop_d[0] (out)                        0.00       0.72 r
  data arrival time                                          0.72
  ----------------------------------------------------------------------
  (Path is unconstrained)


  Startpoint: dtu_inst_d[21]
               (input port)
  Endpoint: imsk_ff_q_reg_0_
               (rising edge-triggered flip-flop clocked by rclk)
  Path Group: (none)
  Path Type: max

  Point                                           Incr       Path
  ----------------------------------------------------------------------
  input external delay                            0.00       0.00 f
  dtu_inst_d[21] (in)                             0.00       0.00 f
  U613/Y (INVX8_LVT)                              0.44       0.44 r
  U702/Y (XOR2X1_LVT)                             0.08       0.52 r
  U984/Y (NAND4X0_LVT)                            0.04       0.56 f
  U604/Y (OR3X1_LVT)                              0.05       0.61 f
  U605/Y (AO22X1_LVT)                             0.04       0.65 f
  U986/Y (NOR4X1_LVT)                             0.06       0.71 r
  imsk_ff_q_reg_0_/D (DFFX1_LVT)                  0.05       0.76 r
  data arrival time                                          0.76
  ----------------------------------------------------------------------
  (Path is unconstrained)
.
.
.

Output.rpt_in needs to be:
Code:
  Startpoint: dtu_inst_d[23]
               (input port)
  Endpoint: ifu_exu_aluop_d[0]
               (output port)
  Path Group: (none)
  Path Type: max

  Point                                           Incr       Path
  ----------------------------------------------------------------------
  input external delay                            0.00       0.00 f
  dtu_inst_d[23] (in)                             0.00       0.00 f
  U533/Y (INVX16_LVT)                             0.52       0.52 r
  U739/Y (AND4X1_LVT)                             0.07       0.58 r
  U572/Y (NAND4X0_LVT)                            0.05       0.64 f
  U607/Y (INVX0_LVT)                              0.04       0.68 r
  U609/Y (AO221X1_LVT)                            0.05       0.72 r
  ifu_exu_aluop_d[0] (out)                        0.00       0.72 r
  data arrival time                                          0.8295
  ----------------------------------------------------------------------
  (Path is unconstrained)


  Startpoint: dtu_inst_d[21]
               (input port)
  Endpoint: imsk_ff_q_reg_0_
               (rising edge-triggered flip-flop clocked by rclk)
  Path Group: (none)
  Path Type: max

  Point                                           Incr       Path
  ----------------------------------------------------------------------
  input external delay                            0.00       0.00 f
  dtu_inst_d[21] (in)                             0.00       0.00 f
  U613/Y (INVX8_LVT)                              0.44       0.44 r
  U702/Y (XOR2X1_LVT)                             0.08       0.52 r
  U984/Y (NAND4X0_LVT)                            0.04       0.56 f
  U604/Y (OR3X1_LVT)                              0.05       0.61 f
  U605/Y (AO22X1_LVT)                             0.04       0.65 f
  U986/Y (NOR4X1_LVT)                             0.06       0.71 r
  imsk_ff_q_reg_0_/D (DFFX1_LVT)                  0.05       0.76 r
  data arrival time                                          0.714
  ----------------------------------------------------------------------
  (Path is unconstrained)
.
.
.

There are more than 1000 paths in each file.
I think awk can do this, but I don't know how to do. Any help is appreciated. Thanks in advance.

Jaeyoung
# 2  
Old 03-26-2016
For each file, there's two data arrival times. Which one do you want to be recalculated? And, how do you get at 0.8295 for the first entry of the output?
How and where is the voltage mentioned? Just in the file name?
# 3  
Old 03-26-2016
Both data arrival times need to be calculated. The first calculated output, 0.8295 is an interpolation result from (0.78-0.945)/(0.72-0.70)*0.714+(0.945-0.70*(0.78-0.945)/(0.72-0.70)).

The other calculated output, 0.714 is obtained without the calculation since the data arrival time at 0.945V is above 0.714 so it would be 0.714.

Let me clarify one thing again. I would like to find voltage when the data arrival time reaches 0.714 using a linear interpolation and replace the calculated voltage with the data arrival time

Thank you.
# 4  
Old 03-28-2016
Thank you for all replies.

I have found a code by myself by modifying the existing code.

awk -v time=0.714 '
FNR==1 {
i_file++;
V[i_file] = gensub(/0p([0-9]+)\.rpt_in/, "\\1", "g", FILENAME)}

FNR==NR && /data arrival time/ {i_time_1++; time_1[i_time_1] = $4}

FNR!=NR && /data arrival time/ {i_time_2++; time_2[i_time_2] = $4;
$4 = -0.165 / (time_2[i_time_2]-time_1[i_time_2]) * 0.714 + (0.945 - time_1[i_time_2]* -0.165/ (time_2[i_time_2] - time_1[i_time_2])) }


FNR!=NR {print $0}' 0p945.rpt_noio2 0p78.rpt_noio2
# 5  
Old 03-29-2016
You didn't answer the question for the source of the voltages so a generic proposal was impossible.
Your solution may work for exactly 0.78 V and 0.945 V but no other input, so it may be not too valueable.
Why did you define the "time" variable? Why the "V" array?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Linear Interpolation of CSV Columnar Data

I am trying to perform linear interpolation on three columns in a CSV file. When I run this code, I do not get any changes in the output (see Expected Output). What am I doing wrong here? Awk Code ' function interpolate(lat1, lon1, t1, lat2, lon2, t2, i) { for (i = 1; i... (2 Replies)
Discussion started by: hrrruser
2 Replies

2. Shell Programming and Scripting

Interpolation of two values in two different files

Dear All, I have two files which contain numerical data and strings. I want to create a new file that only revise numerical data from two files using interpolation. I guess AWK works, but I am new on AWK. FileA.txt . . index_2("0.1, 1, 2, 4, 8, 16, 32"); values("0.0330208, 0.0345557,... (17 Replies)
Discussion started by: jypark22
17 Replies

3. Shell Programming and Scripting

XY interpolation by time in awk

Hi I am a newbie in awk scripting. I'm working with a file with xy coordinates that were acquired with a time stamp. All the time stamps were recorded but not the XY coordinates. Let see an example: FFID X Y UNIX TIME TIMEGAP... (8 Replies)
Discussion started by: Joćo Noiva
8 Replies

4. UNIX for Dummies Questions & Answers

Interpolation if there is no exact match for value

Dear all, could you help me with following question. There are two datasets (below). I need to find match between BP values from data1 and data2, and add corresponding CM value from data2 into data1. if there is not exact match, the corresponding CM value should be calculated using interpolation.... (20 Replies)
Discussion started by: kush
20 Replies

5. Shell Programming and Scripting

Expand & Interpolation

Dear All, I have input like this, infile: 10 464310.16 20 464309.44 30 464309.02 40 464316.93 ... ... Desired output per step: out_step01: 10 464310.16 11 12 13 14 (9 Replies)
Discussion started by: attila
9 Replies

6. Shell Programming and Scripting

Script to solve second order (polynomial) interpolation

Currently I have awk command to do linear interpolation awk ' { P=$2 I=$1 } END { j=0; s=I; t=I for(i=m;i<=n;i++) { if(I && i>t) { j++; s=I; t=I } print i, P+(i-s)*(P-P)/(t-s) } } ' m=1 n=8 infile FILE CONTENT... (8 Replies)
Discussion started by: Tzeronone
8 Replies

7. Shell Programming and Scripting

Hi ! whether it is possible to do interpolation in scripting...

Hi ! Experts... I just wanted to know whether it is possible in scripting...to do interpolation.... if so....have a look on my data file I need temperature and salinity value with a bin size of 0.5 m output looks somewhat like this dep temp sal 0.5 25 0.077 1 25 ... (12 Replies)
Discussion started by: nex_asp
12 Replies

8. Shell Programming and Scripting

Interpolation using awk

Hi all, Consider I have a text file containing: 1003 60 1005 80 1100 110 Based on that file I need to create another file which is containing value from 1001 till 1100 which is a linear interpolation between two point (for 1004; 1006;1007 until 1109) and extrapolation based on 2... (7 Replies)
Discussion started by: ardy_yana
7 Replies

9. Web Development

JavaScript variable interpolation

Hi everybody, Firstly, this would be the first time I'm using JavaScript. My background is mainly Perl. Nevertheless, here's my problem. So I've created a function function linkout(url){ setTimeout("window.open(url)",5000) //in milliseconds } However because the variable "url" is... (0 Replies)
Discussion started by: z1dane
0 Replies

10. UNIX for Dummies Questions & Answers

variable interpolation

I've become obsessed with trying to get this to work. As of yet, I am unable to figure it out. Unfortunately, I don't have Linux or UNIX available when I get home. Anyone have tips for me on how I can pass param1 to ID via use of COUNTER and loop? thx. LIMIT=6 param1="999999999" export... (0 Replies)
Discussion started by: egkumpe
0 Replies
Login or Register to Ask a Question