2016-03-26 5 views
0

私はいつもあなたの助けに感謝します。私は電気工学者です。私は、回路のタイミング解析にツールを使用しています。私は、異なる電圧(0.945Vと0.78V)で2つのタイミングレポートの結果を補間したいと思います。電圧が低下すると、データ到着時間が増加する。例えば2つのファイル間の補間

データ到達時間が0.78Vで0.70 で、0.945Vで は、データの到着時間は、私は、データの到着時間は、線形補間を使用して0.714に達したときに電圧を知りたい0.72

あります。この場合

、Iは (0.78から0.945)/(0.72から0.70)0.714+(0.945から0.70(0.78から0.945)/(0.72から0.70))

電圧情報ように計算することができます0.78,0.945、目標データ到達時間0.714は固定である。ただし、0.945Vと0.78Vのデータ到着時間が変更されます。

もう1つの要件があります。 0.945Vのデータ到着時間が0.714を超えると、出力は0.714になります。

0p945.rpt_in:

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:

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) 
. 
. 
. 

各ファイルに1000回の以上のパスがあります。

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はする必要があります。 私はawkがこれを行うことができると思うが、私はどのように行うのか分からない。どんな助けもありがとうございます。前もって感謝します。

ケイヒ

+1

はい、awkは非常に柔軟性があり、動作する可能性があります。あなたのQを編集し、あなたのデータのもっと小さな例を含めることができますか?投稿されているように、あなたのQはコンサルティング仕様によく似ています。がんばろう。 – shellter

+2

家を建てるときは、隣人にハンマーを借りて頼むのが妥当です。あなたが座って新聞を読んでいる間に、計画を渡してあなたのために家を建てるように頼むのは無理です。投稿を編集して問題を解決するのに役立つ合理的な質問を作成してください。ありがとう、隣人。 –

答えて

2

時間と電圧を混ぜているので注意してください! 0.714は、0.8295が電圧である間の時間です!

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 = TO_BE_MODIFIED} 

FNR!=NR {print $0}' 0p945.rpt_in 0p78.rpt_in 

まず、時間を変数-vとして保存できます。
次に、電圧Vの値[0-9]+gensubを使用してFILENAMEに抽出することができます。
は、その後、あなたは最初のファイルFNR==NRのため、そしてあなたが直接すべての行$0補間時間$4、および印刷を変更秒1 FNR!=NRのための第四列変数$4としてdata arrival timeを取得します。

わかりやすくするために、ifの条件を追加して補間時間を修正するようにしました。$4の時間を増やしてください。あなたが現在2番目のファイルを読んでいるので、常にi_time_2を使用してください。

+0

ありがとうございます。 コードを変更してコードを見つけました。 AWK -v時間= 0.714 ' FNR == 1 { i_file ++。 V [i_file] = gensub(/ 0p([0-9] +)\。rpt_in /、 "\\ 1"、 "g"、ファイル名)} FNR == NR && /データ到着時刻/ {i_time_1 ++ ; time_1 [i_time_1] = $ 4} FNR!= NR && /データ到着時刻/ {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 –

+0

あなたは歓迎です。さらなる読者のためにコードを\ '\'でフォーマットして、あなたの答えを編集してください。 –