1 / 24

WebTA/WebChip Perl Utilities for Post-Processing Synthesis Results of SoC Designs

WebTA/WebChip Perl Utilities for Post-Processing Synthesis Results of SoC Designs. Steven Leung Brocade Communication Systems March 14, 2002. Outline. Introduction What Do We Want? Information better organized Automation to reduce manual efforts WebTA/WebChip Design Data IO GUI

kasen
Télécharger la présentation

WebTA/WebChip Perl Utilities for Post-Processing Synthesis Results of SoC Designs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. WebTA/WebChipPerl Utilities for Post-Processing Synthesis Results of SoC Designs Steven Leung Brocade Communication Systems March 14, 2002

  2. Outline • Introduction • What Do We Want? • Information better organized • Automation to reduce manual efforts • WebTA/WebChip Design • Data IO • GUI • Main script flow (WebTA) • Webization • Demo • Conclusions

  3. Introduction: What is the Issue? • SoC designs: Blocks today are chips yesterday • Key implement issue in achieving TTM: “Timing Closure” • One aspect of the timing closure problem: Timing constraints take weeks, if not months, to clean • Major constraint types: Clocks, IO Timing, F-/M-Paths • Block vs. Chip • Synthesis vs. STA • Pre-layout vs. Post-layout • Logical vs. physical • Most of the time spent on exception path specifications • How can we speed up the constraints dev/mgmt process?

  4. Introduction: Motivation • Recap: Timing closure  Constraints  F/M paths • Feedback from violation reports • Why does it take months to clean? • Coding/planning problems • Incompatibility between tools • Information not well organized • Labor intensive • WebTA is developed to address the last two areas • Information better organized • Automation to reduce manual work

  5. What Do We Want? • Separate viols into groups based on • R-R vs. IO-related • Setup vs. Hold • Clock-pairs Orig. rpt size: 80MB+ 1.45M lines 31k+ timing path viols 4.5hrs to generate • Information better organized

  6. What Do We Want? statistics summary • Information better organized • Timing information hierarchy • Extensive links to provide top-down, directed, immediate access

  7. What Do We Want? • Automation to reduce manual work • Recognize “similar” paths and display just once # of viol paths reduced from 31k to < 1.4k!

  8. What Do We Want? • Automation to reduce manual work • Capture false/multicycle path specs while designers examine the path violations

  9. Data I/O: WebTA design.tim.max.rpt webta.cmd design.area.rpt input_file_basename design output_file_prefix webta delay_warning_threshold 0.15 delay_error_threshold 0.3 ... design.ref.rpt design.qor.rpt design.atpg.rpt design.test.chk webta.stat webta.html List of path summary in each timing path group webta_stat.html webta_smry_cgi.html webta_smry.html • Statistics • Cell/Net/Area • Timing violations • DFT/Test violations Timing path details webta_detail.html webta_sim_path.html webta_log.html Similar path information Other non-timing details Command Syntax: webta[design] design.cnstr.rpt WebTA

  10. Data I/O: WebChip block_list_file File Format [# ]dir [<#_of_inst>] webchip_stat.html webchip.html dir1 /webta.stat • dir2/webta.stat dirn/webta.stat webchip_ctrl.html Command Syntax: webchipblock_list_file WebChip

  11. WebTA/WebChip Design: GUI + : DFT viol multiple instantiation support * : setup viol

  12. WebTA Design: Script Overview • Main Script Flow • Step 1: Collect path slack info and generate summary – Data structure is the key • Step 2: Suppress similar paths and add html/cgi • Webization Techniques • HTML tags: Simple labeling and links setting • CGI basic • Adding GUI widgets through the FORM tag

  13. WebTA Design: Main Script Flow (1a) $st $start_clk $end $end_clk $is_iport $is_oport $type $slk • Collecting info in the path report Startpoint: u_clocks/dbs_div2_reg/Q (clock source 'clk_dei') Endpoint: u_tslice_0/tsl_s_phase_reg (rising edge-triggered flip-flop clocked by clk_dbs) Path Group: clk_dbs Path Type: max Point Incr Path ------------------------------------------------------------ clock clk_dei (rise edge) 0.00 0.00 u_clocks/dbs_div2_reg/Q (FD1SQAFP) 0.00 0.00 r . . . data arrival time -9.26 ------------------------------------------------------------ slack (VIOLATED) -6.60

  14. $type $is_iport $is_oport $path_type Comments WebTA Design: Main Script Flow (1b) Max 0 0 0 Setup, R-R Max 1 0 1 Setup, I-R Max 0 2 2 Max, R-O Max 1 2 3 Max, I-O Min 0 0 4 Hold, R-R Min 1 0 5 Hold, I-R Min 0 2 6 Min, R-O Min 1 2 7 Min, I-O • Defining the variable $path_type as follows: $path_type = $is_iport + $is_oport + $type eq ‘min’ ? 4 : 0; • $path_type is used as index to a reg array @slk_of, which stores references of hashes holding path-slack pairs

  15. WebTA Design: Main Script Flow (1c) %{ }–> {“$grp:$st->$end”} =$slk $slk_of[$path_type] where $grp = “$start_clk–$end_clk” (anonymous hash) key value grpi:startj->endk slk • Data structure that stores the slacks of ALL paths Each path is assigned a unique PID, which is stored exactly the same way ( %{$pid_of[$path_type]}–>{…} ) • Sort and dump out the entire table to a smry.tmp file; and generate statistics along the way

  16. WebTA Design: Main Script Flow (2a) smry.tmp file • Main task in Step 2: Suppressing “similar” paths • “Similar” (Identify elements in the name that are exactly the same) • Bus situation: abc[0] is similar to abc[12] • Multiple instantiations: u_dlm0/abc[0] is similar to u_dlm2/abc[3] • Transformed to a canonical form where digits are replaced by ‘#’ • Perl: s/\d+/#/g

  17. WebTA Design: Main Script Flow (2b) @add_line @smry_lines %line_no_of i msg added i lines to be printed i $path_pi … … u_sns_bs/ll#/sns_ R-R_SG15 122 123 clk_dei-bs2_rbc1 –2 123 123 *** 3 similar paths Suppressing similar paths (cont.) • Read back the already sorted endpt summaries from the tmp file • Save all lines to be printed to the array @smry_lines • For path lines, generate the canonical form ($path_pi) for $st->$end • First time see $path_pi => to be printed, save the path • Remember the index to @smry_lines associated with $path_pi • Save paths whose $path_pi already seen in a temp array • At end of each group, generate the similar path msg and put it into the @add_line array using $path_pi’s index to the @smry_lines array • Print lines in @smry_lines and @add_lines together later

  18. Webization-1: HTML Tagging • Labeling and targeting webta_stat.html webta.html . . . <a href=webta_smry.html #R-R_SG9target =smry>R-R_SG9</a> . . . <frameset rows=15%,25%,60%> <frame name=stat src='webta_stat.html'> <frame name=smry src='webta_smry.html'> <frame name=detail src=webta_detail.htm Group ID Group ID is used in link, and displayed text label, webta_smry.html . . . <a name=R-R_SG9> R-R_SG9: Num of ... • Simple HTML header to disable formatting <html><head></head><body bgcolor=#FFFFE0><pre>

  19. Webization-2: CGI Basic CGI (Common Gateway Interface) browser httpd (server) cgi-lib.pl executable perl script static html Program returns a header (+ content): Content-type: text/html or Location: <URL> Header must end with a blank line. var1 = val1var2 = val2 var1 = val1var2 = val2 . . . . . . Server passes req info thru ~20 env variables:QUERY_STRING REQUEST_METHOD CONTENT_LENGTH … GET: Form data appended to URL, limited size REQUEST_METHOD POST: Form data not passed thru URL, unlimited size; program obtains form data thru STDIN when req starts with cgi-bin/* FORM

  20. Webization-3: Adding GUI Widgets • <input type=gui_type name=var value=val> Additional Attributes size=# maxlength=# text checked radio checked checkbox submit/reset button (In 4.0: button becomes a form object itself) • <select name=var > options </select> • Options: <option value=val [selected]> … </select> • <textarea rows=# cols=# name=name> … </textarea> • <form action=url method=get|post [target=frame]> • </form>

  21. CGI Script to Generate F/M-Paths (1) to server browser -------- <aname=R-R_SG6>R-R_SG6: Num of [distinct] paths = 1, Total slacks clk_pci-clk_sgp -0.33 <a target=detail href=webta_detail1.html <input type=radio name=PType_R-R_S9325 value=false_path> False <input type=radio name=PType_R-R_S9325 value=mcycle_path> Multi- <input type=radio name=PType_R-R_S9325 value=0> Reset <input type=checkbox name=R-R_S9325_from value=u_pci/pci_io/ipci <input type=checkbox name=R-R_S9325_to value=u_pci/pci_dec/ipci_ *** 3 similar start-end-pts (<a target=detail href=webta_l <input type=checkbox name=R-R_S9325_from_Pi value=u_pci/pci_io <input type=checkbox name=R-R_S9325_to_Pi value=u_pci/pci_dec/ -------- { R-R_S9325 R-R_S9325 PType_R-R_S9325=false_path R-R_S9325_from=u_pci/pci_I R-R_S9325_to=u_pci/pci_dec output display html source

  22. CGI Script to Generate F/M-Paths (2) cgi-lib.pl %value_of key value PType_R-R_S9325 R-R_S9325_from R-R_S9325_to false_path u_pci/pci_io/ipci_c_be_reg_0_ u_pci/pci_dec/ipci_par_reg_3_ • Output the CGI header • Script flow of gen_xcpt_paths • Recover the PIDs from PType_PID key-value pairs and separate them into false/mcycle path groups • For each PID in each group, write out the set_false/multicycle_path command and the -from/-to args, with the values derived from the PID_from[_pi]/PID_to[_pi] variables if they exist

  23. WebTA/WebChip: Demo 23/20

  24. Conclusions • The design of WebTA/WebChip utilities presented • Data I/O • Main script flow • Webization techniques • HTML and Web GUI widget basics • CGI to enable user interaction with web-based info • Web interface of synthesis/STA results to provide • Hierarchically organized timing and other statistics information • Top-down, directed, immediate access to any level of details • “Similar” timing path recognition to reduce amount of data • From timing viol reports to false/multicycle path spec via CGI • Help to speed up constraints development to achieve FTAT • Demo example: DB: 80+MB ~3MB ; Viol paths: 31k 1.4k

More Related