2016-03-26 23 views
0

Yardımlarınız için her zaman minnettarım. Ben bir elektrik mühendisiyim. Bir devrenin zamanlama analizi için bir araç kullanıyorum. İki zamanlama raporundaki sonuçları farklı voltajlarda (0.945V ve 0.78V) enterpolasyon yapmak istiyorum. Voltaj azalırsa, veri varış zamanı artar. 0.945V anda Örneğinİki dosya arasında bir enterpolasyon

, , veri varış zamanı 0.78V anda 0.70 , veri varış zamanı 0,72

Veri varış zamanı doğrusal interpolasyon kullanarak 0,714 ulaştığında voltajını öğrenmek istedi olmasıdır. Bu durumda

, I (0.78-0.945)/(0.72-0.70) 0.714+ (0.945-0.70 (0.78-0.945)/(0.72-0.70))

Gerilim bilgileri gibi hesaplayabileceğini 0.78, 0.945 ve hedef veri varış zamanı 0.714 sabittir. Ancak, 0,945V ve 0,78V veri varış zamanları değiştirildi.

Bir gereksinim daha var. Veri varış zamanı 0,914 V’de 0,714’ün üzerindeyse, çıkış 0,714’dür.

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: Output.rpt_in ihtiyacı

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

olmak:

her dosyada 1000'den yolları vardır
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) 
. 
. 
. 

. Bence awk bunu yapabilir, ama nasıl yapacağımı bilmiyorum. Herhangi bir yardım takdir edilir. Şimdiden teşekkürler.

Jaeyoung

+1

Evet, awk çok esnektir, işe yarayabilir. Sizi düzenleyebilir ve verilerinizin daha küçük bir örneğini ekleyebilir miyim? Gönderildiği gibi, Q'nuz daha çok bir danışmanlık ürününe benziyor. İyi şanslar. – shellter

+2

Bir ev inşa ederken komşunuzun çekiçle ödünç almasını istemek mantıklıdır. Planları teslim etmek ve bir gazete okuyarak arkasına oturup evinizi inşa etmelerini istemek mantıksız. Sorununuzu çözmek için size yardımcı olacak makul bir soru oluşturmak için gönderinizi düzenleyin. Teşekkürler komşular. –

cevap

2

Dikkatli olun, zaman ve voltaj karıştırma var! 0,714 bir süredir, 0,8295 ise bir voltajdır!

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 

Önce bir değişken -v olarak zaman saklayabilir.
FILENAME numaralı telefondan değerini [0-9]+ numaralı numaralı voltajı kullanarak ayıklayabilirsiniz.
Sonra ilk dosyanın FNR==NR için 4 sütun değişkeni $4 olarak data arrival time olsun ve ikincisi FNR!=NR için doğrudan aradaki zamanı $4 değiştirmek nerede ve baskı her satırı $0.

Daha fazla okunabilirlik için, daha fazla zaman için $4 arası enterpolasyon süresini değiştirmek üzere if koşullarını eklemenize izin verdim. Şu anda 2. dosyayı okuduğunuz için her zaman i_time_2 kullanın.

+0

Kod için teşekkürler. Kodunuzu değiştirerek bir kod buldum. awk -v zaman = 0,714 ' FNR == 1 { i_file ++; V [i_dosyası] = gensub (/ 0p ([0-9] +) \. Rpt_in /, "\\ 1", "g", FILENAME)} FNR == NR &&/veri varış zamanı/{i_time_1 ++ ; time_1 [i_time_1] = 4 $} FNR! = NR &&/data arrival time/{i_time_2 ++; time_2 [i_time_2] = 4 dolar; $ 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

Hoşgeldin Jaeyoung. Lütfen daha fazla okuyucu için kodunuzu \ '\' ile biçimlendirerek yanıtınızı düzenleyin. –

İlgili konular