0

以下是内存目录

每个目录都需要进入并修改以下三个文件:

  1. hcell.list
  2. SmicDR1T_cal40_log_ll_sali_p1mx_1tm_121825.drc
  3. SmicSP1R_cal40_LL_sali_p1mtx_11182533.lvs

上面三个文件有内容“ TPSRAM_256X120”,我想用自己的目录路径名替换。

我该怎么做?

SPRF_256X34 SPSRAM_128X30 SPSRAM_192X16 SPSRAM_240X48 SPSRAM_2944X72 SPSRAM_480X48 SPSRAM_512X8 SPSRAM_72X8 SPSRAM_960X60_WEM SROM_8192X8
 command.log SPSRAM_1024X14 SPSRAM_128X64 SPSRAM_2048X17 SPSRAM_240X56 SPSRAM_304X128 SPSRAM_480X64 SPSRAM_5376X17 SPSRAM_8192X12 SPSRAM_960X8 SROM_960X26
文件名.log SPSRAM_1024X16 SPSRAM_152X8 SPSRAM_2048X8 SPSRAM_240X72 SPSRAM_32X64 SPSRAM_480X66 SPSRAM_5376X80 SPSRAM_8192X20 SPSRAM_960X80 TPSRAM_1920X9
 mem_new.list SPSRAM_11520X28 SPSRAM_16384X34 SPSRAM_240X10 SPSRAM_240X8 SPSRAM_384X19 SPSRAM_480X96 SPSRAM_544X20 SPSRAM_8192X34 SPSRAM_960X96 TPSRAM_256X120
SPRF_240X20 SPSRAM_120X72 SPSRAM_16384X38 SPSRAM_240X152 SPSRAM_240X88 SPSRAM_4352X8 SPSRAM_496X44 SPSRAM_544X21 SPSRAM_8192X52 SROM_1024X16
 SPRF_240X32 SPSRAM_120X80 SPSRAM_16384X40 SPSRAM_240X17 SPSRAM_240X9 SPSRAM_4480X8 SPSRAM_496X82 SPSRAM_5760X32 SPSRAM_8192X72 SROM_1440X14
SPRF_240X82 SPSRAM_120X88 SPSRAM_1920X56 SPSRAM_240X18 SPSRAM_240X96 SPSRAM_480X128 SPSRAM_496X86 SPSRAM_64X22 SPSRAM_8192X8 SROM_1888X26
 SPRF_240X86 SPSRAM_1216X40 SPSRAM_1920X60 SPSRAM_240X22 SPSRAM_256X8 SPSRAM_480X144 SPSRAM_512X10 SPSRAM_64X24 SPSRAM_8192X9 SROM_4096X8
SPRF_240X86_WEM SPSRAM_1280X32 SPSRAM_1920X8 SPSRAM_240X34 SPSRAM_2688X8 SPSRAM_480X16 SPSRAM_512X17 SPSRAM_64X48 SPSRAM_960X24 SROM_512X16
 SPRF_240X90 SPSRAM_128X16 SPSRAM_1920X9 SPSRAM_240X40 SPSRAM_2880X8 SPSRAM_480X32 SPSRAM_512X27 SPSRAM_720X12 SPSRAM_960X60 SROM_736X14
4

2 回答 2

0

获取所有目录:

set all_dir [glob -type d -nocomplain -dir $dirname *]

在 foreach 循环中打开您的文件:hcell.list、SmicDR1T_cal40_log_ll_sali_p1mx_1tm_121825.drc、SmicSP1R_cal40_LL_sali_p1mtx_11182533.lvs

set r [open [file join $dir hcell.list] r]

现在使用 regsub 替换您的内容:

regsub "TPSRAM_256X120" $line [pwd]
于 2013-10-25T09:13:01.373 回答
0

要将文件中的值替换为另一个值,同时将该文件写回同一个文件,您需要如下代码:

proc replaceValue {filename changeThis toThis {backupExtension ""}} {
    set mapping [list $changeThis $toThis]

    # Read and transform the file
    set f [open $filename]
    set content [string map $mapping [read $f]]
    close $f

    # Make backup if requested
    if {$backupExtension ne ""} {
        file rename $filename $filename$backupExtension
    }

    # Write the new contents back
    set f [open $filename "w"]
    puts -nonewline $f $content
    close $f
}

这仅适用于高达几百兆字节的文件(假设您有足够的内存),但它很容易

然后,要将更改应用于目录中的所有内容,请使用glob列出目录内容,foreach查看列表,以及应用转换的过程。

# Glob patterns in quotes just because of Markdown formatting bug
foreach filename [glob -directory /the/base/directory "*/*.list" "*/*.drc" "*/*.lvs"] {
    # Make backups into .bak
    replaceValue $filename TPSRAM_256X120 $filename ".bak"
}
于 2013-10-26T09:08:19.017 回答