Make same_state/save_state warn on empty params

If a block's mask is configured to evaluate a given edit field, accessing the
mask variable in the mask init pane will return the value that the edit field
string evaluated to.  Unfortunately, if evaluating the string raises an error,
the mask init callback will (or at least sometimes does) ignore the error and
pass an empty array for that parameter's value.  This can result in the mask
init script silently doing unexpected/wrong things.

This gets around that problem by logging and rethrowing an exception.  The
exception is logged because otherwise it will silently abort the mask init
script.  This way it non-silently aborts the mask init script.
Merge remote-tracking branch 'davidm/master'
Make same_state/save_state tolerate empty defaults
Change how same_state/save_state throws exception

The initial implementation used dump_and_rethrow to ensure that the exception
was dumped before throwing it.  Unfortunately, dump_and_rethrow uses rethrow
which only work if the exception already has been thrown and caught.  This is
not the case in same_state/save_state, so now they just call dump_exception and
then throw.
Merge remote-tracking branch 'davidm/master'
small bug fixes to new hw_routes logic
Improve how update_casper_block uses add_block

Now update_casper_block uses add_block to place the new block directly in its
final subsystem rather than placing it at the top level.  Placing the block at
the top level did prevent the parent's mask init script from running, but it
ran the risk of running the block's mask init script without access to parent's
mask variables that the block's mask might reference.  The new block really
needs to be added directly to its subsystem instead of adding it to the top
level and then moving to its subsystem.  To prevent the parent's mask init
script from running, we save the value of parent's MaskInitialization
parameter, set it to an empty string, add the block, then restore the parent's
MaskInitialization parameter.

The newly placed block is also nudged around a little in position to make sure
it connects to the lines that were left behind when the old block was deleted.
It also bulges the block out and back slightly to get the port spacing correct.
Remove save_state's call to backpopulate_mask

It is unclear to me why backpopulate_mask is (still) called from save_state.  I
think the backpopulating of masks was started long ago when the evaluation of
mask parameters was buggy leading to lots of crashes.

In fact, calling backpopulate_mask in save_state can defeat user masks.  For
example, assume a user creates a masked subsystem with a mask parameter named
"DelayLen" that is currently set to 100.  The user then adds a CASPER block to
that subsystem and sets one of the CASPER block's mask parameters to
"DelayLen".  If the CASPER block's mask init script calls save_state which
calls backpopulate_mask, that parameter of the CASPER block will be
backpopulated to "100" based on the current value of the DelayLen parameter in
the user's mask.  If the user then changes their block's DelayLen parameter,
the CASPER block will not change to reflect the new value since its mask
parameter is now hardcoded to 100!

I think things are more stable now, so it's probably worth trying to live
without backpopulating masks in save_state.
Merge remote-tracking branch 'davidm/master'
GPIO compile fail fix

load_hw_routes did not load the required hardware settings into variables in the workspace,
just into a struct. Logic now runs through the struct and converts the fields into variables
in the workspace. Tested with compiles.
Explicit latency settings for Relational blocks

The default latency for Relational blocks changed between System Generator versions.
Scripts created for older versions of System Generator assume a default latency of
1 but the latest System Generator version has a default latency of 0.
Scripts updated to be explict.
casper_library/mirror_spectrum_init.m - latency=0
casper_library/address_gen_vacc_v3_mask.m - latency=1
casper_library/delay_wideband_prog_init.m - latency=1
Added a yellow block for the DDR3 of the ROACH2 - this includes the ddr3
pcores and modifying the dram xps matlab scripts.
asynchronous option added to bus_addsub
small default parameters fix for bus_addsub_init.m
cmult upgrade

asynchronous operation logic change from en port to every block to
en pipeline feeding blocks in progression.

multiplier implemention option allowing choice of hdl, core, embedded
multiplier core. Found to be useful in getting timing with beamformer.
bus_mult upgrade

multiplier implementation parameter option added
Fix option parsing in resynth_netlist.m

The check for an even varargin length must be done after removing the optional
netlist name, if provided.
Add ability to reset dump_exception

dump_exception stores the most recently dumped exception so that it will not
dump the same exception multiple times in a row as it bubbles up the call
stack.  Sometimes an exception being dumped happens to match the previously but
not recently dumped exception.  In that case, the exception is not dumped
thereby depriving the user of (potentially) useful information.  This commit
modifies dump_exception so that calling it with an empty value (i.e. '' or [])
will cause it to clear its stored exception.  This provides a way for scripts
to ensure that dump_exception will always dump the next exception being dumped.
Make update_casper_block{,s} reset dump_exception

The update_casper_block and update_casper_blocks functions now reset
dump_exception so that exceptions will be dumped even if they happen to match
previously dumped exceptions.
window_delay fix

A script was recently used to change all edge, posedge, and negedge
blocks to dynamic edge_detect blocks. window_delay did not have
setting to allow block to modify its internals enabled so that
the internal logic was the default from the library. This broke the
xengine that uses window_delay. Fixed by disabling links of edge_detect
blocks to library and changing setting so that logic can change within
window_delay block. xengine works again.