From e19d077d44692b1177330e55e9b5270802871ec6 Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Sun, 5 Mar 2023 08:58:12 -0800 Subject: [PATCH 1/2] Iterate static arrays $left to $right in foreach loops foreach loops are supposed to iterate arrays $left to $right. E.g. `reg x[3:0]` should be iterated from 3 to 0 and `y[1:4]` from 1 to 4. The current implementation iterates them from $low to $high. Modify this to either count up or down depending on whether $left or $right is the larger of the two values. Note that the same applies for dynamic arrays. But since for dynamic arrays $left is always 0 and $right is always $high they always count up and we do not need to differentiate between two different cases. Signed-off-by: Lars-Peter Clausen --- elaborate.cc | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/elaborate.cc b/elaborate.cc index bf285903c..27d2ea350 100644 --- a/elaborate.cc +++ b/elaborate.cc @@ -5276,7 +5276,7 @@ static void find_property_in_class(const LineInfo&loc, const NetScope*scope, per /* * The foreach statement can be written as a for statement like so: * - * for ( = $low() ; <= $high() ; += 1) + * for ( = $left() ; {<,>}= $right() ; {+,-}= 1) * * * The variable is already known to be in the containing named @@ -5386,6 +5386,9 @@ NetProc* PForeach::elaborate(Design*des, NetScope*scope) const NetESignal*idx_exp = new NetESignal(idx_sig); idx_exp->set_line(*this); + // This is a dynamic array or queue where $low is $left and $high is + // $right. It will always count up. + // Make an initialization expression for the index. NetESFunc*init_expr = new NetESFunc("$low", &netvector_t::atom2s32, 1); init_expr->set_line(*this); @@ -5458,36 +5461,33 @@ NetProc* PForeach::elaborate_static_array_(Design*des, NetScope*scope, // Get the $high and $low constant values for this slice // of the array. - NetEConst*hig_expr = make_const_val_s(idx_range.get_msb()); - NetEConst*low_expr = make_const_val_s(idx_range.get_lsb()); - if (idx_range.get_msb() < idx_range.get_lsb()) { - NetEConst*tmp = hig_expr; - hig_expr = low_expr; - low_expr = tmp; - } + NetEConst*left_expr = make_const_val_s(idx_range.get_msb()); + NetEConst*right_expr = make_const_val_s(idx_range.get_lsb()); - hig_expr->set_line(*this); - low_expr->set_line(*this); + bool up = idx_range.get_msb() < idx_range.get_lsb(); + + left_expr->set_line(*this); + right_expr->set_line(*this); pform_name_t idx_name; idx_name.push_back(name_component_t(index_vars_[idx_idx])); NetNet*idx_sig = des->find_signal(scope, idx_name); ivl_assert(*this, idx_sig); - // Make the condition expression <= $high(slice) + // Make the condition expression {<,>}= $right(slice) NetESignal*idx_expr = new NetESignal(idx_sig); idx_expr->set_line(*this); - NetEBComp*cond_expr = new NetEBComp('L', idx_expr, hig_expr); + NetEBComp*cond_expr = new NetEBComp(up ? 'L' : 'G', idx_expr, right_expr); cond_expr->set_line(*this); - // Make the step statement: += 1 + // Make the step statement: {+,-}= 1 NetAssign_*idx_lv = new NetAssign_(idx_sig); NetEConst*step_val = make_const_val_s(1); - NetAssign*step = new NetAssign(idx_lv, '+', step_val); + NetAssign*step = new NetAssign(idx_lv, up ? '+' : '-', step_val); step->set_line(*this); - stmt = new NetForLoop(idx_sig, low_expr, cond_expr, sub, step); + stmt = new NetForLoop(idx_sig, left_expr, cond_expr, sub, step); stmt->set_line(*this); sub = stmt; From 6fc6826822d0290feeced85c983494ea829994eb Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Thu, 9 Mar 2023 05:55:14 -0800 Subject: [PATCH 2/2] Add regression test for foreach count direction Check that foreach counts counts from $left to $right. This means it should count up if $left is less than $right and count down otherwise. Signed-off-by: Lars-Peter Clausen --- ivtest/gold/sv_foreach9-vvp-stdout.gold | 2310 +++++++++++++++++++++++ ivtest/ivltests/sv_foreach10.v | 40 + ivtest/ivltests/sv_foreach9.v | 13 + ivtest/regress-vvp.list | 2 + ivtest/vvp_tests/sv_foreach10.json | 5 + ivtest/vvp_tests/sv_foreach9.json | 6 + 6 files changed, 2376 insertions(+) create mode 100644 ivtest/gold/sv_foreach9-vvp-stdout.gold create mode 100644 ivtest/ivltests/sv_foreach10.v create mode 100644 ivtest/ivltests/sv_foreach9.v create mode 100644 ivtest/vvp_tests/sv_foreach10.json create mode 100644 ivtest/vvp_tests/sv_foreach9.json diff --git a/ivtest/gold/sv_foreach9-vvp-stdout.gold b/ivtest/gold/sv_foreach9-vvp-stdout.gold new file mode 100644 index 000000000..6061fe463 --- /dev/null +++ b/ivtest/gold/sv_foreach9-vvp-stdout.gold @@ -0,0 +1,2310 @@ + 0 4 0 0 2 + 0 4 0 0 1 + 0 4 0 0 0 + 0 4 0 1 2 + 0 4 0 1 1 + 0 4 0 1 0 + 0 4 1 0 2 + 0 4 1 0 1 + 0 4 1 0 0 + 0 4 1 1 2 + 0 4 1 1 1 + 0 4 1 1 0 + 0 4 2 0 2 + 0 4 2 0 1 + 0 4 2 0 0 + 0 4 2 1 2 + 0 4 2 1 1 + 0 4 2 1 0 + 0 4 3 0 2 + 0 4 3 0 1 + 0 4 3 0 0 + 0 4 3 1 2 + 0 4 3 1 1 + 0 4 3 1 0 + 0 4 4 0 2 + 0 4 4 0 1 + 0 4 4 0 0 + 0 4 4 1 2 + 0 4 4 1 1 + 0 4 4 1 0 + 0 4 5 0 2 + 0 4 5 0 1 + 0 4 5 0 0 + 0 4 5 1 2 + 0 4 5 1 1 + 0 4 5 1 0 + 0 4 6 0 2 + 0 4 6 0 1 + 0 4 6 0 0 + 0 4 6 1 2 + 0 4 6 1 1 + 0 4 6 1 0 + 0 4 7 0 2 + 0 4 7 0 1 + 0 4 7 0 0 + 0 4 7 1 2 + 0 4 7 1 1 + 0 4 7 1 0 + 0 4 8 0 2 + 0 4 8 0 1 + 0 4 8 0 0 + 0 4 8 1 2 + 0 4 8 1 1 + 0 4 8 1 0 + 0 4 9 0 2 + 0 4 9 0 1 + 0 4 9 0 0 + 0 4 9 1 2 + 0 4 9 1 1 + 0 4 9 1 0 + 0 4 10 0 2 + 0 4 10 0 1 + 0 4 10 0 0 + 0 4 10 1 2 + 0 4 10 1 1 + 0 4 10 1 0 + 0 3 0 0 2 + 0 3 0 0 1 + 0 3 0 0 0 + 0 3 0 1 2 + 0 3 0 1 1 + 0 3 0 1 0 + 0 3 1 0 2 + 0 3 1 0 1 + 0 3 1 0 0 + 0 3 1 1 2 + 0 3 1 1 1 + 0 3 1 1 0 + 0 3 2 0 2 + 0 3 2 0 1 + 0 3 2 0 0 + 0 3 2 1 2 + 0 3 2 1 1 + 0 3 2 1 0 + 0 3 3 0 2 + 0 3 3 0 1 + 0 3 3 0 0 + 0 3 3 1 2 + 0 3 3 1 1 + 0 3 3 1 0 + 0 3 4 0 2 + 0 3 4 0 1 + 0 3 4 0 0 + 0 3 4 1 2 + 0 3 4 1 1 + 0 3 4 1 0 + 0 3 5 0 2 + 0 3 5 0 1 + 0 3 5 0 0 + 0 3 5 1 2 + 0 3 5 1 1 + 0 3 5 1 0 + 0 3 6 0 2 + 0 3 6 0 1 + 0 3 6 0 0 + 0 3 6 1 2 + 0 3 6 1 1 + 0 3 6 1 0 + 0 3 7 0 2 + 0 3 7 0 1 + 0 3 7 0 0 + 0 3 7 1 2 + 0 3 7 1 1 + 0 3 7 1 0 + 0 3 8 0 2 + 0 3 8 0 1 + 0 3 8 0 0 + 0 3 8 1 2 + 0 3 8 1 1 + 0 3 8 1 0 + 0 3 9 0 2 + 0 3 9 0 1 + 0 3 9 0 0 + 0 3 9 1 2 + 0 3 9 1 1 + 0 3 9 1 0 + 0 3 10 0 2 + 0 3 10 0 1 + 0 3 10 0 0 + 0 3 10 1 2 + 0 3 10 1 1 + 0 3 10 1 0 + 0 2 0 0 2 + 0 2 0 0 1 + 0 2 0 0 0 + 0 2 0 1 2 + 0 2 0 1 1 + 0 2 0 1 0 + 0 2 1 0 2 + 0 2 1 0 1 + 0 2 1 0 0 + 0 2 1 1 2 + 0 2 1 1 1 + 0 2 1 1 0 + 0 2 2 0 2 + 0 2 2 0 1 + 0 2 2 0 0 + 0 2 2 1 2 + 0 2 2 1 1 + 0 2 2 1 0 + 0 2 3 0 2 + 0 2 3 0 1 + 0 2 3 0 0 + 0 2 3 1 2 + 0 2 3 1 1 + 0 2 3 1 0 + 0 2 4 0 2 + 0 2 4 0 1 + 0 2 4 0 0 + 0 2 4 1 2 + 0 2 4 1 1 + 0 2 4 1 0 + 0 2 5 0 2 + 0 2 5 0 1 + 0 2 5 0 0 + 0 2 5 1 2 + 0 2 5 1 1 + 0 2 5 1 0 + 0 2 6 0 2 + 0 2 6 0 1 + 0 2 6 0 0 + 0 2 6 1 2 + 0 2 6 1 1 + 0 2 6 1 0 + 0 2 7 0 2 + 0 2 7 0 1 + 0 2 7 0 0 + 0 2 7 1 2 + 0 2 7 1 1 + 0 2 7 1 0 + 0 2 8 0 2 + 0 2 8 0 1 + 0 2 8 0 0 + 0 2 8 1 2 + 0 2 8 1 1 + 0 2 8 1 0 + 0 2 9 0 2 + 0 2 9 0 1 + 0 2 9 0 0 + 0 2 9 1 2 + 0 2 9 1 1 + 0 2 9 1 0 + 0 2 10 0 2 + 0 2 10 0 1 + 0 2 10 0 0 + 0 2 10 1 2 + 0 2 10 1 1 + 0 2 10 1 0 + 0 1 0 0 2 + 0 1 0 0 1 + 0 1 0 0 0 + 0 1 0 1 2 + 0 1 0 1 1 + 0 1 0 1 0 + 0 1 1 0 2 + 0 1 1 0 1 + 0 1 1 0 0 + 0 1 1 1 2 + 0 1 1 1 1 + 0 1 1 1 0 + 0 1 2 0 2 + 0 1 2 0 1 + 0 1 2 0 0 + 0 1 2 1 2 + 0 1 2 1 1 + 0 1 2 1 0 + 0 1 3 0 2 + 0 1 3 0 1 + 0 1 3 0 0 + 0 1 3 1 2 + 0 1 3 1 1 + 0 1 3 1 0 + 0 1 4 0 2 + 0 1 4 0 1 + 0 1 4 0 0 + 0 1 4 1 2 + 0 1 4 1 1 + 0 1 4 1 0 + 0 1 5 0 2 + 0 1 5 0 1 + 0 1 5 0 0 + 0 1 5 1 2 + 0 1 5 1 1 + 0 1 5 1 0 + 0 1 6 0 2 + 0 1 6 0 1 + 0 1 6 0 0 + 0 1 6 1 2 + 0 1 6 1 1 + 0 1 6 1 0 + 0 1 7 0 2 + 0 1 7 0 1 + 0 1 7 0 0 + 0 1 7 1 2 + 0 1 7 1 1 + 0 1 7 1 0 + 0 1 8 0 2 + 0 1 8 0 1 + 0 1 8 0 0 + 0 1 8 1 2 + 0 1 8 1 1 + 0 1 8 1 0 + 0 1 9 0 2 + 0 1 9 0 1 + 0 1 9 0 0 + 0 1 9 1 2 + 0 1 9 1 1 + 0 1 9 1 0 + 0 1 10 0 2 + 0 1 10 0 1 + 0 1 10 0 0 + 0 1 10 1 2 + 0 1 10 1 1 + 0 1 10 1 0 + 0 0 0 0 2 + 0 0 0 0 1 + 0 0 0 0 0 + 0 0 0 1 2 + 0 0 0 1 1 + 0 0 0 1 0 + 0 0 1 0 2 + 0 0 1 0 1 + 0 0 1 0 0 + 0 0 1 1 2 + 0 0 1 1 1 + 0 0 1 1 0 + 0 0 2 0 2 + 0 0 2 0 1 + 0 0 2 0 0 + 0 0 2 1 2 + 0 0 2 1 1 + 0 0 2 1 0 + 0 0 3 0 2 + 0 0 3 0 1 + 0 0 3 0 0 + 0 0 3 1 2 + 0 0 3 1 1 + 0 0 3 1 0 + 0 0 4 0 2 + 0 0 4 0 1 + 0 0 4 0 0 + 0 0 4 1 2 + 0 0 4 1 1 + 0 0 4 1 0 + 0 0 5 0 2 + 0 0 5 0 1 + 0 0 5 0 0 + 0 0 5 1 2 + 0 0 5 1 1 + 0 0 5 1 0 + 0 0 6 0 2 + 0 0 6 0 1 + 0 0 6 0 0 + 0 0 6 1 2 + 0 0 6 1 1 + 0 0 6 1 0 + 0 0 7 0 2 + 0 0 7 0 1 + 0 0 7 0 0 + 0 0 7 1 2 + 0 0 7 1 1 + 0 0 7 1 0 + 0 0 8 0 2 + 0 0 8 0 1 + 0 0 8 0 0 + 0 0 8 1 2 + 0 0 8 1 1 + 0 0 8 1 0 + 0 0 9 0 2 + 0 0 9 0 1 + 0 0 9 0 0 + 0 0 9 1 2 + 0 0 9 1 1 + 0 0 9 1 0 + 0 0 10 0 2 + 0 0 10 0 1 + 0 0 10 0 0 + 0 0 10 1 2 + 0 0 10 1 1 + 0 0 10 1 0 + 1 4 0 0 2 + 1 4 0 0 1 + 1 4 0 0 0 + 1 4 0 1 2 + 1 4 0 1 1 + 1 4 0 1 0 + 1 4 1 0 2 + 1 4 1 0 1 + 1 4 1 0 0 + 1 4 1 1 2 + 1 4 1 1 1 + 1 4 1 1 0 + 1 4 2 0 2 + 1 4 2 0 1 + 1 4 2 0 0 + 1 4 2 1 2 + 1 4 2 1 1 + 1 4 2 1 0 + 1 4 3 0 2 + 1 4 3 0 1 + 1 4 3 0 0 + 1 4 3 1 2 + 1 4 3 1 1 + 1 4 3 1 0 + 1 4 4 0 2 + 1 4 4 0 1 + 1 4 4 0 0 + 1 4 4 1 2 + 1 4 4 1 1 + 1 4 4 1 0 + 1 4 5 0 2 + 1 4 5 0 1 + 1 4 5 0 0 + 1 4 5 1 2 + 1 4 5 1 1 + 1 4 5 1 0 + 1 4 6 0 2 + 1 4 6 0 1 + 1 4 6 0 0 + 1 4 6 1 2 + 1 4 6 1 1 + 1 4 6 1 0 + 1 4 7 0 2 + 1 4 7 0 1 + 1 4 7 0 0 + 1 4 7 1 2 + 1 4 7 1 1 + 1 4 7 1 0 + 1 4 8 0 2 + 1 4 8 0 1 + 1 4 8 0 0 + 1 4 8 1 2 + 1 4 8 1 1 + 1 4 8 1 0 + 1 4 9 0 2 + 1 4 9 0 1 + 1 4 9 0 0 + 1 4 9 1 2 + 1 4 9 1 1 + 1 4 9 1 0 + 1 4 10 0 2 + 1 4 10 0 1 + 1 4 10 0 0 + 1 4 10 1 2 + 1 4 10 1 1 + 1 4 10 1 0 + 1 3 0 0 2 + 1 3 0 0 1 + 1 3 0 0 0 + 1 3 0 1 2 + 1 3 0 1 1 + 1 3 0 1 0 + 1 3 1 0 2 + 1 3 1 0 1 + 1 3 1 0 0 + 1 3 1 1 2 + 1 3 1 1 1 + 1 3 1 1 0 + 1 3 2 0 2 + 1 3 2 0 1 + 1 3 2 0 0 + 1 3 2 1 2 + 1 3 2 1 1 + 1 3 2 1 0 + 1 3 3 0 2 + 1 3 3 0 1 + 1 3 3 0 0 + 1 3 3 1 2 + 1 3 3 1 1 + 1 3 3 1 0 + 1 3 4 0 2 + 1 3 4 0 1 + 1 3 4 0 0 + 1 3 4 1 2 + 1 3 4 1 1 + 1 3 4 1 0 + 1 3 5 0 2 + 1 3 5 0 1 + 1 3 5 0 0 + 1 3 5 1 2 + 1 3 5 1 1 + 1 3 5 1 0 + 1 3 6 0 2 + 1 3 6 0 1 + 1 3 6 0 0 + 1 3 6 1 2 + 1 3 6 1 1 + 1 3 6 1 0 + 1 3 7 0 2 + 1 3 7 0 1 + 1 3 7 0 0 + 1 3 7 1 2 + 1 3 7 1 1 + 1 3 7 1 0 + 1 3 8 0 2 + 1 3 8 0 1 + 1 3 8 0 0 + 1 3 8 1 2 + 1 3 8 1 1 + 1 3 8 1 0 + 1 3 9 0 2 + 1 3 9 0 1 + 1 3 9 0 0 + 1 3 9 1 2 + 1 3 9 1 1 + 1 3 9 1 0 + 1 3 10 0 2 + 1 3 10 0 1 + 1 3 10 0 0 + 1 3 10 1 2 + 1 3 10 1 1 + 1 3 10 1 0 + 1 2 0 0 2 + 1 2 0 0 1 + 1 2 0 0 0 + 1 2 0 1 2 + 1 2 0 1 1 + 1 2 0 1 0 + 1 2 1 0 2 + 1 2 1 0 1 + 1 2 1 0 0 + 1 2 1 1 2 + 1 2 1 1 1 + 1 2 1 1 0 + 1 2 2 0 2 + 1 2 2 0 1 + 1 2 2 0 0 + 1 2 2 1 2 + 1 2 2 1 1 + 1 2 2 1 0 + 1 2 3 0 2 + 1 2 3 0 1 + 1 2 3 0 0 + 1 2 3 1 2 + 1 2 3 1 1 + 1 2 3 1 0 + 1 2 4 0 2 + 1 2 4 0 1 + 1 2 4 0 0 + 1 2 4 1 2 + 1 2 4 1 1 + 1 2 4 1 0 + 1 2 5 0 2 + 1 2 5 0 1 + 1 2 5 0 0 + 1 2 5 1 2 + 1 2 5 1 1 + 1 2 5 1 0 + 1 2 6 0 2 + 1 2 6 0 1 + 1 2 6 0 0 + 1 2 6 1 2 + 1 2 6 1 1 + 1 2 6 1 0 + 1 2 7 0 2 + 1 2 7 0 1 + 1 2 7 0 0 + 1 2 7 1 2 + 1 2 7 1 1 + 1 2 7 1 0 + 1 2 8 0 2 + 1 2 8 0 1 + 1 2 8 0 0 + 1 2 8 1 2 + 1 2 8 1 1 + 1 2 8 1 0 + 1 2 9 0 2 + 1 2 9 0 1 + 1 2 9 0 0 + 1 2 9 1 2 + 1 2 9 1 1 + 1 2 9 1 0 + 1 2 10 0 2 + 1 2 10 0 1 + 1 2 10 0 0 + 1 2 10 1 2 + 1 2 10 1 1 + 1 2 10 1 0 + 1 1 0 0 2 + 1 1 0 0 1 + 1 1 0 0 0 + 1 1 0 1 2 + 1 1 0 1 1 + 1 1 0 1 0 + 1 1 1 0 2 + 1 1 1 0 1 + 1 1 1 0 0 + 1 1 1 1 2 + 1 1 1 1 1 + 1 1 1 1 0 + 1 1 2 0 2 + 1 1 2 0 1 + 1 1 2 0 0 + 1 1 2 1 2 + 1 1 2 1 1 + 1 1 2 1 0 + 1 1 3 0 2 + 1 1 3 0 1 + 1 1 3 0 0 + 1 1 3 1 2 + 1 1 3 1 1 + 1 1 3 1 0 + 1 1 4 0 2 + 1 1 4 0 1 + 1 1 4 0 0 + 1 1 4 1 2 + 1 1 4 1 1 + 1 1 4 1 0 + 1 1 5 0 2 + 1 1 5 0 1 + 1 1 5 0 0 + 1 1 5 1 2 + 1 1 5 1 1 + 1 1 5 1 0 + 1 1 6 0 2 + 1 1 6 0 1 + 1 1 6 0 0 + 1 1 6 1 2 + 1 1 6 1 1 + 1 1 6 1 0 + 1 1 7 0 2 + 1 1 7 0 1 + 1 1 7 0 0 + 1 1 7 1 2 + 1 1 7 1 1 + 1 1 7 1 0 + 1 1 8 0 2 + 1 1 8 0 1 + 1 1 8 0 0 + 1 1 8 1 2 + 1 1 8 1 1 + 1 1 8 1 0 + 1 1 9 0 2 + 1 1 9 0 1 + 1 1 9 0 0 + 1 1 9 1 2 + 1 1 9 1 1 + 1 1 9 1 0 + 1 1 10 0 2 + 1 1 10 0 1 + 1 1 10 0 0 + 1 1 10 1 2 + 1 1 10 1 1 + 1 1 10 1 0 + 1 0 0 0 2 + 1 0 0 0 1 + 1 0 0 0 0 + 1 0 0 1 2 + 1 0 0 1 1 + 1 0 0 1 0 + 1 0 1 0 2 + 1 0 1 0 1 + 1 0 1 0 0 + 1 0 1 1 2 + 1 0 1 1 1 + 1 0 1 1 0 + 1 0 2 0 2 + 1 0 2 0 1 + 1 0 2 0 0 + 1 0 2 1 2 + 1 0 2 1 1 + 1 0 2 1 0 + 1 0 3 0 2 + 1 0 3 0 1 + 1 0 3 0 0 + 1 0 3 1 2 + 1 0 3 1 1 + 1 0 3 1 0 + 1 0 4 0 2 + 1 0 4 0 1 + 1 0 4 0 0 + 1 0 4 1 2 + 1 0 4 1 1 + 1 0 4 1 0 + 1 0 5 0 2 + 1 0 5 0 1 + 1 0 5 0 0 + 1 0 5 1 2 + 1 0 5 1 1 + 1 0 5 1 0 + 1 0 6 0 2 + 1 0 6 0 1 + 1 0 6 0 0 + 1 0 6 1 2 + 1 0 6 1 1 + 1 0 6 1 0 + 1 0 7 0 2 + 1 0 7 0 1 + 1 0 7 0 0 + 1 0 7 1 2 + 1 0 7 1 1 + 1 0 7 1 0 + 1 0 8 0 2 + 1 0 8 0 1 + 1 0 8 0 0 + 1 0 8 1 2 + 1 0 8 1 1 + 1 0 8 1 0 + 1 0 9 0 2 + 1 0 9 0 1 + 1 0 9 0 0 + 1 0 9 1 2 + 1 0 9 1 1 + 1 0 9 1 0 + 1 0 10 0 2 + 1 0 10 0 1 + 1 0 10 0 0 + 1 0 10 1 2 + 1 0 10 1 1 + 1 0 10 1 0 + 2 4 0 0 2 + 2 4 0 0 1 + 2 4 0 0 0 + 2 4 0 1 2 + 2 4 0 1 1 + 2 4 0 1 0 + 2 4 1 0 2 + 2 4 1 0 1 + 2 4 1 0 0 + 2 4 1 1 2 + 2 4 1 1 1 + 2 4 1 1 0 + 2 4 2 0 2 + 2 4 2 0 1 + 2 4 2 0 0 + 2 4 2 1 2 + 2 4 2 1 1 + 2 4 2 1 0 + 2 4 3 0 2 + 2 4 3 0 1 + 2 4 3 0 0 + 2 4 3 1 2 + 2 4 3 1 1 + 2 4 3 1 0 + 2 4 4 0 2 + 2 4 4 0 1 + 2 4 4 0 0 + 2 4 4 1 2 + 2 4 4 1 1 + 2 4 4 1 0 + 2 4 5 0 2 + 2 4 5 0 1 + 2 4 5 0 0 + 2 4 5 1 2 + 2 4 5 1 1 + 2 4 5 1 0 + 2 4 6 0 2 + 2 4 6 0 1 + 2 4 6 0 0 + 2 4 6 1 2 + 2 4 6 1 1 + 2 4 6 1 0 + 2 4 7 0 2 + 2 4 7 0 1 + 2 4 7 0 0 + 2 4 7 1 2 + 2 4 7 1 1 + 2 4 7 1 0 + 2 4 8 0 2 + 2 4 8 0 1 + 2 4 8 0 0 + 2 4 8 1 2 + 2 4 8 1 1 + 2 4 8 1 0 + 2 4 9 0 2 + 2 4 9 0 1 + 2 4 9 0 0 + 2 4 9 1 2 + 2 4 9 1 1 + 2 4 9 1 0 + 2 4 10 0 2 + 2 4 10 0 1 + 2 4 10 0 0 + 2 4 10 1 2 + 2 4 10 1 1 + 2 4 10 1 0 + 2 3 0 0 2 + 2 3 0 0 1 + 2 3 0 0 0 + 2 3 0 1 2 + 2 3 0 1 1 + 2 3 0 1 0 + 2 3 1 0 2 + 2 3 1 0 1 + 2 3 1 0 0 + 2 3 1 1 2 + 2 3 1 1 1 + 2 3 1 1 0 + 2 3 2 0 2 + 2 3 2 0 1 + 2 3 2 0 0 + 2 3 2 1 2 + 2 3 2 1 1 + 2 3 2 1 0 + 2 3 3 0 2 + 2 3 3 0 1 + 2 3 3 0 0 + 2 3 3 1 2 + 2 3 3 1 1 + 2 3 3 1 0 + 2 3 4 0 2 + 2 3 4 0 1 + 2 3 4 0 0 + 2 3 4 1 2 + 2 3 4 1 1 + 2 3 4 1 0 + 2 3 5 0 2 + 2 3 5 0 1 + 2 3 5 0 0 + 2 3 5 1 2 + 2 3 5 1 1 + 2 3 5 1 0 + 2 3 6 0 2 + 2 3 6 0 1 + 2 3 6 0 0 + 2 3 6 1 2 + 2 3 6 1 1 + 2 3 6 1 0 + 2 3 7 0 2 + 2 3 7 0 1 + 2 3 7 0 0 + 2 3 7 1 2 + 2 3 7 1 1 + 2 3 7 1 0 + 2 3 8 0 2 + 2 3 8 0 1 + 2 3 8 0 0 + 2 3 8 1 2 + 2 3 8 1 1 + 2 3 8 1 0 + 2 3 9 0 2 + 2 3 9 0 1 + 2 3 9 0 0 + 2 3 9 1 2 + 2 3 9 1 1 + 2 3 9 1 0 + 2 3 10 0 2 + 2 3 10 0 1 + 2 3 10 0 0 + 2 3 10 1 2 + 2 3 10 1 1 + 2 3 10 1 0 + 2 2 0 0 2 + 2 2 0 0 1 + 2 2 0 0 0 + 2 2 0 1 2 + 2 2 0 1 1 + 2 2 0 1 0 + 2 2 1 0 2 + 2 2 1 0 1 + 2 2 1 0 0 + 2 2 1 1 2 + 2 2 1 1 1 + 2 2 1 1 0 + 2 2 2 0 2 + 2 2 2 0 1 + 2 2 2 0 0 + 2 2 2 1 2 + 2 2 2 1 1 + 2 2 2 1 0 + 2 2 3 0 2 + 2 2 3 0 1 + 2 2 3 0 0 + 2 2 3 1 2 + 2 2 3 1 1 + 2 2 3 1 0 + 2 2 4 0 2 + 2 2 4 0 1 + 2 2 4 0 0 + 2 2 4 1 2 + 2 2 4 1 1 + 2 2 4 1 0 + 2 2 5 0 2 + 2 2 5 0 1 + 2 2 5 0 0 + 2 2 5 1 2 + 2 2 5 1 1 + 2 2 5 1 0 + 2 2 6 0 2 + 2 2 6 0 1 + 2 2 6 0 0 + 2 2 6 1 2 + 2 2 6 1 1 + 2 2 6 1 0 + 2 2 7 0 2 + 2 2 7 0 1 + 2 2 7 0 0 + 2 2 7 1 2 + 2 2 7 1 1 + 2 2 7 1 0 + 2 2 8 0 2 + 2 2 8 0 1 + 2 2 8 0 0 + 2 2 8 1 2 + 2 2 8 1 1 + 2 2 8 1 0 + 2 2 9 0 2 + 2 2 9 0 1 + 2 2 9 0 0 + 2 2 9 1 2 + 2 2 9 1 1 + 2 2 9 1 0 + 2 2 10 0 2 + 2 2 10 0 1 + 2 2 10 0 0 + 2 2 10 1 2 + 2 2 10 1 1 + 2 2 10 1 0 + 2 1 0 0 2 + 2 1 0 0 1 + 2 1 0 0 0 + 2 1 0 1 2 + 2 1 0 1 1 + 2 1 0 1 0 + 2 1 1 0 2 + 2 1 1 0 1 + 2 1 1 0 0 + 2 1 1 1 2 + 2 1 1 1 1 + 2 1 1 1 0 + 2 1 2 0 2 + 2 1 2 0 1 + 2 1 2 0 0 + 2 1 2 1 2 + 2 1 2 1 1 + 2 1 2 1 0 + 2 1 3 0 2 + 2 1 3 0 1 + 2 1 3 0 0 + 2 1 3 1 2 + 2 1 3 1 1 + 2 1 3 1 0 + 2 1 4 0 2 + 2 1 4 0 1 + 2 1 4 0 0 + 2 1 4 1 2 + 2 1 4 1 1 + 2 1 4 1 0 + 2 1 5 0 2 + 2 1 5 0 1 + 2 1 5 0 0 + 2 1 5 1 2 + 2 1 5 1 1 + 2 1 5 1 0 + 2 1 6 0 2 + 2 1 6 0 1 + 2 1 6 0 0 + 2 1 6 1 2 + 2 1 6 1 1 + 2 1 6 1 0 + 2 1 7 0 2 + 2 1 7 0 1 + 2 1 7 0 0 + 2 1 7 1 2 + 2 1 7 1 1 + 2 1 7 1 0 + 2 1 8 0 2 + 2 1 8 0 1 + 2 1 8 0 0 + 2 1 8 1 2 + 2 1 8 1 1 + 2 1 8 1 0 + 2 1 9 0 2 + 2 1 9 0 1 + 2 1 9 0 0 + 2 1 9 1 2 + 2 1 9 1 1 + 2 1 9 1 0 + 2 1 10 0 2 + 2 1 10 0 1 + 2 1 10 0 0 + 2 1 10 1 2 + 2 1 10 1 1 + 2 1 10 1 0 + 2 0 0 0 2 + 2 0 0 0 1 + 2 0 0 0 0 + 2 0 0 1 2 + 2 0 0 1 1 + 2 0 0 1 0 + 2 0 1 0 2 + 2 0 1 0 1 + 2 0 1 0 0 + 2 0 1 1 2 + 2 0 1 1 1 + 2 0 1 1 0 + 2 0 2 0 2 + 2 0 2 0 1 + 2 0 2 0 0 + 2 0 2 1 2 + 2 0 2 1 1 + 2 0 2 1 0 + 2 0 3 0 2 + 2 0 3 0 1 + 2 0 3 0 0 + 2 0 3 1 2 + 2 0 3 1 1 + 2 0 3 1 0 + 2 0 4 0 2 + 2 0 4 0 1 + 2 0 4 0 0 + 2 0 4 1 2 + 2 0 4 1 1 + 2 0 4 1 0 + 2 0 5 0 2 + 2 0 5 0 1 + 2 0 5 0 0 + 2 0 5 1 2 + 2 0 5 1 1 + 2 0 5 1 0 + 2 0 6 0 2 + 2 0 6 0 1 + 2 0 6 0 0 + 2 0 6 1 2 + 2 0 6 1 1 + 2 0 6 1 0 + 2 0 7 0 2 + 2 0 7 0 1 + 2 0 7 0 0 + 2 0 7 1 2 + 2 0 7 1 1 + 2 0 7 1 0 + 2 0 8 0 2 + 2 0 8 0 1 + 2 0 8 0 0 + 2 0 8 1 2 + 2 0 8 1 1 + 2 0 8 1 0 + 2 0 9 0 2 + 2 0 9 0 1 + 2 0 9 0 0 + 2 0 9 1 2 + 2 0 9 1 1 + 2 0 9 1 0 + 2 0 10 0 2 + 2 0 10 0 1 + 2 0 10 0 0 + 2 0 10 1 2 + 2 0 10 1 1 + 2 0 10 1 0 + 3 4 0 0 2 + 3 4 0 0 1 + 3 4 0 0 0 + 3 4 0 1 2 + 3 4 0 1 1 + 3 4 0 1 0 + 3 4 1 0 2 + 3 4 1 0 1 + 3 4 1 0 0 + 3 4 1 1 2 + 3 4 1 1 1 + 3 4 1 1 0 + 3 4 2 0 2 + 3 4 2 0 1 + 3 4 2 0 0 + 3 4 2 1 2 + 3 4 2 1 1 + 3 4 2 1 0 + 3 4 3 0 2 + 3 4 3 0 1 + 3 4 3 0 0 + 3 4 3 1 2 + 3 4 3 1 1 + 3 4 3 1 0 + 3 4 4 0 2 + 3 4 4 0 1 + 3 4 4 0 0 + 3 4 4 1 2 + 3 4 4 1 1 + 3 4 4 1 0 + 3 4 5 0 2 + 3 4 5 0 1 + 3 4 5 0 0 + 3 4 5 1 2 + 3 4 5 1 1 + 3 4 5 1 0 + 3 4 6 0 2 + 3 4 6 0 1 + 3 4 6 0 0 + 3 4 6 1 2 + 3 4 6 1 1 + 3 4 6 1 0 + 3 4 7 0 2 + 3 4 7 0 1 + 3 4 7 0 0 + 3 4 7 1 2 + 3 4 7 1 1 + 3 4 7 1 0 + 3 4 8 0 2 + 3 4 8 0 1 + 3 4 8 0 0 + 3 4 8 1 2 + 3 4 8 1 1 + 3 4 8 1 0 + 3 4 9 0 2 + 3 4 9 0 1 + 3 4 9 0 0 + 3 4 9 1 2 + 3 4 9 1 1 + 3 4 9 1 0 + 3 4 10 0 2 + 3 4 10 0 1 + 3 4 10 0 0 + 3 4 10 1 2 + 3 4 10 1 1 + 3 4 10 1 0 + 3 3 0 0 2 + 3 3 0 0 1 + 3 3 0 0 0 + 3 3 0 1 2 + 3 3 0 1 1 + 3 3 0 1 0 + 3 3 1 0 2 + 3 3 1 0 1 + 3 3 1 0 0 + 3 3 1 1 2 + 3 3 1 1 1 + 3 3 1 1 0 + 3 3 2 0 2 + 3 3 2 0 1 + 3 3 2 0 0 + 3 3 2 1 2 + 3 3 2 1 1 + 3 3 2 1 0 + 3 3 3 0 2 + 3 3 3 0 1 + 3 3 3 0 0 + 3 3 3 1 2 + 3 3 3 1 1 + 3 3 3 1 0 + 3 3 4 0 2 + 3 3 4 0 1 + 3 3 4 0 0 + 3 3 4 1 2 + 3 3 4 1 1 + 3 3 4 1 0 + 3 3 5 0 2 + 3 3 5 0 1 + 3 3 5 0 0 + 3 3 5 1 2 + 3 3 5 1 1 + 3 3 5 1 0 + 3 3 6 0 2 + 3 3 6 0 1 + 3 3 6 0 0 + 3 3 6 1 2 + 3 3 6 1 1 + 3 3 6 1 0 + 3 3 7 0 2 + 3 3 7 0 1 + 3 3 7 0 0 + 3 3 7 1 2 + 3 3 7 1 1 + 3 3 7 1 0 + 3 3 8 0 2 + 3 3 8 0 1 + 3 3 8 0 0 + 3 3 8 1 2 + 3 3 8 1 1 + 3 3 8 1 0 + 3 3 9 0 2 + 3 3 9 0 1 + 3 3 9 0 0 + 3 3 9 1 2 + 3 3 9 1 1 + 3 3 9 1 0 + 3 3 10 0 2 + 3 3 10 0 1 + 3 3 10 0 0 + 3 3 10 1 2 + 3 3 10 1 1 + 3 3 10 1 0 + 3 2 0 0 2 + 3 2 0 0 1 + 3 2 0 0 0 + 3 2 0 1 2 + 3 2 0 1 1 + 3 2 0 1 0 + 3 2 1 0 2 + 3 2 1 0 1 + 3 2 1 0 0 + 3 2 1 1 2 + 3 2 1 1 1 + 3 2 1 1 0 + 3 2 2 0 2 + 3 2 2 0 1 + 3 2 2 0 0 + 3 2 2 1 2 + 3 2 2 1 1 + 3 2 2 1 0 + 3 2 3 0 2 + 3 2 3 0 1 + 3 2 3 0 0 + 3 2 3 1 2 + 3 2 3 1 1 + 3 2 3 1 0 + 3 2 4 0 2 + 3 2 4 0 1 + 3 2 4 0 0 + 3 2 4 1 2 + 3 2 4 1 1 + 3 2 4 1 0 + 3 2 5 0 2 + 3 2 5 0 1 + 3 2 5 0 0 + 3 2 5 1 2 + 3 2 5 1 1 + 3 2 5 1 0 + 3 2 6 0 2 + 3 2 6 0 1 + 3 2 6 0 0 + 3 2 6 1 2 + 3 2 6 1 1 + 3 2 6 1 0 + 3 2 7 0 2 + 3 2 7 0 1 + 3 2 7 0 0 + 3 2 7 1 2 + 3 2 7 1 1 + 3 2 7 1 0 + 3 2 8 0 2 + 3 2 8 0 1 + 3 2 8 0 0 + 3 2 8 1 2 + 3 2 8 1 1 + 3 2 8 1 0 + 3 2 9 0 2 + 3 2 9 0 1 + 3 2 9 0 0 + 3 2 9 1 2 + 3 2 9 1 1 + 3 2 9 1 0 + 3 2 10 0 2 + 3 2 10 0 1 + 3 2 10 0 0 + 3 2 10 1 2 + 3 2 10 1 1 + 3 2 10 1 0 + 3 1 0 0 2 + 3 1 0 0 1 + 3 1 0 0 0 + 3 1 0 1 2 + 3 1 0 1 1 + 3 1 0 1 0 + 3 1 1 0 2 + 3 1 1 0 1 + 3 1 1 0 0 + 3 1 1 1 2 + 3 1 1 1 1 + 3 1 1 1 0 + 3 1 2 0 2 + 3 1 2 0 1 + 3 1 2 0 0 + 3 1 2 1 2 + 3 1 2 1 1 + 3 1 2 1 0 + 3 1 3 0 2 + 3 1 3 0 1 + 3 1 3 0 0 + 3 1 3 1 2 + 3 1 3 1 1 + 3 1 3 1 0 + 3 1 4 0 2 + 3 1 4 0 1 + 3 1 4 0 0 + 3 1 4 1 2 + 3 1 4 1 1 + 3 1 4 1 0 + 3 1 5 0 2 + 3 1 5 0 1 + 3 1 5 0 0 + 3 1 5 1 2 + 3 1 5 1 1 + 3 1 5 1 0 + 3 1 6 0 2 + 3 1 6 0 1 + 3 1 6 0 0 + 3 1 6 1 2 + 3 1 6 1 1 + 3 1 6 1 0 + 3 1 7 0 2 + 3 1 7 0 1 + 3 1 7 0 0 + 3 1 7 1 2 + 3 1 7 1 1 + 3 1 7 1 0 + 3 1 8 0 2 + 3 1 8 0 1 + 3 1 8 0 0 + 3 1 8 1 2 + 3 1 8 1 1 + 3 1 8 1 0 + 3 1 9 0 2 + 3 1 9 0 1 + 3 1 9 0 0 + 3 1 9 1 2 + 3 1 9 1 1 + 3 1 9 1 0 + 3 1 10 0 2 + 3 1 10 0 1 + 3 1 10 0 0 + 3 1 10 1 2 + 3 1 10 1 1 + 3 1 10 1 0 + 3 0 0 0 2 + 3 0 0 0 1 + 3 0 0 0 0 + 3 0 0 1 2 + 3 0 0 1 1 + 3 0 0 1 0 + 3 0 1 0 2 + 3 0 1 0 1 + 3 0 1 0 0 + 3 0 1 1 2 + 3 0 1 1 1 + 3 0 1 1 0 + 3 0 2 0 2 + 3 0 2 0 1 + 3 0 2 0 0 + 3 0 2 1 2 + 3 0 2 1 1 + 3 0 2 1 0 + 3 0 3 0 2 + 3 0 3 0 1 + 3 0 3 0 0 + 3 0 3 1 2 + 3 0 3 1 1 + 3 0 3 1 0 + 3 0 4 0 2 + 3 0 4 0 1 + 3 0 4 0 0 + 3 0 4 1 2 + 3 0 4 1 1 + 3 0 4 1 0 + 3 0 5 0 2 + 3 0 5 0 1 + 3 0 5 0 0 + 3 0 5 1 2 + 3 0 5 1 1 + 3 0 5 1 0 + 3 0 6 0 2 + 3 0 6 0 1 + 3 0 6 0 0 + 3 0 6 1 2 + 3 0 6 1 1 + 3 0 6 1 0 + 3 0 7 0 2 + 3 0 7 0 1 + 3 0 7 0 0 + 3 0 7 1 2 + 3 0 7 1 1 + 3 0 7 1 0 + 3 0 8 0 2 + 3 0 8 0 1 + 3 0 8 0 0 + 3 0 8 1 2 + 3 0 8 1 1 + 3 0 8 1 0 + 3 0 9 0 2 + 3 0 9 0 1 + 3 0 9 0 0 + 3 0 9 1 2 + 3 0 9 1 1 + 3 0 9 1 0 + 3 0 10 0 2 + 3 0 10 0 1 + 3 0 10 0 0 + 3 0 10 1 2 + 3 0 10 1 1 + 3 0 10 1 0 + 4 4 0 0 2 + 4 4 0 0 1 + 4 4 0 0 0 + 4 4 0 1 2 + 4 4 0 1 1 + 4 4 0 1 0 + 4 4 1 0 2 + 4 4 1 0 1 + 4 4 1 0 0 + 4 4 1 1 2 + 4 4 1 1 1 + 4 4 1 1 0 + 4 4 2 0 2 + 4 4 2 0 1 + 4 4 2 0 0 + 4 4 2 1 2 + 4 4 2 1 1 + 4 4 2 1 0 + 4 4 3 0 2 + 4 4 3 0 1 + 4 4 3 0 0 + 4 4 3 1 2 + 4 4 3 1 1 + 4 4 3 1 0 + 4 4 4 0 2 + 4 4 4 0 1 + 4 4 4 0 0 + 4 4 4 1 2 + 4 4 4 1 1 + 4 4 4 1 0 + 4 4 5 0 2 + 4 4 5 0 1 + 4 4 5 0 0 + 4 4 5 1 2 + 4 4 5 1 1 + 4 4 5 1 0 + 4 4 6 0 2 + 4 4 6 0 1 + 4 4 6 0 0 + 4 4 6 1 2 + 4 4 6 1 1 + 4 4 6 1 0 + 4 4 7 0 2 + 4 4 7 0 1 + 4 4 7 0 0 + 4 4 7 1 2 + 4 4 7 1 1 + 4 4 7 1 0 + 4 4 8 0 2 + 4 4 8 0 1 + 4 4 8 0 0 + 4 4 8 1 2 + 4 4 8 1 1 + 4 4 8 1 0 + 4 4 9 0 2 + 4 4 9 0 1 + 4 4 9 0 0 + 4 4 9 1 2 + 4 4 9 1 1 + 4 4 9 1 0 + 4 4 10 0 2 + 4 4 10 0 1 + 4 4 10 0 0 + 4 4 10 1 2 + 4 4 10 1 1 + 4 4 10 1 0 + 4 3 0 0 2 + 4 3 0 0 1 + 4 3 0 0 0 + 4 3 0 1 2 + 4 3 0 1 1 + 4 3 0 1 0 + 4 3 1 0 2 + 4 3 1 0 1 + 4 3 1 0 0 + 4 3 1 1 2 + 4 3 1 1 1 + 4 3 1 1 0 + 4 3 2 0 2 + 4 3 2 0 1 + 4 3 2 0 0 + 4 3 2 1 2 + 4 3 2 1 1 + 4 3 2 1 0 + 4 3 3 0 2 + 4 3 3 0 1 + 4 3 3 0 0 + 4 3 3 1 2 + 4 3 3 1 1 + 4 3 3 1 0 + 4 3 4 0 2 + 4 3 4 0 1 + 4 3 4 0 0 + 4 3 4 1 2 + 4 3 4 1 1 + 4 3 4 1 0 + 4 3 5 0 2 + 4 3 5 0 1 + 4 3 5 0 0 + 4 3 5 1 2 + 4 3 5 1 1 + 4 3 5 1 0 + 4 3 6 0 2 + 4 3 6 0 1 + 4 3 6 0 0 + 4 3 6 1 2 + 4 3 6 1 1 + 4 3 6 1 0 + 4 3 7 0 2 + 4 3 7 0 1 + 4 3 7 0 0 + 4 3 7 1 2 + 4 3 7 1 1 + 4 3 7 1 0 + 4 3 8 0 2 + 4 3 8 0 1 + 4 3 8 0 0 + 4 3 8 1 2 + 4 3 8 1 1 + 4 3 8 1 0 + 4 3 9 0 2 + 4 3 9 0 1 + 4 3 9 0 0 + 4 3 9 1 2 + 4 3 9 1 1 + 4 3 9 1 0 + 4 3 10 0 2 + 4 3 10 0 1 + 4 3 10 0 0 + 4 3 10 1 2 + 4 3 10 1 1 + 4 3 10 1 0 + 4 2 0 0 2 + 4 2 0 0 1 + 4 2 0 0 0 + 4 2 0 1 2 + 4 2 0 1 1 + 4 2 0 1 0 + 4 2 1 0 2 + 4 2 1 0 1 + 4 2 1 0 0 + 4 2 1 1 2 + 4 2 1 1 1 + 4 2 1 1 0 + 4 2 2 0 2 + 4 2 2 0 1 + 4 2 2 0 0 + 4 2 2 1 2 + 4 2 2 1 1 + 4 2 2 1 0 + 4 2 3 0 2 + 4 2 3 0 1 + 4 2 3 0 0 + 4 2 3 1 2 + 4 2 3 1 1 + 4 2 3 1 0 + 4 2 4 0 2 + 4 2 4 0 1 + 4 2 4 0 0 + 4 2 4 1 2 + 4 2 4 1 1 + 4 2 4 1 0 + 4 2 5 0 2 + 4 2 5 0 1 + 4 2 5 0 0 + 4 2 5 1 2 + 4 2 5 1 1 + 4 2 5 1 0 + 4 2 6 0 2 + 4 2 6 0 1 + 4 2 6 0 0 + 4 2 6 1 2 + 4 2 6 1 1 + 4 2 6 1 0 + 4 2 7 0 2 + 4 2 7 0 1 + 4 2 7 0 0 + 4 2 7 1 2 + 4 2 7 1 1 + 4 2 7 1 0 + 4 2 8 0 2 + 4 2 8 0 1 + 4 2 8 0 0 + 4 2 8 1 2 + 4 2 8 1 1 + 4 2 8 1 0 + 4 2 9 0 2 + 4 2 9 0 1 + 4 2 9 0 0 + 4 2 9 1 2 + 4 2 9 1 1 + 4 2 9 1 0 + 4 2 10 0 2 + 4 2 10 0 1 + 4 2 10 0 0 + 4 2 10 1 2 + 4 2 10 1 1 + 4 2 10 1 0 + 4 1 0 0 2 + 4 1 0 0 1 + 4 1 0 0 0 + 4 1 0 1 2 + 4 1 0 1 1 + 4 1 0 1 0 + 4 1 1 0 2 + 4 1 1 0 1 + 4 1 1 0 0 + 4 1 1 1 2 + 4 1 1 1 1 + 4 1 1 1 0 + 4 1 2 0 2 + 4 1 2 0 1 + 4 1 2 0 0 + 4 1 2 1 2 + 4 1 2 1 1 + 4 1 2 1 0 + 4 1 3 0 2 + 4 1 3 0 1 + 4 1 3 0 0 + 4 1 3 1 2 + 4 1 3 1 1 + 4 1 3 1 0 + 4 1 4 0 2 + 4 1 4 0 1 + 4 1 4 0 0 + 4 1 4 1 2 + 4 1 4 1 1 + 4 1 4 1 0 + 4 1 5 0 2 + 4 1 5 0 1 + 4 1 5 0 0 + 4 1 5 1 2 + 4 1 5 1 1 + 4 1 5 1 0 + 4 1 6 0 2 + 4 1 6 0 1 + 4 1 6 0 0 + 4 1 6 1 2 + 4 1 6 1 1 + 4 1 6 1 0 + 4 1 7 0 2 + 4 1 7 0 1 + 4 1 7 0 0 + 4 1 7 1 2 + 4 1 7 1 1 + 4 1 7 1 0 + 4 1 8 0 2 + 4 1 8 0 1 + 4 1 8 0 0 + 4 1 8 1 2 + 4 1 8 1 1 + 4 1 8 1 0 + 4 1 9 0 2 + 4 1 9 0 1 + 4 1 9 0 0 + 4 1 9 1 2 + 4 1 9 1 1 + 4 1 9 1 0 + 4 1 10 0 2 + 4 1 10 0 1 + 4 1 10 0 0 + 4 1 10 1 2 + 4 1 10 1 1 + 4 1 10 1 0 + 4 0 0 0 2 + 4 0 0 0 1 + 4 0 0 0 0 + 4 0 0 1 2 + 4 0 0 1 1 + 4 0 0 1 0 + 4 0 1 0 2 + 4 0 1 0 1 + 4 0 1 0 0 + 4 0 1 1 2 + 4 0 1 1 1 + 4 0 1 1 0 + 4 0 2 0 2 + 4 0 2 0 1 + 4 0 2 0 0 + 4 0 2 1 2 + 4 0 2 1 1 + 4 0 2 1 0 + 4 0 3 0 2 + 4 0 3 0 1 + 4 0 3 0 0 + 4 0 3 1 2 + 4 0 3 1 1 + 4 0 3 1 0 + 4 0 4 0 2 + 4 0 4 0 1 + 4 0 4 0 0 + 4 0 4 1 2 + 4 0 4 1 1 + 4 0 4 1 0 + 4 0 5 0 2 + 4 0 5 0 1 + 4 0 5 0 0 + 4 0 5 1 2 + 4 0 5 1 1 + 4 0 5 1 0 + 4 0 6 0 2 + 4 0 6 0 1 + 4 0 6 0 0 + 4 0 6 1 2 + 4 0 6 1 1 + 4 0 6 1 0 + 4 0 7 0 2 + 4 0 7 0 1 + 4 0 7 0 0 + 4 0 7 1 2 + 4 0 7 1 1 + 4 0 7 1 0 + 4 0 8 0 2 + 4 0 8 0 1 + 4 0 8 0 0 + 4 0 8 1 2 + 4 0 8 1 1 + 4 0 8 1 0 + 4 0 9 0 2 + 4 0 9 0 1 + 4 0 9 0 0 + 4 0 9 1 2 + 4 0 9 1 1 + 4 0 9 1 0 + 4 0 10 0 2 + 4 0 10 0 1 + 4 0 10 0 0 + 4 0 10 1 2 + 4 0 10 1 1 + 4 0 10 1 0 + 5 4 0 0 2 + 5 4 0 0 1 + 5 4 0 0 0 + 5 4 0 1 2 + 5 4 0 1 1 + 5 4 0 1 0 + 5 4 1 0 2 + 5 4 1 0 1 + 5 4 1 0 0 + 5 4 1 1 2 + 5 4 1 1 1 + 5 4 1 1 0 + 5 4 2 0 2 + 5 4 2 0 1 + 5 4 2 0 0 + 5 4 2 1 2 + 5 4 2 1 1 + 5 4 2 1 0 + 5 4 3 0 2 + 5 4 3 0 1 + 5 4 3 0 0 + 5 4 3 1 2 + 5 4 3 1 1 + 5 4 3 1 0 + 5 4 4 0 2 + 5 4 4 0 1 + 5 4 4 0 0 + 5 4 4 1 2 + 5 4 4 1 1 + 5 4 4 1 0 + 5 4 5 0 2 + 5 4 5 0 1 + 5 4 5 0 0 + 5 4 5 1 2 + 5 4 5 1 1 + 5 4 5 1 0 + 5 4 6 0 2 + 5 4 6 0 1 + 5 4 6 0 0 + 5 4 6 1 2 + 5 4 6 1 1 + 5 4 6 1 0 + 5 4 7 0 2 + 5 4 7 0 1 + 5 4 7 0 0 + 5 4 7 1 2 + 5 4 7 1 1 + 5 4 7 1 0 + 5 4 8 0 2 + 5 4 8 0 1 + 5 4 8 0 0 + 5 4 8 1 2 + 5 4 8 1 1 + 5 4 8 1 0 + 5 4 9 0 2 + 5 4 9 0 1 + 5 4 9 0 0 + 5 4 9 1 2 + 5 4 9 1 1 + 5 4 9 1 0 + 5 4 10 0 2 + 5 4 10 0 1 + 5 4 10 0 0 + 5 4 10 1 2 + 5 4 10 1 1 + 5 4 10 1 0 + 5 3 0 0 2 + 5 3 0 0 1 + 5 3 0 0 0 + 5 3 0 1 2 + 5 3 0 1 1 + 5 3 0 1 0 + 5 3 1 0 2 + 5 3 1 0 1 + 5 3 1 0 0 + 5 3 1 1 2 + 5 3 1 1 1 + 5 3 1 1 0 + 5 3 2 0 2 + 5 3 2 0 1 + 5 3 2 0 0 + 5 3 2 1 2 + 5 3 2 1 1 + 5 3 2 1 0 + 5 3 3 0 2 + 5 3 3 0 1 + 5 3 3 0 0 + 5 3 3 1 2 + 5 3 3 1 1 + 5 3 3 1 0 + 5 3 4 0 2 + 5 3 4 0 1 + 5 3 4 0 0 + 5 3 4 1 2 + 5 3 4 1 1 + 5 3 4 1 0 + 5 3 5 0 2 + 5 3 5 0 1 + 5 3 5 0 0 + 5 3 5 1 2 + 5 3 5 1 1 + 5 3 5 1 0 + 5 3 6 0 2 + 5 3 6 0 1 + 5 3 6 0 0 + 5 3 6 1 2 + 5 3 6 1 1 + 5 3 6 1 0 + 5 3 7 0 2 + 5 3 7 0 1 + 5 3 7 0 0 + 5 3 7 1 2 + 5 3 7 1 1 + 5 3 7 1 0 + 5 3 8 0 2 + 5 3 8 0 1 + 5 3 8 0 0 + 5 3 8 1 2 + 5 3 8 1 1 + 5 3 8 1 0 + 5 3 9 0 2 + 5 3 9 0 1 + 5 3 9 0 0 + 5 3 9 1 2 + 5 3 9 1 1 + 5 3 9 1 0 + 5 3 10 0 2 + 5 3 10 0 1 + 5 3 10 0 0 + 5 3 10 1 2 + 5 3 10 1 1 + 5 3 10 1 0 + 5 2 0 0 2 + 5 2 0 0 1 + 5 2 0 0 0 + 5 2 0 1 2 + 5 2 0 1 1 + 5 2 0 1 0 + 5 2 1 0 2 + 5 2 1 0 1 + 5 2 1 0 0 + 5 2 1 1 2 + 5 2 1 1 1 + 5 2 1 1 0 + 5 2 2 0 2 + 5 2 2 0 1 + 5 2 2 0 0 + 5 2 2 1 2 + 5 2 2 1 1 + 5 2 2 1 0 + 5 2 3 0 2 + 5 2 3 0 1 + 5 2 3 0 0 + 5 2 3 1 2 + 5 2 3 1 1 + 5 2 3 1 0 + 5 2 4 0 2 + 5 2 4 0 1 + 5 2 4 0 0 + 5 2 4 1 2 + 5 2 4 1 1 + 5 2 4 1 0 + 5 2 5 0 2 + 5 2 5 0 1 + 5 2 5 0 0 + 5 2 5 1 2 + 5 2 5 1 1 + 5 2 5 1 0 + 5 2 6 0 2 + 5 2 6 0 1 + 5 2 6 0 0 + 5 2 6 1 2 + 5 2 6 1 1 + 5 2 6 1 0 + 5 2 7 0 2 + 5 2 7 0 1 + 5 2 7 0 0 + 5 2 7 1 2 + 5 2 7 1 1 + 5 2 7 1 0 + 5 2 8 0 2 + 5 2 8 0 1 + 5 2 8 0 0 + 5 2 8 1 2 + 5 2 8 1 1 + 5 2 8 1 0 + 5 2 9 0 2 + 5 2 9 0 1 + 5 2 9 0 0 + 5 2 9 1 2 + 5 2 9 1 1 + 5 2 9 1 0 + 5 2 10 0 2 + 5 2 10 0 1 + 5 2 10 0 0 + 5 2 10 1 2 + 5 2 10 1 1 + 5 2 10 1 0 + 5 1 0 0 2 + 5 1 0 0 1 + 5 1 0 0 0 + 5 1 0 1 2 + 5 1 0 1 1 + 5 1 0 1 0 + 5 1 1 0 2 + 5 1 1 0 1 + 5 1 1 0 0 + 5 1 1 1 2 + 5 1 1 1 1 + 5 1 1 1 0 + 5 1 2 0 2 + 5 1 2 0 1 + 5 1 2 0 0 + 5 1 2 1 2 + 5 1 2 1 1 + 5 1 2 1 0 + 5 1 3 0 2 + 5 1 3 0 1 + 5 1 3 0 0 + 5 1 3 1 2 + 5 1 3 1 1 + 5 1 3 1 0 + 5 1 4 0 2 + 5 1 4 0 1 + 5 1 4 0 0 + 5 1 4 1 2 + 5 1 4 1 1 + 5 1 4 1 0 + 5 1 5 0 2 + 5 1 5 0 1 + 5 1 5 0 0 + 5 1 5 1 2 + 5 1 5 1 1 + 5 1 5 1 0 + 5 1 6 0 2 + 5 1 6 0 1 + 5 1 6 0 0 + 5 1 6 1 2 + 5 1 6 1 1 + 5 1 6 1 0 + 5 1 7 0 2 + 5 1 7 0 1 + 5 1 7 0 0 + 5 1 7 1 2 + 5 1 7 1 1 + 5 1 7 1 0 + 5 1 8 0 2 + 5 1 8 0 1 + 5 1 8 0 0 + 5 1 8 1 2 + 5 1 8 1 1 + 5 1 8 1 0 + 5 1 9 0 2 + 5 1 9 0 1 + 5 1 9 0 0 + 5 1 9 1 2 + 5 1 9 1 1 + 5 1 9 1 0 + 5 1 10 0 2 + 5 1 10 0 1 + 5 1 10 0 0 + 5 1 10 1 2 + 5 1 10 1 1 + 5 1 10 1 0 + 5 0 0 0 2 + 5 0 0 0 1 + 5 0 0 0 0 + 5 0 0 1 2 + 5 0 0 1 1 + 5 0 0 1 0 + 5 0 1 0 2 + 5 0 1 0 1 + 5 0 1 0 0 + 5 0 1 1 2 + 5 0 1 1 1 + 5 0 1 1 0 + 5 0 2 0 2 + 5 0 2 0 1 + 5 0 2 0 0 + 5 0 2 1 2 + 5 0 2 1 1 + 5 0 2 1 0 + 5 0 3 0 2 + 5 0 3 0 1 + 5 0 3 0 0 + 5 0 3 1 2 + 5 0 3 1 1 + 5 0 3 1 0 + 5 0 4 0 2 + 5 0 4 0 1 + 5 0 4 0 0 + 5 0 4 1 2 + 5 0 4 1 1 + 5 0 4 1 0 + 5 0 5 0 2 + 5 0 5 0 1 + 5 0 5 0 0 + 5 0 5 1 2 + 5 0 5 1 1 + 5 0 5 1 0 + 5 0 6 0 2 + 5 0 6 0 1 + 5 0 6 0 0 + 5 0 6 1 2 + 5 0 6 1 1 + 5 0 6 1 0 + 5 0 7 0 2 + 5 0 7 0 1 + 5 0 7 0 0 + 5 0 7 1 2 + 5 0 7 1 1 + 5 0 7 1 0 + 5 0 8 0 2 + 5 0 8 0 1 + 5 0 8 0 0 + 5 0 8 1 2 + 5 0 8 1 1 + 5 0 8 1 0 + 5 0 9 0 2 + 5 0 9 0 1 + 5 0 9 0 0 + 5 0 9 1 2 + 5 0 9 1 1 + 5 0 9 1 0 + 5 0 10 0 2 + 5 0 10 0 1 + 5 0 10 0 0 + 5 0 10 1 2 + 5 0 10 1 1 + 5 0 10 1 0 + 6 4 0 0 2 + 6 4 0 0 1 + 6 4 0 0 0 + 6 4 0 1 2 + 6 4 0 1 1 + 6 4 0 1 0 + 6 4 1 0 2 + 6 4 1 0 1 + 6 4 1 0 0 + 6 4 1 1 2 + 6 4 1 1 1 + 6 4 1 1 0 + 6 4 2 0 2 + 6 4 2 0 1 + 6 4 2 0 0 + 6 4 2 1 2 + 6 4 2 1 1 + 6 4 2 1 0 + 6 4 3 0 2 + 6 4 3 0 1 + 6 4 3 0 0 + 6 4 3 1 2 + 6 4 3 1 1 + 6 4 3 1 0 + 6 4 4 0 2 + 6 4 4 0 1 + 6 4 4 0 0 + 6 4 4 1 2 + 6 4 4 1 1 + 6 4 4 1 0 + 6 4 5 0 2 + 6 4 5 0 1 + 6 4 5 0 0 + 6 4 5 1 2 + 6 4 5 1 1 + 6 4 5 1 0 + 6 4 6 0 2 + 6 4 6 0 1 + 6 4 6 0 0 + 6 4 6 1 2 + 6 4 6 1 1 + 6 4 6 1 0 + 6 4 7 0 2 + 6 4 7 0 1 + 6 4 7 0 0 + 6 4 7 1 2 + 6 4 7 1 1 + 6 4 7 1 0 + 6 4 8 0 2 + 6 4 8 0 1 + 6 4 8 0 0 + 6 4 8 1 2 + 6 4 8 1 1 + 6 4 8 1 0 + 6 4 9 0 2 + 6 4 9 0 1 + 6 4 9 0 0 + 6 4 9 1 2 + 6 4 9 1 1 + 6 4 9 1 0 + 6 4 10 0 2 + 6 4 10 0 1 + 6 4 10 0 0 + 6 4 10 1 2 + 6 4 10 1 1 + 6 4 10 1 0 + 6 3 0 0 2 + 6 3 0 0 1 + 6 3 0 0 0 + 6 3 0 1 2 + 6 3 0 1 1 + 6 3 0 1 0 + 6 3 1 0 2 + 6 3 1 0 1 + 6 3 1 0 0 + 6 3 1 1 2 + 6 3 1 1 1 + 6 3 1 1 0 + 6 3 2 0 2 + 6 3 2 0 1 + 6 3 2 0 0 + 6 3 2 1 2 + 6 3 2 1 1 + 6 3 2 1 0 + 6 3 3 0 2 + 6 3 3 0 1 + 6 3 3 0 0 + 6 3 3 1 2 + 6 3 3 1 1 + 6 3 3 1 0 + 6 3 4 0 2 + 6 3 4 0 1 + 6 3 4 0 0 + 6 3 4 1 2 + 6 3 4 1 1 + 6 3 4 1 0 + 6 3 5 0 2 + 6 3 5 0 1 + 6 3 5 0 0 + 6 3 5 1 2 + 6 3 5 1 1 + 6 3 5 1 0 + 6 3 6 0 2 + 6 3 6 0 1 + 6 3 6 0 0 + 6 3 6 1 2 + 6 3 6 1 1 + 6 3 6 1 0 + 6 3 7 0 2 + 6 3 7 0 1 + 6 3 7 0 0 + 6 3 7 1 2 + 6 3 7 1 1 + 6 3 7 1 0 + 6 3 8 0 2 + 6 3 8 0 1 + 6 3 8 0 0 + 6 3 8 1 2 + 6 3 8 1 1 + 6 3 8 1 0 + 6 3 9 0 2 + 6 3 9 0 1 + 6 3 9 0 0 + 6 3 9 1 2 + 6 3 9 1 1 + 6 3 9 1 0 + 6 3 10 0 2 + 6 3 10 0 1 + 6 3 10 0 0 + 6 3 10 1 2 + 6 3 10 1 1 + 6 3 10 1 0 + 6 2 0 0 2 + 6 2 0 0 1 + 6 2 0 0 0 + 6 2 0 1 2 + 6 2 0 1 1 + 6 2 0 1 0 + 6 2 1 0 2 + 6 2 1 0 1 + 6 2 1 0 0 + 6 2 1 1 2 + 6 2 1 1 1 + 6 2 1 1 0 + 6 2 2 0 2 + 6 2 2 0 1 + 6 2 2 0 0 + 6 2 2 1 2 + 6 2 2 1 1 + 6 2 2 1 0 + 6 2 3 0 2 + 6 2 3 0 1 + 6 2 3 0 0 + 6 2 3 1 2 + 6 2 3 1 1 + 6 2 3 1 0 + 6 2 4 0 2 + 6 2 4 0 1 + 6 2 4 0 0 + 6 2 4 1 2 + 6 2 4 1 1 + 6 2 4 1 0 + 6 2 5 0 2 + 6 2 5 0 1 + 6 2 5 0 0 + 6 2 5 1 2 + 6 2 5 1 1 + 6 2 5 1 0 + 6 2 6 0 2 + 6 2 6 0 1 + 6 2 6 0 0 + 6 2 6 1 2 + 6 2 6 1 1 + 6 2 6 1 0 + 6 2 7 0 2 + 6 2 7 0 1 + 6 2 7 0 0 + 6 2 7 1 2 + 6 2 7 1 1 + 6 2 7 1 0 + 6 2 8 0 2 + 6 2 8 0 1 + 6 2 8 0 0 + 6 2 8 1 2 + 6 2 8 1 1 + 6 2 8 1 0 + 6 2 9 0 2 + 6 2 9 0 1 + 6 2 9 0 0 + 6 2 9 1 2 + 6 2 9 1 1 + 6 2 9 1 0 + 6 2 10 0 2 + 6 2 10 0 1 + 6 2 10 0 0 + 6 2 10 1 2 + 6 2 10 1 1 + 6 2 10 1 0 + 6 1 0 0 2 + 6 1 0 0 1 + 6 1 0 0 0 + 6 1 0 1 2 + 6 1 0 1 1 + 6 1 0 1 0 + 6 1 1 0 2 + 6 1 1 0 1 + 6 1 1 0 0 + 6 1 1 1 2 + 6 1 1 1 1 + 6 1 1 1 0 + 6 1 2 0 2 + 6 1 2 0 1 + 6 1 2 0 0 + 6 1 2 1 2 + 6 1 2 1 1 + 6 1 2 1 0 + 6 1 3 0 2 + 6 1 3 0 1 + 6 1 3 0 0 + 6 1 3 1 2 + 6 1 3 1 1 + 6 1 3 1 0 + 6 1 4 0 2 + 6 1 4 0 1 + 6 1 4 0 0 + 6 1 4 1 2 + 6 1 4 1 1 + 6 1 4 1 0 + 6 1 5 0 2 + 6 1 5 0 1 + 6 1 5 0 0 + 6 1 5 1 2 + 6 1 5 1 1 + 6 1 5 1 0 + 6 1 6 0 2 + 6 1 6 0 1 + 6 1 6 0 0 + 6 1 6 1 2 + 6 1 6 1 1 + 6 1 6 1 0 + 6 1 7 0 2 + 6 1 7 0 1 + 6 1 7 0 0 + 6 1 7 1 2 + 6 1 7 1 1 + 6 1 7 1 0 + 6 1 8 0 2 + 6 1 8 0 1 + 6 1 8 0 0 + 6 1 8 1 2 + 6 1 8 1 1 + 6 1 8 1 0 + 6 1 9 0 2 + 6 1 9 0 1 + 6 1 9 0 0 + 6 1 9 1 2 + 6 1 9 1 1 + 6 1 9 1 0 + 6 1 10 0 2 + 6 1 10 0 1 + 6 1 10 0 0 + 6 1 10 1 2 + 6 1 10 1 1 + 6 1 10 1 0 + 6 0 0 0 2 + 6 0 0 0 1 + 6 0 0 0 0 + 6 0 0 1 2 + 6 0 0 1 1 + 6 0 0 1 0 + 6 0 1 0 2 + 6 0 1 0 1 + 6 0 1 0 0 + 6 0 1 1 2 + 6 0 1 1 1 + 6 0 1 1 0 + 6 0 2 0 2 + 6 0 2 0 1 + 6 0 2 0 0 + 6 0 2 1 2 + 6 0 2 1 1 + 6 0 2 1 0 + 6 0 3 0 2 + 6 0 3 0 1 + 6 0 3 0 0 + 6 0 3 1 2 + 6 0 3 1 1 + 6 0 3 1 0 + 6 0 4 0 2 + 6 0 4 0 1 + 6 0 4 0 0 + 6 0 4 1 2 + 6 0 4 1 1 + 6 0 4 1 0 + 6 0 5 0 2 + 6 0 5 0 1 + 6 0 5 0 0 + 6 0 5 1 2 + 6 0 5 1 1 + 6 0 5 1 0 + 6 0 6 0 2 + 6 0 6 0 1 + 6 0 6 0 0 + 6 0 6 1 2 + 6 0 6 1 1 + 6 0 6 1 0 + 6 0 7 0 2 + 6 0 7 0 1 + 6 0 7 0 0 + 6 0 7 1 2 + 6 0 7 1 1 + 6 0 7 1 0 + 6 0 8 0 2 + 6 0 8 0 1 + 6 0 8 0 0 + 6 0 8 1 2 + 6 0 8 1 1 + 6 0 8 1 0 + 6 0 9 0 2 + 6 0 9 0 1 + 6 0 9 0 0 + 6 0 9 1 2 + 6 0 9 1 1 + 6 0 9 1 0 + 6 0 10 0 2 + 6 0 10 0 1 + 6 0 10 0 0 + 6 0 10 1 2 + 6 0 10 1 1 + 6 0 10 1 0 diff --git a/ivtest/ivltests/sv_foreach10.v b/ivtest/ivltests/sv_foreach10.v new file mode 100644 index 000000000..1376ed982 --- /dev/null +++ b/ivtest/ivltests/sv_foreach10.v @@ -0,0 +1,40 @@ +// Check that foreach counts from $left to $right for dynamic arrays and queues. + +module test; + + logic d[]; + logic q[$]; + + initial begin + bit failed; + int exp_idx; + + failed = 1'b0; + + // Dynamic arrays and queues always count from 0 to $size - 1 + d = '{0, 0}; + exp_idx = 0; + foreach(d[idx]) begin + if (idx !== exp_idx) begin + $display("FAILED: Expected %0d, got %0d", exp_idx, idx); + failed = 1'b1; + end + exp_idx++; + end + + q = '{0, 0, 0}; + exp_idx = 0; + foreach(q[idx]) begin + if (idx !== exp_idx) begin + $display("FAILED: Expected %0d, got %0d", exp_idx, idx); + failed = 1'b1; + end + exp_idx++; + end + + if (!failed) begin + $display("PASSED"); + end + end + +endmodule diff --git a/ivtest/ivltests/sv_foreach9.v b/ivtest/ivltests/sv_foreach9.v new file mode 100644 index 000000000..8e717ef21 --- /dev/null +++ b/ivtest/ivltests/sv_foreach9.v @@ -0,0 +1,13 @@ +// Check that foreach counts from $left to $right for static arrays. + +module test; + + logic [0:1][2:0] x[0:6][4:0][11]; + + initial begin + foreach(x[i,j,k,l,n]) begin + $display(i, j, k, l, n); + end + end + +endmodule diff --git a/ivtest/regress-vvp.list b/ivtest/regress-vvp.list index 77c7917eb..b1cc5750d 100644 --- a/ivtest/regress-vvp.list +++ b/ivtest/regress-vvp.list @@ -33,3 +33,5 @@ pr903 vvp_tests/pr903.json pr903-vlog95 vvp_tests/pr903-vlog95.json struct_packed_write_read vvp_tests/struct_packed_write_read.json struct_packed_write_read2 vvp_tests/struct_packed_write_read2.json +sv_foreach9 vvp_tests/sv_foreach9.json +sv_foreach10 vvp_tests/sv_foreach10.json diff --git a/ivtest/vvp_tests/sv_foreach10.json b/ivtest/vvp_tests/sv_foreach10.json new file mode 100644 index 000000000..ac0bf2aa8 --- /dev/null +++ b/ivtest/vvp_tests/sv_foreach10.json @@ -0,0 +1,5 @@ +{ + "type" : "normal", + "source" : "sv_foreach10.v", + "iverilog-args" : [ "-g2009" ] +} diff --git a/ivtest/vvp_tests/sv_foreach9.json b/ivtest/vvp_tests/sv_foreach9.json new file mode 100644 index 000000000..d1437abee --- /dev/null +++ b/ivtest/vvp_tests/sv_foreach9.json @@ -0,0 +1,6 @@ +{ + "type" : "normal", + "source" : "sv_foreach9.v", + "iverilog-args" : [ "-g2009" ], + "gold" : "sv_foreach9" +}