SNUG2002 Presentation

Download Report

Transcript SNUG2002 Presentation

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
Main script flow (WebTA)
Webization
 Demo
 Conclusions
Steven Leung
2/24
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?
Steven Leung
3/24
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
Steven Leung
4/24
What Do We Want?
 Information better organized
– Separate viols into groups based on
• R-R vs. IO-related
• Setup vs. Hold
• Clock-pairs
Steven Leung
5/24
Orig. rpt size: 80MB+
1.45M lines
31k+ timing path viols
4.5hrs to generate
What Do We Want?
 Information better organized
– Timing information hierarchy
– Extensive links to provide top-down, directed, immediate access
statistics
summary
Steven Leung
6/24
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!
Steven Leung
7/24
What Do We Want?
 Automation to reduce manual work
– Capture false/multicycle path specs while designers examine
the path violations
Steven Leung
8/24
Data I/O: WebTA
Command Syntax: webta [design]
webta.cmd
input_file_basename
output_file_prefix
delay_warning_threshold
delay_error_threshold
...
design
webta
0.15
0.3
webta.stat
WebTA
webta.html
webta_stat.html
webta_smry.html
Statistics
 Cell/Net/Area
 Timing violations
 DFT/Test violations
Steven Leung
webta_detail.html
webta_sim_path.html
webta_log.html
9/24
design.cnstr.rpt
design.tim.max.rpt
design.area.rpt
design.ref.rpt
design.qor.rpt
design.atpg.rpt
design.test.chk
List of path summary in
each timing path group
webta_smry_cgi.html
Timing path details
Similar path information
Other non-timing details
Data I/O: WebChip
Command Syntax: webchip block_list_file
block_list_file
File Format
[# ]dir [<#_of_inst>]
WebChip
webchip_stat.html
dir1 /webta.stat
dir2/webta.stat
webchip.html
dirn/webta.stat
webchip_ctrl.html
Steven Leung
10/24
WebTA/WebChip Design: GUI
+ : DFT viol
multiple
instantiation
support
* : setup viol
Steven Leung
11/24
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
Steven Leung
12/24
WebTA Design: Main Script Flow (1a)
 Collecting info in the path report
Startpoint: u_clocks/dbs_div2_reg/Q
$st
(clock source 'clk_dei')
$start_clk
Endpoint: u_tslice_0/tsl_s_phase_reg
$end
(rising edge-triggered flip-flop clocked by clk_dbs)
Path Group: clk_dbs
$end_clk
Path Type: max
$is_iport
$is_oport
Point
Incr
Path
$type
-----------------------------------------------------------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
$slk
Steven Leung
13/24
WebTA Design: Main Script Flow (1b)
 Defining the variable $path_type as follows:
$type
Max
Max
Max
Max
Min
Min
Min
Min
$is_iport
0
1
0
1
0
1
0
1
$is_oport
0
0
2
2
0
0
2
2
$path_type
0
1
2
3
4
5
6
7
Comments
Setup, R-R
Setup, I-R
Max, R-O
Max, I-O
Hold, R-R
Hold, I-R
Min, R-O
Min, I-O
$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
Steven Leung
14/24
WebTA Design: Main Script Flow (1c)
 Data structure that stores the slacks of ALL paths
@slk_of
%{ $slk_of[$path_type] }–> {“$grp:$st->$end”} = $slk
where $grp = “$start_clk–$end_clk”
(anonymous hash)
key
value
grpi:startj->endk
slk
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
Steven Leung
15/24
WebTA Design: Main Script Flow (2a)
 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
smry.tmp file
Steven Leung
16/24
WebTA Design: Main Script Flow (2b)
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
@smry_lines
%line_no_of
$path_pi
i
i
…
u_sns_bs/ll#/sns_ 123
Steven Leung
lines to be printed
122
…
R-R_SG15
123
clk_dei-bs2_rbc1 –2
17/24
@add_line
i
123
msg added
*** 3 similar paths
Webization-1: HTML Tagging
 Simple HTML header to disable formatting
<html><head></head><body bgcolor=#FFFFE0><pre>
 Labeling and targeting
webta_stat.html
webta.html
<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
. . .
<a href=webta_smry.html
#R-R_SG9 target
=smry>R-R_SG9</a>
. . .
Group ID is used in link,
label, and displayed text
webta_smry.html
. . .
<a name=R-R_SG9>
R-R_SG9: Num of ...
Steven Leung
18/24
Webization-2: CGI Basic
when req starts
with cgi-bin/*
browser
FORM
var1 = val1
var2 = val2
httpd
(server)
(Common Gateway
Interface)
cgi-lib.pl
var1 = val1
var2 = val2
...
executable
perl script
static html
...
Server passes req info
thru ~20 env variables:
QUERY_STRING
REQUEST_METHOD
CONTENT_LENGTH …
Steven Leung
CGI
Program returns a header (+ content):
Content-type: text/html
or
Location: <URL>
Header must end with a blank line.
GET: Form data appended to URL, limited size
POST: Form data not passed thru URL, unlimited
size; program obtains form data thru STDIN
19/24
Webization-3: Adding GUI Widgets
• <form action=url method=get|post [target=frame]>
• <input type=gui_type name=var value=val>
Additional Attributes
size=#
text
maxlength=#
radio
checked
checkbox
checked
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>
Steven Leung
20/24
CGI Script to Generate F/M-Paths (1)
browser
output display
PType_R-R_S9325=false_path
R-R_S9325_from=u_pci/pci_I
R-R_S9325_to=u_pci/pci_dec
html source
to
server
-------<a name=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
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_
R-R_S9325
*** 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/
--------
{
Steven Leung
21/24
CGI Script to Generate F/M-Paths (2)
 Script flow of gen_xcpt_paths
cgi-lib.pl
%value_of
key
PType_R-R_S9325
R-R_S9325_from
R-R_S9325_to
value
false_path
u_pci/pci_io/ipci_c_be_reg_0_
u_pci/pci_dec/ipci_par_reg_3_
1.Output the CGI header
2.Recover the PIDs from PType_PID key-value pairs and
separate them into false/mcycle path groups
3.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
Steven Leung
22/24
WebTA/WebChip: Demo
23/20
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
Steven Leung
24/24