1 <?xml version="1.0" encoding="utf-8"?>
\r
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
\r
3 <html xmlns="http://www.w3.org/1999/xhtml">
\r
5 <title>Static Timing Analysis Report</title>
\r
6 <style type="text/css">
\r
9 font:normal normal 100%/1.0 verdana, times new roman, serif, sans-serif;
\r
12 table.sta_tsu > thead > tr > th.Delay,
\r
13 table.sta_tsu > tbody > tr > td.Delay,
\r
14 table.sta_tscs > thead > tr > th.Period,
\r
15 table.sta_tscs > tbody > tr > td.Period,
\r
16 table.sta_tscs > thead > tr > th.MaxFreq,
\r
17 table.sta_tscs > tbody > tr > td.MaxFreq,
\r
18 table.sta_tscs > thead > tr > th.Frequency,
\r
19 table.sta_tscs > tbody > tr > td.Frequency,
\r
20 table.sta_tco > thead > tr > th.Delay,
\r
21 table.sta_tco > tbody > tr > td.Delay,
\r
22 table.sta_tpd > thead > tr > th.Delay,
\r
23 table.sta_tpd > tbody > tr > td.Delay,
\r
24 table.sta_toe > thead > tr > th.Delay,
\r
25 table.sta_toe > tbody > tr > td.Delay,
\r
26 table.sta_tcoe > thead > tr > th.Delay,
\r
27 table.sta_tcoe > tbody > tr > td.Delay,
\r
28 table.sta_path > thead > tr > th.Delay,
\r
29 table.sta_path > tbody > tr > td.Delay,
\r
30 table.sta_path > thead > tr > th.Total,
\r
31 table.sta_path > tbody > tr > td.Total,
\r
32 table.sta_clocksummary > thead > tr > th.ActualFreq,
\r
33 table.sta_clocksummary > tbody > tr > td.ActualFreq,
\r
34 table.sta_clocksummary > thead > tr > th.MaxFreq,
\r
35 table.sta_clocksummary > tbody > tr > td.MaxFreq,
\r
36 table > tbody > tr > td.number
\r
44 border-collapse: collapse;
\r
50 border-collapse: collapse;
\r
56 border-collapse: collapse;
\r
62 border-collapse: collapse;
\r
68 border-collapse: collapse;
\r
74 border-collapse: collapse;
\r
80 vertical-align: top;
\r
81 font-family: monospace;
\r
83 white-space: pre-line;
\r
88 vertical-align: top;
\r
89 font-family: monospace;
\r
90 white-space: pre-line;
\r
93 table.sta_tpd > tbody > tr:hover,
\r
94 table.sta_tsu > tbody > tr:hover,
\r
95 table.sta_tscs > tbody > tr:hover,
\r
96 table.sta_tco > tbody > tr:hover,
\r
97 table.sta_toe > tbody > tr:hover,
\r
98 table.sta_tcoe > tbody > tr:hover
\r
100 background-color: #e8e8ff;
\r
103 table.sta_path > tbody > tr:hover {
\r
104 background-color: #e8e8ff;
\r
108 background-color: #f8f8f8;
\r
110 border-collapse: collapse;
\r
116 table.sta_clocksummary {
\r
118 border-collapse: collapse;
\r
125 div.sta_sec div.sta_sec {
\r
126 margin-left: 0.75em;
\r
130 font:normal normal 100%/1.0 verdana, times new roman, serif, sans-serif;
\r
135 font: normal normal 100%/1.0 verdana, times new roman, serif, sans-serif;
\r
136 font-weight: bolder;
\r
143 font-weight: bolder;
\r
148 margin-left: 0.75em;
\r
151 div.vio_sta_secbody {
\r
152 margin-left: 0.75em;
\r
156 margin-bottom: 0.5em;
\r
157 white-space: pre-line;
\r
162 border-color: black;
\r
167 <script type="text/javascript">
\r
170 function HideElement(element) {
\r
171 var headerDiv = getChildElementsByTagName(element, "div")[0];
\r
172 var expandLink = getChildElementsByTagName(headerDiv, "a")[0];
\r
173 expandLink.onclick = clicked;
\r
174 var children = element.childNodes;
\r
175 var secBody = null;
\r
176 for (var j = 0; j < children.length; j++)
\r
178 if (children[j].nodeType == document.ELEMENT_NODE &&
\r
179 (children[j].className == "sta_secbody" ||
\r
180 children[j].className == "vio_sta_secbody" ||
\r
181 children[j].className == "sta_sec" ))
\r
183 secBody = children[j];
\r
184 secBody.style.display = "none";
\r
189 function HideElements(elements) {
\r
190 for( var i=0; i<elements.length; i++)
\r
191 HideElement(elements[i]);
\r
195 // Description : returns boolean indicating whether the object has the class name
\r
196 // built with the understanding that there may be multiple classes
\r
199 // objElement - element to check for.
\r
200 // strClass - class name to be checked.
\r
202 function HasClassName(objElement, strClass)
\r
204 if ( objElement.className )
\r
206 // the classes are just a space separated list, so first get the list
\r
207 var arrList = objElement.className.split(' ');
\r
209 for ( var i = 0; i < arrList.length; i++ )
\r
211 if ( arrList[i] == strClass )
\r
220 function initialize() {
\r
221 if (document.ELEMENT_NODE == null)
\r
223 /* Workaround for old IE */
\r
224 document.ELEMENT_NODE = 1;
\r
225 document.ATTRIBUTE_NODE = 2;
\r
226 document.TEXT_NODE = 3;
\r
227 document.CDATA_SECTION_MODE = 4;
\r
228 document.ENTITY_REFERENCE_MODE = 5;
\r
229 document.ENTITY_NODE = 6;
\r
230 document.PROCESSING_INSTRUCTION_NODE = 7;
\r
231 document.COMMENT_NODE = 8;
\r
232 document.DOCUMENT_NODE = 9;
\r
233 document.DOCUMENT_TYPE_NODE = 10;
\r
234 document.DOCUMENT_FRAGMENT_NODE = 11;
\r
235 document.NOTATION_NODE = 12;
\r
238 HideElements(getElementsByClass(document, 'div', 'sta_sec'));
\r
239 toggleExpandSection(document.getElementById('clock_summary'));
\r
240 toggleExpandSection(document.getElementById('violations'));
\r
242 var allTD = document.getElementsByTagName("td");
\r
243 for( var i=0; i< allTD.length; i++)
\r
245 if(allTD[i].className != "proptext" && allTD[i].innerHTML.match(/^\s*[-]?[0-9]+[\.]?[0-9]*$/))
\r
247 allTD[i].align = "right";
\r
248 //allTD[i].style.textAlign = "right";
\r
252 var allTables = document.getElementsByTagName("table");
\r
253 for (var i = 0; i < allTables.length; i++)
\r
255 var table = allTables[i];
\r
256 if (table.className == "sta_tsu" ||
\r
257 table.className == "sta_tscs" ||
\r
258 table.className == "sta_tco" ||
\r
259 table.className == "sta_toe" ||
\r
260 table.className == "sta_tcoe")
\r
262 var tbodyList = getChildElementsByTagName(table, "tbody");
\r
263 if (tbodyList.length != 0)
\r
265 for (var row = tbodyList[0].firstChild; row != null; row = row.nextSibling)
\r
267 if (row.nodeName.toLowerCase() == "tr")
\r
269 if (HasClassName(row,"sta_path"))
\r
271 row.style.display = "none";
\r
275 row.style.cursor = "pointer";
\r
276 row.onclick = rowClicked;
\r
282 else if(table.className == "sta_tpd" )
\r
284 var tbodyList = getChildElementsByTagName(table, "tbody");
\r
285 if (tbodyList.length != 0)
\r
287 for (var row = tbodyList[0].firstChild; row != null; row = row.nextSibling)
\r
289 if (row.nodeName.toLowerCase() == "tr")
\r
291 if(HasClassName(row, "sta_tv"))
\r
293 row.style.cursor = "pointer";
\r
294 row.onclick = violationClicked;
\r
305 var parent = findAncestorByClass(this, "sta_sec");
\r
306 toggleExpandSection(parent);
\r
310 function toggleExpandSection(section)
\r
312 if (section == null)
\r
315 var children = section.childNodes;
\r
316 for (var i = 0; i < children.length; i++)
\r
318 if (children[i].nodeType == document.ELEMENT_NODE &&
\r
319 (children[i].className == "sta_secbody" ||
\r
320 children[i].className == "vio_sta_secbody"))
\r
321 toggleVisible(children[i]);
\r
325 function findAncestorByClass(node, className)
\r
328 for (parent = node; parent != null; parent = parent.parentNode)
\r
330 if (parent.nodeType == document.ELEMENT_NODE &&
\r
331 parent.className == className)
\r
340 function rowClicked()
\r
342 for (var next = this.nextSibling; next != null; next = next.nextSibling)
\r
344 if (next.nodeType == document.ELEMENT_NODE &&
\r
345 next.nodeName.toLowerCase() == "tr" &&
\r
346 HasClassName(next,"sta_path"))
\r
348 if (next.style.display == "none")
\r
349 next.style.display = "table-row";
\r
351 next.style.display = "none";
\r
357 function findPos(obj)
\r
360 if (obj.offsetParent)
\r
364 curtop += obj.offsetTop;
\r
365 } while (obj = obj.offsetParent);
\r
370 function jumpto(ClassName)
\r
372 var classname = 'sta_path';
\r
374 classname += ClassName;
\r
375 if((obj = getElementsByClass(document, 'tr', classname)) &&
\r
377 window.scrollTo(0, findPos(obj[0]));
\r
381 function violationClicked()
\r
383 expandAllSections(0);
\r
384 expandViolations(1);
\r
386 var rlist= document.getElementsByTagName( "tr");
\r
388 var clickedElementClassNames = this.className.split(' ');
\r
390 //The second class name is to match the violation element with the
\r
391 //corresponding path element in the detailed section.
\r
392 var identificationClassValue = clickedElementClassNames[1];
\r
394 for(var i=0 ; i < rlist.length ; i++)
\r
396 if( rlist[i].nodeType == document.ELEMENT_NODE && HasClassName(rlist[i],"sta_path") )
\r
398 var staPathClassNames = rlist[i].className.split(' ');
\r
399 // Assumption: There will be two class names, one indicating
\r
400 // style (sta_path), other to identify elements tv1.
\r
402 if(staPathClassNames.length > 1)
\r
404 // Matching second class Names of both elements.
\r
405 if(staPathClassNames[1] == identificationClassValue)
\r
408 var parent= findAncestorByClass ( rlist[i] , "sta_tscs" );
\r
410 parent= findAncestorByClass ( rlist[i] , "sta_tco" );
\r
411 for( ; (parent!= null && parent.nodeName!="body") ; parent= parent.parentNode )
\r
413 if( parent.nodeType == document.ELEMENT_NODE && parent.className == "sta_secbody")
\r
415 //parent.style.display = "block";
\r
417 rlist[i].style.display = "table-row" ;
\r
418 //alert(rlist[i].id);
\r
425 //document.getElementById(this.id).scrollIntoView(true);
\r
426 // location = location + this.id;
\r
427 jumpto(identificationClassValue);
\r
432 function toggleVisible(elem)
\r
434 if (elem.style.display == "none")
\r
435 elem.style.display = "block";
\r
437 elem.style.display = "none";
\r
439 headerDiv = getChildElementsByTagName(elem.parentNode, "div")[0];
\r
440 link = getChildElementsByTagName(headerDiv, "a")[0];
\r
441 innerSpan = getChildElementsByTagName(link, "span")[0];
\r
442 textNode = getChildElementsByTagName(innerSpan, "span")[0].firstChild;
\r
443 textNode.data = (elem.style.display == "none") ? "+" : "-";
\r
446 function visible(elem)
\r
448 elem.style.display = "block";
\r
450 headerDiv = getChildElementsByTagName(elem.parentNode, "div")[0];
\r
451 link = getChildElementsByTagName(headerDiv, "a")[0];
\r
452 innerSpan = getChildElementsByTagName(link, "span")[0];
\r
453 textNode = getChildElementsByTagName(innerSpan, "span")[0].firstChild;
\r
454 textNode.data = (elem.style.display == "none") ? "+" : "-";
\r
457 function getChildElementsByTagName(node, name)
\r
459 var result = new Array(), i = 0;
\r
460 name = name.toLowerCase();
\r
461 for (var child = node.firstChild; child != null; child = child.nextSibling)
\r
463 if (child.nodeType == document.ELEMENT_NODE &&
\r
464 child.nodeName.toLowerCase() == name)
\r
466 result[i++] = child;
\r
473 function expandAllPaths(rootNode, show)
\r
475 var show = show ? "table-row" : "none";
\r
476 var elements = getElementsByClass(rootNode, "tr", "sta_path");
\r
477 for (var i = 0; i < elements.length; i++)
\r
479 elements[i].style.display = show;
\r
483 function expandAllSections(show)
\r
485 var show = show ? "block" : "none";
\r
486 var elements = getElementsByClass(document, "div", "sta_secbody");
\r
487 for (var i = 0; i < elements.length; i++)
\r
489 if (elements[i].style.display != show)
\r
490 toggleVisible(elements[i]);
\r
493 var elements1 = getElementsByClass(document, "div", "vio_sta_secbody");
\r
494 for (var i = 0; i < elements1.length; i++)
\r
496 if (elements1[i].style.display != show)
\r
497 toggleVisible(elements1[i]);
\r
501 function expandViolations(show)
\r
503 var show = show ? "block" : "none";
\r
504 var elements = getElementsByClass(document, "div", "vio_sta_secbody");
\r
505 for (var i = 0; i < elements.length; i++)
\r
507 if (elements[i].style.display != show)
\r
508 toggleVisible(elements[i]);
\r
512 function expandViolationSections(show)
\r
514 var show =show ? "block" :"none" ;
\r
517 function getElementsByClass(rootNode, elemName, className)
\r
519 var result = new Array(), idx = 0;
\r
520 var elements = rootNode.getElementsByTagName(elemName);
\r
521 for (var i = 0; i < elements.length; i++)
\r
523 if (elements[i].className == className)
\r
524 result[idx++] = elements[i];
\r
533 <body onload="initialize();">
\r
535 <p style="display: block; border: 1px solid; margin: 4em; padding: 1.5em">View this file with a JavaScript-enabled browser to enable all features.</p>
\r
537 <h1> Static Timing Analysis </h1>
\r
538 <table class="property">
\r
539 <tr> <td class="prop"> Project :</td>
\r
540 <td class="proptext"> USB_Bootloader</td></tr>
\r
541 <tr> <td class="prop"> Build Time :</td>
\r
542 <td class="proptext"> 04/16/14 21:16:10</td></tr>
\r
543 <tr> <td class="prop"> Device :</td>
\r
544 <td class="proptext"> CY8C5267AXI-LP051</td></tr>
\r
545 <tr> <td class="prop"> Temperature :</td>
\r
546 <td class="proptext"> -40C - 85/125C</td></tr>
\r
547 <tr> <td class="prop"> Vdda :</td>
\r
548 <td class="proptext"> 5.00</td></tr>
\r
549 <tr> <td class="prop"> Vddd :</td>
\r
550 <td class="proptext"> 5.00</td></tr>
\r
551 <tr> <td class="prop"> Vio0 :</td>
\r
552 <td class="proptext"> 5.00</td></tr>
\r
553 <tr> <td class="prop"> Vio1 :</td>
\r
554 <td class="proptext"> 5.00</td></tr>
\r
555 <tr> <td class="prop"> Vio2 :</td>
\r
556 <td class="proptext"> 5.00</td></tr>
\r
557 <tr> <td class="prop"> Vio3 :</td>
\r
558 <td class="proptext"> 5.00</td></tr>
\r
559 <tr> <td class="prop"> Voltage :</td>
\r
560 <td class="proptext"> 5.0</td></tr>
\r
561 <tr> <td class="prop"> Vusb :</td>
\r
562 <td class="proptext"> 5.00</td></tr>
\r
565 <a href="#" onclick="expandAllSections(1);return false;">Expand All</a> |
\r
566 <a href="#" onclick="expandAllSections(0);return false;">Collapse All</a> |
\r
567 <a href="#" onclick="expandAllPaths(document, 1);return false;">Show All Paths</a> |
\r
568 <a href="#" onclick="expandAllPaths(document, 0);return false;">Hide All Paths</a>
\r
570 <div class="sta_sec" id="violations">
\r
572 <a href="#" style="text-decoration: none; color: inherit;">
\r
573 <span class="sec_head"><span style="font-family: monospace;">+</span>
\r
574 Timing Violation Section</span>
\r
576 </div><div class="vio_sta_secbody"><div class="sta_sec_desc">No Timing Violations</div>
\r
579 <div class="sta_sec" id="clock_summary">
\r
581 <a href="#" style="text-decoration: none; color: inherit;">
\r
582 <span class="sec_head"><span style="font-family: monospace;">+</span>
\r
583 Clock Summary Section</span>
\r
585 </div><div class="sta_secbody"><table class="sta_clocksummary">
\r
590 <th>Nominal Frequency</th>
\r
591 <th>Required Frequency</th>
\r
592 <th>Maximum Frequency</th>
\r
598 <td class = "text_info">CyILO</td>
\r
599 <td class = "text_info">CyILO</td>
\r
600 <td class = "number">100.000 kHz</td>
\r
601 <td class = "number">100.000 kHz</td>
\r
602 <td class = "number"> N/A </td>
\r
603 <td class = "text_info"> </td>
\r
606 <td class = "text_info">CyIMO</td>
\r
607 <td class = "text_info">CyIMO</td>
\r
608 <td class = "number">24.000 MHz</td>
\r
609 <td class = "number">24.000 MHz</td>
\r
610 <td class = "number"> N/A </td>
\r
611 <td class = "text_info"> </td>
\r
614 <td class = "text_info">CyMASTER_CLK</td>
\r
615 <td class = "text_info">CyMASTER_CLK</td>
\r
616 <td class = "number">64.000 MHz</td>
\r
617 <td class = "number">64.000 MHz</td>
\r
618 <td class = "number"> N/A </td>
\r
619 <td class = "text_info"> </td>
\r
622 <td class = "text_info">CyBUS_CLK</td>
\r
623 <td class = "text_info">CyMASTER_CLK</td>
\r
624 <td class = "number">64.000 MHz</td>
\r
625 <td class = "number">64.000 MHz</td>
\r
626 <td class = "number"> N/A </td>
\r
627 <td class = "text_info"> </td>
\r
630 <td class = "text_info">CyPLL_OUT</td>
\r
631 <td class = "text_info">CyPLL_OUT</td>
\r
632 <td class = "number">64.000 MHz</td>
\r
633 <td class = "number">64.000 MHz</td>
\r
634 <td class = "number"> N/A </td>
\r
635 <td class = "text_info"> </td>
\r