[Pkg-electronics-commits] [verilator] 01/05: Imported Upstream version 3.855

أحمد المحمودي (Ahmed El-Mahmoudy) aelmahmoudy at sabily.org
Wed Jan 29 15:57:12 UTC 2014


This is an automated email from the git hooks/post-receive script.

aelmahmoudy-guest pushed a commit to branch master
in repository verilator.

commit e127a7c0b4a9394c37451089dfa24fc8b9789aaf
Author: أحمد المحمودي (Ahmed El-Mahmoudy) <aelmahmoudy at sabily.org>
Date:   Mon Jan 27 10:42:05 2014 +0200

    Imported Upstream version 3.855
---
 Changes                                            |  19 +-
 Makefile.in                                        |   2 +-
 README                                             |   2 +-
 README.html                                        |   2 +-
 README.pdf                                         | Bin 112233 -> 111871 bytes
 TODO                                               |   2 +-
 bin/verilator                                      |  16 +-
 bin/verilator_difftree                             |   2 +-
 bin/verilator_includer                             |   2 +-
 bin/verilator_profcfunc                            |   2 +-
 configure                                          |  18 +-
 configure.ac                                       |   4 +-
 include/verilated.cpp                              |   2 +-
 include/verilated.h                                |   2 +-
 include/verilated.mk.in                            |   2 +-
 include/verilated.v                                |   2 +-
 include/verilated_config.h                         |   4 +-
 include/verilated_config.h.in                      |   2 +-
 include/verilated_dpi.cpp                          |   2 +-
 include/verilated_dpi.h                            |   2 +-
 include/verilated_heavy.h                          |   2 +-
 include/verilated_imp.h                            |   2 +-
 include/verilated_save.cpp                         |   2 +-
 include/verilated_save.h                           |   2 +-
 include/verilated_sc.h                             |   2 +-
 include/verilated_syms.h                           |   2 +-
 include/verilated_vcd_c.cpp                        |   2 +-
 include/verilated_vcd_c.h                          |   2 +-
 include/verilated_vcd_sc.cpp                       |   2 +-
 include/verilated_vcd_sc.h                         |   2 +-
 include/verilated_vpi.cpp                          |   2 +-
 include/verilated_vpi.h                            |   2 +-
 include/verilatedos.h                              |  11 +-
 internals.html                                     |   2 +-
 internals.pdf                                      | Bin 195589 -> 195228 bytes
 internals.pod                                      |   2 +-
 internals.txt                                      |   2 +-
 readme.pod                                         |   2 +-
 src/.gdbinit                                       |   2 +-
 src/Makefile.in                                    |   2 +-
 src/Makefile_obj.in                                |   2 +-
 src/V3Active.cpp                                   |   2 +-
 src/V3Active.h                                     |   2 +-
 src/V3ActiveTop.cpp                                |   2 +-
 src/V3ActiveTop.h                                  |   2 +-
 src/V3Assert.cpp                                   |   2 +-
 src/V3Assert.h                                     |   2 +-
 src/V3AssertPre.cpp                                |   2 +-
 src/V3AssertPre.h                                  |   2 +-
 src/V3Ast.cpp                                      |   2 +-
 src/V3Ast.h                                        |   2 +-
 src/V3AstNodes.cpp                                 |   9 +-
 src/V3AstNodes.h                                   |  79 ++++---
 src/V3Begin.cpp                                    |   2 +-
 src/V3Begin.h                                      |   2 +-
 src/V3Branch.cpp                                   |   2 +-
 src/V3Branch.h                                     |   2 +-
 src/V3Broken.cpp                                   |   2 +-
 src/V3Broken.h                                     |   2 +-
 src/V3Case.cpp                                     |   2 +-
 src/V3Case.h                                       |   2 +-
 src/V3Cast.cpp                                     |   2 +-
 src/V3Cast.h                                       |   2 +-
 src/V3Cdc.cpp                                      |   2 +-
 src/V3Cdc.h                                        |   2 +-
 src/V3Changed.cpp                                  |   2 +-
 src/V3Changed.h                                    |   2 +-
 src/V3Clean.cpp                                    |   2 +-
 src/V3Clean.h                                      |   2 +-
 src/V3ClkGater.cpp                                 |   2 +-
 src/V3ClkGater.h                                   |   2 +-
 src/V3Clock.cpp                                    |   2 +-
 src/V3Clock.h                                      |   2 +-
 src/V3Combine.cpp                                  |   2 +-
 src/V3Combine.h                                    |   2 +-
 src/V3Config.cpp                                   |   2 +-
 src/V3Config.h                                     |   2 +-
 src/V3Const.cpp                                    |   2 +-
 src/V3Const.h                                      |   2 +-
 src/V3Coverage.cpp                                 |   2 +-
 src/V3Coverage.h                                   |   2 +-
 src/V3CoverageJoin.cpp                             |   2 +-
 src/V3CoverageJoin.h                               |   2 +-
 src/V3Dead.cpp                                     |   6 +-
 src/V3Dead.h                                       |   2 +-
 src/V3Delayed.cpp                                  |   2 +-
 src/V3Delayed.h                                    |   2 +-
 src/V3Depth.cpp                                    |   2 +-
 src/V3Depth.h                                      |   2 +-
 src/V3DepthBlock.cpp                               |   2 +-
 src/V3DepthBlock.h                                 |   2 +-
 src/V3Descope.cpp                                  |   2 +-
 src/V3Descope.h                                    |   2 +-
 src/V3EmitC.cpp                                    |  30 +--
 src/V3EmitC.h                                      |   2 +-
 src/V3EmitCBase.h                                  |   2 +-
 src/V3EmitCInlines.cpp                             |   2 +-
 src/V3EmitCSyms.cpp                                |   2 +-
 src/V3EmitMk.cpp                                   |   2 +-
 src/V3EmitMk.h                                     |   2 +-
 src/V3EmitV.cpp                                    |   2 +-
 src/V3EmitV.h                                      |   2 +-
 src/V3EmitXml.cpp                                  |   2 +-
 src/V3EmitXml.h                                    |   2 +-
 src/V3Error.cpp                                    |   2 +-
 src/V3Error.h                                      |   2 +-
 src/V3Expand.cpp                                   |   2 +-
 src/V3Expand.h                                     |   2 +-
 src/V3File.cpp                                     |   2 +-
 src/V3File.h                                       |   6 +-
 src/V3Gate.cpp                                     |   2 +-
 src/V3Gate.h                                       |   2 +-
 src/V3GenClk.cpp                                   |   2 +-
 src/V3GenClk.h                                     |   2 +-
 src/V3Global.h                                     |   2 +-
 src/V3Graph.cpp                                    |   2 +-
 src/V3Graph.h                                      |   2 +-
 src/V3GraphAcyc.cpp                                |   2 +-
 src/V3GraphAlg.cpp                                 |   2 +-
 src/V3GraphAlg.h                                   |   2 +-
 src/V3GraphDfa.cpp                                 |   2 +-
 src/V3GraphDfa.h                                   |   2 +-
 src/V3GraphTest.cpp                                |   2 +-
 src/V3Hashed.cpp                                   |   2 +-
 src/V3Hashed.h                                     |   2 +-
 src/V3Inline.cpp                                   |   2 +-
 src/V3Inline.h                                     |   2 +-
 src/V3Inst.cpp                                     |   2 +-
 src/V3Inst.h                                       |   2 +-
 src/V3LangCode.h                                   |   2 +-
 src/V3LanguageWords.h                              |   2 +-
 src/V3Life.cpp                                     |   2 +-
 src/V3Life.h                                       |   2 +-
 src/V3LifePost.cpp                                 |   2 +-
 src/V3LifePost.h                                   |   2 +-
 src/V3LinkCells.cpp                                |   3 +-
 src/V3LinkCells.h                                  |   2 +-
 src/V3LinkDot.cpp                                  |  31 ++-
 src/V3LinkDot.h                                    |   2 +-
 src/V3LinkJump.cpp                                 |   2 +-
 src/V3LinkJump.h                                   |   2 +-
 src/V3LinkLValue.cpp                               |   2 +-
 src/V3LinkLValue.h                                 |   2 +-
 src/V3LinkLevel.cpp                                |   2 +-
 src/V3LinkLevel.h                                  |   2 +-
 src/V3LinkParse.cpp                                |   2 +-
 src/V3LinkParse.h                                  |   2 +-
 src/V3LinkResolve.cpp                              |   2 +-
 src/V3LinkResolve.h                                |   2 +-
 src/V3List.h                                       |   2 +-
 src/V3Localize.cpp                                 |   2 +-
 src/V3Localize.h                                   |   2 +-
 src/V3Name.cpp                                     |   2 +-
 src/V3Name.h                                       |   2 +-
 src/V3Number.cpp                                   |   2 +-
 src/V3Number.h                                     |   2 +-
 src/V3Number_test.cpp                              |   2 +-
 src/V3Options.cpp                                  |   6 +-
 src/V3Options.h                                    |   4 +-
 src/V3Order.cpp                                    |   2 +-
 src/V3Order.h                                      |   2 +-
 src/V3OrderGraph.h                                 |   2 +-
 src/V3Param.cpp                                    |   2 +-
 src/V3Param.h                                      |   2 +-
 src/V3Parse.h                                      |   2 +-
 src/V3ParseGrammar.cpp                             |   2 +-
 src/V3ParseImp.cpp                                 |   2 +-
 src/V3ParseImp.h                                   |   3 +-
 src/V3ParseLex.cpp                                 |   2 +-
 src/V3ParseSym.h                                   |   2 +-
 src/V3PreLex.h                                     |   2 +-
 src/V3PreLex.l                                     |   2 +-
 src/V3PreProc.cpp                                  |   2 +-
 src/V3PreProc.h                                    |   2 +-
 src/V3PreShell.cpp                                 |   2 +-
 src/V3PreShell.h                                   |   2 +-
 src/V3Premit.cpp                                   |   2 +-
 src/V3Premit.h                                     |   2 +-
 src/V3Scope.cpp                                    |   7 +-
 src/V3Scope.h                                      |   2 +-
 src/V3SenTree.h                                    |   2 +-
 src/V3Simulate.h                                   |   2 +-
 src/V3Slice.cpp                                    |   2 +-
 src/V3Slice.h                                      |   2 +-
 src/V3Split.cpp                                    |   2 +-
 src/V3Split.h                                      |   2 +-
 src/V3SplitAs.cpp                                  |   2 +-
 src/V3SplitAs.h                                    |   2 +-
 src/V3Stats.cpp                                    |   2 +-
 src/V3Stats.h                                      |   2 +-
 src/V3StatsReport.cpp                              |   2 +-
 src/V3String.cpp                                   |   2 +-
 src/V3String.h                                     |   2 +-
 src/V3Subst.cpp                                    |   2 +-
 src/V3Subst.h                                      |   2 +-
 src/V3SymTable.h                                   |   2 +-
 src/V3Table.cpp                                    |   2 +-
 src/V3Table.h                                      |   2 +-
 src/V3Task.cpp                                     |   2 +-
 src/V3Task.h                                       |   2 +-
 src/V3Trace.cpp                                    |   2 +-
 src/V3Trace.h                                      |   2 +-
 src/V3TraceDecl.cpp                                | 191 ++++++++++++---
 src/V3TraceDecl.h                                  |   2 +-
 src/V3Tristate.cpp                                 |   2 +-
 src/V3Tristate.h                                   |   2 +-
 src/V3Undriven.cpp                                 |   2 +-
 src/V3Undriven.h                                   |   2 +-
 src/V3Unknown.cpp                                  |   2 +-
 src/V3Unknown.h                                    |   2 +-
 src/V3Unroll.cpp                                   |   2 +-
 src/V3Unroll.h                                     |   2 +-
 src/V3Width.cpp                                    |   2 +-
 src/V3Width.h                                      |   2 +-
 src/V3WidthCommit.h                                |   2 +-
 src/V3WidthSel.cpp                                 |   2 +-
 src/Verilator.cpp                                  |   2 +-
 src/astgen                                         |   2 +-
 src/bisonpre                                       |   2 +-
 src/config_build.h                                 |   4 +-
 src/config_build.h.in                              |   2 +-
 src/config_rev.h                                   |   2 +-
 src/config_rev.pl                                  |   2 +-
 src/flexfix                                        |   2 +-
 src/pod2latexfix                                   |   2 +-
 src/verilog.l                                      |   2 +-
 src/verilog.y                                      |  26 ++-
 test_c/Makefile                                    |   2 +-
 test_c/Makefile_obj                                |   2 +-
 test_c/sim_main.cpp                                |   2 +-
 test_regress/Makefile                              |   2 +-
 test_regress/Makefile_obj                          |   2 +-
 test_regress/driver.pl                             |   4 +-
 test_regress/t/TestSimulator.h                     |   2 +-
 test_regress/t/TestVpi.h                           |   2 +-
 ...ked_value_list.pl => t_array_pattern_packed.pl} |   6 +-
 ...acked_value_list.v => t_array_pattern_packed.v} |  28 +++
 ...d_value_list.pl => t_array_pattern_unpacked.pl} |   6 +-
 test_regress/t/t_array_pattern_unpacked.v          |  34 +++
 ...value_list.pl => t_interface1_modport_trace.pl} |  11 +-
 ...value_list.pl => t_interface_modport_export.pl} |   8 +-
 test_regress/t/t_interface_modport_export.v        |  74 ++++++
 ...value_list.pl => t_interface_modport_import.pl} |   8 +-
 test_regress/t/t_interface_modport_import.v        |  58 +++++
 test_regress/t/t_lint_pindup_bad.pl                |   4 +-
 test_regress/t/t_mem_multiwire.v                   |   1 +
 ...packed_value_list.pl => t_struct_init_trace.pl} |   7 +-
 test_regress/t/t_trace_complex.out                 | 148 ++++++++++++
 test_regress/t/t_trace_complex.pl                  |  31 +++
 test_regress/t/t_trace_complex.v                   |  67 ++++++
 test_regress/t/t_trace_complex_structs.out         | 260 +++++++++++++++++++++
 test_regress/t/t_trace_complex_structs.pl          |  33 +++
 test_sc/Makefile                                   |   2 +-
 test_sc/Makefile_obj                               |   2 +-
 test_sc/sc_main.cpp                                |   2 +-
 test_sp/Makefile                                   |   2 +-
 test_sp/Makefile_obj                               |   2 +-
 test_vcs/Makefile                                  |   2 +-
 test_verilated/sim_main.cpp                        |   2 +-
 test_verilated/sim_main.v                          |   2 +-
 test_verilated/vgen.pl                             |   2 +-
 verilator.1                                        |  15 +-
 verilator.html                                     |   2 +-
 verilator.pdf                                      | Bin 389267 -> 388823 bytes
 verilator.txt                                      |   2 +-
 265 files changed, 1347 insertions(+), 379 deletions(-)

diff --git a/Changes b/Changes
index 7e4abe5..0d4db6b 100644
--- a/Changes
+++ b/Changes
@@ -3,6 +3,23 @@ Revision history for Verilator
 The contributors that suggested a given feature are shown in [].  [by ...]
 indicates the contributor was also the author of the fix; Thanks!
 
+* Verilator 3.855 2014-01-18
+
+***   Support modport import, bug696. [Jeremy Bennett]
+
+***   Add --trace-structs to show struct names, bug673. [Chris Randall]
+
+****  Fix tracing of packed structs, bug705. [Jie Xu]
+
+****  Fix --lint-only with MinGW, msg1283. [HyungKi Jeong]
+
+****  Fix some delayed assignments of typedefed unpacked arrays.
+
+****  Fix wire declarations with size and not range, bug466. [Alex Solomatnikov]
+
+****  Fix parameter pin vs. normal pin error, bug704. [Alex Solomatnikov]
+
+
 * Verilator 3.854 2013-11-26
 
 ***   Add UNPACKED warning to convert unpacked structs. [Jeremy Bennett]
@@ -2303,7 +2320,7 @@ of input ports exists for tracing.
 
 This uses outline mode in Emacs.  See C-h m [M-x describe-mode].
 
-Copyright 2001-2013 by Wilson Snyder.  This program is free software; you
+Copyright 2001-2014 by Wilson Snyder.  This program is free software; you
 can redistribute it and/or modify it under the terms of either the GNU
 Lesser General Public License Version 3 or the Perl Artistic License
 Version 2.0.
diff --git a/Makefile.in b/Makefile.in
index beac5c1..5f4f72a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -9,7 +9,7 @@
 #
 #*****************************************************************************
 #
-# Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/README b/README
index ab36570..d225e3e 100644
--- a/README
+++ b/README
@@ -4,7 +4,7 @@ NAME
 
 DISTRIBUTION
 
-    This package is Copyright 2003-2013 by Wilson Snyder. (Report bugs to
+    This package is Copyright 2003-2014 by Wilson Snyder. (Report bugs to
     <http://www.veripool.org/>.)
 
     Verilator is free software; you can redistribute it and/or modify it
diff --git a/README.html b/README.html
index c2ead5b..6e354fd 100644
--- a/README.html
+++ b/README.html
@@ -39,7 +39,7 @@
 </p>
 <hr />
 <h1><a name="distribution">DISTRIBUTION</a></h1>
-<p>This package is Copyright 2003-2013 by Wilson Snyder.  (Report bugs to
+<p>This package is Copyright 2003-2014 by Wilson Snyder.  (Report bugs to
 <a href="http://www.veripool.org/">http://www.veripool.org/</a>.)</p>
 <p>Verilator is free software; you can redistribute it and/or modify it under
 the terms of either the GNU Lesser General Public License Version 3 or the
diff --git a/README.pdf b/README.pdf
index 2ca3927..f40b49f 100644
Binary files a/README.pdf and b/README.pdf differ
diff --git a/TODO b/TODO
old mode 100644
new mode 100755
index cd5bbdc..5a03225
--- a/TODO
+++ b/TODO
@@ -1,6 +1,6 @@
 // DESCRIPTION: Verilator: List of To Do issues.
 //
-// Copyright 2004-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2004-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/bin/verilator b/bin/verilator
index 2a607c0..a770e8a 100755
--- a/bin/verilator
+++ b/bin/verilator
@@ -3,7 +3,7 @@ eval 'exec perl -wS $0 ${1+"$@"}'
   if 0;
 ######################################################################
 #
-# Copyright 2003-2013 by Wilson Snyder. This program is free software; you
+# Copyright 2003-2014 by Wilson Snyder. This program is free software; you
 # can redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
@@ -325,6 +325,7 @@ descriptions in the next sections for more information.
     --trace-depth <levels>      Depth of tracing
     --trace-max-array <depth>   Maximum bit width for tracing
     --trace-max-width <width>   Maximum array depth for tracing
+    --trace-structs             Enable tracing structure names
     --trace-underscore          Enable tracing of _signals
      -U<var>                    Undefine preprocessor define
     --unroll-count <loops>      Tune maximum loop iterations
@@ -754,7 +755,9 @@ to gcc -MP option.
 =item --Mdir I<directory>
 
 Specifies the name of the Make object directory.  All generated files will
-be placed in this directory.  If not specified, "obj_dir" is used.
+be placed in this directory.  If not specified, "obj_dir" is used.  The
+directory is created if it does not exist and the parent directories exist;
+otherwise manually create the Mdir before calling Verilator.
 
 =item --mod-prefix I<topname>
 
@@ -1019,6 +1022,13 @@ Rarely needed.  Specify the maximum bit width of a signal that may be
 traced.  Defaults to 256, as tracing large vectors may greatly slow traced
 simulations.
 
+=item --trace-structs
+
+Enable tracing to show the name of packed structure, union, and packed
+array fields, rather than a simgle combined packed bus.  Due to VCD file
+format constraints this may result in significantly slower trace times and
+larger trace files.
+
 =item --trace-underscore
 
 Enable tracing of signals that start with an underscore. Normally, these
@@ -3821,7 +3831,7 @@ Thanks to them, and all those we've missed including above.
 
 The latest version is available from L<http://www.veripool.org/>.
 
-Copyright 2003-2013 by Wilson Snyder.  Verilator is free software; you can
+Copyright 2003-2014 by Wilson Snyder.  Verilator is free software; you can
 redistribute it and/or modify the Verilator internals under the terms of
 either the GNU Lesser General Public License Version 3 or the Perl Artistic
 License Version 2.0.
diff --git a/bin/verilator_difftree b/bin/verilator_difftree
index ee16d0b..2b01169 100755
--- a/bin/verilator_difftree
+++ b/bin/verilator_difftree
@@ -235,7 +235,7 @@ Do not show differences in line numbering.
 
 The latest version is available from L<http://www.veripool.org/verilator>.
 
-Copyright 2005-2013 by Wilson Snyder.  This package is free software; you can
+Copyright 2005-2014 by Wilson Snyder.  This package is free software; you can
 redistribute it and/or modify it under the terms of either the GNU Lesser
 General Public License Version 3 or the Perl Artistic License Version 2.0.
 
diff --git a/bin/verilator_includer b/bin/verilator_includer
index 038f4d4..28d50c8 100755
--- a/bin/verilator_includer
+++ b/bin/verilator_includer
@@ -3,7 +3,7 @@ eval 'exec perl -wS $0 ${1+"$@"}'
   if 0;
 # DESCRIPTION: Print include statements for each ARGV
 #
-# Copyright 2003-2013 by Wilson Snyder. This package is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. This package is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU Lesser
 # General Public License Version 3 or the Perl Artistic License Version 2.0.
 ######################################################################
diff --git a/bin/verilator_profcfunc b/bin/verilator_profcfunc
index f68650f..46d253a 100755
--- a/bin/verilator_profcfunc
+++ b/bin/verilator_profcfunc
@@ -208,7 +208,7 @@ Displays this message and program version and exits.
 
 The latest version is available from L<http://www.veripool.org/>.
 
-Copyright 2007-2013 by Wilson Snyder.  Verilator is free software; you can
+Copyright 2007-2014 by Wilson Snyder.  Verilator is free software; you can
 redistribute it and/or modify it under the terms of either the GNU Lesser
 General Public License Version 3 or the Perl Artistic License Version 2.0.
 
diff --git a/configure b/configure
index 31abbfd..51dca69 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for Verilator 3.854 2013-11-26.
+# Generated by GNU Autoconf 2.68 for Verilator 3.855 2014-01-18.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -557,8 +557,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='Verilator'
 PACKAGE_TARNAME='verilator'
-PACKAGE_VERSION='3.854 2013-11-26'
-PACKAGE_STRING='Verilator 3.854 2013-11-26'
+PACKAGE_VERSION='3.855 2014-01-18'
+PACKAGE_STRING='Verilator 3.855 2014-01-18'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1223,7 +1223,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures Verilator 3.854 2013-11-26 to adapt to many kinds of systems.
+\`configure' configures Verilator 3.855 2014-01-18 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1284,7 +1284,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Verilator 3.854 2013-11-26:";;
+     short | recursive ) echo "Configuration of Verilator 3.855 2014-01-18:";;
    esac
   cat <<\_ACEOF
 
@@ -1376,7 +1376,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Verilator configure 3.854 2013-11-26
+Verilator configure 3.855 2014-01-18
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -1633,7 +1633,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Verilator $as_me 3.854 2013-11-26, which was
+It was created by Verilator $as_me 3.855 2014-01-18, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -4565,7 +4565,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Verilator $as_me 3.854 2013-11-26, which was
+This file was extended by Verilator $as_me 3.855 2014-01-18, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -4627,7 +4627,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-Verilator config.status 3.854 2013-11-26
+Verilator config.status 3.855 2014-01-18
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 02cc927..581368a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,12 +1,12 @@
 # DESCRIPTION: Process this file with autoconf to produce a configure script.
 #
-# Copyright 2003-2013 by Wilson Snyder. Verilator is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. Verilator is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU Lesser
 # General Public License Version 3 or the Perl Artistic License Version 2.0.
 
 #AC_INIT([Verilator],[#.### YYYY-MM-DD])
 #AC_INIT([Verilator],[#.### devel])
-AC_INIT([Verilator],[3.854 2013-11-26])
+AC_INIT([Verilator],[3.855 2014-01-18])
 AC_CONFIG_HEADER(src/config_build.h)
 AC_CONFIG_FILES(Makefile src/Makefile src/Makefile_obj include/verilated.mk include/verilated_config.h)
 
diff --git a/include/verilated.cpp b/include/verilated.cpp
index b2a098b..cb1ad54 100644
--- a/include/verilated.cpp
+++ b/include/verilated.cpp
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/include/verilated.h b/include/verilated.h
index 541457c..36237a4 100644
--- a/include/verilated.h
+++ b/include/verilated.h
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/include/verilated.mk.in b/include/verilated.mk.in
index 7278a2d..f609460 100644
--- a/include/verilated.mk.in
+++ b/include/verilated.mk.in
@@ -2,7 +2,7 @@
 ######################################################################
 # DESCRIPTION: Makefile commands for all verilated target files
 #
-# Copyright 2003-2013 by Wilson Snyder. Verilator is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. Verilator is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU Lesser
 # General Public License Version 3 or the Perl Artistic License Version 2.0.
 ######################################################################
diff --git a/include/verilated.v b/include/verilated.v
index ab2238e..5f6cc26 100644
--- a/include/verilated.v
+++ b/include/verilated.v
@@ -4,7 +4,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/include/verilated_config.h b/include/verilated_config.h
index 4952cf0..de487ee 100644
--- a/include/verilated_config.h
+++ b/include/verilated_config.h
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2003-2012 by Wilson Snyder. This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
@@ -25,4 +25,4 @@
 
 // Autoconf substitutes this with the strings from AC_INIT.
 #define VERILATOR_PRODUCT    "Verilator"
-#define VERILATOR_VERSION    "3.854 2013-11-26"
+#define VERILATOR_VERSION    "3.855 2014-01-18"
diff --git a/include/verilated_config.h.in b/include/verilated_config.h.in
index a9d63cc..0fa8a7f 100644
--- a/include/verilated_config.h.in
+++ b/include/verilated_config.h.in
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2003-2012 by Wilson Snyder. This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/include/verilated_dpi.cpp b/include/verilated_dpi.cpp
index ba96500..bbac159 100644
--- a/include/verilated_dpi.cpp
+++ b/include/verilated_dpi.cpp
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2009-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2009-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/include/verilated_dpi.h b/include/verilated_dpi.h
index bf731d1..2fba964 100644
--- a/include/verilated_dpi.h
+++ b/include/verilated_dpi.h
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/include/verilated_heavy.h b/include/verilated_heavy.h
index ec86151..940c669 100644
--- a/include/verilated_heavy.h
+++ b/include/verilated_heavy.h
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2010-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2010-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/include/verilated_imp.h b/include/verilated_imp.h
index 8fe20e1..ed3f46e 100644
--- a/include/verilated_imp.h
+++ b/include/verilated_imp.h
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2009-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2009-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/include/verilated_save.cpp b/include/verilated_save.cpp
index 0694dca..b307ef4 100644
--- a/include/verilated_save.cpp
+++ b/include/verilated_save.cpp
@@ -3,7 +3,7 @@
 //
 // THIS MODULE IS PUBLICLY LICENSED
 //
-// Copyright 2001-2013 by Wilson Snyder.  This program is free software;
+// Copyright 2001-2014 by Wilson Snyder.  This program is free software;
 // you can redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License Version 2.0.
 //
diff --git a/include/verilated_save.h b/include/verilated_save.h
index 72cf890..26c8e18 100644
--- a/include/verilated_save.h
+++ b/include/verilated_save.h
@@ -3,7 +3,7 @@
 //
 // THIS MODULE IS PUBLICLY LICENSED
 //
-// Copyright 2012-2013 by Wilson Snyder.  This program is free software;
+// Copyright 2012-2014 by Wilson Snyder.  This program is free software;
 // you can redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License Version 2.0.
 //
diff --git a/include/verilated_sc.h b/include/verilated_sc.h
index 889e7e5..f27d29a 100644
--- a/include/verilated_sc.h
+++ b/include/verilated_sc.h
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2009-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2009-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/include/verilated_syms.h b/include/verilated_syms.h
index 81957b4..7284205 100644
--- a/include/verilated_syms.h
+++ b/include/verilated_syms.h
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/include/verilated_vcd_c.cpp b/include/verilated_vcd_c.cpp
index 469fecf..e03b608 100644
--- a/include/verilated_vcd_c.cpp
+++ b/include/verilated_vcd_c.cpp
@@ -3,7 +3,7 @@
 //
 // THIS MODULE IS PUBLICLY LICENSED
 //
-// Copyright 2001-2013 by Wilson Snyder.  This program is free software;
+// Copyright 2001-2014 by Wilson Snyder.  This program is free software;
 // you can redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License Version 2.0.
 //
diff --git a/include/verilated_vcd_c.h b/include/verilated_vcd_c.h
index 03af5f2..f6c62ef 100644
--- a/include/verilated_vcd_c.h
+++ b/include/verilated_vcd_c.h
@@ -3,7 +3,7 @@
 //
 // THIS MODULE IS PUBLICLY LICENSED
 //
-// Copyright 2001-2013 by Wilson Snyder.  This program is free software;
+// Copyright 2001-2014 by Wilson Snyder.  This program is free software;
 // you can redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License Version 2.0.
 //
diff --git a/include/verilated_vcd_sc.cpp b/include/verilated_vcd_sc.cpp
index 5fc3ad0..a6935c4 100644
--- a/include/verilated_vcd_sc.cpp
+++ b/include/verilated_vcd_sc.cpp
@@ -3,7 +3,7 @@
 //
 // THIS MODULE IS PUBLICLY LICENSED
 //
-// Copyright 2001-2013 by Wilson Snyder.  This program is free software;
+// Copyright 2001-2014 by Wilson Snyder.  This program is free software;
 // you can redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License Version 2.0.
 //
diff --git a/include/verilated_vcd_sc.h b/include/verilated_vcd_sc.h
index 2778ac1..9ae96cd 100644
--- a/include/verilated_vcd_sc.h
+++ b/include/verilated_vcd_sc.h
@@ -3,7 +3,7 @@
 //
 // THIS MODULE IS PUBLICLY LICENSED
 //
-// Copyright 2001-2013 by Wilson Snyder.  This program is free software;
+// Copyright 2001-2014 by Wilson Snyder.  This program is free software;
 // you can redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License Version 2.0.
 //
diff --git a/include/verilated_vpi.cpp b/include/verilated_vpi.cpp
index c5906e0..b35c0f8 100644
--- a/include/verilated_vpi.cpp
+++ b/include/verilated_vpi.cpp
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2009-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2009-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/include/verilated_vpi.h b/include/verilated_vpi.h
index a045d82..af01db3 100644
--- a/include/verilated_vpi.h
+++ b/include/verilated_vpi.h
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2009-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2009-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/include/verilatedos.h b/include/verilatedos.h
index e419cfc..f804ebf 100644
--- a/include/verilatedos.h
+++ b/include/verilatedos.h
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
@@ -190,6 +190,15 @@ typedef unsigned long long	vluint64_t;	///< 64-bit unsigned type
 #endif
 
 //=========================================================================
+// File system functions
+
+#ifdef _WIN32
+# define VL_DEV_NULL "nul"
+#else // Linux or compliant Unix flavors
+# define VL_DEV_NULL "/dev/null"
+#endif
+
+//=========================================================================
 // Integer size macros
 
 #define VL_BYTESIZE 8			///< Bits in a byte
diff --git a/internals.html b/internals.html
index 3cce03d..0e59b7c 100644
--- a/internals.html
+++ b/internals.html
@@ -730,7 +730,7 @@ in <code>src/Makefile_obj.in</code> and reconfigure.</p>
 <hr />
 <h1><a name="distribution">DISTRIBUTION</a></h1>
 <p>The latest version is available from <a href="http://www.veripool.org/">http://www.veripool.org/</a>.</p>
-<p>Copyright 2008-2013 by Wilson Snyder.  Verilator is free software; you can
+<p>Copyright 2008-2014 by Wilson Snyder.  Verilator is free software; you can
 redistribute it and/or modify it under the terms of either the GNU Lesser
 General Public License Version 3 or the Perl Artistic License Version 2.0.</p>
 
diff --git a/internals.pdf b/internals.pdf
index 4c9e757..7303416 100644
Binary files a/internals.pdf and b/internals.pdf differ
diff --git a/internals.pod b/internals.pod
index db71ec6..5402595 100644
--- a/internals.pod
+++ b/internals.pod
@@ -748,7 +748,7 @@ in C<src/Makefile_obj.in> and reconfigure.
 
 The latest version is available from L<http://www.veripool.org/>.
 
-Copyright 2008-2013 by Wilson Snyder.  Verilator is free software; you can
+Copyright 2008-2014 by Wilson Snyder.  Verilator is free software; you can
 redistribute it and/or modify it under the terms of either the GNU Lesser
 General Public License Version 3 or the Perl Artistic License Version 2.0.
 
diff --git a/internals.txt b/internals.txt
index 55ef43c..a47cbf0 100644
--- a/internals.txt
+++ b/internals.txt
@@ -684,7 +684,7 @@ DISTRIBUTION
 
     The latest version is available from <http://www.veripool.org/>.
 
-    Copyright 2008-2013 by Wilson Snyder. Verilator is free software; you
+    Copyright 2008-2014 by Wilson Snyder. Verilator is free software; you
     can redistribute it and/or modify it under the terms of either the GNU
     Lesser General Public License Version 3 or the Perl Artistic License
     Version 2.0.
diff --git a/readme.pod b/readme.pod
index beef0a0..d4340f0 100644
--- a/readme.pod
+++ b/readme.pod
@@ -9,7 +9,7 @@ This is the Verilator Package README file.
 
 =head1 DISTRIBUTION
 
-This package is Copyright 2003-2013 by Wilson Snyder.  (Report bugs to
+This package is Copyright 2003-2014 by Wilson Snyder.  (Report bugs to
 L<http://www.veripool.org/>.)
 
 Verilator is free software; you can redistribute it and/or modify it under
diff --git a/src/.gdbinit b/src/.gdbinit
index de59c94..b866d98 100644
--- a/src/.gdbinit
+++ b/src/.gdbinit
@@ -1,6 +1,6 @@
 # DESCRIPTION: Verilator: GDB startup file with useful defines
 #
-# Copyright 2012-2013 by Wilson Snyder. This program is free software; you can
+# Copyright 2012-2014 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/src/Makefile.in b/src/Makefile.in
index 86fc05f..efdd7b4 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -7,7 +7,7 @@
 #
 #*****************************************************************************
 #
-# Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+# Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/src/Makefile_obj.in b/src/Makefile_obj.in
index aadc2dc..57685d9 100644
--- a/src/Makefile_obj.in
+++ b/src/Makefile_obj.in
@@ -7,7 +7,7 @@
 #
 #*****************************************************************************
 #
-# Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+# Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/src/V3Active.cpp b/src/V3Active.cpp
index f221cf4..8488b51 100644
--- a/src/V3Active.cpp
+++ b/src/V3Active.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Active.h b/src/V3Active.h
index 17883e4..6104fde 100644
--- a/src/V3Active.h
+++ b/src/V3Active.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3ActiveTop.cpp b/src/V3ActiveTop.cpp
index 075941e..9509875 100644
--- a/src/V3ActiveTop.cpp
+++ b/src/V3ActiveTop.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3ActiveTop.h b/src/V3ActiveTop.h
index 5836c34..2382aa9 100644
--- a/src/V3ActiveTop.h
+++ b/src/V3ActiveTop.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Assert.cpp b/src/V3Assert.cpp
index f42e24c..c202bcc 100644
--- a/src/V3Assert.cpp
+++ b/src/V3Assert.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2005-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2005-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Assert.h b/src/V3Assert.h
index a0e22cd..5dfab72 100644
--- a/src/V3Assert.h
+++ b/src/V3Assert.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2005-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2005-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3AssertPre.cpp b/src/V3AssertPre.cpp
index 534764b..f80775b 100644
--- a/src/V3AssertPre.cpp
+++ b/src/V3AssertPre.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2005-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2005-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3AssertPre.h b/src/V3AssertPre.h
index 68c780c..f9cd0d4 100644
--- a/src/V3AssertPre.h
+++ b/src/V3AssertPre.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2005-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2005-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Ast.cpp b/src/V3Ast.cpp
index 300c7f0..16a52b0 100644
--- a/src/V3Ast.cpp
+++ b/src/V3Ast.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Ast.h b/src/V3Ast.h
index 4fa3924..d796062 100644
--- a/src/V3Ast.h
+++ b/src/V3Ast.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3AstNodes.cpp b/src/V3AstNodes.cpp
index 178d8ff..ac3ec93 100644
--- a/src/V3AstNodes.cpp
+++ b/src/V3AstNodes.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -753,6 +753,13 @@ void AstJumpGo::dump(ostream& str) {
     if (labelp()) { labelp()->dump(str); }
     else { str<<"%Error:UNLINKED"; }
 }
+void AstModportFTaskRef::dump(ostream& str) {
+    this->AstNode::dump(str);
+    if (isExport()) str<<" EXPORT";
+    if (isImport()) str<<" IMPORT";
+    if (ftaskp()) { str<<" -> "; ftaskp()->dump(str); }
+    else { str<<" -> UNLINKED"; }
+}
 void AstModportVarRef::dump(ostream& str) {
     this->AstNode::dump(str);
     str<<" "<<varType();
diff --git a/src/V3AstNodes.h b/src/V3AstNodes.h
index 147501b..b6552fd 100644
--- a/src/V3AstNodes.h
+++ b/src/V3AstNodes.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -685,9 +685,9 @@ private:
     unsigned m_start;
     unsigned m_length;
     void init(AstNode* fromp) {
-	if (fromp && fromp->dtypep()->castNodeArrayDType()) {
+	if (fromp && fromp->dtypep()->skipRefp()->castNodeArrayDType()) {
 	    // Strip off array to find what array references
-	    dtypeFrom(fromp->dtypep()->castNodeArrayDType()->subDTypep());
+	    dtypeFrom(fromp->dtypep()->skipRefp()->castNodeArrayDType()->subDTypep());
 	}
     }
 public:
@@ -1273,17 +1273,18 @@ private:
     int		m_pinNum;	// Pin number
     string	m_name;		// Pin name, or "" for number based interconnect
     AstVar*	m_modVarp;	// Input/output this pin connects to on submodule.
+    bool	m_param;	// Pin connects to parameter
     bool	m_svImplicit;	// Pin is SystemVerilog .name'ed
 public:
     AstPin(FileLine* fl, int pinNum, const string& name, AstNode* exprp)
 	:AstNode(fl)
-	,m_name(name), m_svImplicit(false) {
+	,m_name(name), m_param(false), m_svImplicit(false) {
 	m_pinNum = pinNum;
 	m_modVarp = NULL;
 	setNOp1p(exprp);
     }
     AstPin(FileLine* fl, int pinNum, AstVarRef* varname, AstNode* exprp)
-	:AstNode(fl), m_svImplicit(false) {
+	:AstNode(fl), m_param(false), m_svImplicit(false) {
 	m_name = varname->name();
 	m_pinNum = pinNum;
 	m_modVarp = NULL;
@@ -1300,7 +1301,9 @@ public:
     AstNode*	exprp()		const { return op1p()->castNode(); }	// op1 = Expression connected to pin, NULL if unconnected
     AstVar*	modVarp()	const { return m_modVarp; }		// [After Link] Pointer to variable
     void  	modVarp(AstVar* varp) { m_modVarp=varp; }
-    bool	svImplicit()	const { return m_svImplicit; }
+    bool	param()	const { return m_param; }
+    void        param(bool flag) { m_param=flag; }
+    bool	svImplicit() const { return m_svImplicit; }
     void        svImplicit(bool flag) { m_svImplicit=flag; }
 };
 
@@ -1381,10 +1384,32 @@ struct AstIface : public AstNodeModule {
     ASTNODE_NODE_FUNCS(Iface, IFACE)
 };
 
+struct AstModportFTaskRef : public AstNode {
+    // An import/export referenced under a modport
+    // The storage for the function itself is inside the interface/instantiator, thus this is a reference
+    // PARENT: AstModport
+private:
+    string	m_name;		// Name of the variable referenced
+    bool	m_export;	// Type of the function (import/export)
+    AstNodeFTask* m_ftaskp;	// Link to the function
+public:
+    AstModportFTaskRef(FileLine* fl, const string& name, bool isExport)
+	: AstNode(fl), m_name(name), m_export(isExport), m_ftaskp(NULL) { }
+    ASTNODE_NODE_FUNCS(ModportFTaskRef, MODPORTFTASKREF)
+    virtual const char* broken() const { BROKEN_RTN(m_ftaskp && !m_ftaskp->brokeExists()); return NULL; }
+    virtual void dump(ostream& str);
+    virtual string name() const { return m_name; }
+    virtual void cloneRelink() { if (m_ftaskp && m_ftaskp->clonep()) m_ftaskp = m_ftaskp->clonep()->castNodeFTask(); }
+    bool isImport() const { return !m_export; }
+    bool isExport() const { return m_export; }
+    AstNodeFTask* ftaskp() const { return m_ftaskp; }		// [After Link] Pointer to variable
+    void ftaskp(AstNodeFTask* ftaskp) { m_ftaskp=ftaskp; }
+};
+
 struct AstModportVarRef : public AstNode {
     // A input/output/etc variable referenced under a modport
     // The storage for the variable itself is inside the interface, thus this is a reference
-    // PARENT: AstIface
+    // PARENT: AstModport
 private:
     string	m_name;		// Name of the variable referenced
     AstVarType	m_type;		// Type of the variable (in/out)
@@ -1395,8 +1420,9 @@ public:
     ASTNODE_NODE_FUNCS(ModportVarRef, MODPORTVARREF)
     virtual const char* broken() const { BROKEN_RTN(m_varp && !m_varp->brokeExists()); return NULL; }
     virtual void dump(ostream& str);
-    AstVarType	varType() const { return m_type; }		// * = Type of variable
+    virtual void cloneRelink() { if (m_varp && m_varp->clonep()) m_varp = m_varp->clonep()->castVar(); }
     virtual string name() const { return m_name; }
+    AstVarType	varType() const { return m_type; }		// * = Type of variable
     bool isInput() const { return (varType()==AstVarType::INPUT || varType()==AstVarType::INOUT); }
     bool isOutput() const { return (varType()==AstVarType::OUTPUT || varType()==AstVarType::INOUT); }
     AstVar* varp() const { return m_varp; }		// [After Link] Pointer to variable
@@ -1408,13 +1434,13 @@ struct AstModport : public AstNode {
 private:
     string	m_name;		// Name of the modport
 public:
-    AstModport(FileLine* fl, const string& name, AstModportVarRef* varsp)
+    AstModport(FileLine* fl, const string& name, AstNode* varsp)
 	: AstNode(fl), m_name(name) {
         addNOp1p(varsp); }
     virtual string name() const { return m_name; }
     virtual bool maybePointedTo() const { return true; }
     ASTNODE_NODE_FUNCS(Modport, MODPORT)
-    AstModportVarRef* varsp() const { return op1p()->castModportVarRef(); }	// op1 = List of Vars
+    AstNode* varsp() const { return op1p(); }	// op1 = List of Vars
 };
 
 struct AstCell : public AstNode {
@@ -2796,28 +2822,18 @@ struct AstTraceDecl : public AstNodeStmt {
 private:
     string	m_showname;	// Name of variable
     uint32_t	m_code;		// Trace identifier code; converted to ASCII by trace routines
-    int		m_right;	// Property of var the trace details
-    int		m_left;		// Property of var the trace details
-    uint32_t	m_arrayLsb;	// Property of var the trace details
-    uint32_t	m_arrayMsb;	// Property of var the trace details
+    VNumRange	m_bitRange;	// Property of var the trace details
+    VNumRange	m_arrayRange;	// Property of var the trace details
     uint32_t	m_codeInc;	// Code increment
 public:
-    AstTraceDecl(FileLine* fl, const string& showname, AstVar* varp)
+    AstTraceDecl(FileLine* fl, const string& showname, AstNode* valuep,
+		 const VNumRange& bitRange, const VNumRange& arrayRange)
 	: AstNodeStmt(fl)
-	, m_showname(showname) {
-	dtypeFrom(varp);
+	, m_showname(showname), m_bitRange(bitRange), m_arrayRange(arrayRange) {
+	dtypeFrom(valuep);
 	m_code = 0;
-	m_codeInc = varp->dtypep()->arrayUnpackedElements() * varp->dtypep()->widthWords();
-	AstBasicDType* bdtypep = varp->basicp();
-	m_left = bdtypep ? bdtypep->left() : 0;
-	m_right = bdtypep ? bdtypep->right() : 0;
-	if (AstUnpackArrayDType* adtypep = varp->dtypeSkipRefp()->castUnpackArrayDType()) {
-	    m_arrayLsb = adtypep->lsb();
-	    m_arrayMsb = adtypep->msb();
-	} else {
-	    m_arrayLsb = 0;
-	    m_arrayMsb = 0;
-	}
+	m_codeInc = ((arrayRange.ranged() ? arrayRange.elements() : 1)
+		     * valuep->dtypep()->widthWords());
     }
     virtual int instrCount()	const { return 100; }  // Large...
     ASTNODE_NODE_FUNCS(TraceDecl, TRACEDECL)
@@ -2830,11 +2846,8 @@ public:
     uint32_t	code() const { return m_code; }
     void	code(uint32_t code) { m_code=code; }
     uint32_t	codeInc() const { return m_codeInc; }
-    int		left() const { return m_left; }  // Note msb maybe < lsb if little endian
-    int		right() const { return m_right; }
-    uint32_t	arrayMsb() const { return m_arrayMsb; }
-    uint32_t	arrayLsb() const { return m_arrayLsb; }
-    uint32_t	arrayWidth() const { if (!arrayMsb()) return 0; return arrayMsb()-arrayLsb()+1; }
+    const VNumRange& bitRange() const { return m_bitRange; }
+    const VNumRange& arrayRange() const { return m_arrayRange; }
 };
 
 struct AstTraceInc : public AstNodeStmt {
diff --git a/src/V3Begin.cpp b/src/V3Begin.cpp
index c239352..ef87498 100644
--- a/src/V3Begin.cpp
+++ b/src/V3Begin.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Begin.h b/src/V3Begin.h
index 9b1e368..34bde9a 100644
--- a/src/V3Begin.h
+++ b/src/V3Begin.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Branch.cpp b/src/V3Branch.cpp
index cd5f384..37521c8 100644
--- a/src/V3Branch.cpp
+++ b/src/V3Branch.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Branch.h b/src/V3Branch.h
index 1387752..65e97a8 100644
--- a/src/V3Branch.h
+++ b/src/V3Branch.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Broken.cpp b/src/V3Broken.cpp
index ff72870..54a4641 100644
--- a/src/V3Broken.cpp
+++ b/src/V3Broken.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Broken.h b/src/V3Broken.h
index 2689d64..9c557aa 100644
--- a/src/V3Broken.h
+++ b/src/V3Broken.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Case.cpp b/src/V3Case.cpp
index c6858d7..582f377 100644
--- a/src/V3Case.cpp
+++ b/src/V3Case.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Case.h b/src/V3Case.h
index 48c4e3e..e28377c 100644
--- a/src/V3Case.h
+++ b/src/V3Case.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Cast.cpp b/src/V3Cast.cpp
index 32cd382..700bbfd 100644
--- a/src/V3Cast.cpp
+++ b/src/V3Cast.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2004-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2004-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Cast.h b/src/V3Cast.h
index 58dad09..0fb90ec 100644
--- a/src/V3Cast.h
+++ b/src/V3Cast.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2004-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2004-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Cdc.cpp b/src/V3Cdc.cpp
index 25501d5..4d26abc 100644
--- a/src/V3Cdc.cpp
+++ b/src/V3Cdc.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Cdc.h b/src/V3Cdc.h
index ca17ac4..d84a271 100644
--- a/src/V3Cdc.h
+++ b/src/V3Cdc.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Changed.cpp b/src/V3Changed.cpp
index 525f9d5..a5eabfc 100644
--- a/src/V3Changed.cpp
+++ b/src/V3Changed.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Changed.h b/src/V3Changed.h
index 8e627bc..7dd7f76 100644
--- a/src/V3Changed.h
+++ b/src/V3Changed.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Clean.cpp b/src/V3Clean.cpp
index b04cea8..4091e37 100644
--- a/src/V3Clean.cpp
+++ b/src/V3Clean.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Clean.h b/src/V3Clean.h
index 06bee77..2268422 100644
--- a/src/V3Clean.h
+++ b/src/V3Clean.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3ClkGater.cpp b/src/V3ClkGater.cpp
index ea0819e..97a9d93 100644
--- a/src/V3ClkGater.cpp
+++ b/src/V3ClkGater.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2008-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2008-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3ClkGater.h b/src/V3ClkGater.h
index 93908b0..4d55f3a 100644
--- a/src/V3ClkGater.h
+++ b/src/V3ClkGater.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Clock.cpp b/src/V3Clock.cpp
index f0f3925..75ca9ec 100644
--- a/src/V3Clock.cpp
+++ b/src/V3Clock.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Clock.h b/src/V3Clock.h
index c44b06f..6a43ba8 100644
--- a/src/V3Clock.h
+++ b/src/V3Clock.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Combine.cpp b/src/V3Combine.cpp
index ed6e963..ec5c33d 100644
--- a/src/V3Combine.cpp
+++ b/src/V3Combine.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Combine.h b/src/V3Combine.h
index 4bb0545..b3e3c73 100644
--- a/src/V3Combine.h
+++ b/src/V3Combine.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Config.cpp b/src/V3Config.cpp
index e054bd5..a881515 100644
--- a/src/V3Config.cpp
+++ b/src/V3Config.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2010-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2010-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Config.h b/src/V3Config.h
index 3e2f31e..d9098fc 100644
--- a/src/V3Config.h
+++ b/src/V3Config.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2010-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2010-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Const.cpp b/src/V3Const.cpp
index fbc4a21..8a3397a 100644
--- a/src/V3Const.cpp
+++ b/src/V3Const.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Const.h b/src/V3Const.h
index c8ff510..f8dc7df 100644
--- a/src/V3Const.h
+++ b/src/V3Const.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Coverage.cpp b/src/V3Coverage.cpp
index b5af0e1..4fc5246 100644
--- a/src/V3Coverage.cpp
+++ b/src/V3Coverage.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Coverage.h b/src/V3Coverage.h
index 83735d7..42921d3 100644
--- a/src/V3Coverage.h
+++ b/src/V3Coverage.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3CoverageJoin.cpp b/src/V3CoverageJoin.cpp
index 41ba611..67fc0cc 100644
--- a/src/V3CoverageJoin.cpp
+++ b/src/V3CoverageJoin.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3CoverageJoin.h b/src/V3CoverageJoin.h
index e76ed01..72d4cea 100644
--- a/src/V3CoverageJoin.h
+++ b/src/V3CoverageJoin.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Dead.cpp b/src/V3Dead.cpp
index ba7c08a..f3dabbd 100644
--- a/src/V3Dead.cpp
+++ b/src/V3Dead.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -103,7 +103,9 @@ private:
     }
     void checkDType(AstNodeDType* nodep) {
 	if (!nodep->generic()  // Don't remove generic types
-	    && m_elimDTypes) {  // dtypes stick around until post-widthing
+	    && m_elimDTypes  // dtypes stick around until post-widthing
+	    && !nodep->castMemberDType() // Keep member names iff upper type exists
+	    ) {
 	    m_varEtcsp.push_back(nodep);
 	}
 	if (AstNode* subnodep = nodep->virtRefDTypep()) subnodep->user1Inc();
diff --git a/src/V3Dead.h b/src/V3Dead.h
index 3c05a77..fbab621 100644
--- a/src/V3Dead.h
+++ b/src/V3Dead.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Delayed.cpp b/src/V3Delayed.cpp
index 7b7c650..8a31188 100644
--- a/src/V3Delayed.cpp
+++ b/src/V3Delayed.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Delayed.h b/src/V3Delayed.h
index f171682..484a624 100644
--- a/src/V3Delayed.h
+++ b/src/V3Delayed.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Depth.cpp b/src/V3Depth.cpp
index dac9808..44349c0 100644
--- a/src/V3Depth.cpp
+++ b/src/V3Depth.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Depth.h b/src/V3Depth.h
index f19317b..0ef0f66 100644
--- a/src/V3Depth.h
+++ b/src/V3Depth.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3DepthBlock.cpp b/src/V3DepthBlock.cpp
index 3f20df0..f0d4630 100644
--- a/src/V3DepthBlock.cpp
+++ b/src/V3DepthBlock.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3DepthBlock.h b/src/V3DepthBlock.h
index afd264a..4a94957 100644
--- a/src/V3DepthBlock.h
+++ b/src/V3DepthBlock.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Descope.cpp b/src/V3Descope.cpp
index 0900e25..2723333 100644
--- a/src/V3Descope.cpp
+++ b/src/V3Descope.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Descope.h b/src/V3Descope.h
index b7c4002..fb95b72 100644
--- a/src/V3Descope.h
+++ b/src/V3Descope.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3EmitC.cpp b/src/V3EmitC.cpp
index 6a12064..c4d8234 100644
--- a/src/V3EmitC.cpp
+++ b/src/V3EmitC.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -706,7 +706,7 @@ class EmitCImp : EmitCStmts {
 	if (v3Global.opt.lintOnly()) {
 	    // Unfortunately we have some lint checks here, so we can't just skip processing.
 	    // We should move them to a different stage.
-	    string filename = "/dev/null";
+	    string filename = VL_DEV_NULL;
 	    newCFile(filename, slow, source);
 	    ofp = new V3OutSpFile (filename);
 	}
@@ -2190,23 +2190,23 @@ class EmitCTrace : EmitCStmts {
 	    puts("vcdp->declArray");
 	} else if (nodep->isQuad()) {
 	    puts("vcdp->declQuad ");
-	} else if (nodep->left() || nodep->right()) {
+	} else if (nodep->bitRange().ranged()) {
 	    puts("vcdp->declBus  ");
 	} else {
 	    puts("vcdp->declBit  ");
 	}
 	puts("(c+"+cvtToStr(nodep->code()));
-	if (nodep->arrayWidth()) puts("+i*"+cvtToStr(nodep->widthWords()));
+	if (nodep->arrayRange().ranged()) puts("+i*"+cvtToStr(nodep->widthWords()));
 	puts(",");
 	putsQuoted(nodep->showname());
-	if (nodep->arrayWidth()) {
-	    puts(",(i+"+cvtToStr(nodep->arrayLsb())+")");
+	if (nodep->arrayRange().ranged()) {
+	    puts(",(i+"+cvtToStr(nodep->arrayRange().lo())+")");
 	} else {
 	    puts(",-1");
 	}
 	if (!nodep->isDouble()  // When float/double no longer have widths this can go
-	    && (nodep->left() || nodep->right())) {
-	    puts(","+cvtToStr(nodep->left())+","+cvtToStr(nodep->right()));
+	    && nodep->bitRange().ranged()) {
+	    puts(","+cvtToStr(nodep->bitRange().left())+","+cvtToStr(nodep->bitRange().right()));
 	}
 	puts(");");
     }
@@ -2222,7 +2222,7 @@ class EmitCTrace : EmitCStmts {
 	    puts("vcdp->"+full+"Array");
 	} else if (nodep->isQuad()) {
 	    puts("vcdp->"+full+"Quad ");
-	} else if (nodep->declp()->left() || nodep->declp()->right()) {
+	} else if (nodep->declp()->bitRange().ranged()) {
 	    puts("vcdp->"+full+"Bus  ");
 	} else {
 	    puts("vcdp->"+full+"Bit  ");
@@ -2232,7 +2232,7 @@ class EmitCTrace : EmitCStmts {
 	puts(",");
 	emitTraceValue(nodep, arrayindex);
 	if (!nodep->isDouble()  // When float/double no longer have widths this can go
-	    && (nodep->declp()->left() || nodep->declp()->right() || emitTraceIsScBv(nodep) || emitTraceIsScBigUint(nodep))) {
+	    && (nodep->declp()->bitRange().ranged() || emitTraceIsScBv(nodep) || emitTraceIsScBigUint(nodep))) {
 	    puts(","+cvtToStr(nodep->declp()->widthMin()));
 	}
 	puts(");\n");
@@ -2246,7 +2246,7 @@ class EmitCTrace : EmitCStmts {
 	    else if (emitTraceIsScBv(nodep)) puts("VL_SC_BV_DATAP(");
 	    varrefp->iterate(*this);	// Put var name out
 	    // Tracing only supports 1D arrays
-	    if (varp->dtypeSkipRefp()->castUnpackArrayDType()) {
+	    if (nodep->declp()->arrayRange().ranged()) {
 		if (arrayindex==-2) puts("[i]");
 		else if (arrayindex==-1) puts("[0]");
 		else puts("["+cvtToStr(arrayindex)+"]");
@@ -2319,8 +2319,8 @@ class EmitCTrace : EmitCStmts {
 	m_funcp = NULL;
     }
     virtual void visit(AstTraceDecl* nodep, AstNUser*) {
-	if (nodep->arrayWidth()) {
-	    puts("{int i; for (i=0; i<"+cvtToStr(nodep->arrayWidth())+"; i++) {\n");
+	if (nodep->arrayRange().ranged()) {
+	    puts("{int i; for (i=0; i<"+cvtToStr(nodep->arrayRange().elements())+"; i++) {\n");
 	    emitTraceInitOne(nodep);
 	    puts("}}\n");
 	} else {
@@ -2329,9 +2329,9 @@ class EmitCTrace : EmitCStmts {
 	}
     }
     virtual void visit(AstTraceInc* nodep, AstNUser*) {
-	if (nodep->declp()->arrayWidth()) {
+	if (nodep->declp()->arrayRange().ranged()) {
 	    // It traces faster if we unroll the loop
-	    for (unsigned i=0; i<nodep->declp()->arrayWidth(); i++) {
+	    for (int i=0; i<nodep->declp()->arrayRange().elements(); i++) {
 		emitTraceChangeOne(nodep, i);
 	    }
 	} else {
diff --git a/src/V3EmitC.h b/src/V3EmitC.h
index d7f2cf2..ed8d6fa 100644
--- a/src/V3EmitC.h
+++ b/src/V3EmitC.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3EmitCBase.h b/src/V3EmitCBase.h
index 578d4bd..61d6e2c 100644
--- a/src/V3EmitCBase.h
+++ b/src/V3EmitCBase.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3EmitCInlines.cpp b/src/V3EmitCInlines.cpp
index 70c1330..ce45bf1 100644
--- a/src/V3EmitCInlines.cpp
+++ b/src/V3EmitCInlines.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3EmitCSyms.cpp b/src/V3EmitCSyms.cpp
index fc7f77e..a621277 100644
--- a/src/V3EmitCSyms.cpp
+++ b/src/V3EmitCSyms.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3EmitMk.cpp b/src/V3EmitMk.cpp
index a1602a8..20afad1 100644
--- a/src/V3EmitMk.cpp
+++ b/src/V3EmitMk.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2004-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2004-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3EmitMk.h b/src/V3EmitMk.h
index 1f3acef..131ec44 100644
--- a/src/V3EmitMk.h
+++ b/src/V3EmitMk.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3EmitV.cpp b/src/V3EmitV.cpp
index 78eed17..b9f4a87 100644
--- a/src/V3EmitV.cpp
+++ b/src/V3EmitV.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2004-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2004-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3EmitV.h b/src/V3EmitV.h
index 8c97506..d9a35d8 100644
--- a/src/V3EmitV.h
+++ b/src/V3EmitV.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3EmitXml.cpp b/src/V3EmitXml.cpp
index cdf5583..851bd26 100644
--- a/src/V3EmitXml.cpp
+++ b/src/V3EmitXml.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2004-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2004-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3EmitXml.h b/src/V3EmitXml.h
index 70350cb..9401dab 100644
--- a/src/V3EmitXml.h
+++ b/src/V3EmitXml.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Error.cpp b/src/V3Error.cpp
index 67f5f0f..d1e041d 100644
--- a/src/V3Error.cpp
+++ b/src/V3Error.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Error.h b/src/V3Error.h
index 51a3913..7ed23a3 100644
--- a/src/V3Error.h
+++ b/src/V3Error.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Expand.cpp b/src/V3Expand.cpp
index fede67d..bb7293e 100644
--- a/src/V3Expand.cpp
+++ b/src/V3Expand.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2004-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2004-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Expand.h b/src/V3Expand.h
index 267161c..88d67bf 100644
--- a/src/V3Expand.h
+++ b/src/V3Expand.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3File.cpp b/src/V3File.cpp
index 11cdeb9..dc14d7a 100644
--- a/src/V3File.cpp
+++ b/src/V3File.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3File.h b/src/V3File.h
index 31275fe..b41364c 100644
--- a/src/V3File.h
+++ b/src/V3File.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -46,7 +46,7 @@ public:
 	return new_ofstream_nodepend (filename, append);
     }
     static ofstream* new_ofstream_nodepend(const string& filename, bool append=false) {
-	if (filename != "/dev/null") createMakeDir();
+	if (filename != VL_DEV_NULL) createMakeDir();
 	if (append) {
 	    return new ofstream(filename.c_str(), ios::app);
 	} else {
@@ -54,7 +54,7 @@ public:
 	}
     }
     static FILE* new_fopen_w(const string& filename) {
-	if (filename != "/dev/null") createMakeDir();
+	if (filename != VL_DEV_NULL) createMakeDir();
 	addTgtDepend(filename);
 	return fopen(filename.c_str(),"w");
     }
diff --git a/src/V3Gate.cpp b/src/V3Gate.cpp
index e05dcbf..409c501 100644
--- a/src/V3Gate.cpp
+++ b/src/V3Gate.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Gate.h b/src/V3Gate.h
index cafb351..012ce0f 100644
--- a/src/V3Gate.h
+++ b/src/V3Gate.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3GenClk.cpp b/src/V3GenClk.cpp
index a03c1e0..2aa5b13 100644
--- a/src/V3GenClk.cpp
+++ b/src/V3GenClk.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3GenClk.h b/src/V3GenClk.h
index 71a2767..24ab296 100644
--- a/src/V3GenClk.h
+++ b/src/V3GenClk.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Global.h b/src/V3Global.h
index 6b38502..29c2f7a 100644
--- a/src/V3Global.h
+++ b/src/V3Global.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Graph.cpp b/src/V3Graph.cpp
index f67f82e..d80969c 100644
--- a/src/V3Graph.cpp
+++ b/src/V3Graph.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Graph.h b/src/V3Graph.h
index bbf332d..452f542 100644
--- a/src/V3Graph.h
+++ b/src/V3Graph.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3GraphAcyc.cpp b/src/V3GraphAcyc.cpp
index 54c9e52..169f6d2 100644
--- a/src/V3GraphAcyc.cpp
+++ b/src/V3GraphAcyc.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3GraphAlg.cpp b/src/V3GraphAlg.cpp
index dba224a..f562d56 100644
--- a/src/V3GraphAlg.cpp
+++ b/src/V3GraphAlg.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3GraphAlg.h b/src/V3GraphAlg.h
index 4abf19d..4b44c3b 100644
--- a/src/V3GraphAlg.h
+++ b/src/V3GraphAlg.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3GraphDfa.cpp b/src/V3GraphDfa.cpp
index 08a2995..1e99429 100644
--- a/src/V3GraphDfa.cpp
+++ b/src/V3GraphDfa.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2005-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2005-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3GraphDfa.h b/src/V3GraphDfa.h
index 80023f3..c53c1e9 100644
--- a/src/V3GraphDfa.h
+++ b/src/V3GraphDfa.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3GraphTest.cpp b/src/V3GraphTest.cpp
index 2312d9f..ae305c0 100644
--- a/src/V3GraphTest.cpp
+++ b/src/V3GraphTest.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Hashed.cpp b/src/V3Hashed.cpp
index fe22002..9587a25 100644
--- a/src/V3Hashed.cpp
+++ b/src/V3Hashed.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Hashed.h b/src/V3Hashed.h
index 2d460f0..c6195b7 100644
--- a/src/V3Hashed.h
+++ b/src/V3Hashed.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2005-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2005-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Inline.cpp b/src/V3Inline.cpp
index 99ce87a..8b33fa4 100644
--- a/src/V3Inline.cpp
+++ b/src/V3Inline.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Inline.h b/src/V3Inline.h
index d9d5261..4cee17f 100644
--- a/src/V3Inline.h
+++ b/src/V3Inline.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Inst.cpp b/src/V3Inst.cpp
index c0a7b6f..7982b73 100644
--- a/src/V3Inst.cpp
+++ b/src/V3Inst.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Inst.h b/src/V3Inst.h
index 50d7914..1438d20 100644
--- a/src/V3Inst.h
+++ b/src/V3Inst.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LangCode.h b/src/V3LangCode.h
index 94bf488..d3bf50b 100644
--- a/src/V3LangCode.h
+++ b/src/V3LangCode.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LanguageWords.h b/src/V3LanguageWords.h
index 8e9b469..1ea70af 100644
--- a/src/V3LanguageWords.h
+++ b/src/V3LanguageWords.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2005-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2005-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Life.cpp b/src/V3Life.cpp
index a3ed84b..2c50fa3 100644
--- a/src/V3Life.cpp
+++ b/src/V3Life.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Life.h b/src/V3Life.h
index 627afd3..15c340f 100644
--- a/src/V3Life.h
+++ b/src/V3Life.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LifePost.cpp b/src/V3LifePost.cpp
index 9cfe20d..e1f2ab4 100644
--- a/src/V3LifePost.cpp
+++ b/src/V3LifePost.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LifePost.h b/src/V3LifePost.h
index 3f26112..dc02642 100644
--- a/src/V3LifePost.h
+++ b/src/V3LifePost.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LinkCells.cpp b/src/V3LinkCells.cpp
index 127cc19..8d507da 100644
--- a/src/V3LinkCells.cpp
+++ b/src/V3LinkCells.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -300,6 +300,7 @@ private:
 	    if (pinp->name()=="") pinp->name("__pinNumber"+cvtToStr(pinp->pinNum()));
 	}
 	for (AstPin* pinp = nodep->paramsp(); pinp; pinp=pinp->nextp()->castPin()) {
+	    pinp->param(true);
 	    if (pinp->name()=="") pinp->name("__paramNumber"+cvtToStr(pinp->pinNum()));
 	}
 	if (nodep->modp()) {
diff --git a/src/V3LinkCells.h b/src/V3LinkCells.h
index 9e06108..60785be 100644
--- a/src/V3LinkCells.h
+++ b/src/V3LinkCells.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LinkDot.cpp b/src/V3LinkDot.cpp
index c98be54..056156f 100644
--- a/src/V3LinkDot.cpp
+++ b/src/V3LinkDot.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -1202,6 +1202,26 @@ class LinkDotIfaceVisitor : public AstNVisitor {
 	}
 	m_curSymp = oldCurSymp;
     }
+    virtual void visit(AstModportFTaskRef* nodep, AstNUser*) {
+	UINFO(5,"   fif: "<<nodep<<endl);
+	nodep->iterateChildren(*this);
+	if (nodep->isExport()) nodep->v3error("Unsupported: modport export");
+	VSymEnt* symp = m_curSymp->findIdFallback(nodep->name());
+	if (!symp) {
+	    nodep->v3error("Modport item not found: "<<nodep->prettyName());
+	} else if (AstNodeFTask* ftaskp = symp->nodep()->castNodeFTask()) {
+	    // Make symbol under modport that points at the _interface_'s var, not the modport.
+	    nodep->ftaskp(ftaskp);
+	    m_statep->insertSym(m_curSymp, nodep->name(), ftaskp, NULL/*package*/);
+	} else {
+	    nodep->v3error("Modport item is not a function/task: "<<nodep->prettyName());
+	}
+	if (m_statep->forScopeCreation()) {
+	    // Done with AstModportFTaskRef.
+	    // Delete to prevent problems if we dead-delete pointed to ftask
+	    nodep->unlinkFrBack(); pushDeletep(nodep); nodep=NULL;
+	}
+    }
     virtual void visit(AstModportVarRef* nodep, AstNUser*) {
 	UINFO(5,"   fiv: "<<nodep<<endl);
 	nodep->iterateChildren(*this);
@@ -1419,21 +1439,22 @@ private:
 	    if (!m_pinSymp) nodep->v3fatalSrc("Pin not under cell?\n");
 	    VSymEnt* foundp = m_pinSymp->findIdFlat(nodep->name());
 	    AstVar* refp = foundp->nodep()->castVar();
+	    const char* whatp = nodep->param() ? "parameter pin" : "pin";
 	    if (!refp) {
 		if (nodep->name() == "__paramNumber1" && m_cellp->modp()->castPrimitive()) {
 		    // Primitive parameter is really a delay we can just ignore
 		    nodep->unlinkFrBack()->deleteTree(); nodep=NULL;
 		    return;
 		}
-		nodep->v3error("Pin not found: "<<nodep->prettyName());
+		nodep->v3error(LinkDotState::ucfirst(whatp)<<" not found: "<<nodep->prettyName());
 	    } else if (!refp->isIO() && !refp->isParam() && !refp->isIfaceRef()) {
-		nodep->v3error("Pin is not an in/out/inout/param/interface: "<<nodep->prettyName());
+		nodep->v3error(LinkDotState::ucfirst(whatp)<<" is not an in/out/inout/param/interface: "<<nodep->prettyName());
 	    } else {
 		nodep->modVarp(refp);
 		if (refp->user5p() && refp->user5p()->castNode()!=nodep) {
-		    nodep->v3error("Duplicate pin connection: "<<nodep->prettyName()<<endl
+		    nodep->v3error("Duplicate "<<whatp<<" connection: "<<nodep->prettyName()<<endl
 				   <<refp->user5p()->castNode()->warnMore()
-				   <<"... Location of original pin connection");
+				   <<"... Location of original "<<whatp<<" connection");
 		} else {
 		    refp->user5p(nodep);
 		}
diff --git a/src/V3LinkDot.h b/src/V3LinkDot.h
index e72137e..b8a2cab 100644
--- a/src/V3LinkDot.h
+++ b/src/V3LinkDot.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LinkJump.cpp b/src/V3LinkJump.cpp
index 979ca58..f1a107e 100644
--- a/src/V3LinkJump.cpp
+++ b/src/V3LinkJump.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LinkJump.h b/src/V3LinkJump.h
index b4aff7d..4e7eb73 100644
--- a/src/V3LinkJump.h
+++ b/src/V3LinkJump.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LinkLValue.cpp b/src/V3LinkLValue.cpp
index e21b605..5565ff6 100644
--- a/src/V3LinkLValue.cpp
+++ b/src/V3LinkLValue.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LinkLValue.h b/src/V3LinkLValue.h
index 475664a..11a1df7 100644
--- a/src/V3LinkLValue.h
+++ b/src/V3LinkLValue.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LinkLevel.cpp b/src/V3LinkLevel.cpp
index 235820f..3b924c7 100644
--- a/src/V3LinkLevel.cpp
+++ b/src/V3LinkLevel.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LinkLevel.h b/src/V3LinkLevel.h
index 8fbdf15..f5081cb 100644
--- a/src/V3LinkLevel.h
+++ b/src/V3LinkLevel.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LinkParse.cpp b/src/V3LinkParse.cpp
index 16c3ad0..89cb19c 100644
--- a/src/V3LinkParse.cpp
+++ b/src/V3LinkParse.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LinkParse.h b/src/V3LinkParse.h
index 1853acb..aa662d5 100644
--- a/src/V3LinkParse.h
+++ b/src/V3LinkParse.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LinkResolve.cpp b/src/V3LinkResolve.cpp
index b6eca8f..3ce090b 100644
--- a/src/V3LinkResolve.cpp
+++ b/src/V3LinkResolve.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3LinkResolve.h b/src/V3LinkResolve.h
index 5bc35f8..7202f45 100644
--- a/src/V3LinkResolve.h
+++ b/src/V3LinkResolve.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3List.h b/src/V3List.h
index 6744725..ed6b9e9 100644
--- a/src/V3List.h
+++ b/src/V3List.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Localize.cpp b/src/V3Localize.cpp
index 7b33d17..065e33d 100644
--- a/src/V3Localize.cpp
+++ b/src/V3Localize.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Localize.h b/src/V3Localize.h
index 29c4743..7fa44b8 100644
--- a/src/V3Localize.h
+++ b/src/V3Localize.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Name.cpp b/src/V3Name.cpp
index 0fdc2b4..b3eb524 100644
--- a/src/V3Name.cpp
+++ b/src/V3Name.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Name.h b/src/V3Name.h
index 5a93103..efae442 100644
--- a/src/V3Name.h
+++ b/src/V3Name.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Number.cpp b/src/V3Number.cpp
index 5a089a6..0ee2ba9 100644
--- a/src/V3Number.cpp
+++ b/src/V3Number.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Number.h b/src/V3Number.h
index 8437b55..610a151 100644
--- a/src/V3Number.h
+++ b/src/V3Number.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Number_test.cpp b/src/V3Number_test.cpp
index 4eab749..fe3321d 100644
--- a/src/V3Number_test.cpp
+++ b/src/V3Number_test.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Options.cpp b/src/V3Options.cpp
index 444f6bf..f34d661 100644
--- a/src/V3Options.cpp
+++ b/src/V3Options.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -756,6 +756,7 @@ void V3Options::parseOptsList(FileLine* fl, const string& optdir, int argc, char
 	    else if ( !strcmp (sw, "-sv") )				{ m_defaultLanguage = V3LangCode::L1800_2005; }
 	    else if ( onoff   (sw, "-trace", flag/*ref*/) )		{ m_trace = flag; }
 	    else if ( onoff   (sw, "-trace-dups", flag/*ref*/) )	{ m_traceDups = flag; }
+	    else if ( onoff   (sw, "-trace-structs", flag/*ref*/) )	{ m_traceStructs = flag; }
 	    else if ( onoff   (sw, "-trace-underscore", flag/*ref*/) )	{ m_traceUnderscore = flag; }
 	    else if ( onoff   (sw, "-underline-zero", flag/*ref*/) )	{ m_underlineZero = flag; }  // Undocumented, old Verilator-2
 	    else if ( onoff   (sw, "-x-initial-edge", flag/*ref*/) )	{ m_xInitialEdge = flag; }
@@ -1158,7 +1159,7 @@ void V3Options::showVersion(bool verbose) {
     if (!verbose) return;
 
     cout <<endl;
-    cout << "Copyright 2003-2013 by Wilson Snyder.  Verilator is free software; you can\n";
+    cout << "Copyright 2003-2014 by Wilson Snyder.  Verilator is free software; you can\n";
     cout << "redistribute it and/or modify the Verilator internals under the terms of\n";
     cout << "either the GNU Lesser General Public License Version 3 or the Perl Artistic\n";
     cout << "License Version 2.0.\n";
@@ -1222,6 +1223,7 @@ V3Options::V3Options() {
     m_systemPerl = false;
     m_trace = false;
     m_traceDups = false;
+    m_traceStructs = false;
     m_traceUnderscore = false;
     m_underlineZero = false;
     m_reportUnoptflat = false;
diff --git a/src/V3Options.h b/src/V3Options.h
index 695d552..ae86372 100644
--- a/src/V3Options.h
+++ b/src/V3Options.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -90,6 +90,7 @@ class V3Options {
     bool	m_stats;	// main switch: --stats
     bool	m_trace;	// main switch: --trace
     bool	m_traceDups;	// main switch: --trace-dups
+    bool	m_traceStructs;	// main switch: --trace-structs
     bool	m_traceUnderscore;// main switch: --trace-underscore
     bool	m_underlineZero;// main switch: --underline-zero; undocumented old Verilator 2
     bool	m_reportUnoptflat; // main switch: --report-unoptflat
@@ -214,6 +215,7 @@ class V3Options {
     bool exe() const { return m_exe; }
     bool trace() const { return m_trace; }
     bool traceDups() const { return m_traceDups; }
+    bool traceStructs() const { return m_traceStructs; }
     bool traceUnderscore() const { return m_traceUnderscore; }
     bool orderClockDly() const { return m_orderClockDly; }
     bool outFormatOk() const { return m_outFormatOk; }
diff --git a/src/V3Order.cpp b/src/V3Order.cpp
index 5cdc0f3..f960cc4 100644
--- a/src/V3Order.cpp
+++ b/src/V3Order.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Order.h b/src/V3Order.h
index 7935230..7b90d84 100644
--- a/src/V3Order.h
+++ b/src/V3Order.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3OrderGraph.h b/src/V3OrderGraph.h
index bbd876e..6dcb0c0 100644
--- a/src/V3OrderGraph.h
+++ b/src/V3OrderGraph.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Param.cpp b/src/V3Param.cpp
index 52ce09a..de98071 100644
--- a/src/V3Param.cpp
+++ b/src/V3Param.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Param.h b/src/V3Param.h
index ff06685..b3d1df0 100644
--- a/src/V3Param.h
+++ b/src/V3Param.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Parse.h b/src/V3Parse.h
index 5df4c51..a655f3f 100644
--- a/src/V3Parse.h
+++ b/src/V3Parse.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3ParseGrammar.cpp b/src/V3ParseGrammar.cpp
index d645694..f44d993 100644
--- a/src/V3ParseGrammar.cpp
+++ b/src/V3ParseGrammar.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3ParseImp.cpp b/src/V3ParseImp.cpp
index 3d7660c..1161bb3 100644
--- a/src/V3ParseImp.cpp
+++ b/src/V3ParseImp.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3ParseImp.h b/src/V3ParseImp.h
index 479ed4f..648435d 100644
--- a/src/V3ParseImp.h
+++ b/src/V3ParseImp.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2009-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2009-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -66,7 +66,6 @@ struct V3ParseBisonYYSType {
 	AstCell*	cellp;
 	AstConst*	constp;
 	AstMemberDType*	memberp;
-	AstModportVarRef* modportvarrefp;
 	AstNodeModule*	modulep;
 	AstNodeClassDType* classp;
 	AstNodeDType*	dtypep;
diff --git a/src/V3ParseLex.cpp b/src/V3ParseLex.cpp
index 1834bb9..75ff5a8 100644
--- a/src/V3ParseLex.cpp
+++ b/src/V3ParseLex.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3ParseSym.h b/src/V3ParseSym.h
index 12bcdb0..cb7d507 100644
--- a/src/V3ParseSym.h
+++ b/src/V3ParseSym.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2009-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2009-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3PreLex.h b/src/V3PreLex.h
index 7e19af1..17e20e6 100644
--- a/src/V3PreLex.h
+++ b/src/V3PreLex.h
@@ -8,7 +8,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2000-2013 by Wilson Snyder.  This program is free software;
+// Copyright 2000-2014 by Wilson Snyder.  This program is free software;
 // you can redistribute it and/or modify it under the terms of either the
 // GNU Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3PreLex.l b/src/V3PreLex.l
index 73c37b0..d22cbec 100644
--- a/src/V3PreLex.l
+++ b/src/V3PreLex.l
@@ -10,7 +10,7 @@
  *
  **************************************************************************
  *
- * Copyright 2003-2013 by Wilson Snyder.  This program is free software;
+ * Copyright 2003-2014 by Wilson Snyder.  This program is free software;
  * you can redistribute it and/or modify it under the terms of either the
  * GNU Lesser General Public License Version 3 or the Perl Artistic License
  * Version 2.0.
diff --git a/src/V3PreProc.cpp b/src/V3PreProc.cpp
index 35b0b24..49c55c5 100644
--- a/src/V3PreProc.cpp
+++ b/src/V3PreProc.cpp
@@ -8,7 +8,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2000-2013 by Wilson Snyder.  This program is free software;
+// Copyright 2000-2014 by Wilson Snyder.  This program is free software;
 // you can redistribute it and/or modify it under the terms of either the
 // GNU Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3PreProc.h b/src/V3PreProc.h
index 9ecbce4..b9678d5 100644
--- a/src/V3PreProc.h
+++ b/src/V3PreProc.h
@@ -8,7 +8,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2000-2013 by Wilson Snyder.  This program is free software;
+// Copyright 2000-2014 by Wilson Snyder.  This program is free software;
 // you can redistribute it and/or modify it under the terms of either the
 // GNU Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3PreShell.cpp b/src/V3PreShell.cpp
index 49e7b9e..89cd720 100644
--- a/src/V3PreShell.cpp
+++ b/src/V3PreShell.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2004-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2004-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3PreShell.h b/src/V3PreShell.h
index a477b3c..42cbfd9 100644
--- a/src/V3PreShell.h
+++ b/src/V3PreShell.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2004-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2004-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Premit.cpp b/src/V3Premit.cpp
index e3d16c4..5d7ddda 100644
--- a/src/V3Premit.cpp
+++ b/src/V3Premit.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Premit.h b/src/V3Premit.h
index 91fe613..799d496 100644
--- a/src/V3Premit.h
+++ b/src/V3Premit.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Scope.cpp b/src/V3Scope.cpp
index 3385f98..2b4b27d 100644
--- a/src/V3Scope.cpp
+++ b/src/V3Scope.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -353,6 +353,11 @@ private:
 	}
 	nodep->iterateChildren(*this);
     }
+    virtual void visit(AstModportFTaskRef* nodep, AstNUser*) {
+	// The crossrefs are dealt with in V3LinkDot
+	nodep->ftaskp(NULL);
+	nodep->iterateChildren(*this);
+    }
 
     //--------------------
     // Default
diff --git a/src/V3Scope.h b/src/V3Scope.h
index 267a306..c433019 100644
--- a/src/V3Scope.h
+++ b/src/V3Scope.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3SenTree.h b/src/V3SenTree.h
index d1894ed..c9298d6 100644
--- a/src/V3SenTree.h
+++ b/src/V3SenTree.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Simulate.h b/src/V3Simulate.h
index fd4c07d..b3b3da6 100644
--- a/src/V3Simulate.h
+++ b/src/V3Simulate.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Slice.cpp b/src/V3Slice.cpp
index 35f36a6..b02ae3b 100644
--- a/src/V3Slice.cpp
+++ b/src/V3Slice.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Slice.h b/src/V3Slice.h
index 5fd3eab..af8045e 100644
--- a/src/V3Slice.h
+++ b/src/V3Slice.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Split.cpp b/src/V3Split.cpp
index e0b27a6..a70dfd6 100644
--- a/src/V3Split.cpp
+++ b/src/V3Split.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Split.h b/src/V3Split.h
index 1e0e6c3..4d1262d 100644
--- a/src/V3Split.h
+++ b/src/V3Split.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3SplitAs.cpp b/src/V3SplitAs.cpp
index 5a44ed5..d495458 100644
--- a/src/V3SplitAs.cpp
+++ b/src/V3SplitAs.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3SplitAs.h b/src/V3SplitAs.h
index c296211..0481369 100644
--- a/src/V3SplitAs.h
+++ b/src/V3SplitAs.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Stats.cpp b/src/V3Stats.cpp
index 94591c9..bfebe4d 100644
--- a/src/V3Stats.cpp
+++ b/src/V3Stats.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2005-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2005-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Stats.h b/src/V3Stats.h
index 3f7bea8..59fe5a8 100644
--- a/src/V3Stats.h
+++ b/src/V3Stats.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2005-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2005-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3StatsReport.cpp b/src/V3StatsReport.cpp
index 6f6371c..afcb21f 100644
--- a/src/V3StatsReport.cpp
+++ b/src/V3StatsReport.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2005-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2005-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3String.cpp b/src/V3String.cpp
index 10a58ef..07c008d 100644
--- a/src/V3String.cpp
+++ b/src/V3String.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3String.h b/src/V3String.h
index 5a16d0c..f3c3920 100644
--- a/src/V3String.h
+++ b/src/V3String.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Subst.cpp b/src/V3Subst.cpp
index 32ee178..150e6f4 100644
--- a/src/V3Subst.cpp
+++ b/src/V3Subst.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2004-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2004-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Subst.h b/src/V3Subst.h
index e94aefd..247ef46 100644
--- a/src/V3Subst.h
+++ b/src/V3Subst.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3SymTable.h b/src/V3SymTable.h
index cef0ba1..51402ab 100644
--- a/src/V3SymTable.h
+++ b/src/V3SymTable.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Table.cpp b/src/V3Table.cpp
index c5f8b98..e6e7054 100644
--- a/src/V3Table.cpp
+++ b/src/V3Table.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Table.h b/src/V3Table.h
index 3d9ea3f..d242aa9 100644
--- a/src/V3Table.h
+++ b/src/V3Table.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Task.cpp b/src/V3Task.cpp
index 7d487f7..4ec6a6f 100644
--- a/src/V3Task.cpp
+++ b/src/V3Task.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Task.h b/src/V3Task.h
index 33aafed..41d94a2 100644
--- a/src/V3Task.h
+++ b/src/V3Task.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Trace.cpp b/src/V3Trace.cpp
index 1fa4800..c87890b 100644
--- a/src/V3Trace.cpp
+++ b/src/V3Trace.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Trace.h b/src/V3Trace.h
index e6a8e38..609a818 100644
--- a/src/V3Trace.h
+++ b/src/V3Trace.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3TraceDecl.cpp b/src/V3TraceDecl.cpp
index 5c348cf..2251b74 100644
--- a/src/V3TraceDecl.cpp
+++ b/src/V3TraceDecl.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -51,6 +51,9 @@ private:
     AstCFunc*		m_fullFuncp;	// Trace function being built
     AstCFunc*		m_chgFuncp;	// Trace function being built
     int			m_funcNum;	// Function number being built
+    AstVarScope*	m_traVscp;	// Signal being trace constructed
+    AstNode*		m_traValuep;	// Signal being traced's value to trace in it
+    string		m_traShowname;	// Signal being traced's component name
 
     V3Double0		m_statSigs;	// Statistic tracking
     V3Double0		m_statIgnSigs;	// Statistic tracking
@@ -66,22 +69,15 @@ private:
 	// Return true if this shouldn't be traced
 	// See also similar rule in V3Coverage::varIgnoreToggle
 	string prettyName = nodep->prettyName();
-	if (!nodep->isTrace())
+	if (!nodep->isTrace()) {
 	    return "Verilator trace_off";
-	if (!v3Global.opt.traceUnderscore()) {
+	}
+	else if (!v3Global.opt.traceUnderscore()) {
 	    if (prettyName.c_str()[0] == '_')
 	        return "Leading underscore";
 	    if (prettyName.find("._") != string::npos)
 	        return "Inlined leading underscore";
         }
-	if ((int)nodep->width() > v3Global.opt.traceMaxWidth()) return "Wide bus > --trace-max-width bits";
-	if ((int)nodep->dtypep()->arrayUnpackedElements() > v3Global.opt.traceMaxArray()) return "Wide memory > --trace-max-array ents";
-	if (!(nodep->dtypeSkipRefp()->castBasicDType()
-	      || (nodep->dtypeSkipRefp()->castUnpackArrayDType()
-		  && (nodep->dtypeSkipRefp()->castUnpackArrayDType()->subDTypep()
-		      ->skipRefp()->castBasicDType())))) {
-	    return "Unsupported: Multi-dimensional array";
-	}
 	return NULL;
     }
 
@@ -109,9 +105,33 @@ private:
 	basep->addStmtsp(callp);
 	return funcp;
     }
-    void addCFuncStmt(AstCFunc* basep, AstNode* nodep) {
+    void addCFuncStmt(AstCFunc* basep, AstNode* nodep, VNumRange arrayRange) {
 	basep->addStmtsp(nodep);
     }
+    void addTraceDecl(const VNumRange& arrayRange) {
+	VNumRange bitRange;
+	AstBasicDType* bdtypep = m_traValuep->dtypep()->basicp();
+	if (bdtypep) bitRange = bdtypep->nrange();
+	AstTraceDecl* declp = new AstTraceDecl(m_traVscp->fileline(), m_traShowname, m_traValuep,
+					       bitRange, arrayRange);
+
+	if (m_initSubStmts && v3Global.opt.outputSplitCTrace()
+	    && m_initSubStmts > v3Global.opt.outputSplitCTrace()) {
+	    m_initSubFuncp = newCFuncSub(m_initFuncp);
+	    m_initSubStmts = 0;
+	}
+
+	m_initSubFuncp->addStmtsp(declp);
+	m_initSubStmts += EmitCBaseCounterVisitor(declp).count();
+
+	m_chgFuncp->addStmtsp(new AstTraceInc(m_traVscp->fileline(), declp, m_traValuep->cloneTree(true)));
+	// The full version will get constructed in V3Trace
+    }
+    void addIgnore(const char* why) {
+	++m_statIgnSigs;
+	m_initSubFuncp->addStmtsp(
+	    new AstComment(m_traVscp->fileline(), "Tracing: "+m_traShowname+" // Ignored: "+why));
+    }
 
     // VISITORS
     virtual void visit(AstTopScope* nodep, AstNUser*) {
@@ -134,35 +154,140 @@ private:
 	    // Compute show name
 	    // This code assumes SPTRACEVCDC_VERSION >= 1330;
 	    // it uses spaces to separate hierarchy components.
-	    string showname = AstNode::vcdName(scopep->name() + " " + varp->name());
-	    if (showname.substr(0,4) == "TOP ") showname.replace(0,4,"");
+	    m_traShowname = AstNode::vcdName(scopep->name() + " " + varp->name());
+	    if (m_traShowname.substr(0,4) == "TOP ") m_traShowname.replace(0,4,"");
 	    if (!m_initSubFuncp) nodep->v3fatalSrc("NULL");
+
+	    m_traVscp = nodep;
+	    m_traValuep = NULL;
 	    if (varIgnoreTrace(varp)) {
-		++m_statIgnSigs;
-		m_initSubFuncp->addStmtsp(
-		    new AstComment(nodep->fileline(),
-				   "Tracing: "+showname+" // Ignored: "+varIgnoreTrace(varp)));
+		addIgnore(varIgnoreTrace(varp));
 	    } else {
 		++m_statSigs;
-		AstNode* valuep = NULL;
-		if (nodep->valuep()) valuep=nodep->valuep()->cloneTree(true);
-		else valuep = new AstVarRef(nodep->fileline(), nodep, false);
-		AstTraceDecl* declp = new AstTraceDecl(nodep->fileline(), showname, varp);
-
-		if (m_initSubStmts && v3Global.opt.outputSplitCTrace()
-		    && m_initSubStmts > v3Global.opt.outputSplitCTrace()) {
-		    m_initSubFuncp = newCFuncSub(m_initFuncp);
-		    m_initSubStmts = 0;
+		if (nodep->valuep()) m_traValuep = nodep->valuep()->cloneTree(true);
+		else m_traValuep = new AstVarRef(nodep->fileline(), nodep, false);
+		{
+		    // Recurse into data type of the signal; the visitors will call addTraceDecl()
+		    varp->dtypeSkipRefp()->accept(*this);
 		}
+		// Cleanup
+		if (m_traValuep) { m_traValuep->deleteTree(); m_traValuep=NULL; }
+	    }
+	    m_traVscp = NULL;
+	    m_traValuep = NULL;
+	    m_traShowname = "";
+	}
+    }
+    // VISITORS - Data types when tracing
+    virtual void visit(AstConstDType* nodep, AstNUser*) {
+	if (m_traVscp) {
+	    nodep->subDTypep()->skipRefp()->accept(*this);
+	}
+    }
+    virtual void visit(AstRefDType* nodep, AstNUser*) {
+	if (m_traVscp) {
+	    nodep->subDTypep()->skipRefp()->accept(*this);
+	}
+    }
+    virtual void visit(AstUnpackArrayDType* nodep, AstNUser*) {
+	// Note more specific dtypes above
+	if (m_traVscp) {
+	    if ((int)nodep->arrayUnpackedElements() > v3Global.opt.traceMaxArray()) {
+		addIgnore("Wide memory > --trace-max-array ents");
+	    } else if (nodep->subDTypep()->skipRefp()->castBasicDType()  // Nothing lower than this array
+		       && m_traVscp->dtypep()->skipRefp() == nodep) {  // Nothing above this array
+		// Simple 1-D array, use exising V3EmitC runtime loop rather than unrolling
+		// This will put "(index)" at end of signal name for us
+		addTraceDecl(nodep->declRange());
+	    } else {
+		// Unroll now, as have no other method to get right signal names
+		AstNodeDType* subtypep = nodep->subDTypep()->skipRefp();
+		for (int i=nodep->lsb(); i<=nodep->msb(); ++i) {
+		    string oldShowname = m_traShowname;
+		    AstNode* oldValuep = m_traValuep;
+		    {
+			m_traShowname += string("(")+cvtToStr(i)+string(")");
+			m_traValuep = new AstArraySel(nodep->fileline(), m_traValuep->cloneTree(true),
+						      i - nodep->lsb());
 
-		m_initSubFuncp->addStmtsp(declp);
-		m_initSubStmts += EmitCBaseCounterVisitor(declp).count();
-
-		m_chgFuncp->addStmtsp(new AstTraceInc(nodep->fileline(), declp, valuep));
-		// The full version will get constructed in V3Trace
+			subtypep->accept(*this);
+			m_traValuep->deleteTree(); m_traValuep = NULL;
+		    }
+		    m_traShowname = oldShowname;
+		    m_traValuep = oldValuep;
+		}
+	    }
+	}
+    }
+    virtual void visit(AstPackArrayDType* nodep, AstNUser*) {
+	if (m_traVscp) {
+	    if (!v3Global.opt.traceStructs()) {
+		// Everything downstream is packed, so deal with as one trace unit
+		// This may not be the nicest for user presentation, but is a much faster way to trace
+		addTraceDecl(VNumRange());
+	    } else {
+		AstNodeDType* subtypep = nodep->subDTypep()->skipRefp();
+		for (int i=nodep->lsb(); i<=nodep->msb(); ++i) {
+		    string oldShowname = m_traShowname;
+		    AstNode* oldValuep = m_traValuep;
+		    {
+			m_traShowname += string("(")+cvtToStr(i)+string(")");
+			m_traValuep = new AstSel(nodep->fileline(), m_traValuep->cloneTree(true),
+						 (i - nodep->lsb())*subtypep->width(),
+						 subtypep->width());
+			subtypep->accept(*this);
+			m_traValuep->deleteTree(); m_traValuep = NULL;
+		    }
+		    m_traShowname = oldShowname;
+		    m_traValuep = oldValuep;
+		}
+	    }
+	}
+    }
+    virtual void visit(AstNodeClassDType* nodep, AstNUser*) {
+	if (m_traVscp) {
+	    if (nodep->packed() && !v3Global.opt.traceStructs()) {
+		// Everything downstream is packed, so deal with as one trace unit
+		// This may not be the nicest for user presentation, but is a much faster way to trace
+		addTraceDecl(VNumRange());
+	    } else {
+		if (!nodep->packed()) {
+		    addIgnore("Unsupported: Unpacked struct/union");
+		} else {
+		    for (AstMemberDType* itemp = nodep->membersp(); itemp; itemp=itemp->nextp()->castMemberDType()) {
+			AstNodeDType* subtypep = itemp->subDTypep()->skipRefp();
+			string oldShowname = m_traShowname;
+			AstNode* oldValuep = m_traValuep;
+			{
+			    m_traShowname += string(" ")+itemp->prettyName();
+			    m_traValuep->dumpTree(cout, "-tv: ");
+			    if (nodep->castStructDType()) {
+				m_traValuep = new AstSel(nodep->fileline(), m_traValuep->cloneTree(true),
+							 itemp->lsb(), subtypep->width());
+				subtypep->accept(*this);
+				m_traValuep->deleteTree(); m_traValuep = NULL;
+			    } else { // Else union, replicate fields
+				subtypep->accept(*this);
+			    }
+			}
+			m_traShowname = oldShowname;
+			m_traValuep = oldValuep;
+		    }
+		}
 	    }
 	}
     }
+    virtual void visit(AstBasicDType* nodep, AstNUser*) {
+	if (m_traVscp) {
+	    addTraceDecl(VNumRange());
+	}
+    }
+    virtual void visit(AstNodeDType* nodep, AstNUser*) {
+	// Note more specific dtypes above
+	if (!m_traVscp) return;
+	addIgnore("Unsupported: data type");
+    }
+
     //--------------------
     virtual void visit(AstNode* nodep, AstNUser*) {
 	nodep->iterateChildren(*this);
@@ -178,6 +303,8 @@ public:
 	m_fullFuncp = NULL;
 	m_chgFuncp = NULL;
 	m_funcNum = 0;
+	m_traVscp = NULL;
+	m_traValuep = NULL;
 	nodep->accept(*this);
     }
     virtual ~TraceDeclVisitor() {
diff --git a/src/V3TraceDecl.h b/src/V3TraceDecl.h
index 070410b..d96a9f4 100644
--- a/src/V3TraceDecl.h
+++ b/src/V3TraceDecl.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Tristate.cpp b/src/V3Tristate.cpp
index 8631f6e..882548c 100644
--- a/src/V3Tristate.cpp
+++ b/src/V3Tristate.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Tristate.h b/src/V3Tristate.h
index 05bff4b..a033bff 100644
--- a/src/V3Tristate.h
+++ b/src/V3Tristate.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Undriven.cpp b/src/V3Undriven.cpp
index 0d1d028..36320fb 100644
--- a/src/V3Undriven.cpp
+++ b/src/V3Undriven.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2004-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2004-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Undriven.h b/src/V3Undriven.h
index 628167e..48c3713 100644
--- a/src/V3Undriven.h
+++ b/src/V3Undriven.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Unknown.cpp b/src/V3Unknown.cpp
index f68cbe6..d00cd36 100644
--- a/src/V3Unknown.cpp
+++ b/src/V3Unknown.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Unknown.h b/src/V3Unknown.h
index 847726e..7821b58 100644
--- a/src/V3Unknown.h
+++ b/src/V3Unknown.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Unroll.cpp b/src/V3Unroll.cpp
index ceeee18..e549715 100644
--- a/src/V3Unroll.cpp
+++ b/src/V3Unroll.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Unroll.h b/src/V3Unroll.h
index b478ea5..62e28fe 100644
--- a/src/V3Unroll.h
+++ b/src/V3Unroll.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Width.cpp b/src/V3Width.cpp
index d5e49de..03f500f 100644
--- a/src/V3Width.cpp
+++ b/src/V3Width.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3Width.h b/src/V3Width.h
index 39d3d2c..c535301 100644
--- a/src/V3Width.h
+++ b/src/V3Width.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3WidthCommit.h b/src/V3WidthCommit.h
index 3befd8e..3af43d7 100644
--- a/src/V3WidthCommit.h
+++ b/src/V3WidthCommit.h
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/V3WidthSel.cpp b/src/V3WidthSel.cpp
index 4f5357f..3f5b6a4 100644
--- a/src/V3WidthSel.cpp
+++ b/src/V3WidthSel.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/Verilator.cpp b/src/Verilator.cpp
index 2de7a6b..863dbb1 100644
--- a/src/Verilator.cpp
+++ b/src/Verilator.cpp
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/astgen b/src/astgen
index 699bce0..8352b1d 100755
--- a/src/astgen
+++ b/src/astgen
@@ -645,7 +645,7 @@ Makes a report report.
 
 =head1 DISTRIBUTION
 
-Copyright 2002-2013 by Wilson Snyder.  Verilator is free software; you can
+Copyright 2002-2014 by Wilson Snyder.  Verilator is free software; you can
 redistribute it and/or modify it under the terms of either the GNU Lesser
 General Public License Version 3 or the Perl Artistic License Version 2.0.
 
diff --git a/src/bisonpre b/src/bisonpre
index df1fdd8..f75b9d4 100755
--- a/src/bisonpre
+++ b/src/bisonpre
@@ -570,7 +570,7 @@ This is part of the L<http://www.veripool.org/> free Verilog EDA software
 tool suite.  The latest version is available from CPAN and from
 L<http://www.veripool.org/>.
 
-Copyright 2008-2013 by Wilson Snyder.  This package is free software; you
+Copyright 2008-2014 by Wilson Snyder.  This package is free software; you
 can redistribute it and/or modify it under the terms of either the GNU
 Lesser General Public License Version 3 or the Perl Artistic License Version 2.0.
 
diff --git a/src/config_build.h b/src/config_build.h
index d5755b8..fc917dc 100644
--- a/src/config_build.h
+++ b/src/config_build.h
@@ -11,7 +11,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -27,7 +27,7 @@
 //**** Version and host name
 
 // Autoconf substitutes this with the strings from AC_INIT.
-#define PACKAGE_STRING "Verilator 3.854 2013-11-26"
+#define PACKAGE_STRING "Verilator 3.855 2014-01-18"
 
 #define DTVERSION	PACKAGE_STRING
 
diff --git a/src/config_build.h.in b/src/config_build.h.in
index f2023d8..144932c 100644
--- a/src/config_build.h.in
+++ b/src/config_build.h.in
@@ -10,7 +10,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/src/config_rev.h b/src/config_rev.h
index 1680fa2..0cd50c1 100644
--- a/src/config_rev.h
+++ b/src/config_rev.h
@@ -1 +1 @@
-static const char* DTVERSION_rev = "verilator_3_853-19-g0e1fcd3";
+static const char* DTVERSION_rev = "verilator_3_854-13-g470f12f";
diff --git a/src/config_rev.pl b/src/config_rev.pl
index de04f72..34a0c84 100755
--- a/src/config_rev.pl
+++ b/src/config_rev.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w
 ######################################################################
 #
-# Copyright 2005-2013 by Wilson Snyder.  Verilator is free software; you
+# Copyright 2005-2014 by Wilson Snyder.  Verilator is free software; you
 # can redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/src/flexfix b/src/flexfix
index 9825b60..d3b8cf8 100755
--- a/src/flexfix
+++ b/src/flexfix
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w
 ######################################################################
 #
-# Copyright 2002-2013 by Wilson Snyder.  Verilator is free software; you
+# Copyright 2002-2014 by Wilson Snyder.  Verilator is free software; you
 # can redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/src/pod2latexfix b/src/pod2latexfix
index 0913f48..a10a4db 100755
--- a/src/pod2latexfix
+++ b/src/pod2latexfix
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w
 ######################################################################
 #
-# Copyright 2002-2013 by Wilson Snyder.  Verilator is free software; you
+# Copyright 2002-2014 by Wilson Snyder.  Verilator is free software; you
 # can redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/src/verilog.l b/src/verilog.l
index ac58f77..035b384 100644
--- a/src/verilog.l
+++ b/src/verilog.l
@@ -6,7 +6,7 @@
  *
  **************************************************************************
  *
- * Copyright 2003-2013 by Wilson Snyder.  Verilator is free software;
+ * Copyright 2003-2014 by Wilson Snyder.  Verilator is free software;
  * you can redistribute it and/or modify it under the terms of either the
  * GNU Lesser General Public License Version 3 or the Perl Artistic License
  * Version 2.0.
diff --git a/src/verilog.y b/src/verilog.y
index 3663ee0..6d2bc5d 100644
--- a/src/verilog.y
+++ b/src/verilog.y
@@ -6,7 +6,7 @@
 //
 //*************************************************************************
 //
-// Copyright 2003-2013 by Wilson Snyder.  This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder.  This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
@@ -1058,22 +1058,27 @@ modport_item<nodep>:			// ==IEEE: modport_item
 		id/*new-modport*/ '(' modportPortsDeclList ')'		{ $$ = new AstModport($2,*$1,$3); }
 	;
 
-modportPortsDeclList<modportvarrefp>:
+modportPortsDeclList<nodep>:
 		modportPortsDecl			    { $$ = $1; }
-	|	modportPortsDeclList ',' modportPortsDecl   { $$ = $1->addNextNull($3)->castModportVarRef(); }
+	|	modportPortsDeclList ',' modportPortsDecl   { $$ = $1->addNextNull($3); }
 	;
 
 // IEEE: modport_ports_declaration  + modport_simple_ports_declaration
 //	+ (modport_tf_ports_declaration+import_export) + modport_clocking_declaration
 // We've expanded the lists each take to instead just have standalone ID ports.
 // We track the type as with the V2k series of defines, then create as each ID is seen.
-modportPortsDecl<modportvarrefp>:
+modportPortsDecl<nodep>:
 	//			// IEEE: modport_simple_ports_declaration
 		port_direction modportSimplePort	{ $$ = new AstModportVarRef($<fl>1,*$2,GRAMMARP->m_varIO); }
 	//			// IEEE: modport_clocking_declaration
-	//UNSUP	yCLOCKING idAny/*clocking_identifier*/	{ }
-	//UNSUP	yIMPORT modport_tf_port			{ }
-	//UNSUP	yEXPORT modport_tf_port			{ }
+	|	yCLOCKING idAny/*clocking_identifier*/	{ $1->v3error("Unsupported: Modport clocking"); }
+	//			// IEEE: yIMPORT modport_tf_port
+	//			// IEEE: yEXPORT modport_tf_port
+	//			// modport_tf_port expanded here
+	|	yIMPORT id/*tf_identifier*/		{ $$ = new AstModportFTaskRef($<fl>1,*$2,false); }
+	|	yEXPORT id/*tf_identifier*/		{ $$ = new AstModportFTaskRef($<fl>1,*$2,true); }
+	|	yIMPORT method_prototype		{ $1->v3error("Unsupported: Modport import with prototype"); }
+	|	yEXPORT method_prototype		{ $1->v3error("Unsupported: Modport export with prototype"); }
 	// Continuations of above after a comma.
 	//			// IEEE: modport_simple_ports_declaration
 	|	modportSimplePort			{ $$ = new AstModportVarRef($<fl>1,*$1,AstVarType::INOUT); }
@@ -1879,7 +1884,7 @@ netSigList<varp>:		// IEEE: list_of_port_identifiers
 netSig<varp>:			// IEEE: net_decl_assignment -  one element from list_of_port_identifiers
 		netId sigAttrListE			{ $$ = VARDONEA($<fl>1,*$1, NULL, $2); }
 	|	netId sigAttrListE '=' expr		{ $$ = VARDONEA($<fl>1,*$1, NULL, $2); $$->addNext(new AstAssignW($3,new AstVarRef($3,$$->name(),true),$4)); }
-	|	netId rangeList sigAttrListE		{ $$ = VARDONEA($<fl>1,*$1, $2, $3); }
+	|	netId variable_dimensionList sigAttrListE	{ $$ = VARDONEA($<fl>1,*$1, $2, $3); }
 	;
 
 netId<strp>:
@@ -2632,6 +2637,11 @@ funcIsolateE<cint>:
 	|	yVL_ISOLATE_ASSIGNMENTS			{ $$ = 1; }
 	;
 
+method_prototype:
+		task_prototype				{ }
+	|	function_prototype			{ }
+	;
+
 lifetimeE:			// IEEE: [lifetime]
 		/* empty */		 		{ }
 	|	lifetime		 		{ }
diff --git a/test_c/Makefile b/test_c/Makefile
index 1a3e617..65cfc0f 100644
--- a/test_c/Makefile
+++ b/test_c/Makefile
@@ -5,7 +5,7 @@
 # This calls the object directory makefile.  That allows the objects to
 # be placed in the "current directory" which simplifies the Makefile.
 #
-# Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/test_c/Makefile_obj b/test_c/Makefile_obj
index f615ab6..1d544ef 100644
--- a/test_c/Makefile_obj
+++ b/test_c/Makefile_obj
@@ -5,7 +5,7 @@
 #
 # This is executed in the object directory, and called by ../Makefile
 #
-# Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/test_c/sim_main.cpp b/test_c/sim_main.cpp
index 99cb25d..263c97a 100644
--- a/test_c/sim_main.cpp
+++ b/test_c/sim_main.cpp
@@ -1,6 +1,6 @@
 // DESCRIPTION: Verilator Example: Top level main for invoking model
 //
-// Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/test_regress/Makefile b/test_regress/Makefile
index 7b67286..6d87ca4 100644
--- a/test_regress/Makefile
+++ b/test_regress/Makefile
@@ -5,7 +5,7 @@
 # This calls the object directory makefile.  That allows the objects to
 # be placed in the "current directory" which simplifies the Makefile.
 #
-# Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/test_regress/Makefile_obj b/test_regress/Makefile_obj
index 1e42484..0a487eb 100644
--- a/test_regress/Makefile_obj
+++ b/test_regress/Makefile_obj
@@ -5,7 +5,7 @@
 #
 # This is executed in the object directory, and called by ../Makefile
 #
-# Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/test_regress/driver.pl b/test_regress/driver.pl
index d47684e..fd7fe53 100755
--- a/test_regress/driver.pl
+++ b/test_regress/driver.pl
@@ -226,7 +226,7 @@ sub parameter {
 	push @Opt_Driver_Verilator_Flags, $param;
 	$_Parameter_Next_Level = $param;
     }
-    elsif ($param =~ /^-?-W/) {
+    elsif ($param =~ /^-?(-W||-debug-check)/) {
 	push @Opt_Driver_Verilator_Flags, $param;
     }
     else {
@@ -1896,7 +1896,7 @@ Command to use to invoke VCS.
 
 The latest version is available from L<http://www.veripool.org/>.
 
-Copyright 2003-2013 by Wilson Snyder.  Verilator is free software; you can
+Copyright 2003-2014 by Wilson Snyder.  Verilator is free software; you can
 redistribute it and/or modify it under the terms of either the GNU Lesser
 General Public License Version 3 or the Perl Artistic License Version 2.0.
 
diff --git a/test_regress/t/TestSimulator.h b/test_regress/t/TestSimulator.h
index 4a875e6..849fe1d 100644
--- a/test_regress/t/TestSimulator.h
+++ b/test_regress/t/TestSimulator.h
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2013-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2013-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/test_regress/t/TestVpi.h b/test_regress/t/TestVpi.h
index 642c378..acf2093 100644
--- a/test_regress/t/TestVpi.h
+++ b/test_regress/t/TestVpi.h
@@ -1,7 +1,7 @@
 // -*- mode: C++; c-file-style: "cc-mode" -*-
 //*************************************************************************
 //
-// Copyright 2013-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2013-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License.
 // Version 2.0.
diff --git a/test_regress/t/t_array_packed_value_list.pl b/test_regress/t/t_array_pattern_packed.pl
similarity index 93%
copy from test_regress/t/t_array_packed_value_list.pl
copy to test_regress/t/t_array_pattern_packed.pl
index 8b65103..690264b 100755
--- a/test_regress/t/t_array_packed_value_list.pl
+++ b/test_regress/t/t_array_pattern_packed.pl
@@ -10,11 +10,11 @@ if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); di
 $Self->{vlt} and $Self->unsupported("Verilator unsupported, bug355");
 
 compile (
-	 );
+    );
 
 execute (
-	 check_finished=>1,
-     );
+    check_finished=>1,
+    );
 
 ok(1);
 1;
diff --git a/test_regress/t/t_array_packed_value_list.v b/test_regress/t/t_array_pattern_packed.v
similarity index 85%
rename from test_regress/t/t_array_packed_value_list.v
rename to test_regress/t/t_array_pattern_packed.v
index b296c15..8f743d2 100644
--- a/test_regress/t/t_array_packed_value_list.v
+++ b/test_regress/t/t_array_pattern_packed.v
@@ -10,6 +10,34 @@ module t (/*AUTOARG*/
 
    input clk;
 
+   logic [1:0] [3:0] [3:0] array_simp;  // big endian array
+
+   initial begin
+      array_simp[0] = '{ 4'd3, 4'd2, 4'd1, 4'd0};
+      if (array_simp[0] !== 16'h3210) $stop;
+
+      // verilator lint_off WIDTH
+      array_simp[0] = '{ 3 ,2 ,1, 0 };
+      // verilator lint_on WIDTH
+      if (array_simp[0] !== 16'h3210) $stop;
+
+      // Doesn't seem to work for unpacked arrays in other simulators
+      //if (array_simp[0] !== 16'h3210) $stop;
+      //array_simp[0] = '{ 1:4'd3, default:13};
+      //if (array_simp[0] !== 16'hDD3D) $stop;
+
+      array_simp = '{ '{ 4'd3, 4'd2, 4'd1, 4'd0 }, '{ 4'd1, 4'd2, 4'd3, 4'd4 }};
+      if (array_simp !== 32'h3210_1234) $stop;
+
+      // Doesn't seem to work for unpacked arrays in other simulators
+      //array_simp <= '{2  { '{4 { 4'd3, 4'd2, 4'd1, 4'd0 }} } };
+
+      $write("*-* All Finished *-*\n");
+      $finish;
+   end
+
+   //====================
+
    // parameters for array sizes
    localparam WA = 4;  // address dimension size
    localparam WB = 4;  // bit     dimension size
diff --git a/test_regress/t/t_array_packed_value_list.pl b/test_regress/t/t_array_pattern_unpacked.pl
similarity index 93%
copy from test_regress/t/t_array_packed_value_list.pl
copy to test_regress/t/t_array_pattern_unpacked.pl
index 8b65103..690264b 100755
--- a/test_regress/t/t_array_packed_value_list.pl
+++ b/test_regress/t/t_array_pattern_unpacked.pl
@@ -10,11 +10,11 @@ if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); di
 $Self->{vlt} and $Self->unsupported("Verilator unsupported, bug355");
 
 compile (
-	 );
+    );
 
 execute (
-	 check_finished=>1,
-     );
+    check_finished=>1,
+    );
 
 ok(1);
 1;
diff --git a/test_regress/t/t_array_pattern_unpacked.v b/test_regress/t/t_array_pattern_unpacked.v
new file mode 100644
index 0000000..bc63cdf
--- /dev/null
+++ b/test_regress/t/t_array_pattern_unpacked.v
@@ -0,0 +1,34 @@
+// DESCRIPTION: Verilator: Verilog Test module
+//
+// This file ONLY is placed into the Public Domain, for any use,
+// without warranty, 2009 by Iztok Jeras.
+
+module t (/*AUTOARG*/);
+
+   logic [3:0] array_simp [1:0] [3:0];  // big endian array
+
+   initial begin
+      array_simp[0] = '{ 4'd3, 4'd2, 4'd1, 4'd0};
+      if ({array_simp[0][3],array_simp[0][2],array_simp[0][1],array_simp[0][0]} !== 16'h3210) $stop;
+
+      // verilator lint_off WIDTH
+      array_simp[0] = '{ 3 ,2 ,1, 0 };
+      // verilator lint_on WIDTH
+      if ({array_simp[0][3],array_simp[0][2],array_simp[0][1],array_simp[0][0]} !== 16'h3210) $stop;
+
+      // Doesn't seem to work for unpacked arrays in other simulators
+      //array_simp[0] = '{ 1:4'd3, default:13 };
+      //if ({array_simp[0][3],array_simp[0][2],array_simp[0][1],array_simp[0][0]} !== 16'hDD3D) $stop;
+
+      array_simp = '{ '{ 4'd3, 4'd2, 4'd1, 4'd0 }, '{ 4'd1, 4'd2, 4'd3, 4'd4 }};
+      if ({array_simp[1][3],array_simp[1][2],array_simp[1][1],array_simp[1][0],
+	   array_simp[0][3],array_simp[0][2],array_simp[0][1],array_simp[0][0]} !== 32'h3210_1234) $stop;
+
+      // Doesn't seem to work for unpacked arrays in other simulators
+      //array_simp <= '{2{ '{4{ 4'd3, 4'd2, 4'd1, 4'd0 }} }};
+
+      $write("*-* All Finished *-*\n");
+      $finish;
+   end
+
+endmodule
diff --git a/test_regress/t/t_array_packed_value_list.pl b/test_regress/t/t_interface1_modport_trace.pl
similarity index 64%
copy from test_regress/t/t_array_packed_value_list.pl
copy to test_regress/t/t_interface1_modport_trace.pl
index 8b65103..103690b 100755
--- a/test_regress/t/t_array_packed_value_list.pl
+++ b/test_regress/t/t_interface1_modport_trace.pl
@@ -2,19 +2,20 @@
 if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; }
 # DESCRIPTION: Verilator: Verilog Test driver/expect definition
 #
-# Copyright 2003 by Wilson Snyder. This program is free software; you can
+# Copyright 2003-2009 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
 
-$Self->{vlt} and $Self->unsupported("Verilator unsupported, bug355");
+top_filename("t/t_interface1_modport.v");
 
 compile (
-	 );
+    verilator_flags2 => ['--trace'],
+    );
 
 execute (
-	 check_finished=>1,
-     );
+    check_finished=>1,
+    );
 
 ok(1);
 1;
diff --git a/test_regress/t/t_array_packed_value_list.pl b/test_regress/t/t_interface_modport_export.pl
similarity index 80%
copy from test_regress/t/t_array_packed_value_list.pl
copy to test_regress/t/t_interface_modport_export.pl
index 8b65103..4bd751b 100755
--- a/test_regress/t/t_array_packed_value_list.pl
+++ b/test_regress/t/t_interface_modport_export.pl
@@ -7,14 +7,14 @@ if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); di
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
 
-$Self->{vlt} and $Self->unsupported("Verilator unsupported, bug355");
+$Self->{vlt} and $Self->unsupported("Verilator unsupported, bug696");
 
 compile (
-	 );
+    );
 
 execute (
-	 check_finished=>1,
-     );
+    check_finished=>1,
+    );
 
 ok(1);
 1;
diff --git a/test_regress/t/t_interface_modport_export.v b/test_regress/t/t_interface_modport_export.v
new file mode 100644
index 0000000..11a59f1
--- /dev/null
+++ b/test_regress/t/t_interface_modport_export.v
@@ -0,0 +1,74 @@
+// DESCRIPTION: Verilator: Verilog Test module
+//
+// A test of the export parameter used with modport
+//
+// This file ONLY is placed into the Public Domain, for any use,
+// without warranty, 2013 by Jeremy Bennett.
+
+interface test_if;
+
+   // Pre-declare function
+   extern function myfunc (input logic val);
+
+   // Interface variable
+   logic 	data;
+
+   // Modport
+   modport mp_e(
+              export  myfunc,
+	      output  data
+	      );
+
+   // Modport
+   modport mp_i(
+              import  myfunc,
+	      output  data
+	      );
+
+endinterface // test_if
+
+
+module t (/*AUTOARG*/
+   // Inputs
+   clk
+   );
+   input clk;
+
+   test_if i ();
+
+   testmod_callee testmod_callee_i (.ie (i.mp_e));
+   testmod_caller testmod_caller_i (.clk (clk),
+				    .ii (i.mp_i));
+endmodule
+
+
+module testmod_callee
+  (
+   test_if.mp_e  ie
+   );
+
+   function automatic logic ie.myfunc (input logic val);
+      begin
+	 myfunc = (val == 1'b0);
+      end
+   endfunction
+endmodule // testmod_caller
+
+
+module testmod_caller
+  (
+   input clk,
+   test_if.mp_i  ii
+   );
+
+   always @(posedge clk) begin
+      ii.data = 1'b0;
+      if (ii.myfunc (1'b0)) begin
+	 $write("*-* All Finished *-*\n");
+	 $finish;
+      end
+      else begin
+	 $stop;
+      end
+   end
+endmodule
diff --git a/test_regress/t/t_array_packed_value_list.pl b/test_regress/t/t_interface_modport_import.pl
similarity index 80%
copy from test_regress/t/t_array_packed_value_list.pl
copy to test_regress/t/t_interface_modport_import.pl
index 8b65103..f912897 100755
--- a/test_regress/t/t_array_packed_value_list.pl
+++ b/test_regress/t/t_interface_modport_import.pl
@@ -7,14 +7,12 @@ if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); di
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
 
-$Self->{vlt} and $Self->unsupported("Verilator unsupported, bug355");
-
 compile (
-	 );
+    );
 
 execute (
-	 check_finished=>1,
-     );
+    check_finished=>1,
+    );
 
 ok(1);
 1;
diff --git a/test_regress/t/t_interface_modport_import.v b/test_regress/t/t_interface_modport_import.v
new file mode 100644
index 0000000..c963fbf
--- /dev/null
+++ b/test_regress/t/t_interface_modport_import.v
@@ -0,0 +1,58 @@
+// DESCRIPTION: Verilator: Verilog Test module
+//
+// A test of the import parameter used with modport
+//
+// This file ONLY is placed into the Public Domain, for any use,
+// without warranty, 2013 by Jeremy Bennett.
+
+interface test_if;
+
+   // Interface variable
+   logic 	data;
+
+   // Modport
+   modport mp(
+              import  myfunc,
+	      output  data
+	      );
+
+   function automatic logic myfunc (input logic val);
+      begin
+	 myfunc = (val == 1'b0);
+      end
+   endfunction
+
+endinterface // test_if
+
+
+module t (/*AUTOARG*/
+   // Inputs
+   clk
+   );
+   input clk;
+
+   test_if i ();
+
+   testmod testmod_i (.clk (clk),
+		      .i (i.mp));
+
+endmodule
+
+
+module testmod
+  (
+   input clk,
+   test_if.mp  i
+   );
+
+   always @(posedge clk) begin
+      i.data = 1'b0;
+      if (i.myfunc (1'b0)) begin
+	 $write("*-* All Finished *-*\n");
+	 $finish;
+      end
+      else begin
+	 $stop;
+      end
+   end
+endmodule
diff --git a/test_regress/t/t_lint_pindup_bad.pl b/test_regress/t/t_lint_pindup_bad.pl
index 2549b7a..3cde707 100755
--- a/test_regress/t/t_lint_pindup_bad.pl
+++ b/test_regress/t/t_lint_pindup_bad.pl
@@ -19,8 +19,8 @@ compile (
 '%Error: t/t_lint_pindup_bad.v:\d+: Duplicate pin connection: i
 %Error: t/t_lint_pindup_bad.v:\d+: ... Location of original pin connection
 %Error: t/t_lint_pindup_bad.v:\d+: Pin not found: __pinNumber4
-%Error: t/t_lint_pindup_bad.v:\d+: Duplicate pin connection: P
-%Error: t/t_lint_pindup_bad.v:\d+: ... Location of original pin connection
+%Error: t/t_lint_pindup_bad.v:\d+: Duplicate parameter pin connection: P
+%Error: t/t_lint_pindup_bad.v:\d+: ... Location of original parameter pin connection
 %Error: Exiting due to.*',
     );
 
diff --git a/test_regress/t/t_mem_multiwire.v b/test_regress/t/t_mem_multiwire.v
index 89b3660..016b141 100644
--- a/test_regress/t/t_mem_multiwire.v
+++ b/test_regress/t/t_mem_multiwire.v
@@ -12,6 +12,7 @@ module t (/*AUTOARG*/
 
    // verilator lint_off LITENDIAN
    wire [7:0] array [2:0][1:3];
+   wire [7:0] arrayNoColon [2][3];
    // verilator lint_on LITENDIAN
 
    integer cyc; initial cyc=0;
diff --git a/test_regress/t/t_array_packed_value_list.pl b/test_regress/t/t_struct_init_trace.pl
similarity index 70%
rename from test_regress/t/t_array_packed_value_list.pl
rename to test_regress/t/t_struct_init_trace.pl
index 8b65103..d3c5875 100755
--- a/test_regress/t/t_array_packed_value_list.pl
+++ b/test_regress/t/t_struct_init_trace.pl
@@ -2,19 +2,20 @@
 if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; }
 # DESCRIPTION: Verilator: Verilog Test driver/expect definition
 #
-# Copyright 2003 by Wilson Snyder. This program is free software; you can
+# Copyright 2003-2009 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
 
-$Self->{vlt} and $Self->unsupported("Verilator unsupported, bug355");
+top_filename("t/t_struct_init.v");
 
 compile (
+	 verilator_flags2 => ['--cc --trace'],
 	 );
 
 execute (
 	 check_finished=>1,
-     );
+	 );
 
 ok(1);
 1;
diff --git a/test_regress/t/t_trace_complex.out b/test_regress/t/t_trace_complex.out
new file mode 100644
index 0000000..ce04826
--- /dev/null
+++ b/test_regress/t/t_trace_complex.out
@@ -0,0 +1,148 @@
+$version Generated by VerilatedVcd $end
+$date Sat Dec 14 19:07:34 2013
+ $end
+$timescale 1ns $end
+
+ $scope module top $end
+  $var wire  1 0 clk $end
+  $scope module v $end
+   $var wire  1 0 clk $end
+   $var wire 32 # cyc [31:0] $end
+   $var wire  2 ' v_arrp [2:1] $end
+   $var wire  2 ( v_arrp_arrp [2:1] $end
+   $var wire  2 ) v_arrp_strp [1:0] $end
+   $var wire  1 1 v_arru(1) $end
+   $var wire  1 2 v_arru(2) $end
+   $var wire  2 * v_arru_arrp(3) [2:1] $end
+   $var wire  2 + v_arru_arrp(4) [2:1] $end
+   $var wire  1 3 v_arru_arru(3)(1) $end
+   $var wire  1 4 v_arru_arru(3)(2) $end
+   $var wire  1 5 v_arru_arru(4)(1) $end
+   $var wire  1 6 v_arru_arru(4)(2) $end
+   $var wire  2 , v_arru_strp(3) [1:0] $end
+   $var wire  2 - v_arru_strp(4) [1:0] $end
+   $var wire  2 $ v_strp [1:0] $end
+   $var wire  4 % v_strp_strp [3:0] $end
+   $var wire  2 & v_unip_strp [1:0] $end
+   $scope module unnamedblk1 $end
+    $var wire 32 . b [31:0] $end
+    $scope module unnamedblk2 $end
+     $var wire 32 / a [31:0] $end
+    $upscope $end
+   $upscope $end
+  $upscope $end
+ $upscope $end
+$enddefinitions $end
+
+
+#0
+b00000000000000000000000000000000 #
+b00 $
+b0000 %
+b00 &
+b00 '
+b0000 (
+b0000 )
+b00 *
+b00 +
+b00 ,
+b00 -
+b00000000000000000000000000000000 .
+b00000000000000000000000000000000 /
+00
+01
+02
+03
+04
+05
+06
+#10
+b00000000000000000000000000000001 #
+b11 $
+b1111 %
+b11 &
+b11 '
+b1111 (
+b1111 )
+b11 *
+b11 +
+b11 ,
+b11 -
+b00000000000000000000000000000101 .
+b00000000000000000000000000000101 /
+10
+#15
+00
+#20
+b00000000000000000000000000000010 #
+b00 $
+b0000 %
+b00 &
+b00 '
+b0000 (
+b0000 )
+b00 *
+b00 +
+b00 ,
+b00 -
+10
+#25
+00
+#30
+b00000000000000000000000000000011 #
+b11 $
+b1111 %
+b11 &
+b11 '
+b1111 (
+b1111 )
+b11 *
+b11 +
+b11 ,
+b11 -
+10
+#35
+00
+#40
+b00000000000000000000000000000100 #
+b00 $
+b0000 %
+b00 &
+b00 '
+b0000 (
+b0000 )
+b00 *
+b00 +
+b00 ,
+b00 -
+10
+#45
+00
+#50
+b00000000000000000000000000000101 #
+b11 $
+b1111 %
+b11 &
+b11 '
+b1111 (
+b1111 )
+b11 *
+b11 +
+b11 ,
+b11 -
+10
+#55
+00
+#60
+b00000000000000000000000000000110 #
+b00 $
+b0000 %
+b00 &
+b00 '
+b0000 (
+b0000 )
+b00 *
+b00 +
+b00 ,
+b00 -
+10
diff --git a/test_regress/t/t_trace_complex.pl b/test_regress/t/t_trace_complex.pl
new file mode 100755
index 0000000..1e6cacc
--- /dev/null
+++ b/test_regress/t/t_trace_complex.pl
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; }
+# DESCRIPTION: Verilator: Verilog Test driver/expect definition
+#
+# Copyright 2003-2009 by Wilson Snyder. This program is free software; you can
+# redistribute it and/or modify it under the terms of either the GNU
+# Lesser General Public License Version 3 or the Perl Artistic License
+# Version 2.0.
+
+compile (
+	 verilator_flags2 => ['--cc --trace'],
+	 );
+
+execute (
+	 check_finished=>1,
+	 );
+
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_strp /);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_strp_strp /);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_arrp /);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_arrp_arrp /);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_arrp_strp /);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_arru\(/);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_arru_arru\(/);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_arru_arrp\(/);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_arru_strp\(/);
+
+vcd_identical ("$Self->{obj_dir}/simx.vcd", "t/$Self->{name}.out");
+
+ok(1);
+1;
diff --git a/test_regress/t/t_trace_complex.v b/test_regress/t/t_trace_complex.v
new file mode 100644
index 0000000..03e331e
--- /dev/null
+++ b/test_regress/t/t_trace_complex.v
@@ -0,0 +1,67 @@
+// DESCRIPTION: Verilator: Verilog Test module
+//
+// This file ONLY is placed into the Public Domain, for any use,
+// without warranty, 2009 by Wilson Snyder.
+
+module t (clk);
+   input clk;
+   integer 	cyc=0;
+
+   typedef struct packed {
+      bit	b1;
+      bit	b0;
+   } strp_t;
+
+   typedef struct packed {
+      strp_t	x1;
+      strp_t	x0;
+   } strp_strp_t;
+
+   typedef union packed {
+      strp_t	x1;
+      strp_t	x0;
+   } unip_strp_t;
+
+   typedef bit [2:1] arrp_t;
+   typedef arrp_t [4:3] arrp_arrp_t;
+
+   typedef strp_t [4:3] arrp_strp_t;
+
+   typedef bit arru_t [2:1];
+   typedef arru_t arru_arru_t [4:3];
+   typedef arrp_t arru_arrp_t [4:3];
+   typedef strp_t arru_strp_t [4:3];
+
+   strp_t 	v_strp;
+   strp_strp_t	v_strp_strp;
+   unip_strp_t	v_unip_strp;
+   arrp_t	v_arrp;
+   arrp_arrp_t	v_arrp_arrp;
+   arrp_strp_t	v_arrp_strp;
+   arru_t	v_arru;
+   arru_arru_t	v_arru_arru;
+   arru_arrp_t	v_arru_arrp;
+   arru_strp_t	v_arru_strp;
+
+   always @ (posedge clk) begin
+      cyc <= cyc + 1;
+      v_strp <= ~v_strp;
+      v_strp_strp <= ~v_strp_strp;
+      v_unip_strp <= ~v_unip_strp;
+      v_arrp_strp <= ~v_arrp_strp;
+      v_arrp <= ~v_arrp;
+      v_arrp_arrp <= ~v_arrp_arrp;
+      for (integer b=3; b<=4; b++) begin
+	 v_arru[b] <= ~v_arru[b];
+	 v_arru_strp[b] <= ~v_arru_strp[b];
+	 v_arru_arrp[b] <= ~v_arru_arrp[b];
+	 for (integer a=3; a<=4; a++) begin
+	    v_arru_arru[a][b] = ~v_arru_arru[a][b];
+	 end
+      end
+      if (cyc == 5) begin
+	 $write("*-* All Finished *-*\n");
+	 $finish;
+      end
+   end
+endmodule
diff --git a/test_regress/t/t_trace_complex_structs.out b/test_regress/t/t_trace_complex_structs.out
new file mode 100644
index 0000000..fc168e5
--- /dev/null
+++ b/test_regress/t/t_trace_complex_structs.out
@@ -0,0 +1,260 @@
+$version Generated by VerilatedVcd $end
+$date Sat Dec 14 18:56:47 2013
+ $end
+$timescale 1ns $end
+
+ $scope module top $end
+  $var wire  1 ; clk $end
+  $scope module v $end
+   $var wire  1 ; clk $end
+   $var wire 32 # cyc [31:0] $end
+   $var wire  2 , v_arrp [2:1] $end
+   $var wire  2 - v_arrp_arrp(3) [1:0] $end
+   $var wire  2 . v_arrp_arrp(4) [1:0] $end
+   $var wire  1 < v_arru(1) $end
+   $var wire  1 = v_arru(2) $end
+   $var wire  2 3 v_arru_arrp(3) [2:1] $end
+   $var wire  2 4 v_arru_arrp(4) [2:1] $end
+   $var wire  1 > v_arru_arru(3)(1) $end
+   $var wire  1 ? v_arru_arru(3)(2) $end
+   $var wire  1 @ v_arru_arru(4)(1) $end
+   $var wire  1 A v_arru_arru(4)(2) $end
+   $scope module unnamedblk1 $end
+    $var wire 32 9 b [31:0] $end
+    $scope module unnamedblk2 $end
+     $var wire 32 : a [31:0] $end
+    $upscope $end
+   $upscope $end
+   $scope module v_arrp_strp(3) $end
+    $var wire  1 0 b0 $end
+    $var wire  1 / b1 $end
+   $upscope $end
+   $scope module v_arrp_strp(4) $end
+    $var wire  1 2 b0 $end
+    $var wire  1 1 b1 $end
+   $upscope $end
+   $scope module v_arru_strp(3) $end
+    $var wire  1 6 b0 $end
+    $var wire  1 5 b1 $end
+   $upscope $end
+   $scope module v_arru_strp(4) $end
+    $var wire  1 8 b0 $end
+    $var wire  1 7 b1 $end
+   $upscope $end
+   $scope module v_strp $end
+    $var wire  1 % b0 $end
+    $var wire  1 $ b1 $end
+   $upscope $end
+   $scope module v_strp_strp $end
+    $scope module x0 $end
+     $var wire  1 ) b0 $end
+     $var wire  1 ( b1 $end
+    $upscope $end
+    $scope module x1 $end
+     $var wire  1 ' b0 $end
+     $var wire  1 & b1 $end
+    $upscope $end
+   $upscope $end
+   $scope module v_unip_strp $end
+    $scope module x0 $end
+     $var wire  1 + b0 $end
+     $var wire  1 * b1 $end
+    $upscope $end
+    $scope module x1 $end
+     $var wire  1 + b0 $end
+     $var wire  1 * b1 $end
+    $upscope $end
+   $upscope $end
+  $upscope $end
+ $upscope $end
+$enddefinitions $end
+
+
+#0
+b00000000000000000000000000000000 #
+0$
+0%
+0&
+0'
+0(
+0)
+0*
+0+
+b00 ,
+b00 -
+b00 .
+0/
+00
+01
+02
+b00 3
+b00 4
+05
+06
+07
+08
+b00000000000000000000000000000000 9
+b00000000000000000000000000000000 :
+0;
+0<
+0=
+0>
+0?
+0@
+0A
+#10
+b00000000000000000000000000000001 #
+1$
+1%
+1&
+1'
+1(
+1)
+1*
+1+
+b11 ,
+b11 -
+b11 .
+1/
+10
+11
+12
+b11 3
+b11 4
+15
+16
+17
+18
+b00000000000000000000000000000101 9
+b00000000000000000000000000000101 :
+1;
+#15
+0;
+#20
+b00000000000000000000000000000010 #
+0$
+0%
+0&
+0'
+0(
+0)
+0*
+0+
+b00 ,
+b00 -
+b00 .
+0/
+00
+01
+02
+b00 3
+b00 4
+05
+06
+07
+08
+1;
+#25
+0;
+#30
+b00000000000000000000000000000011 #
+1$
+1%
+1&
+1'
+1(
+1)
+1*
+1+
+b11 ,
+b11 -
+b11 .
+1/
+10
+11
+12
+b11 3
+b11 4
+15
+16
+17
+18
+1;
+#35
+0;
+#40
+b00000000000000000000000000000100 #
+0$
+0%
+0&
+0'
+0(
+0)
+0*
+0+
+b00 ,
+b00 -
+b00 .
+0/
+00
+01
+02
+b00 3
+b00 4
+05
+06
+07
+08
+1;
+#45
+0;
+#50
+b00000000000000000000000000000101 #
+1$
+1%
+1&
+1'
+1(
+1)
+1*
+1+
+b11 ,
+b11 -
+b11 .
+1/
+10
+11
+12
+b11 3
+b11 4
+15
+16
+17
+18
+1;
+#55
+0;
+#60
+b00000000000000000000000000000110 #
+0$
+0%
+0&
+0'
+0(
+0)
+0*
+0+
+b00 ,
+b00 -
+b00 .
+0/
+00
+01
+02
+b00 3
+b00 4
+05
+06
+07
+08
+1;
diff --git a/test_regress/t/t_trace_complex_structs.pl b/test_regress/t/t_trace_complex_structs.pl
new file mode 100755
index 0000000..1d37480
--- /dev/null
+++ b/test_regress/t/t_trace_complex_structs.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+if (!$::Driver) { use FindBin; exec("$FindBin::Bin/bootstrap.pl", @ARGV, $0); die; }
+# DESCRIPTION: Verilator: Verilog Test driver/expect definition
+#
+# Copyright 2003-2009 by Wilson Snyder. This program is free software; you can
+# redistribute it and/or modify it under the terms of either the GNU
+# Lesser General Public License Version 3 or the Perl Artistic License
+# Version 2.0.
+
+top_filename("t_trace_complex.v");
+
+compile (
+	 verilator_flags2 => ['--cc --trace --trace-structs'],
+	 );
+
+execute (
+	 check_finished=>1,
+	 );
+
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_strp /);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_strp_strp /);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_arrp /);
+file_grep_not ("$Self->{obj_dir}/simx.vcd", qr/ v_arrp_arrp /);
+file_grep_not ("$Self->{obj_dir}/simx.vcd", qr/ v_arrp_strp /);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_arru\(/);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_arru_arru\(/);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_arru_arrp\(/);
+file_grep     ("$Self->{obj_dir}/simx.vcd", qr/ v_arru_strp\(/);
+
+vcd_identical ("$Self->{obj_dir}/simx.vcd", "t/$Self->{name}.out");
+
+ok(1);
+1;
diff --git a/test_sc/Makefile b/test_sc/Makefile
index 550deab..60a850b 100644
--- a/test_sc/Makefile
+++ b/test_sc/Makefile
@@ -5,7 +5,7 @@
 # This calls the object directory makefile.  That allows the objects to
 # be placed in the "current directory" which simplifies the Makefile.
 #
-# Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/test_sc/Makefile_obj b/test_sc/Makefile_obj
index 41ed9c7..492d917 100644
--- a/test_sc/Makefile_obj
+++ b/test_sc/Makefile_obj
@@ -5,7 +5,7 @@
 #
 # This is executed in the object directory, and called by ../Makefile
 #
-# Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/test_sc/sc_main.cpp b/test_sc/sc_main.cpp
index 6a5db64..ba6be6a 100644
--- a/test_sc/sc_main.cpp
+++ b/test_sc/sc_main.cpp
@@ -1,7 +1,7 @@
 // -*- SystemC -*-
 // DESCRIPTION: Verilator Example: Top level main for invoking SystemC model
 //
-// Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/test_sp/Makefile b/test_sp/Makefile
index 81dd00a..78dbffb 100644
--- a/test_sp/Makefile
+++ b/test_sp/Makefile
@@ -5,7 +5,7 @@
 # This calls the object directory makefile.  That allows the objects to
 # be placed in the "current directory" which simplifies the Makefile.
 #
-# Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/test_sp/Makefile_obj b/test_sp/Makefile_obj
index d08039a..9386bb5 100644
--- a/test_sp/Makefile_obj
+++ b/test_sp/Makefile_obj
@@ -5,7 +5,7 @@
 #
 # This is executed in the object directory, and called by ../Makefile
 #
-# Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/test_vcs/Makefile b/test_vcs/Makefile
index 5ce3c4e..1619183 100644
--- a/test_vcs/Makefile
+++ b/test_vcs/Makefile
@@ -5,7 +5,7 @@
 # This calls the object directory makefile.  That allows the objects to
 # be placed in the "current directory" which simplifies the Makefile.
 #
-# Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+# Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 # redistribute it and/or modify it under the terms of either the GNU
 # Lesser General Public License Version 3 or the Perl Artistic License
 # Version 2.0.
diff --git a/test_verilated/sim_main.cpp b/test_verilated/sim_main.cpp
index cd57d74..e2a86a9 100644
--- a/test_verilated/sim_main.cpp
+++ b/test_verilated/sim_main.cpp
@@ -1,6 +1,6 @@
 // DESCRIPTION: Verilator Test: Top level main for invoking model
 //
-// Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/test_verilated/sim_main.v b/test_verilated/sim_main.v
index 40d8a82..6871af5 100644
--- a/test_verilated/sim_main.v
+++ b/test_verilated/sim_main.v
@@ -1,6 +1,6 @@
 // DESCRIPTION: Verilator Test: Top level main for invoking model
 //
-// Copyright 2003-2013 by Wilson Snyder. This program is free software; you can
+// Copyright 2003-2014 by Wilson Snyder. This program is free software; you can
 // redistribute it and/or modify it under the terms of either the GNU
 // Lesser General Public License Version 3 or the Perl Artistic License
 // Version 2.0.
diff --git a/test_verilated/vgen.pl b/test_verilated/vgen.pl
index a38b113..fa4465b 100755
--- a/test_verilated/vgen.pl
+++ b/test_verilated/vgen.pl
@@ -1133,7 +1133,7 @@ Include some signed arithmetic in the generated code.  Experimental.
 
 =head1 DISTRIBUTION
 
-Copyright 2001-2013 by Wilson Snyder.  Verilator is free software; you can
+Copyright 2001-2014 by Wilson Snyder.  Verilator is free software; you can
 redistribute it and/or modify it under the terms of either the GNU Lesser
 General Public License Version 3 or the Perl Artistic License Version 2.0.
 
diff --git a/verilator.1 b/verilator.1
index c5511e3..f25592b 100644
--- a/verilator.1
+++ b/verilator.1
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "VERILATOR 1"
-.TH VERILATOR 1 "2013-11-26" "perl v5.14.2" "User Contributed Perl Documentation"
+.TH VERILATOR 1 "2013-12-21" "perl v5.14.2" "User Contributed Perl Documentation"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
@@ -258,6 +258,7 @@ descriptions in the next sections for more information.
 \&    \-\-trace\-depth <levels>      Depth of tracing
 \&    \-\-trace\-max\-array <depth>   Maximum bit width for tracing
 \&    \-\-trace\-max\-width <width>   Maximum array depth for tracing
+\&    \-\-trace\-structs             Enable tracing structure names
 \&    \-\-trace\-underscore          Enable tracing of _signals
 \&     \-U<var>                    Undefine preprocessor define
 \&    \-\-unroll\-count <loops>      Tune maximum loop iterations
@@ -643,7 +644,9 @@ to gcc \-MP option.
 .IP "\-\-Mdir \fIdirectory\fR" 4
 .IX Item "--Mdir directory"
 Specifies the name of the Make object directory.  All generated files will
-be placed in this directory.  If not specified, \*(L"obj_dir\*(R" is used.
+be placed in this directory.  If not specified, \*(L"obj_dir\*(R" is used.  The
+directory is created if it does not exist and the parent directories exist;
+otherwise manually create the Mdir before calling Verilator.
 .IP "\-\-mod\-prefix \fItopname\fR" 4
 .IX Item "--mod-prefix topname"
 Specifies the name to prepend to all lower level classes.  Defaults to
@@ -876,6 +879,12 @@ simulations.
 Rarely needed.  Specify the maximum bit width of a signal that may be
 traced.  Defaults to 256, as tracing large vectors may greatly slow traced
 simulations.
+.IP "\-\-trace\-structs" 4
+.IX Item "--trace-structs"
+Enable tracing to show the name of packed structure, union, and packed
+array fields, rather than a simgle combined packed bus.  Due to \s-1VCD\s0 file
+format constraints this may result in significantly slower trace times and
+larger trace files.
 .IP "\-\-trace\-underscore" 4
 .IX Item "--trace-underscore"
 Enable tracing of signals that start with an underscore. Normally, these
@@ -3583,7 +3592,7 @@ Thanks to them, and all those we've missed including above.
 .IX Header "DISTRIBUTION"
 The latest version is available from <http://www.veripool.org/>.
 .PP
-Copyright 2003\-2013 by Wilson Snyder.  Verilator is free software; you can
+Copyright 2003\-2014 by Wilson Snyder.  Verilator is free software; you can
 redistribute it and/or modify the Verilator internals under the terms of
 either the \s-1GNU\s0 Lesser General Public License Version 3 or the Perl Artistic
 License Version 2.0.
diff --git a/verilator.html b/verilator.html
index b25e0f2..d238a25 100644
--- a/verilator.html
+++ b/verilator.html
@@ -3707,7 +3707,7 @@ Williams, Jeff Winston, Joshua Wise, Johan Wouters, and Ding Xiaoliang.</p>
 <hr />
 <h1><a name="distribution">DISTRIBUTION</a></h1>
 <p>The latest version is available from <a href="http://www.veripool.org/">http://www.veripool.org/</a>.</p>
-<p>Copyright 2003-2013 by Wilson Snyder.  Verilator is free software; you can
+<p>Copyright 2003-2014 by Wilson Snyder.  Verilator is free software; you can
 redistribute it and/or modify the Verilator internals under the terms of
 either the GNU Lesser General Public License Version 3 or the Perl Artistic
 License Version 2.0.</p>
diff --git a/verilator.pdf b/verilator.pdf
index 3c25a4a..429d00c 100644
Binary files a/verilator.pdf and b/verilator.pdf differ
diff --git a/verilator.txt b/verilator.txt
index e59cb25..abfd2a0 100644
--- a/verilator.txt
+++ b/verilator.txt
@@ -3381,7 +3381,7 @@ CONTRIBUTORS
 DISTRIBUTION
     The latest version is available from <http://www.veripool.org/>.
 
-    Copyright 2003-2013 by Wilson Snyder. Verilator is free software; you
+    Copyright 2003-2014 by Wilson Snyder. Verilator is free software; you
     can redistribute it and/or modify the Verilator internals under the
     terms of either the GNU Lesser General Public License Version 3 or the
     Perl Artistic License Version 2.0.

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-electronics/verilator.git



More information about the Pkg-electronics-commits mailing list