From 6340fddff21567b10dd774d5459536d37c6239dc Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Mon, 30 Dec 2019 16:46:22 +0100 Subject: ams-vhdl: add frequency function, minor fixes. --- python/libghdl/thin/vhdl/nodes.py | 361 +++++++++++++++++++------------------ src/vhdl/translate/trans-chap7.adb | 3 +- src/vhdl/vhdl-evaluation.adb | 1 + src/vhdl/vhdl-nodes.ads | 1 + src/vhdl/vhdl-sem_stmts.adb | 2 +- src/vhdl/vhdl-sem_types.adb | 6 +- src/vhdl/vhdl-std_package.adb | 19 +- 7 files changed, 207 insertions(+), 186 deletions(-) diff --git a/python/libghdl/thin/vhdl/nodes.py b/python/libghdl/thin/vhdl/nodes.py index 06c9a750b..dce74a709 100644 --- a/python/libghdl/thin/vhdl/nodes.py +++ b/python/libghdl/thin/vhdl/nodes.py @@ -1136,186 +1136,187 @@ class Iir_Predefined: Endfile = 169 Now_Function = 170 Real_Now_Function = 171 - PNone = 172 - Foreign_Untruncated_Text_Read = 173 - Foreign_Textio_Read_Real = 174 - Foreign_Textio_Write_Real = 175 - Ieee_1164_Scalar_And = 176 - Ieee_1164_Scalar_Nand = 177 - Ieee_1164_Scalar_Or = 178 - Ieee_1164_Scalar_Nor = 179 - Ieee_1164_Scalar_Xor = 180 - Ieee_1164_Scalar_Xnor = 181 - Ieee_1164_Scalar_Not = 182 - Ieee_1164_Vector_And = 183 - Ieee_1164_Vector_Nand = 184 - Ieee_1164_Vector_Or = 185 - Ieee_1164_Vector_Nor = 186 - Ieee_1164_Vector_Xor = 187 - Ieee_1164_Vector_Xnor = 188 - Ieee_1164_Vector_Not = 189 - Ieee_1164_To_Bitvector = 190 - Ieee_1164_Vector_Is_X = 191 - Ieee_1164_Scalar_Is_X = 192 - Ieee_1164_Rising_Edge = 193 - Ieee_1164_Falling_Edge = 194 - Ieee_1164_Vector_And_Reduce = 195 - Ieee_1164_Vector_Or_Reduce = 196 - Ieee_1164_Condition_Operator = 197 - Ieee_Numeric_Std_Toint_Uns_Nat = 198 - Ieee_Numeric_Std_Toint_Sgn_Int = 199 - Ieee_Numeric_Std_Touns_Nat_Nat_Uns = 200 - Ieee_Numeric_Std_Touns_Nat_Uns_Uns = 201 - Ieee_Numeric_Std_Tosgn_Int_Nat_Sgn = 202 - Ieee_Numeric_Std_Tosgn_Int_Sgn_Sgn = 203 - Ieee_Numeric_Std_Resize_Uns_Nat = 204 - Ieee_Numeric_Std_Resize_Sgn_Nat = 205 - Ieee_Numeric_Std_Resize_Uns_Uns = 206 - Ieee_Numeric_Std_Resize_Sgn_Sgn = 207 - Ieee_Numeric_Std_Add_Uns_Uns = 208 - Ieee_Numeric_Std_Add_Uns_Nat = 209 - Ieee_Numeric_Std_Add_Nat_Uns = 210 - Ieee_Numeric_Std_Add_Uns_Log = 211 - Ieee_Numeric_Std_Add_Log_Uns = 212 - Ieee_Numeric_Std_Add_Sgn_Sgn = 213 - Ieee_Numeric_Std_Add_Sgn_Int = 214 - Ieee_Numeric_Std_Add_Int_Sgn = 215 - Ieee_Numeric_Std_Add_Sgn_Log = 216 - Ieee_Numeric_Std_Add_Log_Sgn = 217 - Ieee_Numeric_Std_Sub_Uns_Uns = 218 - Ieee_Numeric_Std_Sub_Uns_Nat = 219 - Ieee_Numeric_Std_Sub_Nat_Uns = 220 - Ieee_Numeric_Std_Sub_Sgn_Sgn = 221 - Ieee_Numeric_Std_Sub_Sgn_Int = 222 - Ieee_Numeric_Std_Sub_Int_Sgn = 223 - Ieee_Numeric_Std_Mul_Uns_Uns = 224 - Ieee_Numeric_Std_Mul_Uns_Nat = 225 - Ieee_Numeric_Std_Mul_Nat_Uns = 226 - Ieee_Numeric_Std_Mul_Sgn_Sgn = 227 - Ieee_Numeric_Std_Mul_Sgn_Int = 228 - Ieee_Numeric_Std_Mul_Int_Sgn = 229 - Ieee_Numeric_Std_Div_Uns_Uns = 230 - Ieee_Numeric_Std_Div_Uns_Nat = 231 - Ieee_Numeric_Std_Div_Nat_Uns = 232 - Ieee_Numeric_Std_Div_Sgn_Sgn = 233 - Ieee_Numeric_Std_Div_Sgn_Int = 234 - Ieee_Numeric_Std_Div_Int_Sgn = 235 - Ieee_Numeric_Std_Gt_Uns_Uns = 236 - Ieee_Numeric_Std_Gt_Uns_Nat = 237 - Ieee_Numeric_Std_Gt_Nat_Uns = 238 - Ieee_Numeric_Std_Gt_Sgn_Sgn = 239 - Ieee_Numeric_Std_Gt_Sgn_Int = 240 - Ieee_Numeric_Std_Gt_Int_Sgn = 241 - Ieee_Numeric_Std_Lt_Uns_Uns = 242 - Ieee_Numeric_Std_Lt_Uns_Nat = 243 - Ieee_Numeric_Std_Lt_Nat_Uns = 244 - Ieee_Numeric_Std_Lt_Sgn_Sgn = 245 - Ieee_Numeric_Std_Lt_Sgn_Int = 246 - Ieee_Numeric_Std_Lt_Int_Sgn = 247 - Ieee_Numeric_Std_Le_Uns_Uns = 248 - Ieee_Numeric_Std_Le_Uns_Nat = 249 - Ieee_Numeric_Std_Le_Nat_Uns = 250 - Ieee_Numeric_Std_Le_Sgn_Sgn = 251 - Ieee_Numeric_Std_Le_Sgn_Int = 252 - Ieee_Numeric_Std_Le_Int_Sgn = 253 - Ieee_Numeric_Std_Ge_Uns_Uns = 254 - Ieee_Numeric_Std_Ge_Uns_Nat = 255 - Ieee_Numeric_Std_Ge_Nat_Uns = 256 - Ieee_Numeric_Std_Ge_Sgn_Sgn = 257 - Ieee_Numeric_Std_Ge_Sgn_Int = 258 - Ieee_Numeric_Std_Ge_Int_Sgn = 259 - Ieee_Numeric_Std_Eq_Uns_Uns = 260 - Ieee_Numeric_Std_Eq_Uns_Nat = 261 - Ieee_Numeric_Std_Eq_Nat_Uns = 262 - Ieee_Numeric_Std_Eq_Sgn_Sgn = 263 - Ieee_Numeric_Std_Eq_Sgn_Int = 264 - Ieee_Numeric_Std_Eq_Int_Sgn = 265 - Ieee_Numeric_Std_Ne_Uns_Uns = 266 - Ieee_Numeric_Std_Ne_Uns_Nat = 267 - Ieee_Numeric_Std_Ne_Nat_Uns = 268 - Ieee_Numeric_Std_Ne_Sgn_Sgn = 269 - Ieee_Numeric_Std_Ne_Sgn_Int = 270 - Ieee_Numeric_Std_Ne_Int_Sgn = 271 - Ieee_Numeric_Std_Shl_Uns_Nat = 272 - Ieee_Numeric_Std_Shr_Uns_Nat = 273 - Ieee_Numeric_Std_Shl_Sgn_Nat = 274 - Ieee_Numeric_Std_Shr_Sgn_Nat = 275 - Ieee_Numeric_Std_Rol_Uns_Nat = 276 - Ieee_Numeric_Std_Ror_Uns_Nat = 277 - Ieee_Numeric_Std_Rol_Sgn_Nat = 278 - Ieee_Numeric_Std_Ror_Sgn_Nat = 279 - Ieee_Numeric_Std_Not_Uns = 280 - Ieee_Numeric_Std_Not_Sgn = 281 - Ieee_Numeric_Std_And_Uns_Uns = 282 - Ieee_Numeric_Std_And_Sgn_Sgn = 283 - Ieee_Numeric_Std_Or_Uns_Uns = 284 - Ieee_Numeric_Std_Or_Sgn_Sgn = 285 - Ieee_Numeric_Std_Nand_Uns_Uns = 286 - Ieee_Numeric_Std_Nand_Sgn_Sgn = 287 - Ieee_Numeric_Std_Nor_Uns_Uns = 288 - Ieee_Numeric_Std_Nor_Sgn_Sgn = 289 - Ieee_Numeric_Std_Xor_Uns_Uns = 290 - Ieee_Numeric_Std_Xor_Sgn_Sgn = 291 - Ieee_Numeric_Std_Xnor_Uns_Uns = 292 - Ieee_Numeric_Std_Xnor_Sgn_Sgn = 293 - Ieee_Numeric_Std_Neg_Uns = 294 - Ieee_Numeric_Std_Neg_Sgn = 295 - Ieee_Numeric_Std_Match_Log = 296 - Ieee_Numeric_Std_Match_Uns = 297 - Ieee_Numeric_Std_Match_Sgn = 298 - Ieee_Numeric_Std_Match_Slv = 299 - Ieee_Numeric_Std_Match_Suv = 300 - Ieee_Math_Real_Ceil = 301 - Ieee_Math_Real_Log2 = 302 - Ieee_Math_Real_Sin = 303 - Ieee_Math_Real_Cos = 304 - Ieee_Std_Logic_Unsigned_Add_Slv_Slv = 305 - Ieee_Std_Logic_Unsigned_Add_Slv_Int = 306 - Ieee_Std_Logic_Unsigned_Add_Int_Slv = 307 - Ieee_Std_Logic_Unsigned_Add_Slv_Sl = 308 - Ieee_Std_Logic_Unsigned_Add_Sl_Slv = 309 - Ieee_Std_Logic_Unsigned_Sub_Slv_Slv = 310 - Ieee_Std_Logic_Unsigned_Sub_Slv_Int = 311 - Ieee_Std_Logic_Unsigned_Sub_Int_Slv = 312 - Ieee_Std_Logic_Unsigned_Sub_Slv_Sl = 313 - Ieee_Std_Logic_Unsigned_Sub_Sl_Slv = 314 - Ieee_Std_Logic_Unsigned_Lt_Slv_Slv = 315 - Ieee_Std_Logic_Unsigned_Lt_Slv_Int = 316 - Ieee_Std_Logic_Unsigned_Lt_Int_Slv = 317 - Ieee_Std_Logic_Unsigned_Le_Slv_Slv = 318 - Ieee_Std_Logic_Unsigned_Le_Slv_Int = 319 - Ieee_Std_Logic_Unsigned_Le_Int_Slv = 320 - Ieee_Std_Logic_Unsigned_Gt_Slv_Slv = 321 - Ieee_Std_Logic_Unsigned_Gt_Slv_Int = 322 - Ieee_Std_Logic_Unsigned_Gt_Int_Slv = 323 - Ieee_Std_Logic_Unsigned_Ge_Slv_Slv = 324 - Ieee_Std_Logic_Unsigned_Ge_Slv_Int = 325 - Ieee_Std_Logic_Unsigned_Ge_Int_Slv = 326 - Ieee_Std_Logic_Unsigned_Eq_Slv_Slv = 327 - Ieee_Std_Logic_Unsigned_Eq_Slv_Int = 328 - Ieee_Std_Logic_Unsigned_Eq_Int_Slv = 329 - Ieee_Std_Logic_Unsigned_Ne_Slv_Slv = 330 - Ieee_Std_Logic_Unsigned_Ne_Slv_Int = 331 - Ieee_Std_Logic_Unsigned_Ne_Int_Slv = 332 - Ieee_Std_Logic_Unsigned_Conv_Integer = 333 - Ieee_Std_Logic_Signed_Add_Slv_Slv = 334 - Ieee_Std_Logic_Signed_Add_Slv_Int = 335 - Ieee_Std_Logic_Signed_Add_Int_Slv = 336 - Ieee_Std_Logic_Signed_Add_Slv_Sl = 337 - Ieee_Std_Logic_Signed_Add_Sl_Slv = 338 - Ieee_Std_Logic_Signed_Sub_Slv_Slv = 339 - Ieee_Std_Logic_Signed_Sub_Slv_Int = 340 - Ieee_Std_Logic_Signed_Sub_Int_Slv = 341 - Ieee_Std_Logic_Signed_Sub_Slv_Sl = 342 - Ieee_Std_Logic_Signed_Sub_Sl_Slv = 343 - Ieee_Std_Logic_Arith_Conv_Unsigned_Int = 344 - Ieee_Std_Logic_Arith_Conv_Unsigned_Uns = 345 - Ieee_Std_Logic_Arith_Conv_Unsigned_Sgn = 346 - Ieee_Std_Logic_Arith_Conv_Unsigned_Log = 347 - Ieee_Std_Logic_Arith_Conv_Integer_Int = 348 - Ieee_Std_Logic_Arith_Conv_Integer_Uns = 349 - Ieee_Std_Logic_Arith_Conv_Integer_Sgn = 350 - Ieee_Std_Logic_Arith_Conv_Integer_Log = 351 + Frequency_Function = 172 + PNone = 173 + Foreign_Untruncated_Text_Read = 174 + Foreign_Textio_Read_Real = 175 + Foreign_Textio_Write_Real = 176 + Ieee_1164_Scalar_And = 177 + Ieee_1164_Scalar_Nand = 178 + Ieee_1164_Scalar_Or = 179 + Ieee_1164_Scalar_Nor = 180 + Ieee_1164_Scalar_Xor = 181 + Ieee_1164_Scalar_Xnor = 182 + Ieee_1164_Scalar_Not = 183 + Ieee_1164_Vector_And = 184 + Ieee_1164_Vector_Nand = 185 + Ieee_1164_Vector_Or = 186 + Ieee_1164_Vector_Nor = 187 + Ieee_1164_Vector_Xor = 188 + Ieee_1164_Vector_Xnor = 189 + Ieee_1164_Vector_Not = 190 + Ieee_1164_To_Bitvector = 191 + Ieee_1164_Vector_Is_X = 192 + Ieee_1164_Scalar_Is_X = 193 + Ieee_1164_Rising_Edge = 194 + Ieee_1164_Falling_Edge = 195 + Ieee_1164_Vector_And_Reduce = 196 + Ieee_1164_Vector_Or_Reduce = 197 + Ieee_1164_Condition_Operator = 198 + Ieee_Numeric_Std_Toint_Uns_Nat = 199 + Ieee_Numeric_Std_Toint_Sgn_Int = 200 + Ieee_Numeric_Std_Touns_Nat_Nat_Uns = 201 + Ieee_Numeric_Std_Touns_Nat_Uns_Uns = 202 + Ieee_Numeric_Std_Tosgn_Int_Nat_Sgn = 203 + Ieee_Numeric_Std_Tosgn_Int_Sgn_Sgn = 204 + Ieee_Numeric_Std_Resize_Uns_Nat = 205 + Ieee_Numeric_Std_Resize_Sgn_Nat = 206 + Ieee_Numeric_Std_Resize_Uns_Uns = 207 + Ieee_Numeric_Std_Resize_Sgn_Sgn = 208 + Ieee_Numeric_Std_Add_Uns_Uns = 209 + Ieee_Numeric_Std_Add_Uns_Nat = 210 + Ieee_Numeric_Std_Add_Nat_Uns = 211 + Ieee_Numeric_Std_Add_Uns_Log = 212 + Ieee_Numeric_Std_Add_Log_Uns = 213 + Ieee_Numeric_Std_Add_Sgn_Sgn = 214 + Ieee_Numeric_Std_Add_Sgn_Int = 215 + Ieee_Numeric_Std_Add_Int_Sgn = 216 + Ieee_Numeric_Std_Add_Sgn_Log = 217 + Ieee_Numeric_Std_Add_Log_Sgn = 218 + Ieee_Numeric_Std_Sub_Uns_Uns = 219 + Ieee_Numeric_Std_Sub_Uns_Nat = 220 + Ieee_Numeric_Std_Sub_Nat_Uns = 221 + Ieee_Numeric_Std_Sub_Sgn_Sgn = 222 + Ieee_Numeric_Std_Sub_Sgn_Int = 223 + Ieee_Numeric_Std_Sub_Int_Sgn = 224 + Ieee_Numeric_Std_Mul_Uns_Uns = 225 + Ieee_Numeric_Std_Mul_Uns_Nat = 226 + Ieee_Numeric_Std_Mul_Nat_Uns = 227 + Ieee_Numeric_Std_Mul_Sgn_Sgn = 228 + Ieee_Numeric_Std_Mul_Sgn_Int = 229 + Ieee_Numeric_Std_Mul_Int_Sgn = 230 + Ieee_Numeric_Std_Div_Uns_Uns = 231 + Ieee_Numeric_Std_Div_Uns_Nat = 232 + Ieee_Numeric_Std_Div_Nat_Uns = 233 + Ieee_Numeric_Std_Div_Sgn_Sgn = 234 + Ieee_Numeric_Std_Div_Sgn_Int = 235 + Ieee_Numeric_Std_Div_Int_Sgn = 236 + Ieee_Numeric_Std_Gt_Uns_Uns = 237 + Ieee_Numeric_Std_Gt_Uns_Nat = 238 + Ieee_Numeric_Std_Gt_Nat_Uns = 239 + Ieee_Numeric_Std_Gt_Sgn_Sgn = 240 + Ieee_Numeric_Std_Gt_Sgn_Int = 241 + Ieee_Numeric_Std_Gt_Int_Sgn = 242 + Ieee_Numeric_Std_Lt_Uns_Uns = 243 + Ieee_Numeric_Std_Lt_Uns_Nat = 244 + Ieee_Numeric_Std_Lt_Nat_Uns = 245 + Ieee_Numeric_Std_Lt_Sgn_Sgn = 246 + Ieee_Numeric_Std_Lt_Sgn_Int = 247 + Ieee_Numeric_Std_Lt_Int_Sgn = 248 + Ieee_Numeric_Std_Le_Uns_Uns = 249 + Ieee_Numeric_Std_Le_Uns_Nat = 250 + Ieee_Numeric_Std_Le_Nat_Uns = 251 + Ieee_Numeric_Std_Le_Sgn_Sgn = 252 + Ieee_Numeric_Std_Le_Sgn_Int = 253 + Ieee_Numeric_Std_Le_Int_Sgn = 254 + Ieee_Numeric_Std_Ge_Uns_Uns = 255 + Ieee_Numeric_Std_Ge_Uns_Nat = 256 + Ieee_Numeric_Std_Ge_Nat_Uns = 257 + Ieee_Numeric_Std_Ge_Sgn_Sgn = 258 + Ieee_Numeric_Std_Ge_Sgn_Int = 259 + Ieee_Numeric_Std_Ge_Int_Sgn = 260 + Ieee_Numeric_Std_Eq_Uns_Uns = 261 + Ieee_Numeric_Std_Eq_Uns_Nat = 262 + Ieee_Numeric_Std_Eq_Nat_Uns = 263 + Ieee_Numeric_Std_Eq_Sgn_Sgn = 264 + Ieee_Numeric_Std_Eq_Sgn_Int = 265 + Ieee_Numeric_Std_Eq_Int_Sgn = 266 + Ieee_Numeric_Std_Ne_Uns_Uns = 267 + Ieee_Numeric_Std_Ne_Uns_Nat = 268 + Ieee_Numeric_Std_Ne_Nat_Uns = 269 + Ieee_Numeric_Std_Ne_Sgn_Sgn = 270 + Ieee_Numeric_Std_Ne_Sgn_Int = 271 + Ieee_Numeric_Std_Ne_Int_Sgn = 272 + Ieee_Numeric_Std_Shl_Uns_Nat = 273 + Ieee_Numeric_Std_Shr_Uns_Nat = 274 + Ieee_Numeric_Std_Shl_Sgn_Nat = 275 + Ieee_Numeric_Std_Shr_Sgn_Nat = 276 + Ieee_Numeric_Std_Rol_Uns_Nat = 277 + Ieee_Numeric_Std_Ror_Uns_Nat = 278 + Ieee_Numeric_Std_Rol_Sgn_Nat = 279 + Ieee_Numeric_Std_Ror_Sgn_Nat = 280 + Ieee_Numeric_Std_Not_Uns = 281 + Ieee_Numeric_Std_Not_Sgn = 282 + Ieee_Numeric_Std_And_Uns_Uns = 283 + Ieee_Numeric_Std_And_Sgn_Sgn = 284 + Ieee_Numeric_Std_Or_Uns_Uns = 285 + Ieee_Numeric_Std_Or_Sgn_Sgn = 286 + Ieee_Numeric_Std_Nand_Uns_Uns = 287 + Ieee_Numeric_Std_Nand_Sgn_Sgn = 288 + Ieee_Numeric_Std_Nor_Uns_Uns = 289 + Ieee_Numeric_Std_Nor_Sgn_Sgn = 290 + Ieee_Numeric_Std_Xor_Uns_Uns = 291 + Ieee_Numeric_Std_Xor_Sgn_Sgn = 292 + Ieee_Numeric_Std_Xnor_Uns_Uns = 293 + Ieee_Numeric_Std_Xnor_Sgn_Sgn = 294 + Ieee_Numeric_Std_Neg_Uns = 295 + Ieee_Numeric_Std_Neg_Sgn = 296 + Ieee_Numeric_Std_Match_Log = 297 + Ieee_Numeric_Std_Match_Uns = 298 + Ieee_Numeric_Std_Match_Sgn = 299 + Ieee_Numeric_Std_Match_Slv = 300 + Ieee_Numeric_Std_Match_Suv = 301 + Ieee_Math_Real_Ceil = 302 + Ieee_Math_Real_Log2 = 303 + Ieee_Math_Real_Sin = 304 + Ieee_Math_Real_Cos = 305 + Ieee_Std_Logic_Unsigned_Add_Slv_Slv = 306 + Ieee_Std_Logic_Unsigned_Add_Slv_Int = 307 + Ieee_Std_Logic_Unsigned_Add_Int_Slv = 308 + Ieee_Std_Logic_Unsigned_Add_Slv_Sl = 309 + Ieee_Std_Logic_Unsigned_Add_Sl_Slv = 310 + Ieee_Std_Logic_Unsigned_Sub_Slv_Slv = 311 + Ieee_Std_Logic_Unsigned_Sub_Slv_Int = 312 + Ieee_Std_Logic_Unsigned_Sub_Int_Slv = 313 + Ieee_Std_Logic_Unsigned_Sub_Slv_Sl = 314 + Ieee_Std_Logic_Unsigned_Sub_Sl_Slv = 315 + Ieee_Std_Logic_Unsigned_Lt_Slv_Slv = 316 + Ieee_Std_Logic_Unsigned_Lt_Slv_Int = 317 + Ieee_Std_Logic_Unsigned_Lt_Int_Slv = 318 + Ieee_Std_Logic_Unsigned_Le_Slv_Slv = 319 + Ieee_Std_Logic_Unsigned_Le_Slv_Int = 320 + Ieee_Std_Logic_Unsigned_Le_Int_Slv = 321 + Ieee_Std_Logic_Unsigned_Gt_Slv_Slv = 322 + Ieee_Std_Logic_Unsigned_Gt_Slv_Int = 323 + Ieee_Std_Logic_Unsigned_Gt_Int_Slv = 324 + Ieee_Std_Logic_Unsigned_Ge_Slv_Slv = 325 + Ieee_Std_Logic_Unsigned_Ge_Slv_Int = 326 + Ieee_Std_Logic_Unsigned_Ge_Int_Slv = 327 + Ieee_Std_Logic_Unsigned_Eq_Slv_Slv = 328 + Ieee_Std_Logic_Unsigned_Eq_Slv_Int = 329 + Ieee_Std_Logic_Unsigned_Eq_Int_Slv = 330 + Ieee_Std_Logic_Unsigned_Ne_Slv_Slv = 331 + Ieee_Std_Logic_Unsigned_Ne_Slv_Int = 332 + Ieee_Std_Logic_Unsigned_Ne_Int_Slv = 333 + Ieee_Std_Logic_Unsigned_Conv_Integer = 334 + Ieee_Std_Logic_Signed_Add_Slv_Slv = 335 + Ieee_Std_Logic_Signed_Add_Slv_Int = 336 + Ieee_Std_Logic_Signed_Add_Int_Slv = 337 + Ieee_Std_Logic_Signed_Add_Slv_Sl = 338 + Ieee_Std_Logic_Signed_Add_Sl_Slv = 339 + Ieee_Std_Logic_Signed_Sub_Slv_Slv = 340 + Ieee_Std_Logic_Signed_Sub_Slv_Int = 341 + Ieee_Std_Logic_Signed_Sub_Int_Slv = 342 + Ieee_Std_Logic_Signed_Sub_Slv_Sl = 343 + Ieee_Std_Logic_Signed_Sub_Sl_Slv = 344 + Ieee_Std_Logic_Arith_Conv_Unsigned_Int = 345 + Ieee_Std_Logic_Arith_Conv_Unsigned_Uns = 346 + Ieee_Std_Logic_Arith_Conv_Unsigned_Sgn = 347 + Ieee_Std_Logic_Arith_Conv_Unsigned_Log = 348 + Ieee_Std_Logic_Arith_Conv_Integer_Int = 349 + Ieee_Std_Logic_Arith_Conv_Integer_Uns = 350 + Ieee_Std_Logic_Arith_Conv_Integer_Sgn = 351 + Ieee_Std_Logic_Arith_Conv_Integer_Log = 352 Get_Kind = libghdl.vhdl__nodes__get_kind Get_Location = libghdl.vhdl__nodes__get_location diff --git a/src/vhdl/translate/trans-chap7.adb b/src/vhdl/translate/trans-chap7.adb index 58d63ce90..cf94655e3 100644 --- a/src/vhdl/translate/trans-chap7.adb +++ b/src/vhdl/translate/trans-chap7.adb @@ -6249,7 +6249,8 @@ package body Trans.Chap7 is null; when Iir_Predefined_Now_Function - | Iir_Predefined_Real_Now_Function => + | Iir_Predefined_Real_Now_Function + | Iir_Predefined_Frequency_Function => null; -- when others => diff --git a/src/vhdl/vhdl-evaluation.adb b/src/vhdl/vhdl-evaluation.adb index 50e279a8f..5a4f2dde0 100644 --- a/src/vhdl/vhdl-evaluation.adb +++ b/src/vhdl/vhdl-evaluation.adb @@ -1726,6 +1726,7 @@ package body Vhdl.Evaluation is | Iir_Predefined_TF_Array_Not | Iir_Predefined_Now_Function | Iir_Predefined_Real_Now_Function + | Iir_Predefined_Frequency_Function | Iir_Predefined_Deallocate | Iir_Predefined_Write | Iir_Predefined_Read diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads index 9a6e671e1..c59c1c046 100644 --- a/src/vhdl/vhdl-nodes.ads +++ b/src/vhdl/vhdl-nodes.ads @@ -5362,6 +5362,7 @@ package Vhdl.Nodes is -- Misc impure functions. Iir_Predefined_Now_Function, Iir_Predefined_Real_Now_Function, + Iir_Predefined_Frequency_Function, -- A not predefined and not known function. User function. Iir_Predefined_None, diff --git a/src/vhdl/vhdl-sem_stmts.adb b/src/vhdl/vhdl-sem_stmts.adb index 98e01ccb3..43b41d16a 100644 --- a/src/vhdl/vhdl-sem_stmts.adb +++ b/src/vhdl/vhdl-sem_stmts.adb @@ -412,7 +412,7 @@ package body Vhdl.Sem_Stmts is when Iir_Kind_Free_Quantity_Declaration | Iir_Kinds_Branch_Quantity_Declaration | Iir_Kind_Dot_Attribute => - if (Get_Kind (Get_Parent (Stmt)) + if (Get_Kind (Get_Current_Concurrent_Statement) /= Iir_Kind_Simultaneous_Procedural_Statement) then Error_Msg_Sem (+Stmt, "%n cannot be assigned", +Target_Prefix); diff --git a/src/vhdl/vhdl-sem_types.adb b/src/vhdl/vhdl-sem_types.adb index c02e682a8..3a0705d50 100644 --- a/src/vhdl/vhdl-sem_types.adb +++ b/src/vhdl/vhdl-sem_types.adb @@ -2400,11 +2400,13 @@ package body Vhdl.Sem_Types is -- Analyze NAME as a nature name. Return NAME or an error node. function Sem_Nature_Mark (Name : Iir) return Iir is - Nature_Mark : Iir; + Nature_Mark : constant Iir := Sem_Denoting_Name (Name); Res : Iir; begin - Nature_Mark := Sem_Denoting_Name (Name); Res := Get_Named_Entity (Nature_Mark); + if Is_Error (Res) then + return Name; + end if; Res := Get_Nature (Res); case Get_Kind (Res) is when Iir_Kind_Scalar_Nature_Definition diff --git a/src/vhdl/vhdl-std_package.adb b/src/vhdl/vhdl-std_package.adb index d080327ff..7f6273dfe 100644 --- a/src/vhdl/vhdl-std_package.adb +++ b/src/vhdl/vhdl-std_package.adb @@ -1051,9 +1051,9 @@ package body Vhdl.Std_Package is Add_Decl (Function_Now); end; - -- AMS-LRM17 16.3 - -- impure function NOW return REAL; if AMS_Vhdl then + -- AMS-LRM17 16.3 + -- impure function NOW return REAL; declare Function_Now : Iir_Function_Declaration; begin @@ -1066,6 +1066,21 @@ package body Vhdl.Std_Package is Vhdl.Sem_Utils.Compute_Subprogram_Hash (Function_Now); Add_Decl (Function_Now); end; + + -- AMS-LRM17 16.3 + -- impure function FREQUENCY return REAL; + declare + Function_Freq : Iir_Function_Declaration; + begin + Function_Freq := Create_Std_Decl (Iir_Kind_Function_Declaration); + Set_Std_Identifier (Function_Freq, Std_Names.Name_Frequency); + Set_Return_Type (Function_Freq, Real_Subtype_Definition); + Set_Pure_Flag (Function_Freq, False); + Set_Implicit_Definition + (Function_Freq, Iir_Predefined_Frequency_Function); + Vhdl.Sem_Utils.Compute_Subprogram_Hash (Function_Freq); + Add_Decl (Function_Freq); + end; end if; -- natural subtype -- cgit v1.2.3