TCL脚本从列表中删除重复的元素,但不删除每个元素的第一个元素
我有一个输入文件如下所述TCL脚本从列表中删除重复的元素,但不删除每个元素的第一个元素,tcl,Tcl,我有一个输入文件如下所述 echo $test_list assign mbist_in.BIST_SETUP = BIST_SETUP; assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en; assign mbist_in.bistEn = bistEn; assign mbist_in.ltest_to_en = ltest_to_en
echo $test_list
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
set new4 {}
foreach item $test_list {
if {[lsearch $new $item ] < 0} {
lappend new4 $item
}
}
echo $new4
assign mbist_in.BIST_SETUP = {BIST_SETUP;} mbist_in.ltest_to_mcp_bounding_en {ltest_to_mcp_bounding_en;} mbist_in.bistEn {bistEn;} mbist_in.ltest_to_en {ltest_to_en;} mbist_in.BIST_EVEN_GROUPWRITEENABLE {BIST_EVEN_GROUPWRITEENABLE;} mbist_in.BIST_ODD_GROUPWRITEENABLE {BIST_ODD_GROUPWRITEENABLE;} mbist_in.BIST_SELECT {BIST_SELECT;} mbist_in.BIST_WRITEENABLE {BIST_WRITEENABLE;} mbist_in.BIST_DATA_POLARITY_EN {BIST_DATA_POLARITY_EN;} mbist_in.BIST_COLLAR_EN0 {BIST_COLLAR_EN0;} mbist_in.BIST_ASYNC_RESET {BIST_ASYNC_RESET;} mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR {BIST_TESTDATA_SELECT_TO_COLLAR;} mbist_in.BIST_ON_TO_COLLAR {BIST_ON_TO_COLLAR;} mbist_in.BIST_SHIFT_COLLAR {BIST_SHIFT_COLLAR;} mbist_in.BIST_COLLAR_SETUP {BIST_COLLAR_SETUP;} mbist_in.BIST_CLEAR_DEFAULT {BIST_CLEAR_DEFAULT;} mbist_in.BIST_CLEAR {BIST_CLEAR;} mbist_in.BIST_COLLAR_HOLD {BIST_COLLAR_HOLD;} mbist_in.MBISTPG_RESET_REG_SETUP2 {MBISTPG_RESET_REG_SETUP2;} mbist_in.BIST_BANK_ADD {BIST_BANK_ADD;} mbist_in.BIST_COL_ADD {BIST_COL_ADD;} mbist_in.BIST_ROW_ADD {BIST_ROW_ADD;} mbist_in.BIST_WRITE_DATA {BIST_WRITE_DATA;}
现在这有很多重复的行,我需要删除重复的行
我已经创建了下面的脚本如下所述
echo $test_list
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
assign mbist_in.BIST_SELECT = BIST_SELECT;
assign mbist_in.BIST_WRITEENABLE = BIST_WRITEENABLE;
assign mbist_in.BIST_DATA_POLARITY_EN = BIST_DATA_POLARITY_EN;
assign mbist_in.BIST_COLLAR_EN0 = BIST_COLLAR_EN0;
assign mbist_in.BIST_ASYNC_RESET = BIST_ASYNC_RESET;
assign mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR = BIST_TESTDATA_SELECT_TO_COLLAR;
assign mbist_in.BIST_ON_TO_COLLAR = BIST_ON_TO_COLLAR;
assign mbist_in.BIST_SHIFT_COLLAR = BIST_SHIFT_COLLAR;
assign mbist_in.BIST_COLLAR_SETUP = BIST_COLLAR_SETUP;
assign mbist_in.BIST_CLEAR_DEFAULT = BIST_CLEAR_DEFAULT;
assign mbist_in.BIST_CLEAR = BIST_CLEAR;
assign mbist_in.BIST_COLLAR_HOLD = BIST_COLLAR_HOLD;
assign mbist_in.MBISTPG_RESET_REG_SETUP2 = MBISTPG_RESET_REG_SETUP2;
assign mbist_in.BIST_BANK_ADD = BIST_BANK_ADD;
assign mbist_in.BIST_COL_ADD = BIST_COL_ADD;
assign mbist_in.BIST_ROW_ADD = BIST_ROW_ADD;
assign mbist_in.BIST_WRITE_DATA = BIST_WRITE_DATA;
assign mbist_in.BIST_SETUP = BIST_SETUP;
assign mbist_in.ltest_to_mcp_bounding_en = ltest_to_mcp_bounding_en;
assign mbist_in.bistEn = bistEn;
assign mbist_in.ltest_to_en = ltest_to_en;
assign mbist_in.BIST_EVEN_GROUPWRITEENABLE = BIST_EVEN_GROUPWRITEENABLE;
assign mbist_in.BIST_ODD_GROUPWRITEENABLE = BIST_ODD_GROUPWRITEENABLE;
set new4 {}
foreach item $test_list {
if {[lsearch $new $item ] < 0} {
lappend new4 $item
}
}
echo $new4
assign mbist_in.BIST_SETUP = {BIST_SETUP;} mbist_in.ltest_to_mcp_bounding_en {ltest_to_mcp_bounding_en;} mbist_in.bistEn {bistEn;} mbist_in.ltest_to_en {ltest_to_en;} mbist_in.BIST_EVEN_GROUPWRITEENABLE {BIST_EVEN_GROUPWRITEENABLE;} mbist_in.BIST_ODD_GROUPWRITEENABLE {BIST_ODD_GROUPWRITEENABLE;} mbist_in.BIST_SELECT {BIST_SELECT;} mbist_in.BIST_WRITEENABLE {BIST_WRITEENABLE;} mbist_in.BIST_DATA_POLARITY_EN {BIST_DATA_POLARITY_EN;} mbist_in.BIST_COLLAR_EN0 {BIST_COLLAR_EN0;} mbist_in.BIST_ASYNC_RESET {BIST_ASYNC_RESET;} mbist_in.BIST_TESTDATA_SELECT_TO_COLLAR {BIST_TESTDATA_SELECT_TO_COLLAR;} mbist_in.BIST_ON_TO_COLLAR {BIST_ON_TO_COLLAR;} mbist_in.BIST_SHIFT_COLLAR {BIST_SHIFT_COLLAR;} mbist_in.BIST_COLLAR_SETUP {BIST_COLLAR_SETUP;} mbist_in.BIST_CLEAR_DEFAULT {BIST_CLEAR_DEFAULT;} mbist_in.BIST_CLEAR {BIST_CLEAR;} mbist_in.BIST_COLLAR_HOLD {BIST_COLLAR_HOLD;} mbist_in.MBISTPG_RESET_REG_SETUP2 {MBISTPG_RESET_REG_SETUP2;} mbist_in.BIST_BANK_ADD {BIST_BANK_ADD;} mbist_in.BIST_COL_ADD {BIST_COL_ADD;} mbist_in.BIST_ROW_ADD {BIST_ROW_ADD;} mbist_in.BIST_WRITE_DATA {BIST_WRITE_DATA;}
设置new4{}
foreach项目$test\u列表{
如果{[lsearch$new$item]<0}{
lappend new4$项目
}
}
echo$new4
(BIST)bestt)to to to(bibibit)to(bibit)bet)to(bit)to(bibit)to(bep)cop p p p(bep)bop)的边界,n(ltestt)to(u)bet)bet(u)bet(u)bet)to(BIST)bet)bet)bet)bet)bet)of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of)的边界,bopupupupupupup)的边界,of of of of of of of of of of of of of of of of of of of of of of of of(fefefefefefefen n n n n n n n n n n n n n n n n n n{BIST_SELECT;}这两个数据的极性(数据的极性(极性)数据的极性(极性)数据的极性(极性)数据的极性(极性)数据的极性(极性)数据的极性(极性)数据的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的测试中的两个测试中的两个测试中的两个测试中的两个测试中的两个测试中的测试中的两个测试中的两个测试中的两个测试中的两个测试中的测试中的两个测试中的测试中的测试_领;}mbist_in.BIST_SHIFT_领本文介绍了两个测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试设置测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试.BIST_COL_ADD{BIST_COL_ADD;}mbist_in.BIST_ROW_ADD{BIST_ROW_ADD;}mbist_in.BIST_WRITE_DATA{BIST_WRITE_DATA;}
我没有在每一行中都得到assign语句
我的输出文件应该在每一行中都有完整的列表和assign语句,并且没有重复的行,每个元素以assign开头都有新行
如何解决此问题?如果您向代码提供一个行列表,而不是多行字符串,则代码将正常工作(变量名称中的键入除外)
要将数据转换为行列表,请使用split
命令:
set new4 {}
foreach item [split $test_list \n] {
if {$item ni $new4} {
lappend new4 $item
}
}
puts [join $new4 \n]
注意:
echo
不是Tcl命令。这就是为什么我将其更改为put
。我还切换到使用ni
操作符在列表中查找元素,虽然lsearch
可以工作。但是它可能需要-exact选项,因为-glob是lsearch
使用的默认匹配机制。并且这不是你想要的。在做这类事情时,你既要小心列表是什么,也要注意检查你已经打印的内容的成本(从算法的角度来看,线性搜索不断增长的列表的代价是二次的,这很快就会变得痛苦)
这里有一种解决这两个问题的方法。第一种方法是通过使用换行符拆分输入数据来处理,第二种方法是使用关联映射(数组或字典)来检查项目是否以前从未见过(在当前的Tcl版本中,incr
的技巧是一种简单的方法)
您的列表格式不正确。似乎每行都没有项目,但每个单词都有项目(这里的单词是指用空格分隔的字符)