Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
vecs
FIJI Public
Commits
40a38247
Commit
40a38247
authored
Aug 31, 2015
by
Christian Fibich
Committed by
Stefan Tauner
Aug 29, 2016
Browse files
fiji_setup beautification. tried to make it look like Altera's MegaFunction Wizard.
parent
d12504b6
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
FIJI.pm
View file @
40a38247
...
...
@@ -418,19 +418,19 @@ BEGIN {
description
=>
"
Settings concerning internal and external fault injection triggers
"
},
reset_to_dut
=>
{
title
=>
"
Reset
Settings
",
subtitle
=>
"
Reset from FIC to DUT
",
title
=>
"
Reset
from FIC to DUT
",
subtitle
=>
"",
description
=>
"
Settings concerning FIJI's ability to reset the DUT
"
},
reset_from_dut
=>
{
title
=>
"
Reset
Settings
",
subtitle
=>
"
Reset from DUT to FIC
",
title
=>
"
Reset
from DUT to FIC
",
subtitle
=>
"",
description
=>
"
Settings concerning FIJI's internal (from DUT) reset feature
"
},
reset_external
=>
{
title
=>
"
Reset Settings
",
subtitle
=>
"
External Reset
",
description
=>
"
Settings concerning FIJI's external (via pin)reset
feature
"
title
=>
"
External Reset
",
subtitle
=>
"",
description
=>
"
Settings concerning FIJI's external (via pin)
reset feature
"
},
lfsr
=>
{
title
=>
"
LFSR Settings
",
...
...
Tk/FIJISettingsCanvas.pm
0 → 100644
View file @
40a38247
This diff is collapsed.
Click to expand it.
Tk/FIJISettingsViewer.pm
View file @
40a38247
...
...
@@ -27,11 +27,13 @@ package Tk::FIJISettingsViewer;
use
strict
;
use
warnings
;
use
utf8
;
use
Log::
Log4perl
qw(get_logger)
;
use
Scalar::
Util
'
blessed
';
use
Tk
;
use
Tk::
widgets
qw(LabFrame Balloon Label Entry Pane Button Dialog DialogBox Checkbutton CompleteEntry NoteBook StatusBar)
;
use
Tk::
widgets
qw(LabFrame Balloon Label Entry Pane Button Dialog DialogBox Checkbutton CompleteEntry NoteBook StatusBar
FIJISettingsCanvas
)
;
use
Tk::
DynaMouseWheelBind
;
...
...
@@ -46,8 +48,11 @@ use Data::Dumper;
Construct
Tk::
Widget
'
FIJISettingsViewer
';
my
$nb
;
# notebook holding constants and FIU frame
my
$pg_design
;
# notebook page containing constants
my
$pg_fius
;
# notebook page containing constants
my
$pages_design
;
# notebook page containing constants
my
$page_design
;
my
$settings_canvas
;
my
$dcc
;
my
$page_fius
;
# notebook page containing constants
my
$fr_fius
;
# labled frame surrounding widgets representing design constant
my
$widget_background
;
...
...
@@ -65,6 +70,8 @@ sub Populate {
my
$logger
=
get_logger
();
my
(
$self
,
$args
)
=
@_
;
my
$settings
=
delete
$args
->
{'
-settings
'};
$self
->
{'
documentation_path
'}
=
delete
$args
->
{'
-documentation_path
'};
if
(
!
defined
(
$settings
)
||
!
blessed
(
$settings
)
||
!
$settings
->
isa
("
FIJI::Settings
"))
{
$logger
->
error
("
Given settings are not of type FIJI::Settings. No way to report this back from the constructor...
");
}
else
{
...
...
@@ -73,6 +80,11 @@ sub Populate {
$logger
->
debug
("
Adding empty fius array to settings reference.
");
$self
->
{'
settings
'}
->
{'
fius
'}
=
[]
;
}
# tk:trace for canvas update
$self
->
traceVariable
(
$self
->
{'
settings
'}
->
{'
design
'},
'
w
'
=>
[
\
&_update_canvas
,
$self
]);
$self
->
traceVariable
(
$self
->
{'
settings
'}
->
{'
fius
'},
'
w
'
=>
[
\
&_update_canvas
,
$self
]);
}
# FIXME: add an option to store a CODE reference that is called when any field is invalid
...
...
@@ -87,6 +99,11 @@ sub Populate {
$self
->
update
();
}
sub
bla
{
my
(
$index
,
$value
,
$op
,
@args
)
=
@_
;
print
$index
.
"
"
.
$value
.
"
"
.
$op
.
"
\n
";
}
sub
nets
{
my
$logger
=
get_logger
();
...
...
@@ -128,9 +145,14 @@ sub settings {
return
undef
;
}
$self
->
{'
settings
'}
=
$settings
;
# tk:trace for canvas update
$self
->
traceVariable
(
$self
->
{'
settings
'}
->
{'
design
'},
'
w
'
=>
[
\
&_update_canvas
,
$self
]);
$self
->
traceVariable
(
$self
->
{'
settings
'}
->
{'
fius
'},
'
w
'
=>
[
\
&_update_canvas
,
$self
]);
$self
->
update
();
}
return
$self
->
{'
settings
'}
return
$self
->
{'
settings
'}
;
}
sub
resources
{
...
...
@@ -147,9 +169,9 @@ sub update {
my
$self
=
shift
;
my
$logger
=
get_logger
();
################
# design panel #
################
################
#
# design panel
s
#
################
#
# Ugly hack to retrieve the design constants widgets.
# Alternatively to below one could store the respective widgets separately.
...
...
@@ -162,15 +184,13 @@ sub update {
my
@design_widgets
;
foreach
my
$c
((
$pg_design
->
Subwidget
('
pane
')
->
children
)[
0
]
->
children
)
{
if
(
ref
(
$c
)
eq
"
Tk::LabFrame
")
{
foreach
my
$w
(
$c
->
Subwidget
('
frame
')
->
children
)
{
push
@design_widgets
,
$w
;
}
foreach
my
$f
(
@
{
$pages_design
})
{
foreach
my
$c
(
$f
->
children
)
{
push
@design_widgets
,
$c
;
}
}
#my @design_widgets = $p
g
_design->children;
#my @design_widgets = $p
age
_design->children;
my
$const_cnt
=
@design_widgets
;
my
$net_choices
=
defined
(
$self
->
{'
nets
'})
?
$self
->
{'
nets
'}
:
[]
;
...
...
@@ -268,83 +288,139 @@ sub update {
####
## Calc resource estimate
my
$rh
=
FIJI::Settings::
estimate_resources
(
$self
->
{'
settings
'});
$
{
$self
->
{'
resources
'}}
=
"
~
"
.
$rh
->
{'
regs
'}
.
"
Registers,
"
.
$rh
->
{'
comb_min
'}
.
"
-
"
.
$rh
->
{'
comb_max
'}
.
"
LUTs (tech-dependent)
";
$self
->
{'
resources
'}
=
"
~
"
.
$rh
->
{'
regs
'}
.
"
Registers,
"
.
$rh
->
{'
comb_min
'}
.
"
-
"
.
$rh
->
{'
comb_max
'}
.
"
LUTs (tech-dependent)
";
$settings_canvas
->
configure
(
-
settings_ref
=>\
(
$self
->
{'
settings
'}))
if
defined
$settings_canvas
;
return
1
;
}
## @method _populate_widget()
# Creates, aranges and binds all widgets
#
sub
_switchtab
{
my
(
$dummy
,
$nb
,
$inc
)
=
@_
;
my
@pages
=
$nb
->
pages
();
my
$current_page
=
$nb
->
raised
();
my
(
$index
)
=
grep
{
$pages
[
$_
]
eq
$current_page
}
0
..
(
@pages
-
1
);
my
$next_page
=
$pages
[
$index
+
$inc
];
$nb
->
raise
(
$next_page
)
if
((
$inc
>
0
&&
defined
$next_page
)
||
(
$inc
<
0
&&
$index
>
0
));
}
sub
_populate_widget
{
my
$logger
=
get_logger
();
my
(
$self
,
$fr
)
=
@_
;
# Add and init Buttons to bottom frame for "Wizard-Like" navigation
$nb
=
$fr
->
NoteBook
()
->
pack
(
-
expand
=>
1
,
-
fill
=>
'
both
'
);
my
$pg_design_main
=
$nb
->
add
("
design
",
-
label
=>
"
Design Constants
",
-
underline
=>
0
);
# Make the grid containing the fius scrollable (with the help of DynaMouseWheelBind)
$pg_design
=
$pg_design_main
->
Scrolled
('
Pane
',
-
scrollbars
=>
'');
$pg_design
->
pack
(
'
-expand
'
=>
1
,
'
-fill
'
=>
'
both
',
'
-anchor
'
=>
'
nw
',
'
-side
'
=>
'
top
',
my
$bf
=
$fr
->
Frame
(
-
borderwidth
=>
1
,
-
relief
=>
'
raised
',)
->
pack
(
-
expand
=>
1
,
-
fill
=>
'
both
'
);
my
$b
=
$pg_design
->
Balloon
();
my
$i
=
0
;
my
$bn
=
$bf
->
Button
(
-
text
=>
"
Next >
",
-
command
=>
[
\
&_switchtab
,
undef
,
$nb
,
1
],);
my
$bb
=
$bf
->
Button
(
-
text
=>
"
< Back
",
-
command
=>
[
\
&_switchtab
,
undef
,
$nb
,
-
1
],);
# Add and resources field to bottom frame
my
$rl
=
$bf
->
Label
(
-
textvariable
=>\
$self
->
{'
resources
'});
$bn
->
pack
(
-
side
=>
"
right
");
$bb
->
pack
(
-
side
=>
"
right
");
if
(
defined
$self
->
{'
documentation_path
'})
{
$bf
->
Button
(
-
text
=>
"
Open Documentation
",
-
command
=>
sub
{
if
(
$^O
eq
"
MSWin32
")
{
system
(
1
,
"
start
"
.
$self
->
{'
documentation_path
'});
}
elsif
(
$^O
eq
"
linux
")
{
system
("
xpdf
"
.
$self
->
{'
documentation_path
'}
.
"
+
"
.
$nb
->
raised
()
.
"
&
");
}
else
{
my
$d
=
$bf
->
Dialog
(
-
title
=>
"
Open Documentation
",
-
buttons
=>
["
OK
"]);
$d
->
Label
(
-
text
=>
"
No default PDF viewer for OS
\"
"
.
$^O
.
"
\"
...
")
->
pack
(
-
side
=>
"
top
");
$d
->
Label
(
-
text
=>
"
Open
")
->
pack
(
-
side
=>
"
left
");
my
$e
=
$d
->
Entry
(
-
textvariable
=>\
$self
->
{'
documentation_path
'})
->
pack
(
-
side
=>
"
left
");
$e
->
configure
(
-
state
=>
"
readonly
");
$d
->
Label
(
-
text
=>
"
manually
")
->
pack
(
-
side
=>
"
left
");
$d
->
Show
();
}
})
->
pack
(
-
side
=>
"
right
");
}
$rl
->
pack
(
-
side
=>
"
left
");
$pages_design
=
[]
;
$pg_design
->
gridColumnconfigure
(
2
,
'
-weight
'
=>
1
);
# create Tk::Balloon instance for tooltips
my
$b
=
$fr
->
Balloon
();
my
$dm_ref
=
DESIGNMAP
;
# Work around Perl limitation: use constant <hash> and dereferencing does not play well together
my
$dg_ref
=
DISPLAYGROUPS
;
my
$entry
;
my
$dgi
=
0
;
my
$gc
=
0
;
my
$net_choices
=
defined
(
$self
->
{'
nets
'})
?
$self
->
{'
nets
'}
:
[]
;
my
$tooltip_hash
=
{};
my
$entry
;
$nb
->
parent
->
parent
->
bind
('
<Left>
'
=>
[
\
&_switchtab
,
$nb
,
-
1
]);
$nb
->
parent
->
parent
->
bind
('
<Right>
'
=>
[
\
&_switchtab
,
$nb
,
1
]);
# add canvas for Block Diagram
my
$sc
;
foreach
my
$displaygroup
(
sort
(
keys
(
%
{
$dg_ref
})))
{
# filter out just the Settings Fields in this Display group
my
@keys
=
map
{
my
$foo
=
$_
;
(
defined
DESIGNMAP
->
{
$foo
}
->
{'
group
'}
&&
DESIGNMAP
->
{
$foo
}
->
{'
group
'}
eq
$displaygroup
)
?
(
$_
)
:
()
}
keys
(
%
{
$dm_ref
});
if
(
@keys
==
0
)
{
next
};
my
$row
=
1
;
my
$i
=
0
;
my
@keys
=
map
{
my
$foo
=
$_
;
(
defined
DESIGNMAP
->
{
$foo
}
->
{'
group
'}
&&
DESIGNMAP
->
{
$foo
}
->
{'
group
'}
eq
$displaygroup
)
?
(
$_
)
:
()
}
keys
(
%
{
$dm_ref
});
if
(
@keys
==
0
)
{
next
};
my
$title
=
DISPLAYGROUPS
->
{
$displaygroup
}
->
{'
title
'};
$title
.=
"
:
"
.
DISPLAYGROUPS
->
{
$displaygroup
}
->
{'
subtitle
'}
if
DISPLAYGROUPS
->
{
$displaygroup
}
->
{'
subtitle
'}
ne
"";
# make labframe for this display group
my
$lf
=
$pg_design
->
LabFrame
(
-
label
=>
$title
,
-
labelside
=>
"
acrosstop
");
# add new notebook page
my
$page
=
$nb
->
add
(
$displaygroup
,
-
anchor
=>
"
ne
",
-
label
=>
DISPLAYGROUPS
->
{
$displaygroup
}
->
{'
title
'}
.
"
\x{25B6}
");
# add frame for Block Diagram / Description
my
$description_frame
=
$page
->
Frame
();
$description_frame
->
Label
(
-
text
=>
DISPLAYGROUPS
->
{
$displaygroup
}
->
{'
description
'})
->
pack
(
-
fill
=>
"
both
");
# add frame for configuration widgets
my
$config_frame
=
$page
->
Frame
();
# let description eat up all the remaining space
$lf
->
Subwidget
('
frame
')
->
gridColumnconfigure
(
0
,
-
weight
=>
1
);
# if the tab is changed, delete the existing canvas
# and create a new one in the tab currently shown.
$nb
->
pageconfigure
(
$displaygroup
,
-
raisecmd
=>
sub
{
$settings_canvas
->
packForget
()
if
defined
$settings_canvas
;
$settings_canvas
->
destroy
if
defined
$settings_canvas
;
$settings_canvas
=
$description_frame
->
FIJISettingsCanvas
(
-
relief
=>
"
solid
",
-
borderwidth
=>
"
1
",
-
settings_ref
=>\
(
$self
->
{'
settings
'}))
->
pack
(
-
fill
=>
"
both
");
$b
->
attach
(
$settings_canvas
,
-
balloonposition
=>
'
mouse
',
-
msg
=>
"
Implementation Overview
")
;
});
# add tooltip for description label
# let entries eat up all the remaining space
$config_frame
->
gridColumnconfigure
(
2
,
-
weight
=>
1
);
# add tooltip the entire notebook page
if
(
defined
DISPLAYGROUPS
->
{
$displaygroup
}
->
{'
description
'})
{
$b
->
attach
(
$lf
->
Subwidget
('
label
'),
-
balloonposition
=>
'
mouse
',
-
msg
=>
DISPLAYGROUPS
->
{
$displaygroup
}
->
{'
description
'});
$b
->
attach
(
$lf
->
Subwidget
('
frame
'),
-
balloonposition
=>
'
mouse
',
$b
->
attach
(
$page
,
-
balloonposition
=>
'
mouse
',
-
msg
=>
DISPLAYGROUPS
->
{
$displaygroup
}
->
{'
description
'});
}
# my $label = $pg_design->Label(
# '-text' => DISPLAYGROUPS->{$displaygroup}->{'description'},
# )->pack;
# add matching widgets for all (editable) values in this displaygroup
foreach
my
$k
(
sort
(
@keys
))
{
# label
my
$label
=
$
lf
->
Label
(
my
$label
=
$
config_frame
->
Label
(
'
-text
'
=>
DESIGNMAP
->
{
$k
}
->
{'
description
'},
'
-justify
'
=>
'
left
'
);
...
...
@@ -353,7 +429,7 @@ sub _populate_widget {
'
-sticky
'
=>
'
w
'
);
# unit
my
$unit
=
$
lf
->
Label
(
my
$unit
=
$
config_frame
->
Label
(
'
-text
'
=>
DESIGNMAP
->
{
$k
}
->
{'
unit
'},
);
$unit
->
grid
(
-
row
=>
$row
,
-
column
=>
1
,
...
...
@@ -363,7 +439,7 @@ sub _populate_widget {
# entry
my
$type
=
DESIGNMAP
->
{
$k
}
->
{'
type
'};
if
(
defined
(
$type
)
&&
$type
eq
'
net
')
{
$entry
=
$
lf
->
CompleteEntry
(
$entry
=
$
config_frame
->
CompleteEntry
(
);
$entry
->
configure
(
'
-validate
'
=>
'
key
',
...
...
@@ -374,7 +450,7 @@ sub _populate_widget {
'
-sticky
'
=>
'
ew
'
);
}
elsif
(
defined
(
$type
)
&&
$type
eq
'
toplevel_port
')
{
$entry
=
$
lf
->
CompleteEntry
(
$entry
=
$
config_frame
->
CompleteEntry
(
);
$entry
->
configure
(
'
-validate
'
=>
'
key
',
...
...
@@ -385,7 +461,7 @@ sub _populate_widget {
'
-sticky
'
=>
'
ew
'
);
}
elsif
(
defined
(
$type
)
&&
$type
eq
'
boolean
')
{
$entry
=
$
lf
->
Checkbutton
(
$entry
=
$
config_frame
->
Checkbutton
(
'
-state
'
=>
(
DESIGNMAP
->
{
$k
}
->
{'
noedit
'})
?
"
disabled
"
:
"
normal
",
'
-justify
'
=>
'
left
',
);
...
...
@@ -393,7 +469,7 @@ sub _populate_widget {
'
-sticky
'
=>
'
w
'
);
}
elsif
(
defined
(
$type
)
&&
$type
eq
'
bit
')
{
$entry
=
$
lf
->
Optionmenu
(
$entry
=
$
config_frame
->
Optionmenu
(
'
-options
'
=>
DESIGNMAP
->
{
$k
}
->
{'
values
'},
'
-textvariable
'
=>
\
$self
->
{'
settings
'}
->
{'
design
'}
->
{
$k
},
'
-width
'
=>
-
1
,
...
...
@@ -403,13 +479,13 @@ sub _populate_widget {
'
-sticky
'
=>
'
w
'
);
}
else
{
$entry
=
$
lf
->
Entry
('
-state
'
=>
(
DESIGNMAP
->
{
$k
}
->
{'
noedit
'})
?
"
disabled
"
:
"
normal
");
$entry
=
$
config_frame
->
Entry
('
-state
'
=>
(
DESIGNMAP
->
{
$k
}
->
{'
noedit
'})
?
"
disabled
"
:
"
normal
");
$entry
->
configure
(
'
-validate
'
=>
'
key
',
'
-validatecommand
'
=>
[
\
&_validate_design_entry
,
$self
,
$entry
,
$k
],
);
$entry
->
grid
(
-
row
=>
$row
,
-
column
=>
2
,
'
-sticky
'
=>
'
w
'
'
-sticky
'
=>
'
e
w
'
);
}
if
(
defined
(
DESIGNMAP
->
{
$k
}
->
{'
depends_on
'}))
{
...
...
@@ -436,26 +512,58 @@ sub _populate_widget {
},
);
# Widget description is needed for widget-based error messages such as
# "Forbids"
$entry
->
{'
description
'}
=
DESIGNMAP
->
{
$k
}
->
{'
description
'};
$row
++
;
}
$dgi
+=
1
if
$gc
==
0
;
$lf
->
grid
(
-
row
=>
$dgi
,
-
column
=>
$gc
,
-
sticky
=>
"
ewns
");
$gc
=
(
$gc
+
1
)
%
2
;
$description_frame
->
pack
(
-
anchor
=>
"
e
",
-
side
=>
"
left
");
$config_frame
->
pack
(
-
side
=>
"
left
",
-
fill
=>
"
both
",
-
expand
=>
1
);
push
@
{
$pages_design
},
$config_frame
;
}
$widget_background
=
$entry
->
cget
('
-bg
');
$widget_background
=
$entry
->
cget
('
-bg
');
##############
# fius panel #
##############
$p
g
_fius
=
$nb
->
add
('
fius
',
$p
age
_fius
=
$nb
->
add
('
fius
',
-
label
=>
'
FIUs
',
-
underline
=>
0
);
$self
->
_add_fiu_panel
(
$pg_fius
);
# add frame for Block Diagram / Description
my
$description_frame
=
$page_fius
->
Frame
();
$description_frame
->
Label
(
-
text
=>
"
Settings concerning Fault Injection Units
")
->
pack
(
-
fill
=>
"
both
");
# add frame for configuration widgets
my
$config_frame
=
$page_fius
->
Frame
();
$description_frame
->
pack
(
-
anchor
=>
"
e
",
-
side
=>
"
left
");
$config_frame
->
pack
(
-
side
=>
"
left
",
-
fill
=>
"
both
",
-
expand
=>
1
);
$nb
->
DynaMouseWheelBind
('
Tk::Pane
');
# if the tab is changed, delete the existing canvas
# and create a new one in the tab currently shown.
$nb
->
pageconfigure
("
fius
",
-
raisecmd
=>
sub
{
$settings_canvas
->
packForget
()
if
defined
$settings_canvas
;
$settings_canvas
->
destroy
if
defined
$settings_canvas
;
$settings_canvas
=
$description_frame
->
FIJISettingsCanvas
(
-
relief
=>
"
solid
",
-
borderwidth
=>
"
1
",
-
settings_ref
=>\
(
$self
->
{'
settings
'}))
->
pack
(
-
fill
=>
"
both
");
$b
->
attach
(
$settings_canvas
,
-
balloonposition
=>
'
mouse
',
-
msg
=>
"
Implementation Overview
")
;
});
$self
->
_add_fiu_panel
(
$config_frame
);
}
# This is the Tk::Trace callback for FIJI::Settings.
# It is needed for updating the Block Diagram whenever the Settings change
sub
_update_canvas
{
my
(
$index
,
$value
,
$op
,
$self
)
=
@_
;
$settings_canvas
->
update
()
if
defined
$settings_canvas
;
return
$value
;
}
sub
_add_fiu_panel
{
my
(
$self
,
$fr
)
=
@_
;
...
...
@@ -506,11 +614,14 @@ sub _fiu_cnt {
sub
get_ctrl_dimensions
{
my
$self
=
shift
;
$self
->
update
;
my
$h
=
0
;
my
$g
=
$nb
->
geometryinfo
();
my
$scrolled
=
$pg_design
;
my
$h
=
$pg_design
->
height
()
+
$scrolled
->
Subwidget
('
xscrollbar
')
->
cget
('
width
');
my
$w
=
$pg_design
->
width
()
+
$scrolled
->
Subwidget
('
yscrollbar
')
->
cget
('
width
');
return
(
$w
,
$h
);
foreach
my
$page
(
$nb
->
pages
())
{
my
$pagew
=
$nb
->
page_widget
(
$page
);
$h
=
$pagew
->
height
()
if
(
$pagew
->
height
()
>
$h
);
}
return
(
$g
->
[
0
],
$h
);
}
# FIXME broken by notebook i think
...
...
@@ -642,22 +753,8 @@ sub _add_fiu ($$) {
$del_button
,
);
# if ($vn && defined $fiu->{'FIU_DRIVER_PATH'} && defined $fiu->{'FIU_DRIVER_TYPE'}) {
# my $vd = $self->_validate_driver($fiu->{'FIU_DRIVER_PATH'},$fiu->{'FIU_DRIVER_TYPE'});
# my $msg = "Driver ".$fiu->{'FIU_DRIVER_TYPE'}.":".$fiu->{'FIU_DRIVER_PATH'}." for ".$fiu->{'FIU_NET_NAME'};
# if(defined $vd && $vd == 0) {
# $msg .= " is invalid. Selecting new driver.";
# _select_driver_dialog($self, \$fiu->{'FIU_NET_NAME'}, $i);
# } elsif (defined $vd && $vd == 1) {
# $msg .= " is valid.";
# } else {
# $msg .= " cannot be validated.";
# }
# $logger->info($msg);
# } elsif( $vn && (!defined $fiu->{'FIU_DRIVER_PATH'} || !defined $fiu->{'FIU_DRIVER_TYPE'})) {
# $logger->info("No driver selected. Selecting new driver.");
# _select_driver_dialog($self, \$fiu->{'FIU_NET_NAME'}, $i);
# }
# update Block Diagram
$settings_canvas
->
update
()
if
defined
$settings_canvas
;
}
sub
_update_fields
{
...
...
@@ -691,7 +788,7 @@ sub _update_fields {
####
## Calc resource estimate
my
$rh
=
FIJI::Settings::
estimate_resources
(
$self
->
{'
settings
'});
$
{
$self
->
{'
resources
'}
}
=
"
~
"
.
$rh
->
{'
regs
'}
.
"
Registers,
"
.
$rh
->
{'
comb_min
'}
.
"
-
"
.
$rh
->
{'
comb_max
'}
.
"
LUTs (tech-dependent)
";
$self
->
{'
resources
'}
=
"
~
"
.
$rh
->
{'
regs
'}
.
"
Registers,
"
.
$rh
->
{'
comb_min
'}
.
"
-
"
.
$rh
->
{'
comb_max
'}
.
"
LUTs (tech-dependent)
";
return
$rv
;
}
...
...
@@ -925,7 +1022,7 @@ sub _validate_entry {
####
## Calc resource estimate
my
$rh
=
FIJI::Settings::
estimate_resources
(
$self
->
{'
settings
'});
$
{
$self
->
{'
resources
'}
}
=
"
~
"
.
$rh
->
{'
regs
'}
.
"
Registers,
"
.
$rh
->
{'
comb_min
'}
.
"
-
"
.
$rh
->
{'
comb_max
'}
.
"
LUTs (tech-dependent)
";
$self
->
{'
resources
'}
=
"
~
"
.
$rh
->
{'
regs
'}
.
"
Registers,
"
.
$rh
->
{'
comb_min
'}
.
"
-
"
.
$rh
->
{'
comb_max
'}
.
"
LUTs (tech-dependent)
";
return
1
;
# always allow the new value and show the user what happened.
}
...
...
fiji.cfg
View file @
40a38247
; Config::Simple 4.58
;
Tue
Aug
25
16:
55:14
2015
;
Mon
Aug
31
16:
18:03
2015
[FIU0]
FAULT_MODEL=RUNTIME
NET_NAME=i2c_master_top|i2c_master_byte_ctrl|i2c_master_bit_ctrl|N_152_tz
LFSR_MASK=0x0
DRIVER_PATH=i2c_master_bit_ctrl|al_RNIHURE|combout
DRIVER_TYPE=PIN
[FIU1]
LFSR_MASK=0x0
DRIVER_PATH=i2c_master_bit_ctrl|c_state_RNO_0_|combout
NET_NAME=i2c_master_top|i2c_master_byte_ctrl|i2c_master_bit_ctrl|N_152_tz
[FIU2]
DRIVER_PATH=i2c_master_top|byte_controller|cnt_RNIOCS1_combout_0
DRIVER_TYPE=PIN
NET_NAME=i2c_master_top|i2c_master_byte_ctrl|i2c_master_bit_ctrl|c_state_ns_0_0__g0_0_0
NET_NAME=i2c_master_top|cnt_RNIOCS1_combout
LFSR_MASK=0x0
FAULT_MODEL=RUNTIME
[FIU
2
]
[FIU
1
]
FAULT_MODEL=RUNTIME
NET_NAME=i2c_master_top|cnt_RNIOCS1_combout
DRIVER_TYPE=PIN
DRIVER_PATH=i2c_master_top|byte_controller|cnt_RNIOCS1_combout_0
DRIVER_PATH=i2c_master_bit_ctrl|c_state_RNO_0_|combout
NET_NAME=i2c_master_top|i2c_master_byte_ctrl|i2c_master_bit_ctrl|c_state_ns_0_0__g0_0_0
LFSR_MASK=0x0
DRIVER_TYPE=PIN
[CONSTS]
TRIGGER_DUT_NAME=i2c_master_top|cnt_RNIOCS1_combout
RESET_DUT_OUT_ACTIVE=0
RESET_EXT_ACTIVE=1
RESET_DUT_OUT_EN=1
TRIGGER_DUT_ACTIVE=1
LFSR_WIDTH=16
RESET_DUT_IN_NAME=wb_rst_i
CLOCK_NET=i2c_master_top|wb_clk_i_c
FAULT_DETECT_1_INVERT=0
CFGS_PER_MSG=2
TIMER_WIDTH=4
RESET_DUT_IN_EN=1
TRIGGER_EXT_ACTIVE=1
TX_OUT_NAME=s_fiji_tx_o
LFSR_POLY=0x2d
RX_IN_NAME=s_fiji_rx_i
BAUDRATE=115200
ID=0xaa4
FREQUENCY=50000000
RESET_DUT_OUT_NAME=i2c_master_top|i2c_master_byte_ctrl|c_state_ns_0_0_0_5__g1
LFSR_WIDTH=32
RESET_EXT_IN_NAME=s_fiji_reset
TRIGGER_EXT_EN=0
RESET_DUT_IN_DURATION=4
FIU_NUM=3
FAULT_DETECT_1_EN=1
RESET_
EXT_EN=0
TRIGGER_EXT_IN_NAME=s_fiji_trigger_ext
RESET_
DUT_IN_ACTIVE=1
FREQUENCY=50000000
FAULT_DETECT_2_EN=1
TRIGGER_DUT_ACTIVE=1
ID=0xaa4
RESET_EXT_ACTIVE=0
TRIGGER_DUT_EN=0
RESET_EXT_EN=1
FIU_CFG_BITS=3
RESET_DUT_IN_ACTIVE=1
FAULT_DETECT_2_INVERT=1
TRIGGER_DUT_EN=1
FAULT_DETECT_1_NAME=i2c_master_top|i2c_master_byte_ctrl|N_11_i
TRIGGER_EXT_ACTIVE=1
TRIGGER_EXT_EN=0
RESET_DUT_OUT_EN=1
RESET_DUT_IN_EN=0
RESET_DUT_IN_DURATION=4
RESET_DUT_OUT_NAME=i2c_master_top|i2c_master_byte_ctrl|c_state_ns_0_0_0_5__g1
TRIGGER_DUT_NAME=i2c_master_top|cnt_RNIOCS1_combout
TX_OUT_NAME=s_fiji_tx_o
LFSR_SEED=0xcafe
BAUDRATE=115200
FAULT_DETECT_2_NAME=i2c_master_top|i2c_master_byte_ctrl|N_70
LFSR_POLY=0x2d
FAULT_DETECT_1_NAME=i2c_master_top|i2c_master_byte_ctrl|N_11_i
TRIGGER_EXT_IN_NAME=s_fiji_trigger_ext
RX_IN_NAME=s_fiji_rx_i
FAULT_DETECT_2_INVERT=1
CFGS_PER_MSG=2
FAULT_DETECT_1_INVERT=0
CLOCK_NET=i2c_master_top|wb_clk_i_c
TIMER_WIDTH=4
RESET_DUT_IN_NAME=wb_rst_i
FIU_NUM=3
RESET_DUT_OUT_ACTIVE=0
fiji_setup.pl
View file @
40a38247
...
...
@@ -86,17 +86,17 @@ sub main {
$self
->
{'
ctrl
'}
=
_ctrl_frame
(
$self
,
$mw
);
$self
->
{'
resources
'}
=
"
...
";
#
$self->{'resources'} = "...";
$self
->
{'
StatusBar
'}
=
$mw
->
StatusBar
();
$self
->
{'
StatusBar
'}
->
addLabel
(
-
relief
=>
'
flat
',
-
textvariable
=>
\
$self
->
{'
resources
'},
);
#
$self->{'StatusBar'} = $mw->StatusBar();
#
$self->{'StatusBar'} ->addLabel(
#
-relief => 'flat',
#
-textvariable => \$self->{'resources'},
#
);
$self
->
{'
FIJISettingsViewer
'}
=
$mw
->
FIJISettingsViewer
(
-
settings
=>
$self
->
{'
settings
'},