|
35 | 35 | from pyTooling.Decorators import export
|
36 | 36 |
|
37 | 37 | from pyVHDLModel import Library
|
| 38 | +from pyVHDLModel.Base import Range, Direction |
| 39 | +from pyVHDLModel.Expression import EnumerationLiteral, IntegerLiteral, PhysicalIntegerLiteral |
38 | 40 | from pyVHDLModel.Name import SimpleName, SelectedName, AllName
|
39 |
| -from pyVHDLModel.Symbol import LibraryReferenceSymbol, PackageMemberReferenceSymbol, AllPackageMembersReferenceSymbol, PackageSymbol |
| 41 | +from pyVHDLModel.Symbol import LibraryReferenceSymbol, PackageMemberReferenceSymbol, AllPackageMembersReferenceSymbol, PackageSymbol, SimpleSubtypeSymbol |
40 | 42 | from pyVHDLModel.DesignUnit import LibraryClause, UseClause, Package, PackageBody
|
| 43 | +from pyVHDLModel.Type import EnumeratedType, IntegerType, Subtype, PhysicalType, ArrayType |
41 | 44 |
|
42 | 45 |
|
43 | 46 | @export
|
@@ -105,7 +108,97 @@ def __init__(self):
|
105 | 108 |
|
106 | 109 | @export
|
107 | 110 | class Standard(PredefinedPackage):
|
108 |
| - pass |
| 111 | + def __init__(self): |
| 112 | + super().__init__() |
| 113 | + |
| 114 | + boolean = EnumeratedType("boolean", (EnumerationLiteral("false"), EnumerationLiteral("true"))) |
| 115 | + self._types[boolean.NormalizedIdentifier] = boolean |
| 116 | + |
| 117 | + bit = EnumeratedType("bit", (EnumerationLiteral("'0'"), EnumerationLiteral("'1'"))) |
| 118 | + self._types[bit.NormalizedIdentifier] = bit |
| 119 | + |
| 120 | + chars = \ |
| 121 | + "nul", "soh", "stx", "etx", "eot", "enq", "ack", "bel", "bs", "ht", "lf", "vt", "ff", "cr", "so", "si", "dle", "dc1", "dc2", "dc3",\ |
| 122 | + "dc4", "nak", "syn", "etb", "can", "em", "sub", "esc", "fsp", "gsp", "rsp", "usp", "' '", "'!'", "'\"'", "'#'", "'$'", "'%'", "'&'", "'''",\ |
| 123 | + "'('", "')'", "'*'", "'+'", "','", "'-'", "'.'", "'/'", "'0'", "'1'", "'2'", "'3'", "'4'", "'5'", "'6'", "'7'", "'8'", "'9'", "':'", "';'",\ |
| 124 | + "'<'", "'='", "'>'", "'?'", "'@'", "'A'", "'B'", "'C'", "'D'", "'E'", "'F'", "'G'", "'H'", "'I'", "'J'", "'K'", "'L'", "'M'", "'N'", "'O'",\ |
| 125 | + "'P'", "'Q'", "'R'", "'S'", "'T'", "'U'", "'V'", "'W'", "'X'", "'Y'", "'Z'", "'['", "'\'", "']'", "'^'", "'_'", "'`'", "'a'", "'b'", "'c'",\ |
| 126 | + "'d'", "'e'", "'f'", "'g'", "'h'", "'i'", "'j'", "'k'", "'l'", "'m'", "'n'", "'o'", "'p'", "'q'", "'r'", "'s'", "'t'", "'u'", "'v'", "'w'",\ |
| 127 | + "'x'", "'y'", "'z'", "'{'", "'|'", "'}'", "'~'", "del", "c128", "c129", "c130", "c131", "c132", "c133", "c134", "c135", "c136", "c137", "c138", "c139",\ |
| 128 | + "c140", "c141", "c142", "c143", "c144", "c145", "c146", "c147", "c148", "c149", "c150", "c151", "c152", "c153", "c154", "c155", "c156", "c157", "c158", "c159",\ |
| 129 | + "' '", "'¡'", "'¢'", "'£'", "'¤'", "'¥'", "'¦'", "'§'", "'¨'", "'©'", "'ª'", "'«'", "'¬'", "''", "'®'", "'¯'", "'°'", "'±'", "'²'", "'³'",\ |
| 130 | + "'´'", "'µ'", "'¶'", "'·'", "'¸'", "'¹'", "'º'", "'»'", "'¼'", "'½'", "'¾'", "'¿'", "'À'", "'Á'", "'Â'", "'Ã'", "'Ä'", "'Å'", "'Æ'", "'Ç'",\ |
| 131 | + "'È'", "'É'", "'Ê'", "'Ë'", "'Ì'", "'Í'", "'Î'", "'Ï'", "'Ð'", "'Ñ'", "'Ò'", "'Ó'", "'Ô'", "'Õ'", "'Ö'", "'×'", "'Ø'", "'Ù'", "'Ú'", "'Û'",\ |
| 132 | + "'Ü'", "'Ý'", "'Þ'", "'ß'", "'à'", "'á'", "'â'", "'ã'", "'ä'", "'å'", "'æ'", "'ç'", "'è'", "'é'", "'ê'", "'ë'", "'ì'", "'í'", "'î'", "'ï'",\ |
| 133 | + "'ð'", "'ñ'", "'ò'", "'ó'", "'ô'", "'õ'", "'ö'", "'÷'", "'ø'", "'ù'", "'ú'", "'û'", "'ü'", "'ý'", "'þ'", "'ÿ'" |
| 134 | + character = EnumeratedType("character", [EnumerationLiteral(char) for char in chars]) |
| 135 | + self._types[character.NormalizedIdentifier] = character |
| 136 | + |
| 137 | + levels = "note", "warning", "error", "failure" |
| 138 | + severityLevel = EnumeratedType("severityLevel", [EnumerationLiteral(level) for level in levels]) |
| 139 | + self._types[severityLevel.NormalizedIdentifier] = severityLevel |
| 140 | + |
| 141 | + integer = IntegerType("integer", Range(IntegerLiteral(-2**31), IntegerLiteral(2**31-1), Direction.To)) |
| 142 | + self._types[integer.NormalizedIdentifier] = integer |
| 143 | + |
| 144 | + # real |
| 145 | + |
| 146 | + time = PhysicalType( |
| 147 | + "time", |
| 148 | + Range(IntegerLiteral(-2**63), IntegerLiteral(2**63-1), Direction.To), |
| 149 | + primaryUnit="fs", |
| 150 | + units=( |
| 151 | + ("ps", PhysicalIntegerLiteral(1000, "fs")), |
| 152 | + ("ns", PhysicalIntegerLiteral(1000, "ps")), |
| 153 | + ("us", PhysicalIntegerLiteral(1000, "ns")), |
| 154 | + ("ms", PhysicalIntegerLiteral(1000, "us")), |
| 155 | + ("sec", PhysicalIntegerLiteral(1000, "ms")), |
| 156 | + ("min", PhysicalIntegerLiteral(60, "sec")), |
| 157 | + ("hr", PhysicalIntegerLiteral(60, "min")), |
| 158 | + ) |
| 159 | + ) |
| 160 | + self._types[time.NormalizedIdentifier] = time |
| 161 | + |
| 162 | + # delay_length |
| 163 | + |
| 164 | + # now |
| 165 | + |
| 166 | + natural = Subtype("natural") |
| 167 | + natural._baseType = integer |
| 168 | + natural._range = Range(IntegerLiteral(0), IntegerLiteral(2**31-1), Direction.To) |
| 169 | + self._subtypes[natural.NormalizedIdentifier] = natural |
| 170 | + |
| 171 | + positive = Subtype("positive") |
| 172 | + positive._baseType = integer |
| 173 | + positive._range = Range(IntegerLiteral(1), IntegerLiteral(2**31-1), Direction.To) |
| 174 | + self._subtypes[positive.NormalizedIdentifier] = positive |
| 175 | + |
| 176 | + string = ArrayType("string", (SimpleSubtypeSymbol(SimpleName("positive")), ), SimpleSubtypeSymbol(SimpleName("character"))) |
| 177 | + self._types[string.NormalizedIdentifier] = string |
| 178 | + |
| 179 | + booleanVector = ArrayType("boolean_vector", (SimpleSubtypeSymbol(SimpleName("natural")), ), SimpleSubtypeSymbol(SimpleName("boolean"))) |
| 180 | + self._types[booleanVector.NormalizedIdentifier] = booleanVector |
| 181 | + |
| 182 | + bitVector = ArrayType("bit_vector", (SimpleSubtypeSymbol(SimpleName("natural")), ), SimpleSubtypeSymbol(SimpleName("bit"))) |
| 183 | + self._types[bitVector.NormalizedIdentifier] = bitVector |
| 184 | + |
| 185 | + integerVector = ArrayType("integer_vector", (SimpleSubtypeSymbol(SimpleName("natural")), ), SimpleSubtypeSymbol(SimpleName("integer"))) |
| 186 | + self._types[integerVector.NormalizedIdentifier] = integerVector |
| 187 | + |
| 188 | + # real_vector |
| 189 | + |
| 190 | + timeVector = ArrayType("time_vector", (SimpleSubtypeSymbol(SimpleName("natural")), ), SimpleSubtypeSymbol(SimpleName("time"))) |
| 191 | + self._types[timeVector.NormalizedIdentifier] = timeVector |
| 192 | + |
| 193 | + fileOpenKinds = "read_mode", "write_mode", "append_mode" |
| 194 | + openFileKind = EnumeratedType("open_file_kind", [EnumerationLiteral(kind) for kind in fileOpenKinds]) |
| 195 | + self._types[openFileKind.NormalizedIdentifier] = openFileKind |
| 196 | + |
| 197 | + fileOpenStati = "open_ok", "status_error", "name_error", "mode_error" |
| 198 | + fileOpenStatus = EnumeratedType("open_file_status", [EnumerationLiteral(status) for status in fileOpenStati]) |
| 199 | + self._types[fileOpenStatus.NormalizedIdentifier] = fileOpenStatus |
| 200 | + |
| 201 | + # attribute foreign |
109 | 202 |
|
110 | 203 |
|
111 | 204 | @export
|
|
0 commit comments