5617ccc8a755b4e502ee3b92b38053227b6649e9
[SCSI2SD-V6.git] / software / SCSI2SD / USB_Bootloader.cydsn / USB_Bootloader_timing.html
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
4 <head>\r
5 <title>Static Timing Analysis Report</title>\r
6 <style type="text/css">\r
7 <!--\r
8 body { \r
9     font:normal normal 100%/1.0 verdana, times new roman, serif, sans-serif; \r
10 }\r
11 \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
37 {\r
38         text-align: right;\r
39 }\r
40 \r
41 \r
42 table.sta_tsu {\r
43    border: solid 2px;\r
44    border-collapse: collapse;\r
45    width: 90%;\r
46 }\r
47 \r
48 table.sta_tpd {\r
49    border: solid 2px;\r
50    border-collapse: collapse;\r
51    width: 90%;\r
52 }\r
53 \r
54 table.sta_tscs {\r
55    border: solid 2px;\r
56    border-collapse: collapse;\r
57    width: 90%;\r
58 }\r
59 \r
60 table.sta_tco {\r
61    border: solid 2px;\r
62    border-collapse: collapse;\r
63    width: 90%;\r
64 }\r
65 \r
66 table.sta_toe {\r
67    border: solid 2px;\r
68    border-collapse: collapse;\r
69    width: 90%;\r
70 }\r
71 \r
72 table.sta_tcoe {\r
73    border: solid 2px;\r
74    border-collapse: collapse;\r
75    width: 90%;\r
76 }\r
77 \r
78 th {\r
79    border: solid 1px;\r
80    vertical-align: top;\r
81    font-family: monospace;\r
82    text-align: center;\r
83    white-space: pre-line;\r
84 }\r
85 \r
86 td {\r
87    border: solid 1px;\r
88    vertical-align: top;\r
89    font-family: monospace;\r
90    white-space: pre-line;\r
91 }\r
92 \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
99 {\r
100    background-color: #e8e8ff;\r
101 }\r
102 \r
103 table.sta_path > tbody > tr:hover {\r
104    background-color: #e8e8ff;\r
105 }\r
106 \r
107 table.sta_path {\r
108    background-color: #f8f8f8;\r
109    border: none;\r
110    border-collapse: collapse;\r
111    width: 90%;\r
112    margin-left: 1em;\r
113    margin-right: 1em;\r
114 }\r
115 \r
116 table.sta_clocksummary {\r
117    border: solid 2px;\r
118    border-collapse: collapse;\r
119 }\r
120 \r
121 div.sta_sec {\r
122    padding: 0.5em;\r
123 }\r
124 \r
125 div.sta_sec div.sta_sec {\r
126    margin-left: 0.75em;\r
127 }\r
128 \r
129 .proptext {\r
130    font:normal normal 100%/1.0 verdana, times new roman, serif, sans-serif;\r
131    border: 0px;\r
132 }\r
133 \r
134 .prop {\r
135    font: normal normal 100%/1.0 verdana, times new roman, serif, sans-serif;\r
136    font-weight: bolder;\r
137    border: 0px;\r
138 }\r
139 \r
140 .sec_head {\r
141    display: block;\r
142    font-size: 1.17em;\r
143    font-weight: bolder;\r
144    margin: .83em 0;\r
145 }\r
146 \r
147 div.sta_secbody {\r
148    margin-left: 0.75em;\r
149 }\r
150 \r
151 div.vio_sta_secbody {\r
152    margin-left: 0.75em;\r
153 }\r
154 \r
155 .sta_sec_desc {\r
156    margin-bottom: 0.5em;\r
157    white-space: pre-line;\r
158 }\r
159 \r
160 .violation_color {\r
161    color: red;\r
162    border-color: black;\r
163 }\r
164 \r
165 -->\r
166 </style>   \r
167 <script type="text/javascript">\r
168 <!--\r
169 \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
177     {\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
182         {\r
183             secBody = children[j];\r
184             secBody.style.display = "none";\r
185         }\r
186     }\r
187 }\r
188 \r
189 function HideElements(elements)  {\r
190     for( var i=0; i<elements.length; i++)\r
191         HideElement(elements[i]);\r
192 }\r
193 \r
194 \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
197 //\r
198 // Arguments:\r
199 //    objElement              - element to check for.\r
200 //    strClass                - class name to be checked.\r
201 //\r
202 function HasClassName(objElement, strClass)\r
203 {\r
204     if ( objElement.className )\r
205     {\r
206         // the classes are just a space separated list, so first get the list\r
207         var arrList = objElement.className.split(' ');\r
208 \r
209         for ( var i = 0; i < arrList.length; i++ )\r
210         {\r
211             if ( arrList[i] == strClass )\r
212             {\r
213                 return true;\r
214             }\r
215         }\r
216     }\r
217     return false;\r
218 }\r
219 \r
220 function initialize() {\r
221     if (document.ELEMENT_NODE == null)\r
222     {\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
236     }\r
237     \r
238     HideElements(getElementsByClass(document, 'div', 'sta_sec'));\r
239     toggleExpandSection(document.getElementById('clock_summary'));\r
240     toggleExpandSection(document.getElementById('violations'));\r
241 \r
242     var allTD = document.getElementsByTagName("td");\r
243     for( var i=0; i< allTD.length; i++)\r
244     {\r
245         if(allTD[i].className != "proptext" && allTD[i].innerHTML.match(/^\s*[-]?[0-9]+[\.]?[0-9]*$/))\r
246         {\r
247             allTD[i].align = "right";\r
248             //allTD[i].style.textAlign = "right";\r
249         }\r
250     }\r
251 \r
252     var allTables = document.getElementsByTagName("table");\r
253     for (var i = 0; i < allTables.length; i++)\r
254     {\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
261         {\r
262             var tbodyList = getChildElementsByTagName(table, "tbody");\r
263             if (tbodyList.length != 0)\r
264             {\r
265                 for (var row = tbodyList[0].firstChild; row != null; row = row.nextSibling)\r
266                 {\r
267                     if (row.nodeName.toLowerCase() == "tr")\r
268                     {\r
269                         if (HasClassName(row,"sta_path"))\r
270                         {\r
271                             row.style.display = "none";\r
272                         }\r
273                         else\r
274                         {\r
275                             row.style.cursor = "pointer";\r
276                             row.onclick = rowClicked;\r
277                         }\r
278                     }\r
279                 }\r
280             }\r
281         }\r
282         else if(table.className == "sta_tpd" )\r
283         {\r
284             var tbodyList = getChildElementsByTagName(table, "tbody");\r
285             if (tbodyList.length != 0)\r
286             {\r
287                 for (var row = tbodyList[0].firstChild; row != null; row = row.nextSibling)\r
288                 {\r
289                     if (row.nodeName.toLowerCase() == "tr")\r
290                     {\r
291                         if(HasClassName(row, "sta_tv"))\r
292                         {\r
293                             row.style.cursor = "pointer";\r
294                             row.onclick = violationClicked;\r
295                         }\r
296                     }\r
297                 }\r
298             }\r
299         }\r
300     }\r
301 }\r
302 \r
303 function clicked()\r
304 {\r
305     var parent = findAncestorByClass(this, "sta_sec");\r
306     toggleExpandSection(parent);\r
307     return false;\r
308 }\r
309 \r
310 function toggleExpandSection(section)\r
311 {\r
312     if (section == null)\r
313         return false;\r
314 \r
315     var children = section.childNodes;\r
316     for (var i = 0; i < children.length; i++)\r
317     {\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
322     }\r
323 }\r
324 \r
325 function findAncestorByClass(node, className)\r
326 {\r
327     var parent;\r
328     for (parent = node; parent != null; parent = parent.parentNode)\r
329     {\r
330         if (parent.nodeType == document.ELEMENT_NODE &&\r
331             parent.className == className)\r
332         {\r
333             return parent;\r
334         }\r
335     }\r
336 \r
337     return null;\r
338 }\r
339 \r
340 function rowClicked()\r
341 {\r
342     for (var next = this.nextSibling; next != null; next = next.nextSibling)\r
343     {\r
344         if (next.nodeType == document.ELEMENT_NODE &&\r
345             next.nodeName.toLowerCase() == "tr" &&\r
346             HasClassName(next,"sta_path"))\r
347         {\r
348             if (next.style.display == "none")\r
349                 next.style.display = "table-row";\r
350             else\r
351                 next.style.display = "none";\r
352             break;\r
353         }\r
354     }\r
355     return false;\r
356 }\r
357 function findPos(obj)\r
358 {\r
359     var curtop = 0;\r
360     if (obj.offsetParent)\r
361     {\r
362         do\r
363         {\r
364             curtop += obj.offsetTop;\r
365         } while (obj = obj.offsetParent);\r
366         return [curtop];\r
367     }\r
368 }\r
369 \r
370 function jumpto(ClassName)\r
371 {\r
372     var classname = 'sta_path';\r
373     classname += ' ';\r
374     classname += ClassName;\r
375     if((obj = getElementsByClass(document, 'tr', classname)) &&\r
376             obj.length > 0 ){\r
377         window.scrollTo(0, findPos(obj[0]));\r
378     }\r
379 }\r
380 \r
381 function violationClicked()\r
382 {\r
383     expandAllSections(0);\r
384     expandViolations(1);\r
385     var ident=this.id;\r
386     var rlist= document.getElementsByTagName( "tr");\r
387 \r
388     var clickedElementClassNames = this.className.split(' ');\r
389 \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
393 \r
394     for(var i=0 ; i < rlist.length ; i++)\r
395     {\r
396         if( rlist[i].nodeType == document.ELEMENT_NODE && HasClassName(rlist[i],"sta_path") )\r
397         {\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
401 \r
402             if(staPathClassNames.length > 1)\r
403             {\r
404                 // Matching second class Names of both elements.\r
405                 if(staPathClassNames[1] == identificationClassValue)\r
406                 {\r
407 \r
408                     var parent= findAncestorByClass ( rlist[i] , "sta_tscs" );\r
409                     if(parent == null)\r
410                         parent= findAncestorByClass ( rlist[i] , "sta_tco" );\r
411                     for( ; (parent!= null && parent.nodeName!="body") ; parent= parent.parentNode )\r
412                     {\r
413                         if( parent.nodeType == document.ELEMENT_NODE && parent.className == "sta_secbody")\r
414                         {\r
415                             //parent.style.display = "block";\r
416                             visible(parent);\r
417                             rlist[i].style.display = "table-row" ;\r
418                             //alert(rlist[i].id);\r
419                         }\r
420                     }\r
421                 }\r
422             }\r
423         }\r
424     }\r
425     //document.getElementById(this.id).scrollIntoView(true);\r
426     // location = location + this.id;\r
427     jumpto(identificationClassValue);\r
428     return false;\r
429 }\r
430 \r
431 \r
432 function toggleVisible(elem)\r
433 {\r
434     if (elem.style.display == "none")\r
435         elem.style.display = "block";\r
436     else\r
437         elem.style.display = "none";\r
438 \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
444 }\r
445 \r
446 function visible(elem)\r
447 {\r
448     elem.style.display = "block";\r
449 \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
455 }\r
456 \r
457 function getChildElementsByTagName(node, name)\r
458 {\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
462     {\r
463         if (child.nodeType == document.ELEMENT_NODE &&\r
464             child.nodeName.toLowerCase() == name)\r
465         {\r
466             result[i++] = child;\r
467         }\r
468     }\r
469 \r
470     return result;\r
471 }\r
472 \r
473 function expandAllPaths(rootNode, show)\r
474 {\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
478     {\r
479         elements[i].style.display = show;\r
480     }\r
481 }\r
482 \r
483 function expandAllSections(show)\r
484 {\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
488     {\r
489         if (elements[i].style.display != show)\r
490             toggleVisible(elements[i]);\r
491     }\r
492 \r
493     var elements1 = getElementsByClass(document, "div", "vio_sta_secbody");\r
494     for (var i = 0; i < elements1.length; i++)\r
495     {\r
496         if (elements1[i].style.display != show)\r
497             toggleVisible(elements1[i]);\r
498     }\r
499 }\r
500 \r
501 function expandViolations(show)\r
502 {\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
506     {\r
507         if (elements[i].style.display != show)\r
508             toggleVisible(elements[i]);\r
509     }\r
510 }\r
511 \r
512 function expandViolationSections(show)\r
513 {\r
514     var show =show ? "block" :"none" ;\r
515 }\r
516 \r
517 function getElementsByClass(rootNode, elemName, className)\r
518 {\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
522     {\r
523         if (elements[i].className == className)\r
524             result[idx++] = elements[i];\r
525     }\r
526     return result;\r
527 }\r
528 \r
529 //-->\r
530 </script>\r
531 </head>\r
532 \r
533 <body onload="initialize();">\r
534 <noscript>\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
536 </noscript>\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"> 03/23/14 21:45:52</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
563 </table>\r
564 <div>\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
569 </div>\r
570 <div class="sta_sec" id="violations">\r
571 <div>\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
575 </a>\r
576 </div><div class="vio_sta_secbody"><div class="sta_sec_desc">No Timing Violations</div>\r
577 </div>\r
578 </div>\r
579 <div class="sta_sec" id="clock_summary">\r
580 <div>\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
584 </a>\r
585 </div><div class="sta_secbody"><table class="sta_clocksummary">\r
586  <thead> \r
587 <tr> \r
588 <th>Clock</th>\r
589 <th>Domain</th>\r
590 <th>Nominal Frequency</th>\r
591 <th>Required Frequency</th>\r
592 <th>Maximum Frequency</th>\r
593 <th>Violation</th>\r
594 </tr>\r
595 </thead> \r
596 <tbody>\r
597 <tr> \r
598  <td class = "text_info">CyILO</td>\r
599  <td class = "text_info">CyILO</td>\r
600  <td class = "number">100.000&nbsp;kHz</td>\r
601  <td class = "number">100.000&nbsp;kHz</td>\r
602  <td class = "number"> N/A </td>\r
603  <td class = "text_info"> </td>\r
604 </tr>\r
605 <tr> \r
606  <td class = "text_info">CyIMO</td>\r
607  <td class = "text_info">CyIMO</td>\r
608  <td class = "number">24.000&nbsp;MHz</td>\r
609  <td class = "number">24.000&nbsp;MHz</td>\r
610  <td class = "number"> N/A </td>\r
611  <td class = "text_info"> </td>\r
612 </tr>\r
613 <tr> \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&nbsp;MHz</td>\r
617  <td class = "number">64.000&nbsp;MHz</td>\r
618  <td class = "number"> N/A </td>\r
619  <td class = "text_info"> </td>\r
620 </tr>\r
621 <tr> \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&nbsp;MHz</td>\r
625  <td class = "number">64.000&nbsp;MHz</td>\r
626  <td class = "number"> N/A </td>\r
627  <td class = "text_info"> </td>\r
628 </tr>\r
629 <tr> \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&nbsp;MHz</td>\r
633  <td class = "number">64.000&nbsp;MHz</td>\r
634  <td class = "number"> N/A </td>\r
635  <td class = "text_info"> </td>\r
636 </tr>\r
637 </tbody>\r
638  </table> \r
639 </div>\r
640 </div>\r
641 </body>\r
642 </html>