From 3f7d635afd090d1f5dc2152d091b9135e565ddaa Mon Sep 17 00:00:00 2001 From: Cary R Date: Thu, 18 Nov 2010 20:59:10 -0800 Subject: [PATCH] V0.9: Fail if the user defines a real variable as a vector. Using reg real [1:0] var you can define a real variable with a range. This was crashing the run time. This patch catches this in the compiler and prints an appropriate message. --- elab_sig.cc | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/elab_sig.cc b/elab_sig.cc index 0a182196b..d8fdbc230 100644 --- a/elab_sig.cc +++ b/elab_sig.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2009 Stephen Williams (steve@icarus.com) + * Copyright (c) 2000-2010 Stephen Williams (steve@icarus.com) * * This source code is free software; you can redistribute it * and/or modify it in source code form under the terms of the GNU @@ -1119,6 +1119,17 @@ NetNet* PWire::elaborate_sig(Design*des, NetScope*scope) const array_dimensions = 1; } + if (data_type_ == IVL_VT_REAL && (msb != 0 || lsb != 0)) { + cerr << get_fileline() << ": error: real "; + if (wtype == NetNet::REG) cerr << "variable"; + else cerr << "net"; + cerr << " '" << name_ + << "' cannot be declared as a vector, found a range [" + << msb << ":" << lsb << "]." << endl; + des->errors += 1; + return 0; + } + /* If the net type is supply0 or supply1, replace it with a simple wire with a pulldown/pullup with supply strength. In other words, transform: @@ -1148,8 +1159,10 @@ NetNet* PWire::elaborate_sig(Design*des, NetScope*scope) const if (debug_elaborate) { cerr << get_fileline() << ": debug: " - << "Generate a SUPPLY pulldown for the " - << "supply0 net." << endl; + << "Generate a SUPPLY pull for the "; + if (wtype == NetNet::SUPPLY0) cerr << "supply0"; + else cerr << "supply1"; + cerr << " net." << endl; } }