procesamiento de texto tcl: reorganice los valores en filas y columnas según el valor definido por el usuario
Soy nuevo en tcl y me gustaría usarlo en el procesamiento de texto de un caso simple. El siguiente formato está en Liberty (archivo .lib) que se utiliza en el diseño de chips. Estaría realmente en deuda por cualquier ayuda en esto.
Aquí hay un fragmento de mi archivo (el procesamiento de texto se realizará solo en los "valores")
timing () {
related_pin : "clk";
timing_type : setup_rising;
rise_constraint (constraint_template_5X5) {
index_1 ("0.01, 0.05, 0.12, 0.2, 0.4");
index_2 ("0.005, 0.025, 0.06, 0.1, 0.3");
index_3 ("0.084, 0.84, 3.36, 8.4, 13.44") ;
values ( \
"1.1, 1.2, 1.3, 1.4, 1.5", \
"2.1, 2.2, 2.3, 2.4, 2.5", \
"3.1, 3.2, 3.3, 3.4, 3.5", \
"4.1, 4.2, 4.3, 4.4, 4.5", \
"5.1, 5.2, 5.3, 5.4, 5.5", \
"6.1, 6.2, 6.3, 6.4, 6.5", \
"7.1 ,7.2, 7.3, 7.4, 7.5", \
"8.1, 8.2, 8.3, 8.4, 8.5", \
"9.1, 9.2, 9.3, 9.4, 9.5", \
"10.1,10.2,10.3,10.4,10.5", \
"11.1,11.2,11.3,11.4,11.5", \
"12.1,12.2,12.3,12.4,12.5", \
"13.1,13.2,13.3,13.4,13.5", \
"14.1,14.2,14.3,14.4,14.5", \
"15.1,15.2,15.3,15.4,15.5", \
"16.1,16.2,16.3,16.4,16.5", \
"17.1,17.2,17.3,17.4,17.5", \
"18.1,18.2,18.3,18.4,18.5", \
"19.1,19.2,19.3,19.4,19.5", \
"20.1,20.2,20.3,20.4,20.5", \
"21.1,21.2,21.3,21.4,21.5", \
"22.1,22.2,22.3,22.4,22.5", \
"23.1,23.2,23.3,23.4,23.5", \
"24.1,24.2,24.3,24.4,24.5", \
"25.1,25.2,25.3,25.4,25.5", \
);
}
Entonces, todos los "valores" están en un formato de tabla de búsqueda de 25 filas x 5 columnas que deseo cambiar a un formato de tabla de 5 filas x 5 columnas. Para lograr esto, me gustaría preguntarle al usuario cuál de los 5 valores en index_3 desea antes de que la asignación se realice de la siguiente manera (al tiempo que elimina la línea index_3):
C es la columna definida por el usuario basada en index_3: (columna 1 para 0.084, columna 2 para 0.84, columna 3 para 3.36, columna 4 para 8.4, columna 5 para 13.44). * Solo 1 valor puede ser elegido por el usuario
Esquema de mapeo:
1,C -> row 1 column 1
2,C -> row 2 column 1
3,C -> row 3 column 1
4,C -> row 4 column 1
5,C -> row 5 column 1
6,C -> row 1 column 2
7,C -> row 2 column 2
8,C -> row 3 column 2
etc.
Para EJEMPLO, digamos que un usuario elige la columna 1 (valor 0.084 de index_3) -> que 'elige' toda la primera columna de los datos en 'valores' para ser procesada / ordenada por texto
Por lo tanto, el procesamiento de texto resultante realizado por tcl basado en el esquema de mapeo debería ser:
index_1 ("0.01, 0.05, 0.12, 0.2, 0.4");
index_2 ("0.005, 0.025, 0.06, 0.1, 0.3");
values ( \
"1.1, 6.1, 11.1, 16.1, 21.1", \
"2.1, 7.1, 12.1, 17.1, 22.1", \
"3.1, 8.1, 13.1, 18.1, 23.1", \
"4.1, 9.1, 14.1, 19.1, 24.1", \
"5.1, 10.1,15.1, 20.1, 25.1", \
);
Mi estrategia es esta:
busque "rise_constraint" para poner a cero en qué valores procesar el texto en todo el archivo
línea de comentario "index_3 (...)"; agregue / * y * / al principio y al final de la línea en el archivo procesado reimpreso (opcional)
convierta 'valores' de la tabla de 25 filas x 5 columnas a la tabla de 5 filas x 5 columnas BASADA en el valor Index_3 elegido ("opción de columna definida por el usuario")
vuelva a imprimir otras líneas tal como están (incluidos los "valores" procesados por el texto)
Hice todo lo posible para explicar mi solicitud de codificación. ¿Puede alguno de ustedes, por favor, ayudarme a pensar en una manera adecuada en tcl de hacer ese procesamiento de texto? ¡¡Muchas gracias!!