| #include <stdio.h> | |
| #include <string.h> | |
| #include "ace.h" | |
| #include "blif.h" | |
| bool blif_clock_from_latch(char * latch_line, char * clk_name) { | |
| char * pos; | |
| pos = strtok(latch_line, " "); | |
| pos = strtok(NULL, " "); | |
| pos = strtok(NULL, " "); | |
| pos = strtok(NULL, " "); | |
| pos = strtok(NULL, " "); | |
| if (pos) { | |
| strncpy(clk_name, pos, ACE_CHAR_BUFFER_SIZE); | |
| clk_name[ACE_CHAR_BUFFER_SIZE - 1] = '\0'; | |
| return TRUE; | |
| } else { | |
| return FALSE; | |
| } | |
| } | |
| #if 0 | |
| void blif_clock_info(char * blif_file_name, int * num_clks, char * clk_name) | |
| { | |
| bool multiple_clocks = FALSE; | |
| FILE * file_desc; | |
| char line[ACE_CHAR_BUFFER_SIZE]; | |
| char clk_name_saved[ACE_CHAR_BUFFER_SIZE] = ""; | |
| char clk_name_temp[ACE_CHAR_BUFFER_SIZE]; | |
| char str_latch[] = ".latch"; | |
| file_desc = fopen(blif_file_name, "r"); | |
| while(fgets(line, ACE_CHAR_BUFFER_SIZE, file_desc)) | |
| { | |
| char * start_pos = line; | |
| while (start_pos[0] == ' ' || start_pos[0] == '\t') | |
| { | |
| start_pos++; | |
| } | |
| // Check for .latch | |
| if ((start_pos == NULL) || (strncmp(start_pos, str_latch, 6) != 0)) | |
| { | |
| continue; | |
| } | |
| // Extract and check clock name | |
| if (blif_clock_from_latch(line, clk_name_temp)) | |
| { | |
| if (strcmp(clk_name_saved, "") == 0) | |
| { | |
| strcpy(clk_name_saved, clk_name_temp); | |
| } | |
| else if (strcmp(clk_name_saved, clk_name_temp)) | |
| { | |
| multiple_clocks = TRUE; | |
| break; | |
| } | |
| } | |
| } | |
| if (multiple_clocks) | |
| { | |
| *num_clks = 2; | |
| } | |
| else if (strcmp(clk_name_saved, "") != 0) | |
| { | |
| *num_clks = 1; | |
| strcpy(clk_name, clk_name_saved); | |
| } | |
| else | |
| { | |
| *num_clks = 0; | |
| } | |
| } | |
| #endif |