public VCD_Variable(Signal var, string identifier) { this.base_variable = var; this.identifier = identifier; this.reference = var.Name; this._iterator = new NewSortedDictionaryIterator <VHDLBaseValue>(var.Dump); _iterator.Reset(); //Определяем тип переменной Type type = var.Type; size = 1; if (type == typeof(VHDLRuntime.Values.BuiltIn.BIT)) { var_type = VCDVariableType.Reg; } if (type == typeof(VHDLIntegerValue)) { var_type = VCDVariableType.Integer; size = 32; startIndex = 31; endIndex = 0; } if (type == typeof(VHDLFloatingPointValue)) { var_type = VCDVariableType.Real; } }
public VCD_Variable(Signal var, string identifier) { this.base_variable = var; this.identifier = identifier; this.reference = var.Name; this._iterator = var.Dump.Iterator; _iterator.Reset(); //Определяем тип переменной string type = var.Type.Name; _iterator = var.Dump.Iterator; size = 1; switch (type.ToUpper()) { case "BIT": case "STD_ULOGIC": case "STD_LOGIC": var_type = VCDVariableType.Reg; break; case "BIT_VECTOR": case "STD_ULOGIC_VECTOR": case "STD_LOGIC_VECTOR": ResolvedDiscreteRange range = var.Type.Dimension[0]; startIndex = range.From; endIndex = range.To; size = (UInt32)(Math.Abs(endIndex - startIndex) + 1); var_type = VCDVariableType.Reg; break; case "INTEGER": var_type = VCDVariableType.Integer; size = 32; startIndex = 31; endIndex = 0; break; case "REAL": var_type = VCDVariableType.Real; break; default: break; } }