enhanced tcl/tk widgets for eda applications gaurav bansal, roshni lalwani [email protected],...

54
Enhanced Tcl/Tk Widgets for EDA Applications Gaurav Bansal, Roshni Lalwani [email protected], [email protected] Gaurav Bansal 17'th Annual Tcl/Tk Conference (Tcl'2010) October 11 - October 15, 2010

Upload: erick-french

Post on 14-Jan-2016

226 views

Category:

Documents


4 download

TRANSCRIPT

Enhanced Tcl/Tk Widgets for EDA Applications

Gaurav Bansal, Roshni [email protected], [email protected]

Gaurav Bansal17'th Annual Tcl/Tk Conference (Tcl'2010)October 11 - October 15, 2010

DFTVisualizer

DFTVisualizer – Design and Wave Window

DFTVisualizer – Debug Window

DFTVisualizer – Browser Window

DFTVisualizer – Transcript Window

DFTVisualizer

MtiHierarchy Widgets

Text Widgets

Agenda

Enhancement in MtiHierarchy widget— Callback support for improved performance

— Sub column support

— Making tree column frozen in place (non-scrollable)

Enhancement in Text widget— Hyperlinks

— Incremental Parsing

Agenda

Enhancement in MtiHierarchy widget— Callback support for improved performance

— Sub column support

— Making tree column frozen in place (non-scrollable)

Enhancement in Text widget— Hyperlinks

— Incremental Parsing

Browser Window – MtiHierarchy Widget

Browser Window – MtiHierarchy Widget

Format used to pass information to MtiHierarchy widget for each row is<name> <app data> <label> <tag> <icon> <label> <tag> <icon>…

Browser Window – MtiHierarchy Widget

Format used to pass information to MtiHierarchy widget for each row is<name> <app data> <label> <tag> <icon> <label> <tag> <icon>…

MtiHierarchy Widget – Callback Support

0xAAAAAA {HINST IN 4 -1} TOP branch vlog_inst

<name>

MtiHierarchy Widget – Callback Support

0xAAAAAA {HINST IN 4 -1} TOP branch vlog_inst

<name> <app data>

MtiHierarchy Widget – Callback Support

0xAAAAAA {HINST IN 4 -1} TOP branch vlog_inst

<name> <app data> <label> <tag> <icon>

Display data for 1st column

<name> <app data>

MtiHierarchy Widget – Callback Support

0xAAAAAA {HINST IN 4 -1} TOP branch vlog_inst Root {} {}

<name> <app data>

Display data for 1st column

Display data for 2nd column

<label> <tag> <icon> <label> <tag> <icon>

MtiHierarchy Widget – Callback Support

0xAAAAAA {HINST IN 4 -1} TOP branch vlog_inst Root {} {}

<name> <app data>

Display data for 1st column

Display data for 2nd column

item ->name

<label> <tag> <icon> <label> <tag> <icon>

MtiHierarchy Widget – Callback Support

0xAAAAAA {HINST IN 4 -1} TOP branch vlog_inst Root {} {}

<name> <app data>

Display data for 1st column

Display data for 2nd column

item ->name item ->app data

<label> <tag> <icon> <label> <tag> <icon>

MtiHierarchy Widget – Callback Support

0xAAAAAA {HINST IN 4 -1} TOP branch vlog_inst Root {} {}

<name> <app data>

Display data for 1st column

Display data for 2nd column

item ->name item ->app data item ->data

<label> <tag> <icon> <label> <tag> <icon>

MtiHierarchy Widget – Callback Support

0xAAAAAA {HINST IN 4 -1} TOP branch vlog_inst Root {} {} 35 {} {}

<name> <app data>

Display data for 1st column

Display data for 2nd column

item ->name item ->app data item ->data

<label> <tag> <icon> <label> <tag> <icon> . . .

. . .

MtiHierarchy Widget – Callback Support

<name1> <app data1> <label11> <tag11> <icon11> <label12> <tag12> <icon12>…<name2> <app data2> <label21> <tag21> <icon21> <label22> <tag22> <icon22>…...<nameN> <app dataN> <labelN1> <tagN1> <iconN1> <labelN2> <tagN2> <iconN2>…

Static Data

MtiHierarchy Widget – Callback Support

<name1> <app data1> <label11> <tag11> <icon11> <label12> <tag12> <icon12>…<name2> <app data2> <label21> <tag21> <icon21> <label22> <tag22> <icon22>…...<nameN> <app dataN> <labelN1> <tagN1> <iconN1> <labelN2> <tagN2> <iconN2>…

Static Data Dynamic Data

MtiHierarchy Widget – Callback Support

Widget stores

<name1> <app data1> <label11> <tag11> <icon11> <label12> <tag12> <icon12>…<name2> <app data2> <label21> <tag21> <icon21> <label22> <tag22> <icon22>…...<nameN> <app dataN> <labelN1> <tagN1> <iconN1> <labelN2> <tagN2> <iconN2>…

Static Data Dynamic Data

MtiHierarchy Widget – Callback Support

Widget storesWidget gets from application at runtime

<name1> <app data1> <label11> <tag11> <icon11> <label12> <tag12> <icon12>…<name2> <app data2> <label21> <tag21> <icon21> <label22> <tag22> <icon22>…...<nameN> <app dataN> <labelN1> <tagN1> <iconN1> <labelN2> <tagN2> <iconN2>…

Static Data Dynamic Data

MtiHierarchy Widget – Callback Support

Widget storesWidget gets from application at runtime

Changes like addition/deletion of a column does not require any iterations by the widgetDisplay data is provided by the application - takes

fraction of a second

<name1> <app data1> <label11> <tag11> <icon11> <label12> <tag12> <icon12>…<name2> <app data2> <label21> <tag21> <icon21> <label22> <tag22> <icon22>…...<nameN> <app dataN> <labelN1> <tagN1> <iconN1> <labelN2> <tagN2> <iconN2>…

Static Data Dynamic Data

Side Effects

Side Effects – Sorting

Item1Item2.....ItemN

Side Effects – Sorting

Item1Item2.....ItemN

<name1> <app data1> <label11> <tag11> <icon11> <label12> <tag12> <icon12>…<name2> <app data2> <label21> <tag21> <icon21> <label22> <tag22> <icon22>…...<nameN> <app dataN> <labelN1> <tagN1> <iconN1> <labelN2> <tagN2> <iconN2>…

Static Data Dynamic Data

Side Effects – Sorting

Item1Item2.....ItemN

<name1> <app data1> <label11> <tag11> <icon11> <label12> <tag12> <icon12>…<name2> <app data2> <label21> <tag21> <icon21> <label22> <tag22> <icon22>…...<nameN> <app dataN> <labelN1> <tagN1> <iconN1> <labelN2> <tagN2> <iconN2>…

Static Data Dynamic Data

Side Effects – Sorting

<name1> <name2>.....<nameN>

Application gives us sorted list of “<name>” (item->name pointers)

Side Effects – Sorting

Application gives us sorted list of “<name>” (item->name pointers)We need the list of sorted “item” pointers.

Item1Item2.....ItemN

<name1> <name2>.....<nameN>

Side Effects – Sorting

<name1> <name2>.....<nameN>

Application gives us sorted list of “<name>” (item->name pointers)We need the list of sorted “item” pointers.So we create a hash table for item->name

and item pointer

Item1 ->nameItem1Item2 ->name Item2.....ItemN ->nameItemN

Agenda

Enhancement in MtiHierarchy widget— Callback support for improved performance

— Sub column support

— Making tree column frozen in place (non-scrollable)

Enhancement in Text widget— Hyperlinks

— Incremental Parsing

Sub-columns

Show the fault distribution of instances in various categories and sub-categories

Sub-columns

Show the fault distribution of instances in various categories and sub-categories

Categories and sub-categories should be displayed as in-place expandable/collapsible column.

Sub-columns

Overview of changes

— Enhanced MtiHeirarchy widget protocol to support the sub-column labels as a list of labels instead of column label

<name> <appdata> <sub-label1 sub-label2 sub-label3> <tag> <icon>

Sub-columns

Overview of changes

— Enhanced MtiHeirarchy widget protocol to support the sub-column labels as a list of labels instead of column label

<name> <appdata> <sub-label1 sub-label2 sub-label3> <tag> <icon>

— Provide APIs for sub-column operations like add, delete, configure, move, etc

Sub-columns

Overview of changes

— Enhanced MtiHeirarchy widget protocol to support the sub-column labels as a list of labels instead of column label

<name> <appdata> <sub-label1 sub-label2 sub-label3> <tag> <icon>

— Provide APIs for sub-column operations like add, delete, configure, move, etc

— Expandable/ collapsible we need to provide a clickable icon

Sub-columns – Approach

Sub-columns – Approach

Sub-columns – Approach

Agenda

Enhancement in MtiHierarchy widget— Callback support for improved performance

— Sub column support

— Making tree column frozen in place (non-scrollable)

Enhancement in Text widget— Hyperlinks

— Incremental Parsing

Frozen Tree Column

Frozen Tree Column

Clipper (a frame)

Frozen Tree Column

Clipper (a frame) Canvas

Frozen Tree Column

Clipper (a frame) Canvas Sfchildsite (a frame)

Frozen Tree Column

Clipper (a frame) Canvas Sfchildsite (a frame) Columns

Frozen Tree Column

Create two canvases and grid them inside the clipper as column 0 and column 1 of row 0

Frozen Tree Column

1st scrollbar alters the xview of the column 0 such that it scrolls the instance names of the tree column and not the column itself.

2nd scrollbar alters the xview of the 2nd canvas so that the rest of the columns scroll past the tree column.

Agenda

Enhancement in MtiHierarchy widget— Callback support for improved performance

— Sub column support

— Making tree column frozen in place (non-scrollable)

Enhancement in Text widget— Hyperlinks

— Incremental Parsing

Enhanced Text Widget

Text Highlighting— Text highlighting helps to point out the issues easily

Hyperlinks — Get to the relevant file or information in other windows of

the tool to debug the issues very quickly.

Incremental parsing

Enhanced Text Widget

Yes

Exit

No

Load file in to the text widget (read & write in chuck size =256k)

Calculate the boundary of visible area of text widget.

Start line = B1 and last line = B2.

Highlight the lines as per their category andParse each word and mark it as hyperlink if the

word is filename or instance name or DRC id

If the text between (B1, B2) has already been

parsed

Enhanced Text Widget – Incremental Parsing

Thank you.

54