diff options
author | Tristan Gingold <tgingold@free.fr> | 2018-07-22 03:26:48 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2018-07-22 03:26:48 +0200 |
commit | bb39004f1086e3fbbf5933ac880f0bb396c27cd0 (patch) | |
tree | 6c7f1df67f6783a03991f870fad624813c54b78f /testsuite | |
parent | d3b9380ac7dcaf6bd90a7460f39db6b82568d705 (diff) | |
download | ghdl-bb39004f1086e3fbbf5933ac880f0bb396c27cd0.tar.gz ghdl-bb39004f1086e3fbbf5933ac880f0bb396c27cd0.tar.bz2 ghdl-bb39004f1086e3fbbf5933ac880f0bb396c27cd0.zip |
Add testcase for #626
Diffstat (limited to 'testsuite')
-rw-r--r-- | testsuite/gna/issue626/repro.on | 2222 | ||||
-rw-r--r-- | testsuite/gna/issue626/repro.vhdl | 22 | ||||
-rwxr-xr-x | testsuite/gna/issue626/testsuite.sh | 12 | ||||
-rw-r--r-- | testsuite/gna/issue626/top.on | 2845 | ||||
-rw-r--r-- | testsuite/gna/issue626/top.vhdl | 38 |
5 files changed, 5139 insertions, 0 deletions
diff --git a/testsuite/gna/issue626/repro.on b/testsuite/gna/issue626/repro.on new file mode 100644 index 000000000..49c9da637 --- /dev/null +++ b/testsuite/gna/issue626/repro.on @@ -0,0 +1,2222 @@ +-- internal declarations, part 1 + +TYPE __ghdl_size_type IS UNSIGNED (32); + +TYPE __ghdl_index_type IS UNSIGNED (32); + +TYPE __ghdl_i32 IS SIGNED (32); + +TYPE __ghdl_real IS FLOAT; + +TYPE __ghdl_i64 IS SIGNED (64); + +TYPE __ghdl_file_index IS UNSIGNED (32); + +TYPE __ghdl_file_index_ptr IS ACCESS __ghdl_file_index; + +TYPE __ghdl_char IS UNSIGNED (8); + +TYPE __ghdl_chararray IS ARRAY [__ghdl_index_type] OF __ghdl_char; + +TYPE __ghdl_char_ptr IS ACCESS __ghdl_chararray; + +TYPE __ghdl_char_ptr_array IS ARRAY [__ghdl_index_type] OF __ghdl_char_ptr; + +TYPE __ghdl_char_ptr_array_ptr IS ACCESS __ghdl_char_ptr_array; + +TYPE __ghdl_ptr IS ACCESS __ghdl_char; + +TYPE __ghdl_str_len IS RECORD + len: __ghdl_index_type; + str: __ghdl_char_ptr; +END RECORD; + +TYPE __ghdl_str_len_array IS ARRAY [__ghdl_index_type] OF __ghdl_str_len; + +TYPE __ghdl_str_len_ptr IS ACCESS __ghdl_str_len; + +TYPE __ghdl_bool_type IS BOOLEAN {false, true}; + +TYPE __ghdl_bool_array_type IS ARRAY [__ghdl_index_type] OF __ghdl_bool_type; + +TYPE __ghdl_bool_array_ptr IS ACCESS __ghdl_bool_array_type; + +TYPE __ghdl_sizes_type IS RECORD + size_val: __ghdl_index_type; + size_sig: __ghdl_index_type; +END RECORD; + +TYPE __ghdl_compare_type IS ENUM {lt, eq, gt}; + +TYPE __ghdl_location IS RECORD + filename: __ghdl_char_ptr; + line: __ghdl_i32; + col: __ghdl_i32; +END RECORD; + +TYPE __ghdl_location_ptr IS ACCESS __ghdl_location; + +TYPE __ghdl_dir_type IS ENUM {dir_to, dir_downto}; + +TYPE __ghdl_signal IS RECORD; + +TYPE __ghdl_signal_ptr IS ACCESS __ghdl_signal; + +EXTERNAL FUNCTION __ghdl_alloc ( + size: __ghdl_size_type) + RETURN __ghdl_ptr; + +EXTERNAL PROCEDURE __ghdl_program_error ( + filename: __ghdl_char_ptr; + line: __ghdl_i32; + code: __ghdl_index_type); + +EXTERNAL PROCEDURE __ghdl_bound_check_failed ( + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_direction_check_failed ( + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL FUNCTION __ghdl_stack2_allocate ( + size: __ghdl_index_type) + RETURN __ghdl_ptr; + +EXTERNAL FUNCTION __ghdl_stack2_mark ( + ) + RETURN __ghdl_ptr; + +EXTERNAL PROCEDURE __ghdl_stack2_release ( + mark: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_memcpy ( + dest: __ghdl_ptr; + src: __ghdl_ptr; + length: __ghdl_index_type); + +EXTERNAL PROCEDURE __ghdl_deallocate ( + OBJ: __ghdl_ptr); + +EXTERNAL FUNCTION __ghdl_malloc ( + length: __ghdl_index_type) + RETURN __ghdl_ptr; + +EXTERNAL FUNCTION __ghdl_malloc0 ( + length: __ghdl_index_type) + RETURN __ghdl_ptr; + +EXTERNAL FUNCTION __ghdl_text_file_elaborate ( + ) + RETURN __ghdl_file_index; + +EXTERNAL FUNCTION __ghdl_file_elaborate ( + NAME: __ghdl_char_ptr) + RETURN __ghdl_file_index; + +EXTERNAL PROCEDURE __ghdl_file_finalize ( + file: __ghdl_file_index); + +EXTERNAL PROCEDURE __ghdl_text_file_finalize ( + file: __ghdl_file_index); + +EXTERNAL PROCEDURE __ghdl_protected_enter ( + OBJ: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_protected_leave ( + OBJ: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_protected_init ( + OBJ: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_protected_fini ( + OBJ: __ghdl_ptr); + +TYPE __ghdl_rtik IS ENUM {__ghdl_rtik_top, __ghdl_rtik_library, + __ghdl_rtik_package, __ghdl_rtik_package_body, __ghdl_rtik_entity, + __ghdl_rtik_architecture, __ghdl_rtik_process, __ghdl_rtik_block, + __ghdl_rtik_if_generate, __ghdl_rtik_case_generate, + __ghdl_rtik_for_generate, __ghdl_rtik_generate_body, __ghdl_rtik_instance, + __ghdl_rtik_constant, __ghdl_rtik_iterator, __ghdl_rtik_variable, + __ghdl_rtik_signal, __ghdl_rtik_file, __ghdl_rtik_port, + __ghdl_rtik_generic, __ghdl_rtik_alias, __ghdl_rtik_guard, + __ghdl_rtik_component, __ghdl_rtik_attribute, __ghdl_rtik_type_b1, + __ghdl_rtik_type_e8, __ghdl_rtik_type_e32, __ghdl_rtik_type_i32, + __ghdl_rtik_type_i64, __ghdl_rtik_type_f64, __ghdl_rtik_type_p32, + __ghdl_rtik_type_p64, __ghdl_rtik_type_access, __ghdl_rtik_type_array, + __ghdl_rtik_type_record, __ghdl_rtik_type_unbounded_record, + __ghdl_rtik_type_file, __ghdl_rtik_subtype_scalar, + __ghdl_rtik_subtype_array, __ghdl_rtik_subtype_unconstrained_array, + __ghdl_rtik_subtype_record, __ghdl_rtik_subtype_unbounded_record, + __ghdl_rtik_subtype_access, __ghdl_rtik_type_protected, + __ghdl_rtik_element, __ghdl_rtik_unit64, __ghdl_rtik_unitptr, + __ghdl_rtik_attribute_transaction, __ghdl_rtik_attribute_quiet, + __ghdl_rtik_attribute_stable, __ghdl_rtik_psl_assert, + __ghdl_rtik_psl_cover, __ghdl_rtik_psl_endpoint, __ghdl_rtik_error}; + +TYPE __ghdl_rti_depth IS UNSIGNED (8); + +TYPE __ghdl_rti_u8 IS UNSIGNED (8); + +TYPE __ghdl_rti_common IS RECORD + kind: __ghdl_rtik; + depth: __ghdl_rti_depth; + mode: __ghdl_rti_u8; + max_depth: __ghdl_rti_depth; +END RECORD; + +TYPE __ghdl_rti_access IS ACCESS __ghdl_rti_common; + +TYPE __ghdl_rti_array IS ARRAY [__ghdl_index_type] OF __ghdl_rti_access; + +TYPE __ghdl_rti_arr_acc IS ACCESS __ghdl_rti_array; + +TYPE __ghdl_component_link_type IS RECORD; + +TYPE __ghdl_component_link_acc IS ACCESS __ghdl_component_link_type; + +TYPE __ghdl_entity_link_type IS RECORD + rti: __ghdl_rti_access; + parent: __ghdl_component_link_acc; +END RECORD; + +TYPE __ghdl_entity_link_acc IS ACCESS __ghdl_entity_link_type; + +TYPE __ghdl_component_link_type IS RECORD + INSTANCE: __ghdl_entity_link_acc; + stmt: __ghdl_rti_access; +END RECORD; + +TYPE __ghdl_rtin_block IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + loc: __ghdl_ptr; + linecol: __ghdl_index_type; + parent: __ghdl_rti_access; + nbr_child: __ghdl_index_type; + children: __ghdl_rti_arr_acc; +END RECORD; + +TYPE __ghdl_rtin_generate IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + loc: __ghdl_ptr; + linecol: __ghdl_index_type; + parent: __ghdl_rti_access; + size: __ghdl_index_type; + child: __ghdl_rti_access; +END RECORD; + +TYPE __ghdl_rtin_block_file IS RECORD + block: __ghdl_rtin_block; + filename: __ghdl_char_ptr; +END RECORD; + +TYPE __ghdl_rtin_type_scalar IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; +END RECORD; + +TYPE __ghdl_rtin_type_enum IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + nbr: __ghdl_index_type; + lits: __ghdl_char_ptr_array_ptr; +END RECORD; + +TYPE __ghdl_rtin_subtype_scalar IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + base: __ghdl_rti_access; + range: __ghdl_ptr; +END RECORD; + +TYPE __ghdl_rtin_unit64 IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + val: __ghdl_i64; +END RECORD; + +TYPE __ghdl_rtin_unitptr IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + addr: __ghdl_ptr; +END RECORD; + +TYPE __ghdl_rtin_type_physical IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + nbr: __ghdl_index_type; + units: __ghdl_rti_arr_acc; +END RECORD; + +TYPE __ghdl_rtin_type_fileacc IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + base: __ghdl_rti_access; +END RECORD; + +TYPE __ghdl_rtin_type_array IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + element: __ghdl_rti_access; + nbr_dim: __ghdl_index_type; + indexes: __ghdl_rti_arr_acc; +END RECORD; + +TYPE __ghdl_rtin_subtype_composite IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + basetype: __ghdl_rti_access; + bounds: __ghdl_ptr; + val_size: __ghdl_ptr; + sig_size: __ghdl_ptr; +END RECORD; + +TYPE __ghdl_rtin_type_record IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + nbrel: __ghdl_index_type; + elements: __ghdl_rti_arr_acc; +END RECORD; + +TYPE __ghdl_rtin_element IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + eltype: __ghdl_rti_access; + val_off: __ghdl_index_type; + sig_off: __ghdl_index_type; +END RECORD; + +TYPE __ghdl_rtin_object IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + loc: __ghdl_ptr; + obj_type: __ghdl_rti_access; + linecol: __ghdl_index_type; +END RECORD; + +TYPE __ghdl_rtin_instance IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + linecol: __ghdl_index_type; + loc: __ghdl_ptr; + parent: __ghdl_rti_access; + instance: __ghdl_rti_access; +END RECORD; + +TYPE __ghdl_rtin_component IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + nbr_child: __ghdl_index_type; + children: __ghdl_rti_arr_acc; +END RECORD; + +EXTERNAL PROCEDURE __ghdl_signal_name_rti ( + OBJ: __ghdl_rti_access; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_process_register ( + this: __ghdl_ptr; + proc: __ghdl_ptr; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_sensitized_process_register ( + this: __ghdl_ptr; + proc: __ghdl_ptr; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_postponed_process_register ( + this: __ghdl_ptr; + proc: __ghdl_ptr; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_postponed_sensitized_process_register ( + this: __ghdl_ptr; + proc: __ghdl_ptr; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_finalize_register ( + this: __ghdl_ptr; + proc: __ghdl_ptr); + +-- package std.standard + +TYPE std__standard__boolean IS BOOLEAN {false, true}; + +TYPE std__standard__boolean__PTR IS ACCESS std__standard__boolean; + +TYPE std__standard__boolean__TRT IS RECORD + left: std__standard__boolean; + right: std__standard__boolean; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__boolean__TRPTR IS ACCESS std__standard__boolean__TRT; + +TYPE std__standard__BOOLEAN_ARRAY IS ARRAY [__ghdl_index_type] OF + std__standard__boolean; + +TYPE std__standard__bit IS BOOLEAN {C_0, C_1}; + +TYPE std__standard__bit__PTR IS ACCESS std__standard__bit; + +TYPE std__standard__bit__TRT IS RECORD + left: std__standard__bit; + right: std__standard__bit; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__bit__TRPTR IS ACCESS std__standard__bit__TRT; + +TYPE std__standard__character IS ENUM {nul, soh, stx, etx, eot, enq, ack, bel, + bs, ht, lf, vt, ff, cr, so, si, dle, dc1, dc2, dc3, dc4, nak, syn, etb, + can, em, sub, esc, fsp, gsp, rsp, usp, C20, C21, C22, C23, C24, C25, C26, + C27, C28, C29, C2a, C2b, C2c, C2d, C2e, C2f, C_0, C_1, C_2, C_3, C_4, C_5, + C_6, C_7, C_8, C_9, C3a, C3b, C3c, C3d, C3e, C3f, C40, C_A, C_B, C_C, C_D, + C_E, C_F, C_G, C_H, C_I, C_J, C_K, C_L, C_M, C_N, C_O, C_P, C_Q, C_R, C_S, + C_T, C_U, C_V, C_W, C_X, C_Y, C_Z, C5b, C5c, C5d, C5e, C5f, C60, C_a, C_b, + C_c, C_d, C_e, C_f, C_g, C_h, C_i, C_j, C_k, C_l, C_m, C_n, C_o, C_p, C_q, + C_r, C_s, C_t, C_u, C_v, C_w, C_x, C_y, C_z, C7b, C7c, C7d, C7e, del, c128, + c129, c130, c131, c132, c133, c134, c135, c136, c137, c138, c139, c140, + c141, c142, c143, c144, c145, c146, c147, c148, c149, c150, c151, c152, + c153, c154, c155, c156, c157, c158, c159, Ca0, Ca1, Ca2, Ca3, Ca4, Ca5, + Ca6, Ca7, Ca8, Ca9, Caa, Cab, Cac, Cad, Cae, Caf, Cb0, Cb1, Cb2, Cb3, Cb4, + Cb5, Cb6, Cb7, Cb8, Cb9, Cba, Cbb, Cbc, Cbd, Cbe, Cbf, Cc0, Cc1, Cc2, Cc3, + Cc4, Cc5, Cc6, Cc7, Cc8, Cc9, Cca, Ccb, Ccc, Ccd, Cce, Ccf, Cd0, Cd1, Cd2, + Cd3, Cd4, Cd5, Cd6, Cd7, Cd8, Cd9, Cda, Cdb, Cdc, Cdd, Cde, Cdf, Ce0, Ce1, + Ce2, Ce3, Ce4, Ce5, Ce6, Ce7, Ce8, Ce9, Cea, Ceb, Cec, Ced, Cee, Cef, Cf0, + Cf1, Cf2, Cf3, Cf4, Cf5, Cf6, Cf7, Cf8, Cf9, Cfa, Cfb, Cfc, Cfd, Cfe, Cff}; + +TYPE std__standard__character__PTR IS ACCESS std__standard__character; + +TYPE std__standard__character__TRT IS RECORD + left: std__standard__character; + right: std__standard__character; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__character__TRPTR IS ACCESS std__standard__character__TRT; + +EXTERNAL CONSTANT std__standard__character__BTR : std__standard__character__TRT + ; + +TYPE std__standard__severity_level IS ENUM {note, warning, error, failure}; + +TYPE std__standard__severity_level__PTR IS ACCESS std__standard__severity_level + ; + +TYPE std__standard__severity_level__TRT IS RECORD + left: std__standard__severity_level; + right: std__standard__severity_level; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__severity_level__TRPTR IS ACCESS + std__standard__severity_level__TRT; + +EXTERNAL CONSTANT std__standard__severity_level__BTR : + std__standard__severity_level__TRT; + +TYPE std__standard__UNIVERSAL_INTEGER__BT IS SIGNED (64); + +TYPE std__standard__UNIVERSAL_INTEGER__BT__PTR IS ACCESS + std__standard__UNIVERSAL_INTEGER__BT; + +TYPE std__standard__UNIVERSAL_INTEGER__BT__TRT IS RECORD + left: std__standard__UNIVERSAL_INTEGER__BT; + right: std__standard__UNIVERSAL_INTEGER__BT; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__UNIVERSAL_INTEGER__BT__TRPTR IS ACCESS + std__standard__UNIVERSAL_INTEGER__BT__TRT; + +EXTERNAL CONSTANT std__standard__UNIVERSAL_INTEGER__STR : + std__standard__UNIVERSAL_INTEGER__BT__TRT; + +TYPE std__standard__UNIVERSAL_REAL__BT IS FLOAT; + +TYPE std__standard__UNIVERSAL_REAL__BT__PTR IS ACCESS + std__standard__UNIVERSAL_REAL__BT; + +TYPE std__standard__UNIVERSAL_REAL__BT__TRT IS RECORD + left: std__standard__UNIVERSAL_REAL__BT; + right: std__standard__UNIVERSAL_REAL__BT; + dir: __ghdl_dir_type; +END RECORD; + +TYPE std__standard__UNIVERSAL_REAL__BT__TRPTR IS ACCESS + std__standard__UNIVERSAL_REAL__BT__TRT; + +EXTERNAL CONSTANT std__standard__UNIVERSAL_REAL__STR : + std__standard__UNIVERSAL_REAL__BT__TRT; + +TYPE std__standard__integer__BT IS SIGNED (32); + +TYPE std__standard__integer__BT__PTR IS ACCESS std__standard__integer__BT; + +TYPE std__standard__integer__BT__TRT IS RECORD + left: std__standard__integer__BT; + right: std__standard__integer__BT; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__integer__BT__TRPTR IS ACCESS + std__standard__integer__BT__TRT; + +EXTERNAL CONSTANT std__standard__integer__STR : std__standard__integer__BT__TRT + ; + +TYPE std__standard__real__BT IS FLOAT; + +TYPE std__standard__real__BT__PTR IS ACCESS std__standard__real__BT; + +TYPE std__standard__real__BT__TRT IS RECORD + left: std__standard__real__BT; + right: std__standard__real__BT; + dir: __ghdl_dir_type; +END RECORD; + +TYPE std__standard__real__BT__TRPTR IS ACCESS std__standard__real__BT__TRT; + +EXTERNAL CONSTANT std__standard__real__STR : std__standard__real__BT__TRT; + +TYPE std__standard__time__BT IS SIGNED (64); + +TYPE std__standard__time__BT__PTR IS ACCESS std__standard__time__BT; + +TYPE std__standard__time__BT__TRT IS RECORD + left: std__standard__time__BT; + right: std__standard__time__BT; + dir: __ghdl_dir_type; +END RECORD; + +TYPE std__standard__time__BT__TRPTR IS ACCESS std__standard__time__BT__TRT; + +EXTERNAL CONSTANT std__standard__time__STR : std__standard__time__BT__TRT; + +EXTERNAL CONSTANT std__standard__delay_length__STR : + std__standard__time__BT__TRT; + +EXTERNAL CONSTANT std__standard__natural__STR : std__standard__integer__BT__TRT + ; + +EXTERNAL CONSTANT std__standard__positive__STR : + std__standard__integer__BT__TRT; + +TYPE std__standard__string__BASE IS ARRAY [__ghdl_index_type] OF + std__standard__character; + +TYPE std__standard__string__BASEP IS ACCESS std__standard__string__BASE; + +TYPE std__standard__string__SIGBASE IS ARRAY [__ghdl_index_type] OF + __ghdl_signal_ptr; + +TYPE std__standard__string__SIGBASEP IS ACCESS std__standard__string__SIGBASE; + +TYPE std__standard__string__BOUND IS RECORD + dim_1: std__standard__integer__BT__TRT; +END RECORD; + +TYPE std__standard__string__BOUNDP IS ACCESS std__standard__string__BOUND; + +TYPE std__standard__string IS RECORD + BASE: std__standard__string__BASEP; + BOUNDS: std__standard__string__BOUNDP; +END RECORD; + +TYPE std__standard__string__PTR IS ACCESS std__standard__string; + +TYPE std__standard__string__SIG IS RECORD + BASE: std__standard__string__SIGBASEP; + BOUNDS: std__standard__string__BOUNDP; +END RECORD; + +TYPE std__standard__string__SIGPTR IS ACCESS std__standard__string__SIG; + +EXTERNAL FUNCTION std__standard__string_EQ ( + left: std__standard__string__PTR; + right: std__standard__string__PTR) + RETURN std__standard__boolean; + +EXTERNAL FUNCTION std__standard__string_CMP ( + left: std__standard__string__PTR; + right: std__standard__string__PTR) + RETURN __ghdl_compare_type; + +TYPE std__standard__bit_vector__BASE IS ARRAY [__ghdl_index_type] OF + std__standard__bit; + +TYPE std__standard__bit_vector__BASEP IS ACCESS std__standard__bit_vector__BASE + ; + +TYPE std__standard__bit_vector__SIGBASE IS ARRAY [__ghdl_index_type] OF + __ghdl_signal_ptr; + +TYPE std__standard__bit_vector__SIGBASEP IS ACCESS + std__standard__bit_vector__SIGBASE; + +TYPE std__standard__bit_vector__BOUND IS RECORD + dim_1: std__standard__integer__BT__TRT; +END RECORD; + +TYPE std__standard__bit_vector__BOUNDP IS ACCESS + std__standard__bit_vector__BOUND; + +TYPE std__standard__bit_vector IS RECORD + BASE: std__standard__bit_vector__BASEP; + BOUNDS: std__standard__bit_vector__BOUNDP; +END RECORD; + +TYPE std__standard__bit_vector__PTR IS ACCESS std__standard__bit_vector; + +TYPE std__standard__bit_vector__SIG IS RECORD + BASE: std__standard__bit_vector__SIGBASEP; + BOUNDS: std__standard__bit_vector__BOUNDP; +END RECORD; + +TYPE std__standard__bit_vector__SIGPTR IS ACCESS std__standard__bit_vector__SIG + ; + +EXTERNAL FUNCTION std__standard__bit_vector_EQ ( + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR) + RETURN std__standard__boolean; + +EXTERNAL FUNCTION std__standard__bit_vector_CMP ( + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR) + RETURN __ghdl_compare_type; + +EXTERNAL PROCEDURE std__standard__bit_vector_NOT ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_AND ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_OR ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_NAND ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_NOR ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_XOR ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_XNOR ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_SHL ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__integer__BT); + +EXTERNAL PROCEDURE std__standard__bit_vector_SHA ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__integer__BT); + +EXTERNAL PROCEDURE std__standard__bit_vector_ROT ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__integer__BT); + +TYPE std__standard__file_open_kind IS ENUM {read_mode, write_mode, + append_mode}; + +TYPE std__standard__file_open_kind__PTR IS ACCESS std__standard__file_open_kind + ; + +TYPE std__standard__file_open_kind__TRT IS RECORD + left: std__standard__file_open_kind; + right: std__standard__file_open_kind; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__file_open_kind__TRPTR IS ACCESS + std__standard__file_open_kind__TRT; + +EXTERNAL CONSTANT std__standard__file_open_kind__BTR : + std__standard__file_open_kind__TRT; + +TYPE std__standard__file_open_status IS ENUM {open_ok, status_error, + name_error, mode_error}; + +TYPE std__standard__file_open_status__PTR IS ACCESS + std__standard__file_open_status; + +TYPE std__standard__file_open_status__TRT IS RECORD + left: std__standard__file_open_status; + right: std__standard__file_open_status; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__file_open_status__TRPTR IS ACCESS + std__standard__file_open_status__TRT; + +EXTERNAL CONSTANT std__standard__file_open_status__BTR : + std__standard__file_open_status__TRT; + +TYPE std__standard__CONVERTIBLE_INTEGER__BT IS SIGNED (64); + +TYPE std__standard__CONVERTIBLE_INTEGER__BT__PTR IS ACCESS + std__standard__CONVERTIBLE_INTEGER__BT; + +TYPE std__standard__CONVERTIBLE_INTEGER__BT__TRT IS RECORD + left: std__standard__CONVERTIBLE_INTEGER__BT; + right: std__standard__CONVERTIBLE_INTEGER__BT; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__CONVERTIBLE_INTEGER__BT__TRPTR IS ACCESS + std__standard__CONVERTIBLE_INTEGER__BT__TRT; + +TYPE std__standard__CONVERTIBLE_REAL__BT IS FLOAT; + +TYPE std__standard__CONVERTIBLE_REAL__BT__PTR IS ACCESS + std__standard__CONVERTIBLE_REAL__BT; + +TYPE std__standard__CONVERTIBLE_REAL__BT__TRT IS RECORD + left: std__standard__CONVERTIBLE_REAL__BT; + right: std__standard__CONVERTIBLE_REAL__BT; + dir: __ghdl_dir_type; +END RECORD; + +TYPE std__standard__CONVERTIBLE_REAL__BT__TRPTR IS ACCESS + std__standard__CONVERTIBLE_REAL__BT__TRT; + +EXTERNAL CONSTANT std__standard__RTI : __ghdl_rtin_block; + +EXTERNAL CONSTANT std__standard__boolean__RTI : __ghdl_rtin_type_enum; + +EXTERNAL CONSTANT std__standard__bit__RTI : __ghdl_rtin_type_enum; + +EXTERNAL CONSTANT std__standard__character__RTI : __ghdl_rtin_type_enum; + +EXTERNAL CONSTANT std__standard__severity_level__RTI : __ghdl_rtin_type_enum; + +EXTERNAL CONSTANT std__standard__UNIVERSAL_INTEGER__BT__RTI : + __ghdl_rtin_type_scalar; + +EXTERNAL CONSTANT std__standard__UNIVERSAL_INTEGER__RTI : + __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__UNIVERSAL_REAL__BT__RTI : + __ghdl_rtin_type_scalar; + +EXTERNAL CONSTANT std__standard__UNIVERSAL_REAL__RTI : + __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__integer__BT__RTI : __ghdl_rtin_type_scalar; + +EXTERNAL CONSTANT std__standard__integer__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__real__BT__RTI : __ghdl_rtin_type_scalar; + +EXTERNAL CONSTANT std__standard__real__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__time__BT__RTI : __ghdl_rtin_type_physical; + +EXTERNAL CONSTANT std__standard__time__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__delay_length__RTI : __ghdl_rtin_subtype_scalar + ; + +EXTERNAL CONSTANT std__standard__natural__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__positive__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__string__RTI : __ghdl_rtin_type_array; + +EXTERNAL CONSTANT std__standard__bit_vector__RTI : __ghdl_rtin_type_array; + +EXTERNAL CONSTANT std__standard__file_open_kind__RTI : __ghdl_rtin_type_enum; + +EXTERNAL CONSTANT std__standard__file_open_status__RTI : __ghdl_rtin_type_enum; + +EXTERNAL CONSTANT std__standard__foreign__RTI : __ghdl_rtin_object; + +TYPE __ghdl_std_ulogic_boolean_array_type IS SUBARRAY + std__standard__BOOLEAN_ARRAY[9]; + +EXTERNAL CONSTANT __ghdl_std_ulogic_to_boolean_array : + __ghdl_std_ulogic_boolean_array_type; + +-- internal declarations, part 2 + +EXTERNAL VAR __ghdl_now : std__standard__time__BT; + +EXTERNAL PROCEDURE __ghdl_assert_failed ( + msg: std__standard__string__PTR; + severity: std__standard__severity_level; + location: __ghdl_location_ptr); + +EXTERNAL PROCEDURE __ghdl_ieee_assert_failed ( + msg: std__standard__string__PTR; + severity: std__standard__severity_level; + location: __ghdl_location_ptr); + +EXTERNAL PROCEDURE __ghdl_psl_assert_failed ( + msg: std__standard__string__PTR; + severity: std__standard__severity_level; + location: __ghdl_location_ptr); + +EXTERNAL PROCEDURE __ghdl_psl_cover ( + msg: std__standard__string__PTR; + severity: std__standard__severity_level; + location: __ghdl_location_ptr); + +EXTERNAL PROCEDURE __ghdl_psl_cover_failed ( + msg: std__standard__string__PTR; + severity: std__standard__severity_level; + location: __ghdl_location_ptr); + +EXTERNAL PROCEDURE __ghdl_report ( + msg: std__standard__string__PTR; + severity: std__standard__severity_level; + location: __ghdl_location_ptr); + +EXTERNAL PROCEDURE __ghdl_text_write ( + file: __ghdl_file_index; + str: std__standard__string__PTR); + +EXTERNAL FUNCTION __ghdl_text_read_length ( + file: __ghdl_file_index; + str: std__standard__string__PTR) + RETURN std__standard__integer__BT; + +EXTERNAL PROCEDURE __ghdl_write_scalar ( + file: __ghdl_file_index; + ptr: __ghdl_ptr; + length: __ghdl_index_type); + +EXTERNAL PROCEDURE __ghdl_read_scalar ( + file: __ghdl_file_index; + ptr: __ghdl_ptr; + length: __ghdl_index_type); + +EXTERNAL FUNCTION __ghdl_real_exp ( + left: std__standard__real__BT; + right: std__standard__integer__BT) + RETURN std__standard__real__BT; + +EXTERNAL FUNCTION __ghdl_integer_exp ( + left: std__standard__integer__BT; + right: std__standard__integer__BT) + RETURN std__standard__integer__BT; + +EXTERNAL PROCEDURE __ghdl_image_b1 ( + res: std__standard__string__PTR; + val: __ghdl_bool_type; + RTI: __ghdl_rti_access); + +EXTERNAL FUNCTION __ghdl_value_b1 ( + val: std__standard__string__PTR; + rti: __ghdl_rti_access) + RETURN __ghdl_bool_type; + +EXTERNAL PROCEDURE __ghdl_image_e8 ( + res: std__standard__string__PTR; + val: __ghdl_i32; + RTI: __ghdl_rti_access); + +EXTERNAL FUNCTION __ghdl_value_e8 ( + val: std__standard__string__PTR; + rti: __ghdl_rti_access) + RETURN __ghdl_i32; + +EXTERNAL PROCEDURE __ghdl_image_e32 ( + res: std__standard__string__PTR; + val: __ghdl_i32; + RTI: __ghdl_rti_access); + +EXTERNAL FUNCTION __ghdl_value_e32 ( + val: std__standard__string__PTR; + rti: __ghdl_rti_access) + RETURN __ghdl_i32; + +EXTERNAL PROCEDURE __ghdl_image_i32 ( + res: std__standard__string__PTR; + val: __ghdl_i32); + +EXTERNAL FUNCTION __ghdl_value_i32 ( + val: std__standard__string__PTR) + RETURN __ghdl_i32; + +EXTERNAL PROCEDURE __ghdl_image_i64 ( + res: std__standard__string__PTR; + val: __ghdl_i64); + +EXTERNAL FUNCTION __ghdl_value_i64 ( + val: std__standard__string__PTR) + RETURN __ghdl_i64; + +EXTERNAL PROCEDURE __ghdl_image_p32 ( + res: std__standard__string__PTR; + val: __ghdl_i32; + RTI: __ghdl_rti_access); + +EXTERNAL FUNCTION __ghdl_value_p32 ( + val: std__standard__string__PTR; + rti: __ghdl_rti_access) + RETURN __ghdl_i32; + +EXTERNAL PROCEDURE __ghdl_image_p64 ( + res: std__standard__string__PTR; + val: __ghdl_i64; + RTI: __ghdl_rti_access); + +EXTERNAL FUNCTION __ghdl_value_p64 ( + val: std__standard__string__PTR; + rti: __ghdl_rti_access) + RETURN __ghdl_i64; + +EXTERNAL PROCEDURE __ghdl_image_f64 ( + res: std__standard__string__PTR; + val: __ghdl_real); + +EXTERNAL FUNCTION __ghdl_value_f64 ( + val: std__standard__string__PTR) + RETURN __ghdl_real; + +EXTERNAL PROCEDURE __ghdl_text_file_open ( + file: __ghdl_file_index; + mode: __ghdl_i32; + str: std__standard__string__PTR); + +EXTERNAL PROCEDURE __ghdl_file_open ( + file: __ghdl_file_index; + mode: __ghdl_i32; + str: std__standard__string__PTR); + +EXTERNAL FUNCTION __ghdl_text_file_open_status ( + file: __ghdl_file_index; + mode: __ghdl_i32; + str: std__standard__string__PTR) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_file_open_status ( + file: __ghdl_file_index; + mode: __ghdl_i32; + str: std__standard__string__PTR) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_file_endfile ( + file: __ghdl_file_index) + RETURN std__standard__boolean; + +EXTERNAL PROCEDURE __ghdl_text_file_close ( + file: __ghdl_file_index); + +EXTERNAL PROCEDURE __ghdl_file_close ( + file: __ghdl_file_index); + +EXTERNAL PROCEDURE __ghdl_file_flush ( + file: __ghdl_file_index); + +EXTERNAL PROCEDURE __ghdl_signal_create_resolution ( + func: __ghdl_ptr; + INSTANCE: __ghdl_ptr; + sig: __ghdl_ptr; + nbr_sig: __ghdl_index_type); + +TYPE __ghdl_scalar_bytes IS SUBARRAY __ghdl_chararray[8]; + +TYPE __ghdl_signal IS RECORD + driving_value: __ghdl_scalar_bytes; + last_value: __ghdl_scalar_bytes; + last_event: std__standard__time__BT; + last_active: std__standard__time__BT; + value: __ghdl_ptr; + event: std__standard__boolean; + active: std__standard__boolean; + has_active: __ghdl_bool_type; +END RECORD; + +TYPE __ghdl_signal_ptr_ptr IS ACCESS __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_merge_rti ( + sig: __ghdl_signal_ptr; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_signal_add_source ( + targ: __ghdl_signal_ptr; + src: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_signal_effective_value ( + targ: __ghdl_signal_ptr; + src: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_signal_set_disconnect ( + sig: __ghdl_signal_ptr; + time: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_disconnect ( + sig: __ghdl_signal_ptr); + +EXTERNAL FUNCTION __ghdl_signal_get_nbr_drivers ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_index_type; + +EXTERNAL FUNCTION __ghdl_signal_get_nbr_ports ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_index_type; + +EXTERNAL FUNCTION __ghdl_signal_read_driver ( + sig: __ghdl_signal_ptr; + num: __ghdl_index_type) + RETURN __ghdl_ptr; + +EXTERNAL FUNCTION __ghdl_signal_read_port ( + sig: __ghdl_signal_ptr; + num: __ghdl_index_type) + RETURN __ghdl_ptr; + +EXTERNAL FUNCTION __ghdl_signal_driving ( + sig: __ghdl_signal_ptr) + RETURN std__standard__boolean; + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_error ( + sig: __ghdl_signal_ptr; + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_error ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + after: std__standard__time__BT; + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_error ( + sig: __ghdl_signal_ptr; + after: std__standard__time__BT; + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_null ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_null ( + sig: __ghdl_signal_ptr; + after: std__standard__time__BT); + +EXTERNAL FUNCTION __ghdl_create_signal_e8 ( + val_ptr: __ghdl_ptr; + resolv_func: __ghdl_ptr; + resolv_inst: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_init_e8 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_e8 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_e8 ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + val: __ghdl_i32; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_e8 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_associate_e8 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_e8 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL FUNCTION __ghdl_signal_driving_value_e8 ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_create_signal_e32 ( + val_ptr: __ghdl_ptr; + resolv_func: __ghdl_ptr; + resolv_inst: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_init_e32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_e32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_e32 ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + val: __ghdl_i32; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_e32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_associate_e32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_e32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL FUNCTION __ghdl_signal_driving_value_e32 ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_create_signal_b1 ( + val_ptr: __ghdl_ptr; + resolv_func: __ghdl_ptr; + resolv_inst: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_init_b1 ( + sig: __ghdl_signal_ptr; + val: __ghdl_bool_type); + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_b1 ( + sig: __ghdl_signal_ptr; + val: __ghdl_bool_type); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_b1 ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + val: __ghdl_bool_type; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_b1 ( + sig: __ghdl_signal_ptr; + val: __ghdl_bool_type; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_associate_b1 ( + sig: __ghdl_signal_ptr; + val: __ghdl_bool_type); + +EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_b1 ( + sig: __ghdl_signal_ptr; + val: __ghdl_bool_type); + +EXTERNAL FUNCTION __ghdl_signal_driving_value_b1 ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_bool_type; + +EXTERNAL FUNCTION __ghdl_create_signal_i32 ( + val_ptr: __ghdl_ptr; + resolv_func: __ghdl_ptr; + resolv_inst: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_init_i32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_i32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_i32 ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + val: __ghdl_i32; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_i32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_associate_i32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_i32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL FUNCTION __ghdl_signal_driving_value_i32 ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_create_signal_f64 ( + val_ptr: __ghdl_ptr; + resolv_func: __ghdl_ptr; + resolv_inst: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_init_f64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_real); + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_f64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_real); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_f64 ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + val: __ghdl_real; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_f64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_real; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_associate_f64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_real); + +EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_f64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_real); + +EXTERNAL FUNCTION __ghdl_signal_driving_value_f64 ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_real; + +EXTERNAL FUNCTION __ghdl_create_signal_i64 ( + val_ptr: __ghdl_ptr; + resolv_func: __ghdl_ptr; + resolv_inst: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_init_i64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i64); + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_i64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i64); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_i64 ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + val: __ghdl_i64; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_i64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i64; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_associate_i64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i64); + +EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_i64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i64); + +EXTERNAL FUNCTION __ghdl_signal_driving_value_i64 ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_i64; + +EXTERNAL PROCEDURE __ghdl_process_add_sensitivity ( + sig: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_process_add_driver ( + sig: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_signal_add_direct_driver ( + sig: __ghdl_signal_ptr; + drv: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_signal_direct_assign ( + sig: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_signal_in_conversion ( + func: __ghdl_ptr; + INSTANCE: __ghdl_ptr; + src: __ghdl_signal_ptr; + src_len: __ghdl_index_type; + dst: __ghdl_signal_ptr; + dst_len: __ghdl_index_type); + +EXTERNAL PROCEDURE __ghdl_signal_out_conversion ( + func: __ghdl_ptr; + INSTANCE: __ghdl_ptr; + src: __ghdl_signal_ptr; + src_len: __ghdl_index_type; + dst: __ghdl_signal_ptr; + dst_len: __ghdl_index_type); + +EXTERNAL FUNCTION __ghdl_create_stable_signal ( + val_ptr: __ghdl_ptr; + val: std__standard__time__BT) + RETURN __ghdl_signal_ptr; + +EXTERNAL FUNCTION __ghdl_create_quiet_signal ( + val_ptr: __ghdl_ptr; + val: std__standard__time__BT) + RETURN __ghdl_signal_ptr; + +EXTERNAL FUNCTION __ghdl_create_transaction_signal ( + val_ptr: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_attribute_register_prefix ( + sig: __ghdl_signal_ptr); + +EXTERNAL FUNCTION __ghdl_create_delayed_signal ( + sig: __ghdl_signal_ptr; + val_ptr: __ghdl_ptr; + val: std__standard__time__BT) + RETURN __ghdl_signal_ptr; + +EXTERNAL FUNCTION __ghdl_signal_create_guard ( + val_ptr: __ghdl_ptr; + this: __ghdl_ptr; + proc: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_guard_dependence ( + sig: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_process_wait_exit ( + ); + +EXTERNAL PROCEDURE __ghdl_process_wait_timeout ( + time: std__standard__time__BT; + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_process_wait_set_timeout ( + time: std__standard__time__BT; + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_process_wait_add_sensitivity ( + sig: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_process_wait_suspend ( + ); + +EXTERNAL FUNCTION __ghdl_process_wait_timed_out ( + ) + RETURN __ghdl_bool_type; + +EXTERNAL PROCEDURE __ghdl_process_wait_close ( + ); + +EXTERNAL PROCEDURE __ghdl_get_path_name ( + res: std__standard__string__PTR; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr; + name: __ghdl_str_len_ptr); + +EXTERNAL PROCEDURE __ghdl_get_instance_name ( + res: std__standard__string__PTR; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr; + name: __ghdl_str_len_ptr); + +EXTERNAL PROCEDURE __ghdl_rti_add_package ( + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_rti_add_top ( + max_pkgs: __ghdl_index_type; + pkgs: __ghdl_rti_arr_acc; + RTI: __ghdl_rti_access; + INSTANCE: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_init_top_generics ( + ); + +EXTERNAL FUNCTION __ghdl_std_ulogic_match_eq ( + left: __ghdl_i32; + right: __ghdl_i32) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_std_ulogic_match_ne ( + left: __ghdl_i32; + right: __ghdl_i32) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_std_ulogic_match_lt ( + left: __ghdl_i32; + right: __ghdl_i32) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_std_ulogic_match_le ( + left: __ghdl_i32; + right: __ghdl_i32) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_std_ulogic_array_match_eq ( + left: __ghdl_ptr; + l_len: __ghdl_index_type; + right: __ghdl_ptr; + r_len: __ghdl_index_type) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_std_ulogic_array_match_ne ( + left: __ghdl_ptr; + l_len: __ghdl_index_type; + right: __ghdl_ptr; + r_len: __ghdl_index_type) + RETURN __ghdl_i32; + +EXTERNAL PROCEDURE __ghdl_to_string_i32 ( + res: std__standard__string__PTR; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_to_string_i64 ( + res: std__standard__string__PTR; + val: __ghdl_i64); + +EXTERNAL PROCEDURE __ghdl_to_string_f64 ( + res: std__standard__string__PTR; + val: __ghdl_real); + +EXTERNAL PROCEDURE __ghdl_to_string_f64_digits ( + res: std__standard__string__PTR; + val: __ghdl_real; + nbr_digits: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_to_string_f64_format ( + res: std__standard__string__PTR; + val: __ghdl_real; + format: std__standard__string__PTR); + +EXTERNAL PROCEDURE __ghdl_bv_to_ostring ( + res: std__standard__string__PTR; + val: std__standard__bit_vector__BASEP; + length: __ghdl_index_type); + +EXTERNAL PROCEDURE __ghdl_bv_to_hstring ( + res: std__standard__string__PTR; + val: std__standard__bit_vector__BASEP; + length: __ghdl_index_type); + +EXTERNAL PROCEDURE __ghdl_to_string_b1 ( + res: std__standard__string__PTR; + val: __ghdl_bool_type; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_to_string_e8 ( + res: std__standard__string__PTR; + val: __ghdl_i32; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_to_string_char ( + res: std__standard__string__PTR; + val: std__standard__character); + +EXTERNAL PROCEDURE __ghdl_to_string_e32 ( + res: std__standard__string__PTR; + val: __ghdl_i32; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_to_string_p32 ( + res: std__standard__string__PTR; + val: __ghdl_i32; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_to_string_p64 ( + res: std__standard__string__PTR; + val: __ghdl_i64; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_time_to_string_unit ( + res: std__standard__string__PTR; + val: std__standard__time__BT; + unit: std__standard__time__BT; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_array_char_to_string_b1 ( + res: std__standard__string__PTR; + val: __ghdl_ptr; + length: __ghdl_index_type; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_array_char_to_string_e8 ( + res: std__standard__string__PTR; + val: __ghdl_ptr; + length: __ghdl_index_type; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_array_char_to_string_e32 ( + res: std__standard__string__PTR; + val: __ghdl_ptr; + length: __ghdl_index_type; + RTI: __ghdl_rti_access); + +PRIVATE CONSTANT _UI00000000 : SUBARRAY __ghdl_chararray[11]; + +CONSTANT _UI00000000 := {114, 101, 112, 114, 111, 46, 118, 104, 100, 108, 0}; + +--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/repro.vhdl + +-- entity inc + +TYPE work__inc__INSTTYPE IS RECORD; + +TYPE work__inc__INSTPTR IS ACCESS work__inc__INSTTYPE; + +TYPE work__inc__INSTTYPE IS RECORD + RTI: __ghdl_entity_link_type; + v: std__standard__integer__BT; + vec: std__standard__bit_vector; +END RECORD; + +PUBLIC PROCEDURE work__inc__DECL_ELAB ( + INSTANCE: work__inc__INSTPTR); + +PUBLIC PROCEDURE work__inc__STMT_ELAB ( + INSTANCE: work__inc__INSTPTR); + +PUBLIC PROCEDURE work__inc__PKG_ELAB ( + ); + +EXTERNAL CONSTANT work__RTI : __ghdl_rtin_type_scalar; + +PUBLIC CONSTANT work__inc__RTI : __ghdl_rtin_block_file; + +PUBLIC CONSTANT work__inc__v__RTI : __ghdl_rtin_object; + +PRIVATE CONSTANT work__inc__v__RTISTR : SUBARRAY __ghdl_chararray[2]; + +CONSTANT work__inc__v__RTISTR := {118, 0}; + +CONSTANT work__inc__v__RTI := {{__ghdl_rtik'[__ghdl_rtik_generic], 1, 0, 0}, + __ghdl_char_ptr'unchecked_address (work__inc__v__RTISTR), + __ghdl_ptr'offsetof (work__inc__INSTTYPE.v), + __ghdl_rti_access'unchecked_address (std__standard__natural__RTI), 529}; + +PUBLIC CONSTANT work__inc__vec__RTI : __ghdl_rtin_object; + +PRIVATE CONSTANT work__inc__vec__RTISTR : SUBARRAY __ghdl_chararray[4]; + +CONSTANT work__inc__vec__RTISTR := {118, 101, 99, 0}; + +CONSTANT work__inc__vec__RTI := {{__ghdl_rtik'[__ghdl_rtik_generic], 1, 0, 0}, + __ghdl_char_ptr'unchecked_address (work__inc__vec__RTISTR), + __ghdl_ptr'offsetof (work__inc__INSTTYPE.vec), + __ghdl_rti_access'unchecked_address (std__standard__bit_vector__RTI), 542}; + +PRIVATE CONSTANT work__inc__RTISTR : SUBARRAY __ghdl_chararray[4]; + +CONSTANT work__inc__RTISTR := {105, 110, 99, 0}; + +PRIVATE CONSTANT work__inc__RTIARRAY : SUBARRAY __ghdl_rti_array[3]; + +CONSTANT work__inc__RTIARRAY := + {__ghdl_rti_access'unchecked_address (work__inc__v__RTI), + __ghdl_rti_access'unchecked_address (work__inc__vec__RTI), + __ghdl_rti_access'[NULL]}; + +CONSTANT work__inc__RTI := {{{__ghdl_rtik'[__ghdl_rtik_entity], 1, 0, 0}, + __ghdl_char_ptr'address (work__inc__RTISTR), __ghdl_ptr'[NULL], 264, + __ghdl_rti_access'unchecked_address (work__RTI), 2, + __ghdl_rti_arr_acc'address (work__inc__RTIARRAY)}, + __ghdl_char_ptr'address (_UI00000000)}; + +PUBLIC PROCEDURE work__inc__PKG_ELAB ( + ) +DECLARE +BEGIN + --# 1 +END; + +PUBLIC PROCEDURE work__inc__DECL_ELAB ( + INSTANCE: work__inc__INSTPTR) +DECLARE +BEGIN + --# 1 + --# 1 +END; + +PUBLIC PROCEDURE work__inc__STMT_ELAB ( + INSTANCE: work__inc__INSTPTR) +DECLARE +BEGIN + --# 1 +END; + +--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/repro.vhdl + +-- architecture default + +TYPE work__inc__ARCH__default__INSTTYPE IS RECORD; + +TYPE work__inc__ARCH__default__INSTPTR IS ACCESS + work__inc__ARCH__default__INSTTYPE; + +TYPE work__inc__ARCH__default__P0__INSTTYPE IS RECORD +END RECORD; + +TYPE work__inc__ARCH__default__P1__INSTTYPE IS RECORD +END RECORD; + +TYPE work__inc__ARCH__default__P2__INSTTYPE IS RECORD +END RECORD; + +TYPE work__inc__ARCH__default__INSTTYPE IS RECORD + ENTITY: work__inc__INSTTYPE; + P0: work__inc__ARCH__default__P0__INSTTYPE; + P1: work__inc__ARCH__default__P1__INSTTYPE; + P2: work__inc__ARCH__default__P2__INSTTYPE; +END RECORD; + +PUBLIC CONSTANT work__inc__ARCH__default__INSTSIZE : __ghdl_index_type; + +CONSTANT work__inc__ARCH__default__INSTSIZE := __ghdl_index_type'sizeof ( + work__inc__ARCH__default__INSTTYPE); + +PUBLIC PROCEDURE work__inc__ARCH__default__DECL_ELAB ( + INSTANCE: work__inc__INSTPTR); + +PUBLIC PROCEDURE work__inc__ARCH__default__STMT_ELAB ( + INSTANCE: work__inc__INSTPTR); + +PUBLIC CONSTANT work__inc__ARCH__default__RTI : __ghdl_rtin_block_file; + +PUBLIC CONSTANT work__inc__ARCH__default__P0__RTI : __ghdl_rtin_block; + +PRIVATE CONSTANT work__inc__ARCH__default__P0__RTISTR : SUBARRAY + __ghdl_chararray[3]; + +CONSTANT work__inc__ARCH__default__P0__RTISTR := {80, 48, 0}; + +PRIVATE CONSTANT work__inc__ARCH__default__P0__RTIARRAY : SUBARRAY + __ghdl_rti_array[1]; + +CONSTANT work__inc__ARCH__default__P0__RTIARRAY := {__ghdl_rti_access'[NULL]}; + +CONSTANT work__inc__ARCH__default__P0__RTI := { + {__ghdl_rtik'[__ghdl_rtik_process], 2, 0, 0}, + __ghdl_char_ptr'address (work__inc__ARCH__default__P0__RTISTR), + __ghdl_ptr'offsetof (work__inc__ARCH__default__INSTTYPE.P0), 1795, + __ghdl_rti_access'unchecked_address (work__inc__ARCH__default__RTI), 0, + __ghdl_rti_arr_acc'address (work__inc__ARCH__default__P0__RTIARRAY)}; + +PUBLIC CONSTANT work__inc__ARCH__default__P1__RTI : __ghdl_rtin_block; + +PRIVATE CONSTANT work__inc__ARCH__default__P1__RTISTR : SUBARRAY + __ghdl_chararray[3]; + +CONSTANT work__inc__ARCH__default__P1__RTISTR := {80, 49, 0}; + +PRIVATE CONSTANT work__inc__ARCH__default__P1__RTIARRAY : SUBARRAY + __ghdl_rti_array[1]; + +CONSTANT work__inc__ARCH__default__P1__RTIARRAY := {__ghdl_rti_access'[NULL]}; + +CONSTANT work__inc__ARCH__default__P1__RTI := { + {__ghdl_rtik'[__ghdl_rtik_process], 2, 0, 0}, + __ghdl_char_ptr'address (work__inc__ARCH__default__P1__RTISTR), + __ghdl_ptr'offsetof (work__inc__ARCH__default__INSTTYPE.P1), 2051, + __ghdl_rti_access'unchecked_address (work__inc__ARCH__default__RTI), 0, + __ghdl_rti_arr_acc'address (work__inc__ARCH__default__P1__RTIARRAY)}; + +PUBLIC CONSTANT work__inc__ARCH__default__P2__RTI : __ghdl_rtin_block; + +PRIVATE CONSTANT work__inc__ARCH__default__P2__RTISTR : SUBARRAY + __ghdl_chararray[3]; + +CONSTANT work__inc__ARCH__default__P2__RTISTR := {80, 50, 0}; + +PRIVATE CONSTANT work__inc__ARCH__default__P2__RTIARRAY : SUBARRAY + __ghdl_rti_array[1]; + +CONSTANT work__inc__ARCH__default__P2__RTIARRAY := {__ghdl_rti_access'[NULL]}; + +CONSTANT work__inc__ARCH__default__P2__RTI := { + {__ghdl_rtik'[__ghdl_rtik_process], 2, 0, 0}, + __ghdl_char_ptr'address (work__inc__ARCH__default__P2__RTISTR), + __ghdl_ptr'offsetof (work__inc__ARCH__default__INSTTYPE.P2), 2307, + __ghdl_rti_access'unchecked_address (work__inc__ARCH__default__RTI), 0, + __ghdl_rti_arr_acc'address (work__inc__ARCH__default__P2__RTIARRAY)}; + +PRIVATE CONSTANT work__inc__ARCH__default__RTISTR : SUBARRAY __ghdl_chararray[8 + ]; + +CONSTANT work__inc__ARCH__default__RTISTR := {100, 101, 102, 97, 117, 108, + 116, 0}; + +PRIVATE CONSTANT work__inc__ARCH__default__RTIARRAY : SUBARRAY __ghdl_rti_array + [4]; + +CONSTANT work__inc__ARCH__default__RTIARRAY := + {__ghdl_rti_access'unchecked_address (work__inc__ARCH__default__P0__RTI), + __ghdl_rti_access'unchecked_address (work__inc__ARCH__default__P1__RTI), + __ghdl_rti_access'unchecked_address (work__inc__ARCH__default__P2__RTI), + __ghdl_rti_access'[NULL]}; + +CONSTANT work__inc__ARCH__default__RTI := {{ + {__ghdl_rtik'[__ghdl_rtik_architecture], 1, 0, 0}, + __ghdl_char_ptr'address (work__inc__ARCH__default__RTISTR), + __ghdl_ptr'offsetof (work__inc__ARCH__default__INSTTYPE.ENTITY), 1294, + __ghdl_rti_access'unchecked_address (work__inc__RTI), 3, + __ghdl_rti_arr_acc'address (work__inc__ARCH__default__RTIARRAY)}, + __ghdl_char_ptr'address (_UI00000000)}; + + +PRIVATE PROCEDURE work__inc__ARCH__default__P0__PROC ( + INSTANCE: work__inc__ARCH__default__INSTPTR) +DECLARE + PRIVATE CONSTANT _UI00000001 : __ghdl_location; + CONSTANT _UI00000001 := {__ghdl_char_ptr'address (_UI00000000), 7, 3}; +BEGIN + --# 7 + IF NOT std__standard__boolean'(INSTANCE.ALL.ENTITY.vec.BOUNDS.ALL.dim_1.left + = 0) THEN + __ghdl_assert_failed (std__standard__string__PTR'[NULL], + std__standard__severity_level'[failure], __ghdl_location_ptr'address ( + _UI00000001)); + END IF; +END; + + +PRIVATE PROCEDURE work__inc__ARCH__default__P1__PROC ( + INSTANCE: work__inc__ARCH__default__INSTPTR) +DECLARE + PRIVATE CONSTANT _UI00000002 : __ghdl_location; + CONSTANT _UI00000002 := {__ghdl_char_ptr'address (_UI00000000), 8, 3}; +BEGIN + --# 8 + IF NOT std__standard__boolean'(INSTANCE.ALL.ENTITY.vec.BOUNDS.ALL.dim_1.right + = INSTANCE.ALL.ENTITY.v) THEN + __ghdl_assert_failed (std__standard__string__PTR'[NULL], + std__standard__severity_level'[failure], __ghdl_location_ptr'address ( + _UI00000002)); + END IF; +END; + + +PRIVATE PROCEDURE work__inc__ARCH__default__P2__PROC ( + INSTANCE: work__inc__ARCH__default__INSTPTR) +DECLARE + PRIVATE CONSTANT _UI00000003 : __ghdl_location; + CONSTANT _UI00000003 := {__ghdl_char_ptr'address (_UI00000000), 9, 3}; +BEGIN + --# 9 + DECLARE + LOCAL VAR T0_0 : std__standard__string; + LOCAL VAR T0_1 : __ghdl_ptr; + BEGIN + T0_1 := __ghdl_stack2_mark (); + __ghdl_image_i32 (std__standard__string__PTR'address (T0_0), __ghdl_i32 + 'conv (INSTANCE.ALL.ENTITY.vec.BOUNDS.ALL.dim_1.right)); + __ghdl_assert_failed (std__standard__string__PTR'address (T0_0), + std__standard__severity_level'[error], __ghdl_location_ptr'address ( + _UI00000003)); + __ghdl_stack2_release (T0_1); + END; +END; + +PUBLIC PROCEDURE work__inc__ARCH__default__DECL_ELAB ( + INSTANCE: work__inc__INSTPTR) +DECLARE + LOCAL VAR ARCH_INSTANCE : work__inc__ARCH__default__INSTPTR; +BEGIN + ARCH_INSTANCE := work__inc__ARCH__default__INSTPTR'conv (INSTANCE); + INSTANCE.ALL.RTI.rti := __ghdl_rti_access'unchecked_address ( + work__inc__ARCH__default__RTI); + work__inc__DECL_ELAB (INSTANCE); + --# 5 + --# 5 +END; + +PUBLIC PROCEDURE work__inc__ARCH__default__STMT_ELAB ( + INSTANCE: work__inc__INSTPTR) +DECLARE + LOCAL VAR ARCH_INSTANCE : work__inc__ARCH__default__INSTPTR; +BEGIN + ARCH_INSTANCE := work__inc__ARCH__default__INSTPTR'conv (INSTANCE); + work__inc__STMT_ELAB (INSTANCE); + --# 5 + --# 7 + __ghdl_sensitized_process_register (__ghdl_ptr'unchecked_address ( + ARCH_INSTANCE.ALL), __ghdl_ptr'subprg_addr ( + work__inc__ARCH__default__P0__PROC), __ghdl_rti_access'unchecked_address ( + work__inc__ARCH__default__P0__RTI), __ghdl_ptr'unchecked_address ( + ARCH_INSTANCE.ALL.P0)); + --# 8 + __ghdl_sensitized_process_register (__ghdl_ptr'unchecked_address ( + ARCH_INSTANCE.ALL), __ghdl_ptr'subprg_addr ( + work__inc__ARCH__default__P1__PROC), __ghdl_rti_access'unchecked_address ( + work__inc__ARCH__default__P1__RTI), __ghdl_ptr'unchecked_address ( + ARCH_INSTANCE.ALL.P1)); + --# 9 + __ghdl_sensitized_process_register (__ghdl_ptr'unchecked_address ( + ARCH_INSTANCE.ALL), __ghdl_ptr'subprg_addr ( + work__inc__ARCH__default__P2__PROC), __ghdl_rti_access'unchecked_address ( + work__inc__ARCH__default__P2__RTI), __ghdl_ptr'unchecked_address ( + ARCH_INSTANCE.ALL.P2)); +END; + +--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/repro.vhdl + +-- entity repro + +TYPE work__repro__INSTTYPE IS RECORD; + +TYPE work__repro__INSTPTR IS ACCESS work__repro__INSTTYPE; + +TYPE work__repro__INSTTYPE IS RECORD + RTI: __ghdl_entity_link_type; +END RECORD; + +PUBLIC PROCEDURE work__repro__DECL_ELAB ( + INSTANCE: work__repro__INSTPTR); + +PUBLIC PROCEDURE work__repro__STMT_ELAB ( + INSTANCE: work__repro__INSTPTR); + +PUBLIC PROCEDURE work__repro__PKG_ELAB ( + ); + +PUBLIC CONSTANT work__repro__RTI : __ghdl_rtin_block_file; + +PRIVATE CONSTANT work__repro__RTISTR : SUBARRAY __ghdl_chararray[6]; + +CONSTANT work__repro__RTISTR := {114, 101, 112, 114, 111, 0}; + +PRIVATE CONSTANT work__repro__RTIARRAY : SUBARRAY __ghdl_rti_array[1]; + +CONSTANT work__repro__RTIARRAY := {__ghdl_rti_access'[NULL]}; + +CONSTANT work__repro__RTI := {{{__ghdl_rtik'[__ghdl_rtik_entity], 1, 0, 0}, + __ghdl_char_ptr'address (work__repro__RTISTR), __ghdl_ptr'[NULL], 3080, + __ghdl_rti_access'unchecked_address (work__RTI), 0, + __ghdl_rti_arr_acc'address (work__repro__RTIARRAY)}, + __ghdl_char_ptr'address (_UI00000000)}; + +PUBLIC PROCEDURE work__repro__PKG_ELAB ( + ) +DECLARE +BEGIN + --# 12 +END; + +PUBLIC PROCEDURE work__repro__DECL_ELAB ( + INSTANCE: work__repro__INSTPTR) +DECLARE +BEGIN + --# 12 + --# 12 +END; + +PUBLIC PROCEDURE work__repro__STMT_ELAB ( + INSTANCE: work__repro__INSTPTR) +DECLARE +BEGIN + --# 12 +END; + +--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/repro.vhdl + +-- architecture default + +TYPE work__repro__ARCH__default__INSTTYPE IS RECORD; + +TYPE work__repro__ARCH__default__INSTPTR IS ACCESS + work__repro__ARCH__default__INSTTYPE; + +PUBLIC CONSTANT work__repro__ARCH__default__g__ix__OT__STR : + std__standard__integer__BT__TRT; + +CONSTANT work__repro__ARCH__default__g__ix__OT__STR := {0, 4, + __ghdl_dir_type'[dir_to], 5}; + +TYPE work__repro__ARCH__default__g__INSTTYPE IS RECORD; + +TYPE work__repro__ARCH__default__g__INSTPTR IS ACCESS + work__repro__ARCH__default__g__INSTTYPE; + +TYPE work__repro__ARCH__default__g__INSTTYPE IS RECORD + ORIGIN: work__repro__ARCH__default__INSTPTR; + CONFIGURED: __ghdl_bool_type; + ix: std__standard__integer__BT; + inst: __ghdl_component_link_type; +END RECORD; + +TYPE work__repro__ARCH__default__g__INSTARRTYPE IS ARRAY [__ghdl_index_type] OF + work__repro__ARCH__default__g__INSTTYPE; + +TYPE work__repro__ARCH__default__g__INSTARRPTR IS ACCESS + work__repro__ARCH__default__g__INSTARRTYPE; + +TYPE work__repro__ARCH__default__INSTTYPE IS RECORD + ENTITY: work__repro__INSTTYPE; + g: work__repro__ARCH__default__g__INSTARRPTR; +END RECORD; + +PUBLIC CONSTANT work__repro__ARCH__default__INSTSIZE : __ghdl_index_type; + +CONSTANT work__repro__ARCH__default__INSTSIZE := __ghdl_index_type'sizeof ( + work__repro__ARCH__default__INSTTYPE); + +PUBLIC PROCEDURE work__repro__ARCH__default__DECL_ELAB ( + INSTANCE: work__repro__INSTPTR); + +PUBLIC PROCEDURE work__repro__ARCH__default__STMT_ELAB ( + INSTANCE: work__repro__INSTPTR); + +PUBLIC CONSTANT work__repro__ARCH__default__RTI : __ghdl_rtin_block_file; + +PUBLIC CONSTANT work__repro__ARCH__default__g__ITERATOR__RTI : + __ghdl_rtin_subtype_scalar; + +CONSTANT work__repro__ARCH__default__g__ITERATOR__RTI := { + {__ghdl_rtik'[__ghdl_rtik_subtype_scalar], 0, 0, 0}, __ghdl_char_ptr'[NULL], + __ghdl_rti_access'unchecked_address (std__standard__integer__BT__RTI), + __ghdl_ptr'unchecked_address (work__repro__ARCH__default__g__ix__OT__STR)}; + +PUBLIC CONSTANT work__repro__ARCH__default__g__RTI : __ghdl_rtin_generate; + +PUBLIC CONSTANT work__repro__ARCH__default__g__BOD__RTI : __ghdl_rtin_block; + +PUBLIC CONSTANT work__repro__ARCH__default__g__BOD__ix__RTI : + __ghdl_rtin_object; + +PRIVATE CONSTANT work__repro__ARCH__default__g__BOD__ix__RTISTR : SUBARRAY + __ghdl_chararray[3]; + +CONSTANT work__repro__ARCH__default__g__BOD__ix__RTISTR := {105, 120, 0}; + +CONSTANT work__repro__ARCH__default__g__BOD__ix__RTI := { + {__ghdl_rtik'[__ghdl_rtik_iterator], 3, 0, 0}, + __ghdl_char_ptr'unchecked_address ( + work__repro__ARCH__default__g__BOD__ix__RTISTR), + __ghdl_ptr'offsetof (work__repro__ARCH__default__g__INSTTYPE.ix), + __ghdl_rti_access'unchecked_address ( + work__repro__ARCH__default__g__ITERATOR__RTI), 4112}; + +PRIVATE CONSTANT work__repro__ARCH__default__g__BOD__inst__RTISTR : SUBARRAY + __ghdl_chararray[5]; + +CONSTANT work__repro__ARCH__default__g__BOD__inst__RTISTR := {105, 110, 115, + 116, 0}; + +PUBLIC CONSTANT work__repro__ARCH__default__g__BOD__inst__RTI : + __ghdl_rtin_instance; + +CONSTANT work__repro__ARCH__default__g__BOD__inst__RTI := { + {__ghdl_rtik'[__ghdl_rtik_instance], 3, 0, 0}, + __ghdl_char_ptr'address (work__repro__ARCH__default__g__BOD__inst__RTISTR), + 4624, __ghdl_ptr'offsetof (work__repro__ARCH__default__g__INSTTYPE.inst), + __ghdl_rti_access'unchecked_address (work__repro__ARCH__default__g__BOD__RTI + ), __ghdl_rti_access'unchecked_address (work__inc__RTI)}; + +PRIVATE CONSTANT work__repro__ARCH__default__g__BOD__RTISTR : SUBARRAY + __ghdl_chararray[1]; + +CONSTANT work__repro__ARCH__default__g__BOD__RTISTR := {0}; + +PRIVATE CONSTANT work__repro__ARCH__default__g__BOD__RTIARRAY : SUBARRAY + __ghdl_rti_array[3]; + +CONSTANT work__repro__ARCH__default__g__BOD__RTIARRAY := + {__ghdl_rti_access'unchecked_address ( + work__repro__ARCH__default__g__BOD__ix__RTI), + __ghdl_rti_access'unchecked_address ( + work__repro__ARCH__default__g__BOD__inst__RTI), __ghdl_rti_access'[NULL]}; + +CONSTANT work__repro__ARCH__default__g__BOD__RTI := { + {__ghdl_rtik'[__ghdl_rtik_generate_body], 3, 0, 0}, + __ghdl_char_ptr'address (work__repro__ARCH__default__g__BOD__RTISTR), + __ghdl_ptr'[NULL], 4360, + __ghdl_rti_access'unchecked_address (work__repro__ARCH__default__g__RTI), + 2, + __ghdl_rti_arr_acc'address (work__repro__ARCH__default__g__BOD__RTIARRAY)}; + +PRIVATE CONSTANT work__repro__ARCH__default__g__RTISTR : SUBARRAY + __ghdl_chararray[2]; + +CONSTANT work__repro__ARCH__default__g__RTISTR := {103, 0}; + +CONSTANT work__repro__ARCH__default__g__RTI := { + {__ghdl_rtik'[__ghdl_rtik_for_generate], 2, 0, 0}, + __ghdl_char_ptr'address (work__repro__ARCH__default__g__RTISTR), + __ghdl_ptr'offsetof (work__repro__ARCH__default__INSTTYPE.g), 4104, + __ghdl_rti_access'unchecked_address (work__repro__ARCH__default__RTI), + __ghdl_index_type'sizeof (work__repro__ARCH__default__g__INSTTYPE), + __ghdl_rti_access'unchecked_address (work__repro__ARCH__default__g__BOD__RTI + )}; + +PRIVATE CONSTANT work__repro__ARCH__default__RTISTR : SUBARRAY __ghdl_chararray + [8]; + +CONSTANT work__repro__ARCH__default__RTISTR := {100, 101, 102, 97, 117, 108, + 116, 0}; + +PRIVATE CONSTANT work__repro__ARCH__default__RTIARRAY : SUBARRAY + __ghdl_rti_array[3]; + +CONSTANT work__repro__ARCH__default__RTIARRAY := + {__ghdl_rti_access'unchecked_address ( + work__repro__ARCH__default__g__ITERATOR__RTI), + __ghdl_rti_access'unchecked_address (work__repro__ARCH__default__g__RTI), + __ghdl_rti_access'[NULL]}; + +CONSTANT work__repro__ARCH__default__RTI := {{ + {__ghdl_rtik'[__ghdl_rtik_architecture], 1, 0, 0}, + __ghdl_char_ptr'address (work__repro__ARCH__default__RTISTR), + __ghdl_ptr'offsetof (work__repro__ARCH__default__INSTTYPE.ENTITY), 3598, + __ghdl_rti_access'unchecked_address (work__repro__RTI), 2, + __ghdl_rti_arr_acc'address (work__repro__ARCH__default__RTIARRAY)}, + __ghdl_char_ptr'address (_UI00000000)}; + + +PRIVATE PROCEDURE work__repro__ARCH__default__g__inst__COMP_ELAB ( + INSTANCE: work__repro__ARCH__default__g__INSTPTR) +DECLARE + EXTERNAL CONSTANT work__inc__LASTARCH__INSTSIZE : __ghdl_index_type; + EXTERNAL PROCEDURE work__inc__LASTARCH__DECL_ELAB ( + INSTANCE: work__inc__INSTPTR); + EXTERNAL PROCEDURE work__inc__LASTARCH__STMT_ELAB ( + INSTANCE: work__inc__INSTPTR); + EXTERNAL PROCEDURE work__inc__LASTARCH__DEFAULT_CONFIG ( + INSTANCE: work__inc__INSTPTR); + LOCAL VAR SUB_INSTANCE : work__inc__INSTPTR; + LOCAL VAR U0__SIZE : __ghdl_index_type; + LOCAL VAR U0__STB : std__standard__bit_vector__BOUND; +BEGIN + --# 18 + INSTANCE.ALL.inst.stmt := __ghdl_rti_access'unchecked_address ( + work__repro__ARCH__default__g__BOD__inst__RTI); + SUB_INSTANCE := work__inc__INSTPTR'conv (__ghdl_malloc0 ( + work__inc__LASTARCH__INSTSIZE)); + INSTANCE.ALL.inst.INSTANCE := __ghdl_entity_link_acc'address (SUB_INSTANCE. + ALL.RTI); + SUB_INSTANCE.ALL.RTI.parent := __ghdl_component_link_acc'address (INSTANCE. + ALL.inst); + work__inc__PKG_ELAB (); + DECLARE + LOCAL VAR T0_0 : std__standard__integer__BT; + BEGIN + T0_0 := std__standard__integer__BT'conv (INSTANCE.ALL.ix); + IF __ghdl_bool_type'(T0_0 < 0) THEN + __ghdl_bound_check_failed (__ghdl_char_ptr'address (_UI00000000), 19); + END IF; + SUB_INSTANCE.ALL.v := T0_0; + END; + DECLARE + LOCAL VAR T2_0 : std__standard__integer__BT__TRPTR; + BEGIN + T2_0 := std__standard__integer__BT__TRPTR'address (U0__STB.dim_1); + T2_0.ALL.left := std__standard__integer__BT'conv ( + std__standard__integer__BT'[0]); + T2_0.ALL.right := std__standard__integer__BT'conv (INSTANCE.ALL.ix); + T2_0.ALL.dir := __ghdl_dir_type'[dir_to]; + DECLARE + LOCAL VAR T4_0 : __ghdl_index_type; + BEGIN + DECLARE + LOCAL VAR T5_0 : __ghdl_i32; + BEGIN + T5_0 := (__ghdl_i32'conv (T2_0.ALL.right) -# __ghdl_i32'conv (T2_0.ALL. + left)); + IF __ghdl_bool_type'(T5_0 < 0) THEN + T4_0 := 0; + ELSE + T4_0 := (__ghdl_index_type'conv (T5_0) +# 1); + END IF; + END; + T2_0.ALL.length := T4_0; + END; + END; + U0__SIZE := (U0__STB.dim_1.length *# __ghdl_index_type'sizeof ( + std__standard__bit)); + DECLARE + LOCAL VAR T0_0 : std__standard__bit_vector__PTR; + BEGIN + T0_0 := std__standard__bit_vector__PTR'address (SUB_INSTANCE.ALL.vec); + T0_0.ALL.BOUNDS := std__standard__bit_vector__BOUNDP'address (U0__STB); + T0_0.ALL.BOUNDS := std__standard__bit_vector__BOUNDP'conv (__ghdl_malloc0 ( + __ghdl_index_type'sizeof (std__standard__bit_vector__BOUND))); + __ghdl_memcpy (__ghdl_ptr'conv (T0_0.ALL.BOUNDS), __ghdl_ptr'conv ( + std__standard__bit_vector__BOUNDP'address (U0__STB)), __ghdl_index_type + 'sizeof (std__standard__bit_vector__BOUND)); + T0_0.ALL.BASE := std__standard__bit_vector__BASEP'conv (__ghdl_malloc0 (( + T0_0.ALL.BOUNDS.ALL.dim_1.length *# __ghdl_index_type'sizeof ( + std__standard__bit)))); + DECLARE + LOCAL VAR T1_0 : std__standard__bit_vector__BASEP; + LOCAL VAR T1_1 : std__standard__bit_vector__BOUNDP; + LOCAL VAR T1_2 : __ghdl_index_type; + BEGIN + T1_0 := T0_0.ALL.BASE; + T1_1 := T0_0.ALL.BOUNDS; + DECLARE + LOCAL VAR T2_0 : std__standard__integer__BT__TRT; + BEGIN + T2_0.left := std__standard__integer__BT'conv ( + std__standard__integer__BT'[0]); + T2_0.right := std__standard__integer__BT'conv (INSTANCE.ALL.ix); + T2_0.dir := __ghdl_dir_type'[dir_to]; + DECLARE + LOCAL VAR T4_0 : __ghdl_index_type; + BEGIN + DECLARE + LOCAL VAR T5_0 : __ghdl_i32; + BEGIN + T5_0 := (__ghdl_i32'conv (T2_0.right) -# __ghdl_i32'conv (T2_0.left + )); + IF __ghdl_bool_type'(T5_0 < 0) THEN + T4_0 := 0; + ELSE + T4_0 := (__ghdl_index_type'conv (T5_0) +# 1); + END IF; + END; + T2_0.length := T4_0; + END; + IF __ghdl_bool_type'(T2_0.length /= T1_1.ALL.dim_1.length) THEN + __ghdl_bound_check_failed (__ghdl_char_ptr'address (_UI00000000), 20) + ; + END IF; + END; + T1_2 := 0; + DECLARE + LOCAL VAR T2_0 : __ghdl_index_type; + LOCAL VAR T2_1 : __ghdl_index_type; + LOCAL VAR T2_2 : __ghdl_index_type; + BEGIN + DECLARE + LOCAL VAR T3_0 : __ghdl_i32; + BEGIN + T3_0 := (__ghdl_i32'conv (INSTANCE.ALL.ix) -# __ghdl_i32'conv ( + std__standard__integer__BT'[0])); + IF __ghdl_bool_type'(T3_0 < 0) THEN + T2_0 := 0; + ELSE + T2_0 := (__ghdl_index_type'conv (T3_0) +# 1); + END IF; + END; + T2_1 := T2_0; + T2_2 := 0; + LOOP 1: + IF __ghdl_bool_type'(T2_2 = T2_1) THEN + EXIT LOOP 1; + END IF; + T1_0.ALL[T1_2] := std__standard__bit'[C_1]; + T1_2 := (T1_2 +# 1); + T2_2 := (T2_2 +# 1); + END LOOP; + END; + END; + END; + work__inc__LASTARCH__DECL_ELAB (SUB_INSTANCE); + work__inc__LASTARCH__STMT_ELAB (SUB_INSTANCE); + work__inc__LASTARCH__DEFAULT_CONFIG (work__inc__INSTPTR'conv (SUB_INSTANCE)); +END; + +PUBLIC PROCEDURE work__repro__ARCH__default__DECL_ELAB ( + INSTANCE: work__repro__INSTPTR) +DECLARE + LOCAL VAR ARCH_INSTANCE : work__repro__ARCH__default__INSTPTR; +BEGIN + ARCH_INSTANCE := work__repro__ARCH__default__INSTPTR'conv (INSTANCE); + INSTANCE.ALL.RTI.rti := __ghdl_rti_access'unchecked_address ( + work__repro__ARCH__default__RTI); + work__repro__DECL_ELAB (INSTANCE); + --# 14 + --# 14 + DECLARE + LOCAL VAR T0_0 : std__standard__integer__BT__TRPTR; + LOCAL VAR T0_1 : work__repro__ARCH__default__g__INSTARRPTR; + LOCAL VAR T0_2 : __ghdl_index_type; + LOCAL VAR T0_3 : work__repro__ARCH__default__g__INSTPTR; + LOCAL VAR T0_4 : std__standard__integer__BT; + BEGIN + T0_0 := std__standard__integer__BT__TRPTR'address ( + work__repro__ARCH__default__g__ix__OT__STR); + T0_1 := work__repro__ARCH__default__g__INSTARRPTR'conv (__ghdl_malloc0 (( + T0_0.ALL.length *# __ghdl_index_type'sizeof ( + work__repro__ARCH__default__g__INSTTYPE)))); + ARCH_INSTANCE.ALL.g := T0_1; + T0_2 := 0; + LOOP 1: + IF __ghdl_bool_type'(T0_2 = T0_0.ALL.length) THEN + EXIT LOOP 1; + END IF; + T0_3 := work__repro__ARCH__default__g__INSTPTR'address (T0_1.ALL[T0_2]); + T0_3.ALL.ORIGIN := ARCH_INSTANCE; + T0_3.ALL.CONFIGURED := __ghdl_bool_type'[false]; + IF __ghdl_bool_type'(T0_0.ALL.dir = __ghdl_dir_type'[dir_to]) THEN + T0_4 := T0_0.ALL.left; + ELSE + T0_4 := T0_0.ALL.right; + END IF; + T0_3.ALL.ix := (T0_4 +# std__standard__integer__BT'conv (T0_2)); + --# 17 + work__repro__ARCH__default__g__inst__COMP_ELAB (T0_3); + T0_2 := (T0_2 +# 1); + END LOOP; + END; +END; + +PUBLIC PROCEDURE work__repro__ARCH__default__STMT_ELAB ( + INSTANCE: work__repro__INSTPTR) +DECLARE + LOCAL VAR ARCH_INSTANCE : work__repro__ARCH__default__INSTPTR; +BEGIN + ARCH_INSTANCE := work__repro__ARCH__default__INSTPTR'conv (INSTANCE); + work__repro__STMT_ELAB (INSTANCE); + --# 14 + DECLARE + LOCAL VAR T0_0 : work__repro__ARCH__default__g__INSTARRPTR; + LOCAL VAR T0_1 : __ghdl_index_type; + LOCAL VAR T0_2 : __ghdl_index_type; + LOCAL VAR T0_3 : work__repro__ARCH__default__g__INSTPTR; + BEGIN + T0_0 := ARCH_INSTANCE.ALL.g; + T0_1 := work__repro__ARCH__default__g__ix__OT__STR.length; + T0_2 := 0; + LOOP 1: + IF __ghdl_bool_type'(T0_2 = T0_1) THEN + EXIT LOOP 1; + END IF; + T0_3 := work__repro__ARCH__default__g__INSTPTR'address (T0_0.ALL[T0_2]); + T0_2 := (T0_2 +# 1); + END LOOP; + END; +END; + diff --git a/testsuite/gna/issue626/repro.vhdl b/testsuite/gna/issue626/repro.vhdl new file mode 100644 index 000000000..c58885b20 --- /dev/null +++ b/testsuite/gna/issue626/repro.vhdl @@ -0,0 +1,22 @@ +entity inc is + generic (v : natural; vec : bit_vector); +end entity; + +architecture default of inc is +begin + assert vec'left = 0 severity failure; + assert vec'right = v severity failure; + assert false report integer'image(vec'right); +end architecture; + +entity repro is end entity; + +architecture default of repro is +begin + g : for ix in 0 to 4 generate + begin + inst : entity work.inc + generic map (v => ix, + vec => (0 to ix => '1')); + end generate; +end architecture; diff --git a/testsuite/gna/issue626/testsuite.sh b/testsuite/gna/issue626/testsuite.sh new file mode 100755 index 000000000..040ac7205 --- /dev/null +++ b/testsuite/gna/issue626/testsuite.sh @@ -0,0 +1,12 @@ +#! /bin/sh + +. ../../testenv.sh + +analyze repro.vhdl +elab_simulate repro +analyze top.vhdl +elab_simulate top_ent + +clean + +echo "Test successful" diff --git a/testsuite/gna/issue626/top.on b/testsuite/gna/issue626/top.on new file mode 100644 index 000000000..be71e3424 --- /dev/null +++ b/testsuite/gna/issue626/top.on @@ -0,0 +1,2845 @@ +-- internal declarations, part 1 + +TYPE __ghdl_size_type IS UNSIGNED (32); + +TYPE __ghdl_index_type IS UNSIGNED (32); + +TYPE __ghdl_i32 IS SIGNED (32); + +TYPE __ghdl_real IS FLOAT; + +TYPE __ghdl_i64 IS SIGNED (64); + +TYPE __ghdl_file_index IS UNSIGNED (32); + +TYPE __ghdl_file_index_ptr IS ACCESS __ghdl_file_index; + +TYPE __ghdl_char IS UNSIGNED (8); + +TYPE __ghdl_chararray IS ARRAY [__ghdl_index_type] OF __ghdl_char; + +TYPE __ghdl_char_ptr IS ACCESS __ghdl_chararray; + +TYPE __ghdl_char_ptr_array IS ARRAY [__ghdl_index_type] OF __ghdl_char_ptr; + +TYPE __ghdl_char_ptr_array_ptr IS ACCESS __ghdl_char_ptr_array; + +TYPE __ghdl_ptr IS ACCESS __ghdl_char; + +TYPE __ghdl_str_len IS RECORD + len: __ghdl_index_type; + str: __ghdl_char_ptr; +END RECORD; + +TYPE __ghdl_str_len_array IS ARRAY [__ghdl_index_type] OF __ghdl_str_len; + +TYPE __ghdl_str_len_ptr IS ACCESS __ghdl_str_len; + +TYPE __ghdl_bool_type IS BOOLEAN {false, true}; + +TYPE __ghdl_bool_array_type IS ARRAY [__ghdl_index_type] OF __ghdl_bool_type; + +TYPE __ghdl_bool_array_ptr IS ACCESS __ghdl_bool_array_type; + +TYPE __ghdl_sizes_type IS RECORD + size_val: __ghdl_index_type; + size_sig: __ghdl_index_type; +END RECORD; + +TYPE __ghdl_compare_type IS ENUM {lt, eq, gt}; + +TYPE __ghdl_location IS RECORD + filename: __ghdl_char_ptr; + line: __ghdl_i32; + col: __ghdl_i32; +END RECORD; + +TYPE __ghdl_location_ptr IS ACCESS __ghdl_location; + +TYPE __ghdl_dir_type IS ENUM {dir_to, dir_downto}; + +TYPE __ghdl_signal IS RECORD; + +TYPE __ghdl_signal_ptr IS ACCESS __ghdl_signal; + +EXTERNAL FUNCTION __ghdl_alloc ( + size: __ghdl_size_type) + RETURN __ghdl_ptr; + +EXTERNAL PROCEDURE __ghdl_program_error ( + filename: __ghdl_char_ptr; + line: __ghdl_i32; + code: __ghdl_index_type); + +EXTERNAL PROCEDURE __ghdl_bound_check_failed ( + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_direction_check_failed ( + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL FUNCTION __ghdl_stack2_allocate ( + size: __ghdl_index_type) + RETURN __ghdl_ptr; + +EXTERNAL FUNCTION __ghdl_stack2_mark ( + ) + RETURN __ghdl_ptr; + +EXTERNAL PROCEDURE __ghdl_stack2_release ( + mark: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_memcpy ( + dest: __ghdl_ptr; + src: __ghdl_ptr; + length: __ghdl_index_type); + +EXTERNAL PROCEDURE __ghdl_deallocate ( + OBJ: __ghdl_ptr); + +EXTERNAL FUNCTION __ghdl_malloc ( + length: __ghdl_index_type) + RETURN __ghdl_ptr; + +EXTERNAL FUNCTION __ghdl_malloc0 ( + length: __ghdl_index_type) + RETURN __ghdl_ptr; + +EXTERNAL FUNCTION __ghdl_text_file_elaborate ( + ) + RETURN __ghdl_file_index; + +EXTERNAL FUNCTION __ghdl_file_elaborate ( + NAME: __ghdl_char_ptr) + RETURN __ghdl_file_index; + +EXTERNAL PROCEDURE __ghdl_file_finalize ( + file: __ghdl_file_index); + +EXTERNAL PROCEDURE __ghdl_text_file_finalize ( + file: __ghdl_file_index); + +EXTERNAL PROCEDURE __ghdl_protected_enter ( + OBJ: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_protected_leave ( + OBJ: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_protected_init ( + OBJ: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_protected_fini ( + OBJ: __ghdl_ptr); + +TYPE __ghdl_rtik IS ENUM {__ghdl_rtik_top, __ghdl_rtik_library, + __ghdl_rtik_package, __ghdl_rtik_package_body, __ghdl_rtik_entity, + __ghdl_rtik_architecture, __ghdl_rtik_process, __ghdl_rtik_block, + __ghdl_rtik_if_generate, __ghdl_rtik_case_generate, + __ghdl_rtik_for_generate, __ghdl_rtik_generate_body, __ghdl_rtik_instance, + __ghdl_rtik_constant, __ghdl_rtik_iterator, __ghdl_rtik_variable, + __ghdl_rtik_signal, __ghdl_rtik_file, __ghdl_rtik_port, + __ghdl_rtik_generic, __ghdl_rtik_alias, __ghdl_rtik_guard, + __ghdl_rtik_component, __ghdl_rtik_attribute, __ghdl_rtik_type_b1, + __ghdl_rtik_type_e8, __ghdl_rtik_type_e32, __ghdl_rtik_type_i32, + __ghdl_rtik_type_i64, __ghdl_rtik_type_f64, __ghdl_rtik_type_p32, + __ghdl_rtik_type_p64, __ghdl_rtik_type_access, __ghdl_rtik_type_array, + __ghdl_rtik_type_record, __ghdl_rtik_type_unbounded_record, + __ghdl_rtik_type_file, __ghdl_rtik_subtype_scalar, + __ghdl_rtik_subtype_array, __ghdl_rtik_subtype_unconstrained_array, + __ghdl_rtik_subtype_record, __ghdl_rtik_subtype_unbounded_record, + __ghdl_rtik_subtype_access, __ghdl_rtik_type_protected, + __ghdl_rtik_element, __ghdl_rtik_unit64, __ghdl_rtik_unitptr, + __ghdl_rtik_attribute_transaction, __ghdl_rtik_attribute_quiet, + __ghdl_rtik_attribute_stable, __ghdl_rtik_psl_assert, + __ghdl_rtik_psl_cover, __ghdl_rtik_psl_endpoint, __ghdl_rtik_error}; + +TYPE __ghdl_rti_depth IS UNSIGNED (8); + +TYPE __ghdl_rti_u8 IS UNSIGNED (8); + +TYPE __ghdl_rti_common IS RECORD + kind: __ghdl_rtik; + depth: __ghdl_rti_depth; + mode: __ghdl_rti_u8; + max_depth: __ghdl_rti_depth; +END RECORD; + +TYPE __ghdl_rti_access IS ACCESS __ghdl_rti_common; + +TYPE __ghdl_rti_array IS ARRAY [__ghdl_index_type] OF __ghdl_rti_access; + +TYPE __ghdl_rti_arr_acc IS ACCESS __ghdl_rti_array; + +TYPE __ghdl_component_link_type IS RECORD; + +TYPE __ghdl_component_link_acc IS ACCESS __ghdl_component_link_type; + +TYPE __ghdl_entity_link_type IS RECORD + rti: __ghdl_rti_access; + parent: __ghdl_component_link_acc; +END RECORD; + +TYPE __ghdl_entity_link_acc IS ACCESS __ghdl_entity_link_type; + +TYPE __ghdl_component_link_type IS RECORD + INSTANCE: __ghdl_entity_link_acc; + stmt: __ghdl_rti_access; +END RECORD; + +TYPE __ghdl_rtin_block IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + loc: __ghdl_ptr; + linecol: __ghdl_index_type; + parent: __ghdl_rti_access; + nbr_child: __ghdl_index_type; + children: __ghdl_rti_arr_acc; +END RECORD; + +TYPE __ghdl_rtin_generate IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + loc: __ghdl_ptr; + linecol: __ghdl_index_type; + parent: __ghdl_rti_access; + size: __ghdl_index_type; + child: __ghdl_rti_access; +END RECORD; + +TYPE __ghdl_rtin_block_file IS RECORD + block: __ghdl_rtin_block; + filename: __ghdl_char_ptr; +END RECORD; + +TYPE __ghdl_rtin_type_scalar IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; +END RECORD; + +TYPE __ghdl_rtin_type_enum IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + nbr: __ghdl_index_type; + lits: __ghdl_char_ptr_array_ptr; +END RECORD; + +TYPE __ghdl_rtin_subtype_scalar IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + base: __ghdl_rti_access; + range: __ghdl_ptr; +END RECORD; + +TYPE __ghdl_rtin_unit64 IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + val: __ghdl_i64; +END RECORD; + +TYPE __ghdl_rtin_unitptr IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + addr: __ghdl_ptr; +END RECORD; + +TYPE __ghdl_rtin_type_physical IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + nbr: __ghdl_index_type; + units: __ghdl_rti_arr_acc; +END RECORD; + +TYPE __ghdl_rtin_type_fileacc IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + base: __ghdl_rti_access; +END RECORD; + +TYPE __ghdl_rtin_type_array IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + element: __ghdl_rti_access; + nbr_dim: __ghdl_index_type; + indexes: __ghdl_rti_arr_acc; +END RECORD; + +TYPE __ghdl_rtin_subtype_composite IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + basetype: __ghdl_rti_access; + bounds: __ghdl_ptr; + val_size: __ghdl_ptr; + sig_size: __ghdl_ptr; +END RECORD; + +TYPE __ghdl_rtin_type_record IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + nbrel: __ghdl_index_type; + elements: __ghdl_rti_arr_acc; +END RECORD; + +TYPE __ghdl_rtin_element IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + eltype: __ghdl_rti_access; + val_off: __ghdl_index_type; + sig_off: __ghdl_index_type; +END RECORD; + +TYPE __ghdl_rtin_object IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + loc: __ghdl_ptr; + obj_type: __ghdl_rti_access; + linecol: __ghdl_index_type; +END RECORD; + +TYPE __ghdl_rtin_instance IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + linecol: __ghdl_index_type; + loc: __ghdl_ptr; + parent: __ghdl_rti_access; + instance: __ghdl_rti_access; +END RECORD; + +TYPE __ghdl_rtin_component IS RECORD + common: __ghdl_rti_common; + name: __ghdl_char_ptr; + nbr_child: __ghdl_index_type; + children: __ghdl_rti_arr_acc; +END RECORD; + +EXTERNAL PROCEDURE __ghdl_signal_name_rti ( + OBJ: __ghdl_rti_access; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_process_register ( + this: __ghdl_ptr; + proc: __ghdl_ptr; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_sensitized_process_register ( + this: __ghdl_ptr; + proc: __ghdl_ptr; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_postponed_process_register ( + this: __ghdl_ptr; + proc: __ghdl_ptr; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_postponed_sensitized_process_register ( + this: __ghdl_ptr; + proc: __ghdl_ptr; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_finalize_register ( + this: __ghdl_ptr; + proc: __ghdl_ptr); + +-- package std.standard + +TYPE std__standard__boolean IS BOOLEAN {false, true}; + +TYPE std__standard__boolean__PTR IS ACCESS std__standard__boolean; + +TYPE std__standard__boolean__TRT IS RECORD + left: std__standard__boolean; + right: std__standard__boolean; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__boolean__TRPTR IS ACCESS std__standard__boolean__TRT; + +TYPE std__standard__BOOLEAN_ARRAY IS ARRAY [__ghdl_index_type] OF + std__standard__boolean; + +TYPE std__standard__bit IS BOOLEAN {C_0, C_1}; + +TYPE std__standard__bit__PTR IS ACCESS std__standard__bit; + +TYPE std__standard__bit__TRT IS RECORD + left: std__standard__bit; + right: std__standard__bit; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__bit__TRPTR IS ACCESS std__standard__bit__TRT; + +TYPE std__standard__character IS ENUM {nul, soh, stx, etx, eot, enq, ack, bel, + bs, ht, lf, vt, ff, cr, so, si, dle, dc1, dc2, dc3, dc4, nak, syn, etb, + can, em, sub, esc, fsp, gsp, rsp, usp, C20, C21, C22, C23, C24, C25, C26, + C27, C28, C29, C2a, C2b, C2c, C2d, C2e, C2f, C_0, C_1, C_2, C_3, C_4, C_5, + C_6, C_7, C_8, C_9, C3a, C3b, C3c, C3d, C3e, C3f, C40, C_A, C_B, C_C, C_D, + C_E, C_F, C_G, C_H, C_I, C_J, C_K, C_L, C_M, C_N, C_O, C_P, C_Q, C_R, C_S, + C_T, C_U, C_V, C_W, C_X, C_Y, C_Z, C5b, C5c, C5d, C5e, C5f, C60, C_a, C_b, + C_c, C_d, C_e, C_f, C_g, C_h, C_i, C_j, C_k, C_l, C_m, C_n, C_o, C_p, C_q, + C_r, C_s, C_t, C_u, C_v, C_w, C_x, C_y, C_z, C7b, C7c, C7d, C7e, del, c128, + c129, c130, c131, c132, c133, c134, c135, c136, c137, c138, c139, c140, + c141, c142, c143, c144, c145, c146, c147, c148, c149, c150, c151, c152, + c153, c154, c155, c156, c157, c158, c159, Ca0, Ca1, Ca2, Ca3, Ca4, Ca5, + Ca6, Ca7, Ca8, Ca9, Caa, Cab, Cac, Cad, Cae, Caf, Cb0, Cb1, Cb2, Cb3, Cb4, + Cb5, Cb6, Cb7, Cb8, Cb9, Cba, Cbb, Cbc, Cbd, Cbe, Cbf, Cc0, Cc1, Cc2, Cc3, + Cc4, Cc5, Cc6, Cc7, Cc8, Cc9, Cca, Ccb, Ccc, Ccd, Cce, Ccf, Cd0, Cd1, Cd2, + Cd3, Cd4, Cd5, Cd6, Cd7, Cd8, Cd9, Cda, Cdb, Cdc, Cdd, Cde, Cdf, Ce0, Ce1, + Ce2, Ce3, Ce4, Ce5, Ce6, Ce7, Ce8, Ce9, Cea, Ceb, Cec, Ced, Cee, Cef, Cf0, + Cf1, Cf2, Cf3, Cf4, Cf5, Cf6, Cf7, Cf8, Cf9, Cfa, Cfb, Cfc, Cfd, Cfe, Cff}; + +TYPE std__standard__character__PTR IS ACCESS std__standard__character; + +TYPE std__standard__character__TRT IS RECORD + left: std__standard__character; + right: std__standard__character; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__character__TRPTR IS ACCESS std__standard__character__TRT; + +EXTERNAL CONSTANT std__standard__character__BTR : std__standard__character__TRT + ; + +TYPE std__standard__severity_level IS ENUM {note, warning, error, failure}; + +TYPE std__standard__severity_level__PTR IS ACCESS std__standard__severity_level + ; + +TYPE std__standard__severity_level__TRT IS RECORD + left: std__standard__severity_level; + right: std__standard__severity_level; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__severity_level__TRPTR IS ACCESS + std__standard__severity_level__TRT; + +EXTERNAL CONSTANT std__standard__severity_level__BTR : + std__standard__severity_level__TRT; + +TYPE std__standard__UNIVERSAL_INTEGER__BT IS SIGNED (64); + +TYPE std__standard__UNIVERSAL_INTEGER__BT__PTR IS ACCESS + std__standard__UNIVERSAL_INTEGER__BT; + +TYPE std__standard__UNIVERSAL_INTEGER__BT__TRT IS RECORD + left: std__standard__UNIVERSAL_INTEGER__BT; + right: std__standard__UNIVERSAL_INTEGER__BT; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__UNIVERSAL_INTEGER__BT__TRPTR IS ACCESS + std__standard__UNIVERSAL_INTEGER__BT__TRT; + +EXTERNAL CONSTANT std__standard__UNIVERSAL_INTEGER__STR : + std__standard__UNIVERSAL_INTEGER__BT__TRT; + +TYPE std__standard__UNIVERSAL_REAL__BT IS FLOAT; + +TYPE std__standard__UNIVERSAL_REAL__BT__PTR IS ACCESS + std__standard__UNIVERSAL_REAL__BT; + +TYPE std__standard__UNIVERSAL_REAL__BT__TRT IS RECORD + left: std__standard__UNIVERSAL_REAL__BT; + right: std__standard__UNIVERSAL_REAL__BT; + dir: __ghdl_dir_type; +END RECORD; + +TYPE std__standard__UNIVERSAL_REAL__BT__TRPTR IS ACCESS + std__standard__UNIVERSAL_REAL__BT__TRT; + +EXTERNAL CONSTANT std__standard__UNIVERSAL_REAL__STR : + std__standard__UNIVERSAL_REAL__BT__TRT; + +TYPE std__standard__integer__BT IS SIGNED (32); + +TYPE std__standard__integer__BT__PTR IS ACCESS std__standard__integer__BT; + +TYPE std__standard__integer__BT__TRT IS RECORD + left: std__standard__integer__BT; + right: std__standard__integer__BT; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__integer__BT__TRPTR IS ACCESS + std__standard__integer__BT__TRT; + +EXTERNAL CONSTANT std__standard__integer__STR : std__standard__integer__BT__TRT + ; + +TYPE std__standard__real__BT IS FLOAT; + +TYPE std__standard__real__BT__PTR IS ACCESS std__standard__real__BT; + +TYPE std__standard__real__BT__TRT IS RECORD + left: std__standard__real__BT; + right: std__standard__real__BT; + dir: __ghdl_dir_type; +END RECORD; + +TYPE std__standard__real__BT__TRPTR IS ACCESS std__standard__real__BT__TRT; + +EXTERNAL CONSTANT std__standard__real__STR : std__standard__real__BT__TRT; + +TYPE std__standard__time__BT IS SIGNED (64); + +TYPE std__standard__time__BT__PTR IS ACCESS std__standard__time__BT; + +TYPE std__standard__time__BT__TRT IS RECORD + left: std__standard__time__BT; + right: std__standard__time__BT; + dir: __ghdl_dir_type; +END RECORD; + +TYPE std__standard__time__BT__TRPTR IS ACCESS std__standard__time__BT__TRT; + +EXTERNAL CONSTANT std__standard__time__STR : std__standard__time__BT__TRT; + +EXTERNAL CONSTANT std__standard__delay_length__STR : + std__standard__time__BT__TRT; + +EXTERNAL CONSTANT std__standard__natural__STR : std__standard__integer__BT__TRT + ; + +EXTERNAL CONSTANT std__standard__positive__STR : + std__standard__integer__BT__TRT; + +TYPE std__standard__string__BASE IS ARRAY [__ghdl_index_type] OF + std__standard__character; + +TYPE std__standard__string__BASEP IS ACCESS std__standard__string__BASE; + +TYPE std__standard__string__SIGBASE IS ARRAY [__ghdl_index_type] OF + __ghdl_signal_ptr; + +TYPE std__standard__string__SIGBASEP IS ACCESS std__standard__string__SIGBASE; + +TYPE std__standard__string__BOUND IS RECORD + dim_1: std__standard__integer__BT__TRT; +END RECORD; + +TYPE std__standard__string__BOUNDP IS ACCESS std__standard__string__BOUND; + +TYPE std__standard__string IS RECORD + BASE: std__standard__string__BASEP; + BOUNDS: std__standard__string__BOUNDP; +END RECORD; + +TYPE std__standard__string__PTR IS ACCESS std__standard__string; + +TYPE std__standard__string__SIG IS RECORD + BASE: std__standard__string__SIGBASEP; + BOUNDS: std__standard__string__BOUNDP; +END RECORD; + +TYPE std__standard__string__SIGPTR IS ACCESS std__standard__string__SIG; + +EXTERNAL FUNCTION std__standard__string_EQ ( + left: std__standard__string__PTR; + right: std__standard__string__PTR) + RETURN std__standard__boolean; + +EXTERNAL FUNCTION std__standard__string_CMP ( + left: std__standard__string__PTR; + right: std__standard__string__PTR) + RETURN __ghdl_compare_type; + +TYPE std__standard__bit_vector__BASE IS ARRAY [__ghdl_index_type] OF + std__standard__bit; + +TYPE std__standard__bit_vector__BASEP IS ACCESS std__standard__bit_vector__BASE + ; + +TYPE std__standard__bit_vector__SIGBASE IS ARRAY [__ghdl_index_type] OF + __ghdl_signal_ptr; + +TYPE std__standard__bit_vector__SIGBASEP IS ACCESS + std__standard__bit_vector__SIGBASE; + +TYPE std__standard__bit_vector__BOUND IS RECORD + dim_1: std__standard__integer__BT__TRT; +END RECORD; + +TYPE std__standard__bit_vector__BOUNDP IS ACCESS + std__standard__bit_vector__BOUND; + +TYPE std__standard__bit_vector IS RECORD + BASE: std__standard__bit_vector__BASEP; + BOUNDS: std__standard__bit_vector__BOUNDP; +END RECORD; + +TYPE std__standard__bit_vector__PTR IS ACCESS std__standard__bit_vector; + +TYPE std__standard__bit_vector__SIG IS RECORD + BASE: std__standard__bit_vector__SIGBASEP; + BOUNDS: std__standard__bit_vector__BOUNDP; +END RECORD; + +TYPE std__standard__bit_vector__SIGPTR IS ACCESS std__standard__bit_vector__SIG + ; + +EXTERNAL FUNCTION std__standard__bit_vector_EQ ( + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR) + RETURN std__standard__boolean; + +EXTERNAL FUNCTION std__standard__bit_vector_CMP ( + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR) + RETURN __ghdl_compare_type; + +EXTERNAL PROCEDURE std__standard__bit_vector_NOT ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_AND ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_OR ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_NAND ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_NOR ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_XOR ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_XNOR ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE std__standard__bit_vector_SHL ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__integer__BT); + +EXTERNAL PROCEDURE std__standard__bit_vector_SHA ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__integer__BT); + +EXTERNAL PROCEDURE std__standard__bit_vector_ROT ( + res: std__standard__bit_vector__PTR; + left: std__standard__bit_vector__PTR; + right: std__standard__integer__BT); + +TYPE std__standard__file_open_kind IS ENUM {read_mode, write_mode, + append_mode}; + +TYPE std__standard__file_open_kind__PTR IS ACCESS std__standard__file_open_kind + ; + +TYPE std__standard__file_open_kind__TRT IS RECORD + left: std__standard__file_open_kind; + right: std__standard__file_open_kind; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__file_open_kind__TRPTR IS ACCESS + std__standard__file_open_kind__TRT; + +EXTERNAL CONSTANT std__standard__file_open_kind__BTR : + std__standard__file_open_kind__TRT; + +TYPE std__standard__file_open_status IS ENUM {open_ok, status_error, + name_error, mode_error}; + +TYPE std__standard__file_open_status__PTR IS ACCESS + std__standard__file_open_status; + +TYPE std__standard__file_open_status__TRT IS RECORD + left: std__standard__file_open_status; + right: std__standard__file_open_status; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__file_open_status__TRPTR IS ACCESS + std__standard__file_open_status__TRT; + +EXTERNAL CONSTANT std__standard__file_open_status__BTR : + std__standard__file_open_status__TRT; + +TYPE std__standard__CONVERTIBLE_INTEGER__BT IS SIGNED (64); + +TYPE std__standard__CONVERTIBLE_INTEGER__BT__PTR IS ACCESS + std__standard__CONVERTIBLE_INTEGER__BT; + +TYPE std__standard__CONVERTIBLE_INTEGER__BT__TRT IS RECORD + left: std__standard__CONVERTIBLE_INTEGER__BT; + right: std__standard__CONVERTIBLE_INTEGER__BT; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE std__standard__CONVERTIBLE_INTEGER__BT__TRPTR IS ACCESS + std__standard__CONVERTIBLE_INTEGER__BT__TRT; + +TYPE std__standard__CONVERTIBLE_REAL__BT IS FLOAT; + +TYPE std__standard__CONVERTIBLE_REAL__BT__PTR IS ACCESS + std__standard__CONVERTIBLE_REAL__BT; + +TYPE std__standard__CONVERTIBLE_REAL__BT__TRT IS RECORD + left: std__standard__CONVERTIBLE_REAL__BT; + right: std__standard__CONVERTIBLE_REAL__BT; + dir: __ghdl_dir_type; +END RECORD; + +TYPE std__standard__CONVERTIBLE_REAL__BT__TRPTR IS ACCESS + std__standard__CONVERTIBLE_REAL__BT__TRT; + +EXTERNAL CONSTANT std__standard__RTI : __ghdl_rtin_block; + +EXTERNAL CONSTANT std__standard__boolean__RTI : __ghdl_rtin_type_enum; + +EXTERNAL CONSTANT std__standard__bit__RTI : __ghdl_rtin_type_enum; + +EXTERNAL CONSTANT std__standard__character__RTI : __ghdl_rtin_type_enum; + +EXTERNAL CONSTANT std__standard__severity_level__RTI : __ghdl_rtin_type_enum; + +EXTERNAL CONSTANT std__standard__UNIVERSAL_INTEGER__BT__RTI : + __ghdl_rtin_type_scalar; + +EXTERNAL CONSTANT std__standard__UNIVERSAL_INTEGER__RTI : + __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__UNIVERSAL_REAL__BT__RTI : + __ghdl_rtin_type_scalar; + +EXTERNAL CONSTANT std__standard__UNIVERSAL_REAL__RTI : + __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__integer__BT__RTI : __ghdl_rtin_type_scalar; + +EXTERNAL CONSTANT std__standard__integer__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__real__BT__RTI : __ghdl_rtin_type_scalar; + +EXTERNAL CONSTANT std__standard__real__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__time__BT__RTI : __ghdl_rtin_type_physical; + +EXTERNAL CONSTANT std__standard__time__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__delay_length__RTI : __ghdl_rtin_subtype_scalar + ; + +EXTERNAL CONSTANT std__standard__natural__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__positive__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT std__standard__string__RTI : __ghdl_rtin_type_array; + +EXTERNAL CONSTANT std__standard__bit_vector__RTI : __ghdl_rtin_type_array; + +EXTERNAL CONSTANT std__standard__file_open_kind__RTI : __ghdl_rtin_type_enum; + +EXTERNAL CONSTANT std__standard__file_open_status__RTI : __ghdl_rtin_type_enum; + +EXTERNAL CONSTANT std__standard__foreign__RTI : __ghdl_rtin_object; + +TYPE __ghdl_std_ulogic_boolean_array_type IS SUBARRAY + std__standard__BOOLEAN_ARRAY[9]; + +EXTERNAL CONSTANT __ghdl_std_ulogic_to_boolean_array : + __ghdl_std_ulogic_boolean_array_type; + +-- internal declarations, part 2 + +EXTERNAL VAR __ghdl_now : std__standard__time__BT; + +EXTERNAL PROCEDURE __ghdl_assert_failed ( + msg: std__standard__string__PTR; + severity: std__standard__severity_level; + location: __ghdl_location_ptr); + +EXTERNAL PROCEDURE __ghdl_ieee_assert_failed ( + msg: std__standard__string__PTR; + severity: std__standard__severity_level; + location: __ghdl_location_ptr); + +EXTERNAL PROCEDURE __ghdl_psl_assert_failed ( + msg: std__standard__string__PTR; + severity: std__standard__severity_level; + location: __ghdl_location_ptr); + +EXTERNAL PROCEDURE __ghdl_psl_cover ( + msg: std__standard__string__PTR; + severity: std__standard__severity_level; + location: __ghdl_location_ptr); + +EXTERNAL PROCEDURE __ghdl_psl_cover_failed ( + msg: std__standard__string__PTR; + severity: std__standard__severity_level; + location: __ghdl_location_ptr); + +EXTERNAL PROCEDURE __ghdl_report ( + msg: std__standard__string__PTR; + severity: std__standard__severity_level; + location: __ghdl_location_ptr); + +EXTERNAL PROCEDURE __ghdl_text_write ( + file: __ghdl_file_index; + str: std__standard__string__PTR); + +EXTERNAL FUNCTION __ghdl_text_read_length ( + file: __ghdl_file_index; + str: std__standard__string__PTR) + RETURN std__standard__integer__BT; + +EXTERNAL PROCEDURE __ghdl_write_scalar ( + file: __ghdl_file_index; + ptr: __ghdl_ptr; + length: __ghdl_index_type); + +EXTERNAL PROCEDURE __ghdl_read_scalar ( + file: __ghdl_file_index; + ptr: __ghdl_ptr; + length: __ghdl_index_type); + +EXTERNAL FUNCTION __ghdl_real_exp ( + left: std__standard__real__BT; + right: std__standard__integer__BT) + RETURN std__standard__real__BT; + +EXTERNAL FUNCTION __ghdl_integer_exp ( + left: std__standard__integer__BT; + right: std__standard__integer__BT) + RETURN std__standard__integer__BT; + +EXTERNAL PROCEDURE __ghdl_image_b1 ( + res: std__standard__string__PTR; + val: __ghdl_bool_type; + RTI: __ghdl_rti_access); + +EXTERNAL FUNCTION __ghdl_value_b1 ( + val: std__standard__string__PTR; + rti: __ghdl_rti_access) + RETURN __ghdl_bool_type; + +EXTERNAL PROCEDURE __ghdl_image_e8 ( + res: std__standard__string__PTR; + val: __ghdl_i32; + RTI: __ghdl_rti_access); + +EXTERNAL FUNCTION __ghdl_value_e8 ( + val: std__standard__string__PTR; + rti: __ghdl_rti_access) + RETURN __ghdl_i32; + +EXTERNAL PROCEDURE __ghdl_image_e32 ( + res: std__standard__string__PTR; + val: __ghdl_i32; + RTI: __ghdl_rti_access); + +EXTERNAL FUNCTION __ghdl_value_e32 ( + val: std__standard__string__PTR; + rti: __ghdl_rti_access) + RETURN __ghdl_i32; + +EXTERNAL PROCEDURE __ghdl_image_i32 ( + res: std__standard__string__PTR; + val: __ghdl_i32); + +EXTERNAL FUNCTION __ghdl_value_i32 ( + val: std__standard__string__PTR) + RETURN __ghdl_i32; + +EXTERNAL PROCEDURE __ghdl_image_i64 ( + res: std__standard__string__PTR; + val: __ghdl_i64); + +EXTERNAL FUNCTION __ghdl_value_i64 ( + val: std__standard__string__PTR) + RETURN __ghdl_i64; + +EXTERNAL PROCEDURE __ghdl_image_p32 ( + res: std__standard__string__PTR; + val: __ghdl_i32; + RTI: __ghdl_rti_access); + +EXTERNAL FUNCTION __ghdl_value_p32 ( + val: std__standard__string__PTR; + rti: __ghdl_rti_access) + RETURN __ghdl_i32; + +EXTERNAL PROCEDURE __ghdl_image_p64 ( + res: std__standard__string__PTR; + val: __ghdl_i64; + RTI: __ghdl_rti_access); + +EXTERNAL FUNCTION __ghdl_value_p64 ( + val: std__standard__string__PTR; + rti: __ghdl_rti_access) + RETURN __ghdl_i64; + +EXTERNAL PROCEDURE __ghdl_image_f64 ( + res: std__standard__string__PTR; + val: __ghdl_real); + +EXTERNAL FUNCTION __ghdl_value_f64 ( + val: std__standard__string__PTR) + RETURN __ghdl_real; + +EXTERNAL PROCEDURE __ghdl_text_file_open ( + file: __ghdl_file_index; + mode: __ghdl_i32; + str: std__standard__string__PTR); + +EXTERNAL PROCEDURE __ghdl_file_open ( + file: __ghdl_file_index; + mode: __ghdl_i32; + str: std__standard__string__PTR); + +EXTERNAL FUNCTION __ghdl_text_file_open_status ( + file: __ghdl_file_index; + mode: __ghdl_i32; + str: std__standard__string__PTR) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_file_open_status ( + file: __ghdl_file_index; + mode: __ghdl_i32; + str: std__standard__string__PTR) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_file_endfile ( + file: __ghdl_file_index) + RETURN std__standard__boolean; + +EXTERNAL PROCEDURE __ghdl_text_file_close ( + file: __ghdl_file_index); + +EXTERNAL PROCEDURE __ghdl_file_close ( + file: __ghdl_file_index); + +EXTERNAL PROCEDURE __ghdl_file_flush ( + file: __ghdl_file_index); + +EXTERNAL PROCEDURE __ghdl_signal_create_resolution ( + func: __ghdl_ptr; + INSTANCE: __ghdl_ptr; + sig: __ghdl_ptr; + nbr_sig: __ghdl_index_type); + +TYPE __ghdl_scalar_bytes IS SUBARRAY __ghdl_chararray[8]; + +TYPE __ghdl_signal IS RECORD + driving_value: __ghdl_scalar_bytes; + last_value: __ghdl_scalar_bytes; + last_event: std__standard__time__BT; + last_active: std__standard__time__BT; + value: __ghdl_ptr; + event: std__standard__boolean; + active: std__standard__boolean; + has_active: __ghdl_bool_type; +END RECORD; + +TYPE __ghdl_signal_ptr_ptr IS ACCESS __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_merge_rti ( + sig: __ghdl_signal_ptr; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_signal_add_source ( + targ: __ghdl_signal_ptr; + src: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_signal_effective_value ( + targ: __ghdl_signal_ptr; + src: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_signal_set_disconnect ( + sig: __ghdl_signal_ptr; + time: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_disconnect ( + sig: __ghdl_signal_ptr); + +EXTERNAL FUNCTION __ghdl_signal_get_nbr_drivers ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_index_type; + +EXTERNAL FUNCTION __ghdl_signal_get_nbr_ports ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_index_type; + +EXTERNAL FUNCTION __ghdl_signal_read_driver ( + sig: __ghdl_signal_ptr; + num: __ghdl_index_type) + RETURN __ghdl_ptr; + +EXTERNAL FUNCTION __ghdl_signal_read_port ( + sig: __ghdl_signal_ptr; + num: __ghdl_index_type) + RETURN __ghdl_ptr; + +EXTERNAL FUNCTION __ghdl_signal_driving ( + sig: __ghdl_signal_ptr) + RETURN std__standard__boolean; + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_error ( + sig: __ghdl_signal_ptr; + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_error ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + after: std__standard__time__BT; + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_error ( + sig: __ghdl_signal_ptr; + after: std__standard__time__BT; + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_null ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_null ( + sig: __ghdl_signal_ptr; + after: std__standard__time__BT); + +EXTERNAL FUNCTION __ghdl_create_signal_e8 ( + val_ptr: __ghdl_ptr; + resolv_func: __ghdl_ptr; + resolv_inst: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_init_e8 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_e8 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_e8 ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + val: __ghdl_i32; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_e8 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_associate_e8 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_e8 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL FUNCTION __ghdl_signal_driving_value_e8 ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_create_signal_e32 ( + val_ptr: __ghdl_ptr; + resolv_func: __ghdl_ptr; + resolv_inst: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_init_e32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_e32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_e32 ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + val: __ghdl_i32; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_e32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_associate_e32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_e32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL FUNCTION __ghdl_signal_driving_value_e32 ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_create_signal_b1 ( + val_ptr: __ghdl_ptr; + resolv_func: __ghdl_ptr; + resolv_inst: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_init_b1 ( + sig: __ghdl_signal_ptr; + val: __ghdl_bool_type); + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_b1 ( + sig: __ghdl_signal_ptr; + val: __ghdl_bool_type); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_b1 ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + val: __ghdl_bool_type; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_b1 ( + sig: __ghdl_signal_ptr; + val: __ghdl_bool_type; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_associate_b1 ( + sig: __ghdl_signal_ptr; + val: __ghdl_bool_type); + +EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_b1 ( + sig: __ghdl_signal_ptr; + val: __ghdl_bool_type); + +EXTERNAL FUNCTION __ghdl_signal_driving_value_b1 ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_bool_type; + +EXTERNAL FUNCTION __ghdl_create_signal_i32 ( + val_ptr: __ghdl_ptr; + resolv_func: __ghdl_ptr; + resolv_inst: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_init_i32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_i32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_i32 ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + val: __ghdl_i32; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_i32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_associate_i32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_i32 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i32); + +EXTERNAL FUNCTION __ghdl_signal_driving_value_i32 ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_create_signal_f64 ( + val_ptr: __ghdl_ptr; + resolv_func: __ghdl_ptr; + resolv_inst: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_init_f64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_real); + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_f64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_real); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_f64 ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + val: __ghdl_real; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_f64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_real; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_associate_f64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_real); + +EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_f64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_real); + +EXTERNAL FUNCTION __ghdl_signal_driving_value_f64 ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_real; + +EXTERNAL FUNCTION __ghdl_create_signal_i64 ( + val_ptr: __ghdl_ptr; + resolv_func: __ghdl_ptr; + resolv_inst: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_init_i64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i64); + +EXTERNAL PROCEDURE __ghdl_signal_simple_assign_i64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i64); + +EXTERNAL PROCEDURE __ghdl_signal_start_assign_i64 ( + sig: __ghdl_signal_ptr; + reject: std__standard__time__BT; + val: __ghdl_i64; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_next_assign_i64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i64; + after: std__standard__time__BT); + +EXTERNAL PROCEDURE __ghdl_signal_associate_i64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i64); + +EXTERNAL PROCEDURE __ghdl_signal_add_port_driver_i64 ( + sig: __ghdl_signal_ptr; + val: __ghdl_i64); + +EXTERNAL FUNCTION __ghdl_signal_driving_value_i64 ( + sig: __ghdl_signal_ptr) + RETURN __ghdl_i64; + +EXTERNAL PROCEDURE __ghdl_process_add_sensitivity ( + sig: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_process_add_driver ( + sig: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_signal_add_direct_driver ( + sig: __ghdl_signal_ptr; + drv: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_signal_direct_assign ( + sig: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_signal_in_conversion ( + func: __ghdl_ptr; + INSTANCE: __ghdl_ptr; + src: __ghdl_signal_ptr; + src_len: __ghdl_index_type; + dst: __ghdl_signal_ptr; + dst_len: __ghdl_index_type); + +EXTERNAL PROCEDURE __ghdl_signal_out_conversion ( + func: __ghdl_ptr; + INSTANCE: __ghdl_ptr; + src: __ghdl_signal_ptr; + src_len: __ghdl_index_type; + dst: __ghdl_signal_ptr; + dst_len: __ghdl_index_type); + +EXTERNAL FUNCTION __ghdl_create_stable_signal ( + val_ptr: __ghdl_ptr; + val: std__standard__time__BT) + RETURN __ghdl_signal_ptr; + +EXTERNAL FUNCTION __ghdl_create_quiet_signal ( + val_ptr: __ghdl_ptr; + val: std__standard__time__BT) + RETURN __ghdl_signal_ptr; + +EXTERNAL FUNCTION __ghdl_create_transaction_signal ( + val_ptr: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_attribute_register_prefix ( + sig: __ghdl_signal_ptr); + +EXTERNAL FUNCTION __ghdl_create_delayed_signal ( + sig: __ghdl_signal_ptr; + val_ptr: __ghdl_ptr; + val: std__standard__time__BT) + RETURN __ghdl_signal_ptr; + +EXTERNAL FUNCTION __ghdl_signal_create_guard ( + val_ptr: __ghdl_ptr; + this: __ghdl_ptr; + proc: __ghdl_ptr) + RETURN __ghdl_signal_ptr; + +EXTERNAL PROCEDURE __ghdl_signal_guard_dependence ( + sig: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_process_wait_exit ( + ); + +EXTERNAL PROCEDURE __ghdl_process_wait_timeout ( + time: std__standard__time__BT; + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_process_wait_set_timeout ( + time: std__standard__time__BT; + filename: __ghdl_char_ptr; + line: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_process_wait_add_sensitivity ( + sig: __ghdl_signal_ptr); + +EXTERNAL PROCEDURE __ghdl_process_wait_suspend ( + ); + +EXTERNAL FUNCTION __ghdl_process_wait_timed_out ( + ) + RETURN __ghdl_bool_type; + +EXTERNAL PROCEDURE __ghdl_process_wait_close ( + ); + +EXTERNAL PROCEDURE __ghdl_get_path_name ( + res: std__standard__string__PTR; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr; + name: __ghdl_str_len_ptr); + +EXTERNAL PROCEDURE __ghdl_get_instance_name ( + res: std__standard__string__PTR; + ctxt: __ghdl_rti_access; + addr: __ghdl_ptr; + name: __ghdl_str_len_ptr); + +EXTERNAL PROCEDURE __ghdl_rti_add_package ( + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_rti_add_top ( + max_pkgs: __ghdl_index_type; + pkgs: __ghdl_rti_arr_acc; + RTI: __ghdl_rti_access; + INSTANCE: __ghdl_ptr); + +EXTERNAL PROCEDURE __ghdl_init_top_generics ( + ); + +EXTERNAL FUNCTION __ghdl_std_ulogic_match_eq ( + left: __ghdl_i32; + right: __ghdl_i32) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_std_ulogic_match_ne ( + left: __ghdl_i32; + right: __ghdl_i32) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_std_ulogic_match_lt ( + left: __ghdl_i32; + right: __ghdl_i32) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_std_ulogic_match_le ( + left: __ghdl_i32; + right: __ghdl_i32) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_std_ulogic_array_match_eq ( + left: __ghdl_ptr; + l_len: __ghdl_index_type; + right: __ghdl_ptr; + r_len: __ghdl_index_type) + RETURN __ghdl_i32; + +EXTERNAL FUNCTION __ghdl_std_ulogic_array_match_ne ( + left: __ghdl_ptr; + l_len: __ghdl_index_type; + right: __ghdl_ptr; + r_len: __ghdl_index_type) + RETURN __ghdl_i32; + +EXTERNAL PROCEDURE __ghdl_to_string_i32 ( + res: std__standard__string__PTR; + val: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_to_string_i64 ( + res: std__standard__string__PTR; + val: __ghdl_i64); + +EXTERNAL PROCEDURE __ghdl_to_string_f64 ( + res: std__standard__string__PTR; + val: __ghdl_real); + +EXTERNAL PROCEDURE __ghdl_to_string_f64_digits ( + res: std__standard__string__PTR; + val: __ghdl_real; + nbr_digits: __ghdl_i32); + +EXTERNAL PROCEDURE __ghdl_to_string_f64_format ( + res: std__standard__string__PTR; + val: __ghdl_real; + format: std__standard__string__PTR); + +EXTERNAL PROCEDURE __ghdl_bv_to_ostring ( + res: std__standard__string__PTR; + val: std__standard__bit_vector__BASEP; + length: __ghdl_index_type); + +EXTERNAL PROCEDURE __ghdl_bv_to_hstring ( + res: std__standard__string__PTR; + val: std__standard__bit_vector__BASEP; + length: __ghdl_index_type); + +EXTERNAL PROCEDURE __ghdl_to_string_b1 ( + res: std__standard__string__PTR; + val: __ghdl_bool_type; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_to_string_e8 ( + res: std__standard__string__PTR; + val: __ghdl_i32; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_to_string_char ( + res: std__standard__string__PTR; + val: std__standard__character); + +EXTERNAL PROCEDURE __ghdl_to_string_e32 ( + res: std__standard__string__PTR; + val: __ghdl_i32; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_to_string_p32 ( + res: std__standard__string__PTR; + val: __ghdl_i32; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_to_string_p64 ( + res: std__standard__string__PTR; + val: __ghdl_i64; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_time_to_string_unit ( + res: std__standard__string__PTR; + val: std__standard__time__BT; + unit: std__standard__time__BT; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_array_char_to_string_b1 ( + res: std__standard__string__PTR; + val: __ghdl_ptr; + length: __ghdl_index_type; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_array_char_to_string_e8 ( + res: std__standard__string__PTR; + val: __ghdl_ptr; + length: __ghdl_index_type; + RTI: __ghdl_rti_access); + +EXTERNAL PROCEDURE __ghdl_array_char_to_string_e32 ( + res: std__standard__string__PTR; + val: __ghdl_ptr; + length: __ghdl_index_type; + RTI: __ghdl_rti_access); + +--F /Users/gingold/devel/ghdl/build-gcc/lib/ghdl/ieee/v93/../../src/ieee/std_logic_1164.v93 + +-- package declaration std_logic_1164 + +TYPE ieee__std_logic_1164__std_ulogic IS ENUM {C_U, C_X, C_0, C_1, C_Z, C_W, + C_L, C_H, C2d}; + +TYPE ieee__std_logic_1164__std_ulogic__PTR IS ACCESS + ieee__std_logic_1164__std_ulogic; + +TYPE ieee__std_logic_1164__std_ulogic__TRT IS RECORD + left: ieee__std_logic_1164__std_ulogic; + right: ieee__std_logic_1164__std_ulogic; + dir: __ghdl_dir_type; + length: __ghdl_index_type; +END RECORD; + +TYPE ieee__std_logic_1164__std_ulogic__TRPTR IS ACCESS + ieee__std_logic_1164__std_ulogic__TRT; + +EXTERNAL CONSTANT ieee__std_logic_1164__std_ulogic__BTR : + ieee__std_logic_1164__std_ulogic__TRT; + +TYPE ieee__std_logic_1164__std_ulogic_vector__BASE IS ARRAY [__ghdl_index_type + ] OF ieee__std_logic_1164__std_ulogic; + +TYPE ieee__std_logic_1164__std_ulogic_vector__BASEP IS ACCESS + ieee__std_logic_1164__std_ulogic_vector__BASE; + +TYPE ieee__std_logic_1164__std_ulogic_vector__SIGBASE IS ARRAY [ + __ghdl_index_type] OF __ghdl_signal_ptr; + +TYPE ieee__std_logic_1164__std_ulogic_vector__SIGBASEP IS ACCESS + ieee__std_logic_1164__std_ulogic_vector__SIGBASE; + +TYPE ieee__std_logic_1164__std_ulogic_vector__BOUND IS RECORD + dim_1: std__standard__integer__BT__TRT; +END RECORD; + +TYPE ieee__std_logic_1164__std_ulogic_vector__BOUNDP IS ACCESS + ieee__std_logic_1164__std_ulogic_vector__BOUND; + +TYPE ieee__std_logic_1164__std_ulogic_vector IS RECORD + BASE: ieee__std_logic_1164__std_ulogic_vector__BASEP; + BOUNDS: ieee__std_logic_1164__std_ulogic_vector__BOUNDP; +END RECORD; + +TYPE ieee__std_logic_1164__std_ulogic_vector__PTR IS ACCESS + ieee__std_logic_1164__std_ulogic_vector; + +TYPE ieee__std_logic_1164__std_ulogic_vector__SIG IS RECORD + BASE: ieee__std_logic_1164__std_ulogic_vector__SIGBASEP; + BOUNDS: ieee__std_logic_1164__std_ulogic_vector__BOUNDP; +END RECORD; + +TYPE ieee__std_logic_1164__std_ulogic_vector__SIGPTR IS ACCESS + ieee__std_logic_1164__std_ulogic_vector__SIG; + +EXTERNAL CONSTANT ieee__std_logic_1164__std_logic__STR : + ieee__std_logic_1164__std_ulogic__TRT; + +TYPE ieee__std_logic_1164__std_logic_vector__BASE IS ARRAY [__ghdl_index_type] + OF ieee__std_logic_1164__std_ulogic; + +TYPE ieee__std_logic_1164__std_logic_vector__BASEP IS ACCESS + ieee__std_logic_1164__std_logic_vector__BASE; + +TYPE ieee__std_logic_1164__std_logic_vector__SIGBASE IS ARRAY [ + __ghdl_index_type] OF __ghdl_signal_ptr; + +TYPE ieee__std_logic_1164__std_logic_vector__SIGBASEP IS ACCESS + ieee__std_logic_1164__std_logic_vector__SIGBASE; + +TYPE ieee__std_logic_1164__std_logic_vector__BOUND IS RECORD + dim_1: std__standard__integer__BT__TRT; +END RECORD; + +TYPE ieee__std_logic_1164__std_logic_vector__BOUNDP IS ACCESS + ieee__std_logic_1164__std_logic_vector__BOUND; + +TYPE ieee__std_logic_1164__std_logic_vector IS RECORD + BASE: ieee__std_logic_1164__std_logic_vector__BASEP; + BOUNDS: ieee__std_logic_1164__std_logic_vector__BOUNDP; +END RECORD; + +TYPE ieee__std_logic_1164__std_logic_vector__PTR IS ACCESS + ieee__std_logic_1164__std_logic_vector; + +TYPE ieee__std_logic_1164__std_logic_vector__SIG IS RECORD + BASE: ieee__std_logic_1164__std_logic_vector__SIGBASEP; + BOUNDS: ieee__std_logic_1164__std_logic_vector__BOUNDP; +END RECORD; + +TYPE ieee__std_logic_1164__std_logic_vector__SIGPTR IS ACCESS + ieee__std_logic_1164__std_logic_vector__SIG; + +EXTERNAL CONSTANT ieee__std_logic_1164__x01__STR : + ieee__std_logic_1164__std_ulogic__TRT; + +EXTERNAL CONSTANT ieee__std_logic_1164__x01z__STR : + ieee__std_logic_1164__std_ulogic__TRT; + +EXTERNAL CONSTANT ieee__std_logic_1164__ux01__STR : + ieee__std_logic_1164__std_ulogic__TRT; + +EXTERNAL CONSTANT ieee__std_logic_1164__ux01z__STR : + ieee__std_logic_1164__std_ulogic__TRT; + +EXTERNAL VAR ieee__std_logic_1164__ELABORATED : __ghdl_bool_type; + +EXTERNAL FUNCTION ieee__std_logic_1164__std_ulogic_vector_EQ ( + left: ieee__std_logic_1164__std_ulogic_vector__PTR; + right: ieee__std_logic_1164__std_ulogic_vector__PTR) + RETURN std__standard__boolean; + +EXTERNAL FUNCTION ieee__std_logic_1164__std_ulogic_vector_CMP ( + left: ieee__std_logic_1164__std_ulogic_vector__PTR; + right: ieee__std_logic_1164__std_ulogic_vector__PTR) + RETURN __ghdl_compare_type; + +EXTERNAL FUNCTION ieee__std_logic_1164__resolved ( + s: ieee__std_logic_1164__std_ulogic_vector__PTR) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL PROCEDURE ieee__std_logic_1164__resolved_RESOLV ( + INSTANCE: __ghdl_ptr; + VALS: __ghdl_signal_ptr; + bool_vec: __ghdl_bool_array_ptr; + vec_len: __ghdl_index_type; + nbr_drv: __ghdl_index_type; + nbr_ports: __ghdl_index_type); + +EXTERNAL FUNCTION ieee__std_logic_1164__std_logic_vector_EQ ( + left: ieee__std_logic_1164__std_logic_vector__PTR; + right: ieee__std_logic_1164__std_logic_vector__PTR) + RETURN std__standard__boolean; + +EXTERNAL FUNCTION ieee__std_logic_1164__std_logic_vector_CMP ( + left: ieee__std_logic_1164__std_logic_vector__PTR; + right: ieee__std_logic_1164__std_logic_vector__PTR) + RETURN __ghdl_compare_type; + +EXTERNAL FUNCTION ieee__std_logic_1164__andO1 ( + l: ieee__std_logic_1164__std_ulogic; + r: ieee__std_logic_1164__std_ulogic) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL FUNCTION ieee__std_logic_1164__nandO1 ( + l: ieee__std_logic_1164__std_ulogic; + r: ieee__std_logic_1164__std_ulogic) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL FUNCTION ieee__std_logic_1164__orO1 ( + l: ieee__std_logic_1164__std_ulogic; + r: ieee__std_logic_1164__std_ulogic) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL FUNCTION ieee__std_logic_1164__norO1 ( + l: ieee__std_logic_1164__std_ulogic; + r: ieee__std_logic_1164__std_ulogic) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL FUNCTION ieee__std_logic_1164__xorO1 ( + l: ieee__std_logic_1164__std_ulogic; + r: ieee__std_logic_1164__std_ulogic) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL FUNCTION ieee__std_logic_1164__xnorO1 ( + l: ieee__std_logic_1164__std_ulogic; + r: ieee__std_logic_1164__std_ulogic) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL FUNCTION ieee__std_logic_1164__notO1 ( + l: ieee__std_logic_1164__std_ulogic) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL PROCEDURE ieee__std_logic_1164__andO2 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + l: ieee__std_logic_1164__std_logic_vector__PTR; + r: ieee__std_logic_1164__std_logic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__andO3 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + l: ieee__std_logic_1164__std_ulogic_vector__PTR; + r: ieee__std_logic_1164__std_ulogic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__nandO2 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + l: ieee__std_logic_1164__std_logic_vector__PTR; + r: ieee__std_logic_1164__std_logic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__nandO3 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + l: ieee__std_logic_1164__std_ulogic_vector__PTR; + r: ieee__std_logic_1164__std_ulogic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__orO2 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + l: ieee__std_logic_1164__std_logic_vector__PTR; + r: ieee__std_logic_1164__std_logic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__orO3 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + l: ieee__std_logic_1164__std_ulogic_vector__PTR; + r: ieee__std_logic_1164__std_ulogic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__norO2 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + l: ieee__std_logic_1164__std_logic_vector__PTR; + r: ieee__std_logic_1164__std_logic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__norO3 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + l: ieee__std_logic_1164__std_ulogic_vector__PTR; + r: ieee__std_logic_1164__std_ulogic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__xorO2 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + l: ieee__std_logic_1164__std_logic_vector__PTR; + r: ieee__std_logic_1164__std_logic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__xorO3 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + l: ieee__std_logic_1164__std_ulogic_vector__PTR; + r: ieee__std_logic_1164__std_ulogic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__xnorO2 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + l: ieee__std_logic_1164__std_logic_vector__PTR; + r: ieee__std_logic_1164__std_logic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__xnorO3 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + l: ieee__std_logic_1164__std_ulogic_vector__PTR; + r: ieee__std_logic_1164__std_ulogic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__notO2 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + l: ieee__std_logic_1164__std_logic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__notO3 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + l: ieee__std_logic_1164__std_ulogic_vector__PTR); + +EXTERNAL FUNCTION ieee__std_logic_1164__to_bit ( + s: ieee__std_logic_1164__std_ulogic; + xmap: std__standard__bit) + RETURN std__standard__bit; + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_bitvectorO1 ( + RESULT: std__standard__bit_vector__PTR; + s: ieee__std_logic_1164__std_logic_vector__PTR; + xmap: std__standard__bit); + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_bitvectorO2 ( + RESULT: std__standard__bit_vector__PTR; + s: ieee__std_logic_1164__std_ulogic_vector__PTR; + xmap: std__standard__bit); + +EXTERNAL FUNCTION ieee__std_logic_1164__to_stdulogic ( + b: std__standard__bit) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_stdlogicvectorO1 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + b: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_stdlogicvectorO2 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + s: ieee__std_logic_1164__std_ulogic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_stdulogicvectorO1 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + b: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_stdulogicvectorO2 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + s: ieee__std_logic_1164__std_logic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01O1 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + s: ieee__std_logic_1164__std_logic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01O2 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + s: ieee__std_logic_1164__std_ulogic_vector__PTR); + +EXTERNAL FUNCTION ieee__std_logic_1164__to_x01O3 ( + s: ieee__std_logic_1164__std_ulogic) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01O4 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + b: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01O5 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + b: std__standard__bit_vector__PTR); + +EXTERNAL FUNCTION ieee__std_logic_1164__to_x01O6 ( + b: std__standard__bit) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01zO1 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + s: ieee__std_logic_1164__std_logic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01zO2 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + s: ieee__std_logic_1164__std_ulogic_vector__PTR); + +EXTERNAL FUNCTION ieee__std_logic_1164__to_x01zO3 ( + s: ieee__std_logic_1164__std_ulogic) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01zO4 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + b: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_x01zO5 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + b: std__standard__bit_vector__PTR); + +EXTERNAL FUNCTION ieee__std_logic_1164__to_x01zO6 ( + b: std__standard__bit) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_ux01O1 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + s: ieee__std_logic_1164__std_logic_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_ux01O2 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + s: ieee__std_logic_1164__std_ulogic_vector__PTR); + +EXTERNAL FUNCTION ieee__std_logic_1164__to_ux01O3 ( + s: ieee__std_logic_1164__std_ulogic) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_ux01O4 ( + RESULT: ieee__std_logic_1164__std_logic_vector__PTR; + b: std__standard__bit_vector__PTR); + +EXTERNAL PROCEDURE ieee__std_logic_1164__to_ux01O5 ( + RESULT: ieee__std_logic_1164__std_ulogic_vector__PTR; + b: std__standard__bit_vector__PTR); + +EXTERNAL FUNCTION ieee__std_logic_1164__to_ux01O6 ( + b: std__standard__bit) + RETURN ieee__std_logic_1164__std_ulogic; + +EXTERNAL FUNCTION ieee__std_logic_1164__rising_edge ( + s: ieee__std_logic_1164__std_ulogic; + sSIG: __ghdl_signal_ptr) + RETURN std__standard__boolean; + +EXTERNAL FUNCTION ieee__std_logic_1164__falling_edge ( + s: ieee__std_logic_1164__std_ulogic; + sSIG: __ghdl_signal_ptr) + RETURN std__standard__boolean; + +EXTERNAL FUNCTION ieee__std_logic_1164__is_xO1 ( + s: ieee__std_logic_1164__std_ulogic_vector__PTR) + RETURN std__standard__boolean; + +EXTERNAL FUNCTION ieee__std_logic_1164__is_xO2 ( + s: ieee__std_logic_1164__std_logic_vector__PTR) + RETURN std__standard__boolean; + +EXTERNAL FUNCTION ieee__std_logic_1164__is_xO3 ( + s: ieee__std_logic_1164__std_ulogic) + RETURN std__standard__boolean; + +EXTERNAL PROCEDURE ieee__std_logic_1164__ELAB_SPEC ( + ); + +EXTERNAL PROCEDURE ieee__std_logic_1164__ELAB_BODY ( + ); + +EXTERNAL CONSTANT ieee__std_logic_1164__RTI : __ghdl_rtin_block; + +EXTERNAL CONSTANT ieee__std_logic_1164__std_ulogic__RTI : __ghdl_rtin_type_enum + ; + +EXTERNAL CONSTANT ieee__std_logic_1164__std_ulogic_vector__RTI : + __ghdl_rtin_type_array; + +EXTERNAL CONSTANT ieee__std_logic_1164__std_logic__RTI : + __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT ieee__std_logic_1164__std_logic_vector__RTI : + __ghdl_rtin_type_array; + +EXTERNAL CONSTANT ieee__std_logic_1164__x01__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT ieee__std_logic_1164__x01z__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT ieee__std_logic_1164__ux01__RTI : __ghdl_rtin_subtype_scalar; + +EXTERNAL CONSTANT ieee__std_logic_1164__ux01z__RTI : __ghdl_rtin_subtype_scalar + ; + +PRIVATE CONSTANT _UI00000000 : SUBARRAY __ghdl_chararray[9]; + +CONSTANT _UI00000000 := {116, 111, 112, 46, 118, 104, 100, 108, 0}; + +--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/top.vhdl + +-- entity inc_ent + +TYPE work__inc_ent__INSTTYPE IS RECORD; + +TYPE work__inc_ent__INSTPTR IS ACCESS work__inc_ent__INSTTYPE; + +TYPE work__inc_ent__INSTTYPE IS RECORD + RTI: __ghdl_entity_link_type; + works: std__standard__integer__BT; + vec: ieee__std_logic_1164__std_logic_vector; +END RECORD; + +PUBLIC PROCEDURE work__inc_ent__DECL_ELAB ( + INSTANCE: work__inc_ent__INSTPTR); + +PUBLIC PROCEDURE work__inc_ent__STMT_ELAB ( + INSTANCE: work__inc_ent__INSTPTR); + +PUBLIC PROCEDURE work__inc_ent__PKG_ELAB ( + ); + +EXTERNAL CONSTANT work__RTI : __ghdl_rtin_type_scalar; + +PUBLIC CONSTANT work__inc_ent__RTI : __ghdl_rtin_block_file; + +PUBLIC CONSTANT work__inc_ent__works__RTI : __ghdl_rtin_object; + +PRIVATE CONSTANT work__inc_ent__works__RTISTR : SUBARRAY __ghdl_chararray[6]; + +CONSTANT work__inc_ent__works__RTISTR := {119, 111, 114, 107, 115, 0}; + +CONSTANT work__inc_ent__works__RTI := {{__ghdl_rtik'[__ghdl_rtik_generic], 1, + 0, 0}, __ghdl_char_ptr'unchecked_address (work__inc_ent__works__RTISTR), + __ghdl_ptr'offsetof (work__inc_ent__INSTTYPE.works), + __ghdl_rti_access'unchecked_address (std__standard__integer__RTI), 1552}; + +PUBLIC CONSTANT work__inc_ent__vec__RTI : __ghdl_rtin_object; + +PRIVATE CONSTANT work__inc_ent__vec__RTISTR : SUBARRAY __ghdl_chararray[4]; + +CONSTANT work__inc_ent__vec__RTISTR := {118, 101, 99, 0}; + +CONSTANT work__inc_ent__vec__RTI := {{__ghdl_rtik'[__ghdl_rtik_generic], 1, 0, + 0}, __ghdl_char_ptr'unchecked_address (work__inc_ent__vec__RTISTR), + __ghdl_ptr'offsetof (work__inc_ent__INSTTYPE.vec), + __ghdl_rti_access'unchecked_address ( + ieee__std_logic_1164__std_logic_vector__RTI), 1808}; + +PRIVATE CONSTANT work__inc_ent__RTISTR : SUBARRAY __ghdl_chararray[8]; + +CONSTANT work__inc_ent__RTISTR := {105, 110, 99, 95, 101, 110, 116, 0}; + +PRIVATE CONSTANT work__inc_ent__RTIARRAY : SUBARRAY __ghdl_rti_array[3]; + +CONSTANT work__inc_ent__RTIARRAY := + {__ghdl_rti_access'unchecked_address (work__inc_ent__works__RTI), + __ghdl_rti_access'unchecked_address (work__inc_ent__vec__RTI), + __ghdl_rti_access'[NULL]}; + +CONSTANT work__inc_ent__RTI := {{{__ghdl_rtik'[__ghdl_rtik_entity], 1, 0, 0}, + __ghdl_char_ptr'address (work__inc_ent__RTISTR), __ghdl_ptr'[NULL], 1032, + __ghdl_rti_access'unchecked_address (work__RTI), 2, + __ghdl_rti_arr_acc'address (work__inc_ent__RTIARRAY)}, + __ghdl_char_ptr'address (_UI00000000)}; + +PUBLIC PROCEDURE work__inc_ent__PKG_ELAB ( + ) +DECLARE +BEGIN + --# 4 + IF NOT ieee__std_logic_1164__ELABORATED THEN + ieee__std_logic_1164__ELAB_BODY (); + END IF; +END; + +PUBLIC PROCEDURE work__inc_ent__DECL_ELAB ( + INSTANCE: work__inc_ent__INSTPTR) +DECLARE +BEGIN + --# 4 + --# 4 +END; + +PUBLIC PROCEDURE work__inc_ent__STMT_ELAB ( + INSTANCE: work__inc_ent__INSTPTR) +DECLARE +BEGIN + --# 4 +END; + +--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/top.vhdl + +-- architecture default + +TYPE work__inc_ent__ARCH__default__INSTTYPE IS RECORD; + +TYPE work__inc_ent__ARCH__default__INSTPTR IS ACCESS + work__inc_ent__ARCH__default__INSTTYPE; + +TYPE work__inc_ent__ARCH__default__P0__INSTTYPE IS RECORD +END RECORD; + +TYPE work__inc_ent__ARCH__default__INSTTYPE IS RECORD + ENTITY: work__inc_ent__INSTTYPE; + P0: work__inc_ent__ARCH__default__P0__INSTTYPE; +END RECORD; + +PUBLIC CONSTANT work__inc_ent__ARCH__default__INSTSIZE : __ghdl_index_type; + +CONSTANT work__inc_ent__ARCH__default__INSTSIZE := __ghdl_index_type'sizeof ( + work__inc_ent__ARCH__default__INSTTYPE); + +PUBLIC PROCEDURE work__inc_ent__ARCH__default__DECL_ELAB ( + INSTANCE: work__inc_ent__INSTPTR); + +PUBLIC PROCEDURE work__inc_ent__ARCH__default__STMT_ELAB ( + INSTANCE: work__inc_ent__INSTPTR); + +PUBLIC CONSTANT work__inc_ent__ARCH__default__RTI : __ghdl_rtin_block_file; + +PUBLIC CONSTANT work__inc_ent__ARCH__default__P0__RTI : __ghdl_rtin_block; + +PRIVATE CONSTANT work__inc_ent__ARCH__default__P0__RTISTR : SUBARRAY + __ghdl_chararray[3]; + +CONSTANT work__inc_ent__ARCH__default__P0__RTISTR := {80, 48, 0}; + +PRIVATE CONSTANT work__inc_ent__ARCH__default__P0__RTIARRAY : SUBARRAY + __ghdl_rti_array[1]; + +CONSTANT work__inc_ent__ARCH__default__P0__RTIARRAY := + {__ghdl_rti_access'[NULL]}; + +CONSTANT work__inc_ent__ARCH__default__P0__RTI := { + {__ghdl_rtik'[__ghdl_rtik_process], 2, 0, 0}, + __ghdl_char_ptr'address (work__inc_ent__ARCH__default__P0__RTISTR), + __ghdl_ptr'offsetof (work__inc_ent__ARCH__default__INSTTYPE.P0), 3080, + __ghdl_rti_access'unchecked_address (work__inc_ent__ARCH__default__RTI), 0, + __ghdl_rti_arr_acc'address (work__inc_ent__ARCH__default__P0__RTIARRAY)}; + +PRIVATE CONSTANT work__inc_ent__ARCH__default__RTISTR : SUBARRAY + __ghdl_chararray[8]; + +CONSTANT work__inc_ent__ARCH__default__RTISTR := {100, 101, 102, 97, 117, 108, + 116, 0}; + +PRIVATE CONSTANT work__inc_ent__ARCH__default__RTIARRAY : SUBARRAY + __ghdl_rti_array[2]; + +CONSTANT work__inc_ent__ARCH__default__RTIARRAY := + {__ghdl_rti_access'unchecked_address (work__inc_ent__ARCH__default__P0__RTI) + , __ghdl_rti_access'[NULL]}; + +CONSTANT work__inc_ent__ARCH__default__RTI := {{ + {__ghdl_rtik'[__ghdl_rtik_architecture], 1, 0, 0}, + __ghdl_char_ptr'address (work__inc_ent__ARCH__default__RTISTR), + __ghdl_ptr'offsetof (work__inc_ent__ARCH__default__INSTTYPE.ENTITY), 2574, + __ghdl_rti_access'unchecked_address (work__inc_ent__RTI), 1, + __ghdl_rti_arr_acc'address (work__inc_ent__ARCH__default__RTIARRAY)}, + __ghdl_char_ptr'address (_UI00000000)}; + + +PRIVATE PROCEDURE work__inc_ent__ARCH__default__P0__PROC ( + INSTANCE: work__inc_ent__ARCH__default__INSTPTR) +DECLARE + PRIVATE CONSTANT _UI00000001 : __ghdl_location; + CONSTANT _UI00000001 := {__ghdl_char_ptr'address (_UI00000000), 12, 8}; +BEGIN + --# 12 + DECLARE + LOCAL VAR T0_0 : std__standard__string__BOUND; + LOCAL VAR T0_1 : std__standard__string__BASEP; + LOCAL VAR T0_2 : std__standard__string; + LOCAL VAR T0_3 : std__standard__string; + LOCAL VAR T0_4 : __ghdl_ptr; + LOCAL VAR T0_5 : std__standard__string__PTR; + LOCAL VAR T0_6 : std__standard__string; + LOCAL VAR T0_7 : std__standard__string__PTR; + LOCAL VAR T0_8 : __ghdl_index_type; + BEGIN + T0_2.BOUNDS := std__standard__string__BOUNDP'address (T0_0); + T0_4 := __ghdl_stack2_mark (); + __ghdl_image_i32 (std__standard__string__PTR'address (T0_3), __ghdl_i32 + 'conv (INSTANCE.ALL.ENTITY.works)); + T0_5 := std__standard__string__PTR'address (T0_3); + __ghdl_image_i32 (std__standard__string__PTR'address (T0_6), __ghdl_i32 + 'conv (std__standard__integer__BT'conv (INSTANCE.ALL.ENTITY.vec.BOUNDS. + ALL.dim_1.length))); + T0_7 := std__standard__string__PTR'address (T0_6); + T0_8 := ((__ghdl_index_type'[1] +# T0_5.ALL.BOUNDS.ALL.dim_1.length) +# + T0_7.ALL.BOUNDS.ALL.dim_1.length); + DECLARE + LOCAL VAR T1_0 : std__standard__integer__BT__TRPTR; + LOCAL VAR right_bound : std__standard__integer__BT; + BEGIN + T1_0 := std__standard__integer__BT__TRPTR'address (T0_0.dim_1); + T1_0.ALL.length := T0_8; + T1_0.ALL.dir := __ghdl_dir_type'[dir_to]; + IF __ghdl_bool_type'(T0_8 = 0) THEN + T1_0.ALL.left := std__standard__integer__BT'conv ( + std__standard__integer__BT'[2147483647]); + T1_0.ALL.right := std__standard__integer__BT'conv ( + std__standard__integer__BT'[1]); + ELSE + T1_0.ALL.left := std__standard__integer__BT'conv ( + std__standard__integer__BT'[1]); + right_bound := (std__standard__integer__BT'conv ( + std__standard__integer__BT'[1]) +# std__standard__integer__BT'conv (( + T0_8 -# 1))); + IF __ghdl_bool_type'(right_bound < 1) THEN + __ghdl_bound_check_failed (__ghdl_char_ptr'address (_UI00000000), 12) + ; + END IF; + T1_0.ALL.right := right_bound; + END IF; + END; + T0_1 := std__standard__string__BASEP'alloca ((T0_2.BOUNDS.ALL.dim_1.length + *# __ghdl_index_type'sizeof (std__standard__character))); + T0_2.BASE := T0_1; + DECLARE + LOCAL VAR T1_0 : __ghdl_index_type; + TYPE work__inc_ent__ARCH__default__P0__U0 IS SUBARRAY + std__standard__string__BASE[1]; + PRIVATE CONSTANT work__inc_ent__ARCH__default__P0__U0__STB : + std__standard__string__BOUND; + CONSTANT work__inc_ent__ARCH__default__P0__U0__STB := {{1, 1, + __ghdl_dir_type'[dir_to], 1}}; + PRIVATE CONSTANT _UI00000002 : work__inc_ent__ARCH__default__P0__U0; + CONSTANT _UI00000002 := {std__standard__character'[C20]}; + PRIVATE CONSTANT _UI00000003 : std__standard__string; + CONSTANT _UI00000003 := + {std__standard__string__BASEP'address (_UI00000002), + std__standard__string__BOUNDP'address ( + work__inc_ent__ARCH__default__P0__U0__STB)}; + BEGIN + T1_0 := 0; + DECLARE + LOCAL VAR T2_0 : std__standard__string; + BEGIN + T2_0.BOUNDS := T0_5.ALL.BOUNDS; + T2_0.BASE := std__standard__string__BASEP'address (T0_1.ALL[T1_0...]); + __ghdl_memcpy (__ghdl_ptr'conv (T2_0.BASE), __ghdl_ptr'conv (T0_5.ALL. + BASE), (T2_0.BOUNDS.ALL.dim_1.length *# __ghdl_index_type'sizeof ( + std__standard__character))); + T1_0 := (T1_0 +# T0_5.ALL.BOUNDS.ALL.dim_1.length); + END; + DECLARE + LOCAL VAR T2_0 : std__standard__string__PTR; + LOCAL VAR T2_1 : std__standard__string; + BEGIN + T2_0 := std__standard__string__PTR'address (_UI00000003); + T2_1.BOUNDS := T2_0.ALL.BOUNDS; + T2_1.BASE := std__standard__string__BASEP'address (T0_1.ALL[T1_0...]); + __ghdl_memcpy (__ghdl_ptr'conv (T2_1.BASE), __ghdl_ptr'conv (T2_0.ALL. + BASE), (T2_1.BOUNDS.ALL.dim_1.length *# __ghdl_index_type'sizeof ( + std__standard__character))); + T1_0 := (T1_0 +# T2_0.ALL.BOUNDS.ALL.dim_1.length); + END; + DECLARE + LOCAL VAR T2_0 : std__standard__string; + BEGIN + T2_0.BOUNDS := T0_7.ALL.BOUNDS; + T2_0.BASE := std__standard__string__BASEP'address (T0_1.ALL[T1_0...]); + __ghdl_memcpy (__ghdl_ptr'conv (T2_0.BASE), __ghdl_ptr'conv (T0_7.ALL. + BASE), (T2_0.BOUNDS.ALL.dim_1.length *# __ghdl_index_type'sizeof ( + std__standard__character))); + T1_0 := (T1_0 +# T0_7.ALL.BOUNDS.ALL.dim_1.length); + END; + END; + __ghdl_assert_failed (std__standard__string__PTR'address (T0_2), + std__standard__severity_level'[error], __ghdl_location_ptr'address ( + _UI00000001)); + __ghdl_stack2_release (T0_4); + END; +END; + +PUBLIC PROCEDURE work__inc_ent__ARCH__default__DECL_ELAB ( + INSTANCE: work__inc_ent__INSTPTR) +DECLARE + LOCAL VAR ARCH_INSTANCE : work__inc_ent__ARCH__default__INSTPTR; +BEGIN + ARCH_INSTANCE := work__inc_ent__ARCH__default__INSTPTR'conv (INSTANCE); + INSTANCE.ALL.RTI.rti := __ghdl_rti_access'unchecked_address ( + work__inc_ent__ARCH__default__RTI); + work__inc_ent__DECL_ELAB (INSTANCE); + --# 10 + --# 10 +END; + +PUBLIC PROCEDURE work__inc_ent__ARCH__default__STMT_ELAB ( + INSTANCE: work__inc_ent__INSTPTR) +DECLARE + LOCAL VAR ARCH_INSTANCE : work__inc_ent__ARCH__default__INSTPTR; +BEGIN + ARCH_INSTANCE := work__inc_ent__ARCH__default__INSTPTR'conv (INSTANCE); + work__inc_ent__STMT_ELAB (INSTANCE); + --# 10 + --# 12 + __ghdl_sensitized_process_register (__ghdl_ptr'unchecked_address ( + ARCH_INSTANCE.ALL), __ghdl_ptr'subprg_addr ( + work__inc_ent__ARCH__default__P0__PROC), __ghdl_rti_access + 'unchecked_address (work__inc_ent__ARCH__default__P0__RTI), __ghdl_ptr + 'unchecked_address (ARCH_INSTANCE.ALL.P0)); +END; + +--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/top.vhdl + +-- entity top_ent + +TYPE work__top_ent__INSTTYPE IS RECORD; + +TYPE work__top_ent__INSTPTR IS ACCESS work__top_ent__INSTTYPE; + +TYPE work__top_ent__INSTTYPE IS RECORD + RTI: __ghdl_entity_link_type; +END RECORD; + +PUBLIC PROCEDURE work__top_ent__DECL_ELAB ( + INSTANCE: work__top_ent__INSTPTR); + +PUBLIC PROCEDURE work__top_ent__STMT_ELAB ( + INSTANCE: work__top_ent__INSTPTR); + +PUBLIC PROCEDURE work__top_ent__PKG_ELAB ( + ); + +PUBLIC CONSTANT work__top_ent__RTI : __ghdl_rtin_block_file; + +PRIVATE CONSTANT work__top_ent__RTISTR : SUBARRAY __ghdl_chararray[8]; + +CONSTANT work__top_ent__RTISTR := {116, 111, 112, 95, 101, 110, 116, 0}; + +PRIVATE CONSTANT work__top_ent__RTIARRAY : SUBARRAY __ghdl_rti_array[1]; + +CONSTANT work__top_ent__RTIARRAY := {__ghdl_rti_access'[NULL]}; + +CONSTANT work__top_ent__RTI := {{{__ghdl_rtik'[__ghdl_rtik_entity], 1, 0, 0}, + __ghdl_char_ptr'address (work__top_ent__RTISTR), __ghdl_ptr'[NULL], 4616, + __ghdl_rti_access'unchecked_address (work__RTI), 0, + __ghdl_rti_arr_acc'address (work__top_ent__RTIARRAY)}, + __ghdl_char_ptr'address (_UI00000000)}; + +PUBLIC PROCEDURE work__top_ent__PKG_ELAB ( + ) +DECLARE +BEGIN + --# 18 + IF NOT ieee__std_logic_1164__ELABORATED THEN + ieee__std_logic_1164__ELAB_BODY (); + END IF; +END; + +PUBLIC PROCEDURE work__top_ent__DECL_ELAB ( + INSTANCE: work__top_ent__INSTPTR) +DECLARE +BEGIN + --# 18 + --# 18 +END; + +PUBLIC PROCEDURE work__top_ent__STMT_ELAB ( + INSTANCE: work__top_ent__INSTPTR) +DECLARE +BEGIN + --# 18 +END; + +--F /Users/gingold/devel/ghdl/testsuite/gna/issue626/top.vhdl + +-- architecture default + +TYPE work__top_ent__ARCH__default__INSTTYPE IS RECORD; + +TYPE work__top_ent__ARCH__default__INSTPTR IS ACCESS + work__top_ent__ARCH__default__INSTTYPE; + +TYPE work__top_ent__ARCH__default__foo_v__OT IS SUBARRAY + ieee__std_logic_1164__std_logic_vector__BASE[13]; + +PUBLIC CONSTANT work__top_ent__ARCH__default__foo_v__OT__STB : + ieee__std_logic_1164__std_logic_vector__BOUND; + +CONSTANT work__top_ent__ARCH__default__foo_v__OT__STB := {{0, 12, + __ghdl_dir_type'[dir_to], 13}}; + +PUBLIC CONSTANT work__top_ent__ARCH__default__g__ix__OT__STR : + std__standard__integer__BT__TRT; + +CONSTANT work__top_ent__ARCH__default__g__ix__OT__STR := {0, 4, + __ghdl_dir_type'[dir_to], 5}; + +TYPE work__top_ent__ARCH__default__g__INSTTYPE IS RECORD; + +TYPE work__top_ent__ARCH__default__g__INSTPTR IS ACCESS + work__top_ent__ARCH__default__g__INSTTYPE; + +TYPE work__top_ent__ARCH__default__g__INSTTYPE IS RECORD + ORIGIN: work__top_ent__ARCH__default__INSTPTR; + CONFIGURED: __ghdl_bool_type; + ix: std__standard__integer__BT; + foo_v__OT__SIZE: __ghdl_index_type; + foo_v__OT__STB: ieee__std_logic_1164__std_logic_vector__BOUND; + foo_v: ieee__std_logic_1164__std_logic_vector__BASEP; + inst: __ghdl_component_link_type; + inst2: __ghdl_component_link_type; +END RECORD; + +TYPE work__top_ent__ARCH__default__g__INSTARRTYPE IS ARRAY [__ghdl_index_type] + OF work__top_ent__ARCH__default__g__INSTTYPE; + +TYPE work__top_ent__ARCH__default__g__INSTARRPTR IS ACCESS + work__top_ent__ARCH__default__g__INSTARRTYPE; + +TYPE work__top_ent__ARCH__default__INSTTYPE IS RECORD + ENTITY: work__top_ent__INSTTYPE; + foo_v: work__top_ent__ARCH__default__foo_v__OT; + g: work__top_ent__ARCH__default__g__INSTARRPTR; +END RECORD; + +PUBLIC CONSTANT work__top_ent__ARCH__default__INSTSIZE : __ghdl_index_type; + +CONSTANT work__top_ent__ARCH__default__INSTSIZE := __ghdl_index_type'sizeof ( + work__top_ent__ARCH__default__INSTTYPE); + +PUBLIC PROCEDURE work__top_ent__ARCH__default__DECL_ELAB ( + INSTANCE: work__top_ent__INSTPTR); + +PUBLIC PROCEDURE work__top_ent__ARCH__default__STMT_ELAB ( + INSTANCE: work__top_ent__INSTPTR); + +PUBLIC CONSTANT work__top_ent__ARCH__default__RTI : __ghdl_rtin_block_file; + +PUBLIC CONSTANT work__top_ent__ARCH__default__foo_v__RTI : __ghdl_rtin_object; + +PUBLIC CONSTANT work__top_ent__ARCH__default__foo_v__OT__RTI : + __ghdl_rtin_subtype_composite; + +CONSTANT work__top_ent__ARCH__default__foo_v__OT__RTI := { + {__ghdl_rtik'[__ghdl_rtik_subtype_array], 0, 2, 0}, __ghdl_char_ptr'[NULL], + __ghdl_rti_access'unchecked_address ( + ieee__std_logic_1164__std_logic_vector__RTI), + __ghdl_ptr'unchecked_address (work__top_ent__ARCH__default__foo_v__OT__STB) + , __ghdl_ptr'sizeof (work__top_ent__ARCH__default__foo_v__OT), + __ghdl_ptr'[NULL]}; + +PRIVATE CONSTANT work__top_ent__ARCH__default__foo_v__RTISTR : SUBARRAY + __ghdl_chararray[6]; + +CONSTANT work__top_ent__ARCH__default__foo_v__RTISTR := {102, 111, 111, 95, + 118, 0}; + +CONSTANT work__top_ent__ARCH__default__foo_v__RTI := { + {__ghdl_rtik'[__ghdl_rtik_constant], 1, 0, 0}, + __ghdl_char_ptr'unchecked_address ( + work__top_ent__ARCH__default__foo_v__RTISTR), + __ghdl_ptr'offsetof (work__top_ent__ARCH__default__INSTTYPE.foo_v), + __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__foo_v__OT__RTI), 5393}; + +PUBLIC CONSTANT work__top_ent__ARCH__default__g__ITERATOR__RTI : + __ghdl_rtin_subtype_scalar; + +CONSTANT work__top_ent__ARCH__default__g__ITERATOR__RTI := { + {__ghdl_rtik'[__ghdl_rtik_subtype_scalar], 0, 0, 0}, __ghdl_char_ptr'[NULL], + __ghdl_rti_access'unchecked_address (std__standard__integer__BT__RTI), + __ghdl_ptr'unchecked_address (work__top_ent__ARCH__default__g__ix__OT__STR)} + ; + +PUBLIC CONSTANT work__top_ent__ARCH__default__g__RTI : __ghdl_rtin_generate; + +PUBLIC CONSTANT work__top_ent__ARCH__default__g__BOD__RTI : __ghdl_rtin_block; + +PUBLIC CONSTANT work__top_ent__ARCH__default__g__BOD__ix__RTI : + __ghdl_rtin_object; + +PRIVATE CONSTANT work__top_ent__ARCH__default__g__BOD__ix__RTISTR : SUBARRAY + __ghdl_chararray[3]; + +CONSTANT work__top_ent__ARCH__default__g__BOD__ix__RTISTR := {105, 120, 0}; + +CONSTANT work__top_ent__ARCH__default__g__BOD__ix__RTI := { + {__ghdl_rtik'[__ghdl_rtik_iterator], 3, 0, 0}, + __ghdl_char_ptr'unchecked_address ( + work__top_ent__ARCH__default__g__BOD__ix__RTISTR), + __ghdl_ptr'offsetof (work__top_ent__ARCH__default__g__INSTTYPE.ix), + __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__g__ITERATOR__RTI), 5904}; + +PUBLIC CONSTANT work__top_ent__ARCH__default__g__BOD__foo_v__RTI : + __ghdl_rtin_object; + +PUBLIC CONSTANT work__top_ent__ARCH__default__g__BOD__foo_v__OT__RTI : + __ghdl_rtin_subtype_composite; + +CONSTANT work__top_ent__ARCH__default__g__BOD__foo_v__OT__RTI := { + {__ghdl_rtik'[__ghdl_rtik_subtype_array], 3, 3, 3}, __ghdl_char_ptr'[NULL], + __ghdl_rti_access'unchecked_address ( + ieee__std_logic_1164__std_logic_vector__RTI), + __ghdl_ptr'offsetof (work__top_ent__ARCH__default__g__INSTTYPE. + foo_v__OT__STB), + __ghdl_ptr'offsetof (work__top_ent__ARCH__default__g__INSTTYPE. + foo_v__OT__SIZE), __ghdl_ptr'[NULL]}; + +PRIVATE CONSTANT work__top_ent__ARCH__default__g__BOD__foo_v__RTISTR : SUBARRAY + __ghdl_chararray[6]; + +CONSTANT work__top_ent__ARCH__default__g__BOD__foo_v__RTISTR := {102, 111, + 111, 95, 118, 0}; + +CONSTANT work__top_ent__ARCH__default__g__BOD__foo_v__RTI := { + {__ghdl_rtik'[__ghdl_rtik_constant], 3, 0, 0}, + __ghdl_char_ptr'unchecked_address ( + work__top_ent__ARCH__default__g__BOD__foo_v__RTISTR), + __ghdl_ptr'offsetof (work__top_ent__ARCH__default__g__INSTTYPE.foo_v), + __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__g__BOD__foo_v__OT__RTI), 6169}; + +PRIVATE CONSTANT work__top_ent__ARCH__default__g__BOD__inst__RTISTR : SUBARRAY + __ghdl_chararray[5]; + +CONSTANT work__top_ent__ARCH__default__g__BOD__inst__RTISTR := {105, 110, 115, + 116, 0}; + +PUBLIC CONSTANT work__top_ent__ARCH__default__g__BOD__inst__RTI : + __ghdl_rtin_instance; + +CONSTANT work__top_ent__ARCH__default__g__BOD__inst__RTI := { + {__ghdl_rtik'[__ghdl_rtik_instance], 3, 0, 0}, + __ghdl_char_ptr'address (work__top_ent__ARCH__default__g__BOD__inst__RTISTR) + , 6928, + __ghdl_ptr'offsetof (work__top_ent__ARCH__default__g__INSTTYPE.inst), + __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__g__BOD__RTI), + __ghdl_rti_access'unchecked_address (work__inc_ent__RTI)}; + +PRIVATE CONSTANT work__top_ent__ARCH__default__g__BOD__inst2__RTISTR : SUBARRAY + __ghdl_chararray[6]; + +CONSTANT work__top_ent__ARCH__default__g__BOD__inst2__RTISTR := {105, 110, + 115, 116, 50, 0}; + +PUBLIC CONSTANT work__top_ent__ARCH__default__g__BOD__inst2__RTI : + __ghdl_rtin_instance; + +CONSTANT work__top_ent__ARCH__default__g__BOD__inst2__RTI := { + {__ghdl_rtik'[__ghdl_rtik_instance], 3, 0, 0}, + __ghdl_char_ptr'address (work__top_ent__ARCH__default__g__BOD__inst2__RTISTR + ), 8208, + __ghdl_ptr'offsetof (work__top_ent__ARCH__default__g__INSTTYPE.inst2), + __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__g__BOD__RTI), + __ghdl_rti_access'unchecked_address (work__inc_ent__RTI)}; + +PRIVATE CONSTANT work__top_ent__ARCH__default__g__BOD__RTISTR : SUBARRAY + __ghdl_chararray[1]; + +CONSTANT work__top_ent__ARCH__default__g__BOD__RTISTR := {0}; + +PRIVATE CONSTANT work__top_ent__ARCH__default__g__BOD__RTIARRAY : SUBARRAY + __ghdl_rti_array[5]; + +CONSTANT work__top_ent__ARCH__default__g__BOD__RTIARRAY := + {__ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__g__BOD__ix__RTI), + __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__g__BOD__foo_v__RTI), + __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__g__BOD__inst__RTI), + __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__g__BOD__inst2__RTI), __ghdl_rti_access'[NULL]}; + +CONSTANT work__top_ent__ARCH__default__g__BOD__RTI := { + {__ghdl_rtik'[__ghdl_rtik_generate_body], 3, 0, 0}, + __ghdl_char_ptr'address (work__top_ent__ARCH__default__g__BOD__RTISTR), + __ghdl_ptr'[NULL], 6160, + __ghdl_rti_access'unchecked_address (work__top_ent__ARCH__default__g__RTI), + 4, + __ghdl_rti_arr_acc'address (work__top_ent__ARCH__default__g__BOD__RTIARRAY)} + ; + +PRIVATE CONSTANT work__top_ent__ARCH__default__g__RTISTR : SUBARRAY + __ghdl_chararray[2]; + +CONSTANT work__top_ent__ARCH__default__g__RTISTR := {103, 0}; + +CONSTANT work__top_ent__ARCH__default__g__RTI := { + {__ghdl_rtik'[__ghdl_rtik_for_generate], 2, 0, 0}, + __ghdl_char_ptr'address (work__top_ent__ARCH__default__g__RTISTR), + __ghdl_ptr'offsetof (work__top_ent__ARCH__default__INSTTYPE.g), 5896, + __ghdl_rti_access'unchecked_address (work__top_ent__ARCH__default__RTI), + __ghdl_index_type'sizeof (work__top_ent__ARCH__default__g__INSTTYPE), + __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__g__BOD__RTI)}; + +PRIVATE CONSTANT work__top_ent__ARCH__default__RTISTR : SUBARRAY + __ghdl_chararray[8]; + +CONSTANT work__top_ent__ARCH__default__RTISTR := {100, 101, 102, 97, 117, 108, + 116, 0}; + +PRIVATE CONSTANT work__top_ent__ARCH__default__RTIARRAY : SUBARRAY + __ghdl_rti_array[4]; + +CONSTANT work__top_ent__ARCH__default__RTIARRAY := + {__ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__foo_v__RTI), + __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__g__ITERATOR__RTI), + __ghdl_rti_access'unchecked_address (work__top_ent__ARCH__default__g__RTI), + __ghdl_rti_access'[NULL]}; + +CONSTANT work__top_ent__ARCH__default__RTI := {{ + {__ghdl_rtik'[__ghdl_rtik_architecture], 1, 0, 0}, + __ghdl_char_ptr'address (work__top_ent__ARCH__default__RTISTR), + __ghdl_ptr'offsetof (work__top_ent__ARCH__default__INSTTYPE.ENTITY), 5134, + __ghdl_rti_access'unchecked_address (work__top_ent__RTI), 3, + __ghdl_rti_arr_acc'address (work__top_ent__ARCH__default__RTIARRAY)}, + __ghdl_char_ptr'address (_UI00000000)}; + + +PRIVATE PROCEDURE work__top_ent__ARCH__default__g__inst__COMP_ELAB ( + INSTANCE: work__top_ent__ARCH__default__g__INSTPTR) +DECLARE + EXTERNAL CONSTANT work__inc_ent__LASTARCH__INSTSIZE : __ghdl_index_type; + EXTERNAL PROCEDURE work__inc_ent__LASTARCH__DECL_ELAB ( + INSTANCE: work__inc_ent__INSTPTR); + EXTERNAL PROCEDURE work__inc_ent__LASTARCH__STMT_ELAB ( + INSTANCE: work__inc_ent__INSTPTR); + EXTERNAL PROCEDURE work__inc_ent__LASTARCH__DEFAULT_CONFIG ( + INSTANCE: work__inc_ent__INSTPTR); + LOCAL VAR SUB_INSTANCE : work__inc_ent__INSTPTR; + LOCAL VAR U0__SIZE : __ghdl_index_type; + LOCAL VAR U0__STB : ieee__std_logic_1164__std_logic_vector__BOUND; +BEGIN + --# 27 + INSTANCE.ALL.inst.stmt := __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__g__BOD__inst__RTI); + SUB_INSTANCE := work__inc_ent__INSTPTR'conv (__ghdl_malloc0 ( + work__inc_ent__LASTARCH__INSTSIZE)); + INSTANCE.ALL.inst.INSTANCE := __ghdl_entity_link_acc'address (SUB_INSTANCE. + ALL.RTI); + SUB_INSTANCE.ALL.RTI.parent := __ghdl_component_link_acc'address (INSTANCE. + ALL.inst); + work__inc_ent__PKG_ELAB (); + SUB_INSTANCE.ALL.works := 0; + DECLARE + LOCAL VAR T2_0 : std__standard__integer__BT__TRPTR; + BEGIN + T2_0 := std__standard__integer__BT__TRPTR'address (U0__STB.dim_1); + T2_0.ALL.left := std__standard__integer__BT'conv ( + std__standard__integer__BT'[0]); + T2_0.ALL.right := std__standard__integer__BT'conv (INSTANCE.ALL.ix); + T2_0.ALL.dir := __ghdl_dir_type'[dir_to]; + DECLARE + LOCAL VAR T4_0 : __ghdl_index_type; + BEGIN + DECLARE + LOCAL VAR T5_0 : __ghdl_i32; + BEGIN + T5_0 := (__ghdl_i32'conv (T2_0.ALL.right) -# __ghdl_i32'conv (T2_0.ALL. + left)); + IF __ghdl_bool_type'(T5_0 < 0) THEN + T4_0 := 0; + ELSE + T4_0 := (__ghdl_index_type'conv (T5_0) +# 1); + END IF; + END; + T2_0.ALL.length := T4_0; + END; + END; + U0__SIZE := (U0__STB.dim_1.length *# __ghdl_index_type'sizeof ( + ieee__std_logic_1164__std_ulogic)); + DECLARE + LOCAL VAR T0_0 : ieee__std_logic_1164__std_logic_vector__PTR; + BEGIN + T0_0 := ieee__std_logic_1164__std_logic_vector__PTR'address (SUB_INSTANCE. + ALL.vec); + T0_0.ALL.BOUNDS := ieee__std_logic_1164__std_logic_vector__BOUNDP'address ( + U0__STB); + T0_0.ALL.BASE := ieee__std_logic_1164__std_logic_vector__BASEP'conv ( + __ghdl_malloc0 ((T0_0.ALL.BOUNDS.ALL.dim_1.length *# __ghdl_index_type + 'sizeof (ieee__std_logic_1164__std_ulogic)))); + DECLARE + LOCAL VAR T1_0 : ieee__std_logic_1164__std_logic_vector__BASEP; + LOCAL VAR T1_1 : ieee__std_logic_1164__std_logic_vector__BOUNDP; + LOCAL VAR T1_2 : __ghdl_index_type; + BEGIN + T1_0 := T0_0.ALL.BASE; + T1_1 := T0_0.ALL.BOUNDS; + DECLARE + LOCAL VAR T2_0 : std__standard__integer__BT__TRT; + BEGIN + T2_0.left := std__standard__integer__BT'conv ( + std__standard__integer__BT'[0]); + T2_0.right := std__standard__integer__BT'conv (INSTANCE.ALL.ix); + T2_0.dir := __ghdl_dir_type'[dir_to]; + DECLARE + LOCAL VAR T4_0 : __ghdl_index_type; + BEGIN + DECLARE + LOCAL VAR T5_0 : __ghdl_i32; + BEGIN + T5_0 := (__ghdl_i32'conv (T2_0.right) -# __ghdl_i32'conv (T2_0.left + )); + IF __ghdl_bool_type'(T5_0 < 0) THEN + T4_0 := 0; + ELSE + T4_0 := (__ghdl_index_type'conv (T5_0) +# 1); + END IF; + END; + T2_0.length := T4_0; + END; + IF __ghdl_bool_type'(T2_0.length /= T1_1.ALL.dim_1.length) THEN + __ghdl_bound_check_failed (__ghdl_char_ptr'address (_UI00000000), 30) + ; + END IF; + END; + T1_2 := 0; + DECLARE + LOCAL VAR T2_0 : __ghdl_index_type; + LOCAL VAR T2_1 : __ghdl_index_type; + LOCAL VAR T2_2 : __ghdl_index_type; + BEGIN + DECLARE + LOCAL VAR T3_0 : __ghdl_i32; + BEGIN + T3_0 := (__ghdl_i32'conv (INSTANCE.ALL.ix) -# __ghdl_i32'conv ( + std__standard__integer__BT'[0])); + IF __ghdl_bool_type'(T3_0 < 0) THEN + T2_0 := 0; + ELSE + T2_0 := (__ghdl_index_type'conv (T3_0) +# 1); + END IF; + END; + T2_1 := T2_0; + T2_2 := 0; + LOOP 1: + IF __ghdl_bool_type'(T2_2 = T2_1) THEN + EXIT LOOP 1; + END IF; + T1_0.ALL[T1_2] := ieee__std_logic_1164__std_ulogic'[C_1]; + T1_2 := (T1_2 +# 1); + T2_2 := (T2_2 +# 1); + END LOOP; + END; + END; + END; + work__inc_ent__LASTARCH__DECL_ELAB (SUB_INSTANCE); + work__inc_ent__LASTARCH__STMT_ELAB (SUB_INSTANCE); + work__inc_ent__LASTARCH__DEFAULT_CONFIG (work__inc_ent__INSTPTR'conv ( + SUB_INSTANCE)); +END; + + +PRIVATE PROCEDURE work__top_ent__ARCH__default__g__inst2__COMP_ELAB ( + INSTANCE: work__top_ent__ARCH__default__g__INSTPTR) +DECLARE + EXTERNAL CONSTANT work__inc_ent__LASTARCH__INSTSIZE : __ghdl_index_type; + EXTERNAL PROCEDURE work__inc_ent__LASTARCH__DECL_ELAB ( + INSTANCE: work__inc_ent__INSTPTR); + EXTERNAL PROCEDURE work__inc_ent__LASTARCH__STMT_ELAB ( + INSTANCE: work__inc_ent__INSTPTR); + EXTERNAL PROCEDURE work__inc_ent__LASTARCH__DEFAULT_CONFIG ( + INSTANCE: work__inc_ent__INSTPTR); + LOCAL VAR SUB_INSTANCE : work__inc_ent__INSTPTR; +BEGIN + --# 32 + INSTANCE.ALL.inst2.stmt := __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__g__BOD__inst2__RTI); + SUB_INSTANCE := work__inc_ent__INSTPTR'conv (__ghdl_malloc0 ( + work__inc_ent__LASTARCH__INSTSIZE)); + INSTANCE.ALL.inst2.INSTANCE := __ghdl_entity_link_acc'address (SUB_INSTANCE. + ALL.RTI); + SUB_INSTANCE.ALL.RTI.parent := __ghdl_component_link_acc'address (INSTANCE. + ALL.inst2); + work__inc_ent__PKG_ELAB (); + SUB_INSTANCE.ALL.works := 1; + DECLARE + LOCAL VAR T0_0 : ieee__std_logic_1164__std_logic_vector; + LOCAL VAR T0_1 : ieee__std_logic_1164__std_logic_vector__BASEP; + LOCAL VAR T0_2 : ieee__std_logic_1164__std_logic_vector__PTR; + LOCAL VAR T0_3 : ieee__std_logic_1164__std_logic_vector__PTR; + BEGIN + T0_1 := INSTANCE.ALL.foo_v; + T0_0.BASE := ieee__std_logic_1164__std_logic_vector__BASEP'conv (T0_1); + T0_0.BOUNDS := ieee__std_logic_1164__std_logic_vector__BOUNDP'address ( + INSTANCE.ALL.foo_v__OT__STB); + T0_2 := ieee__std_logic_1164__std_logic_vector__PTR'address (SUB_INSTANCE. + ALL.vec); + T0_3 := ieee__std_logic_1164__std_logic_vector__PTR'address (T0_0); + T0_2.ALL.BOUNDS := ieee__std_logic_1164__std_logic_vector__BOUNDP'conv ( + __ghdl_malloc0 (__ghdl_index_type'sizeof ( + ieee__std_logic_1164__std_logic_vector__BOUND))); + __ghdl_memcpy (__ghdl_ptr'conv (T0_2.ALL.BOUNDS), __ghdl_ptr'conv (T0_3.ALL + .BOUNDS), __ghdl_index_type'sizeof ( + ieee__std_logic_1164__std_logic_vector__BOUND)); + T0_2.ALL.BASE := ieee__std_logic_1164__std_logic_vector__BASEP'conv ( + __ghdl_malloc0 ((T0_2.ALL.BOUNDS.ALL.dim_1.length *# __ghdl_index_type + 'sizeof (ieee__std_logic_1164__std_ulogic)))); + __ghdl_memcpy (__ghdl_ptr'conv (T0_2.ALL.BASE), __ghdl_ptr'conv (T0_3.ALL. + BASE), (T0_2.ALL.BOUNDS.ALL.dim_1.length *# __ghdl_index_type'sizeof ( + ieee__std_logic_1164__std_ulogic))); + END; + work__inc_ent__LASTARCH__DECL_ELAB (SUB_INSTANCE); + work__inc_ent__LASTARCH__STMT_ELAB (SUB_INSTANCE); + work__inc_ent__LASTARCH__DEFAULT_CONFIG (work__inc_ent__INSTPTR'conv ( + SUB_INSTANCE)); +END; + +PUBLIC PROCEDURE work__top_ent__ARCH__default__DECL_ELAB ( + INSTANCE: work__top_ent__INSTPTR) +DECLARE + LOCAL VAR ARCH_INSTANCE : work__top_ent__ARCH__default__INSTPTR; +BEGIN + ARCH_INSTANCE := work__top_ent__ARCH__default__INSTPTR'conv (INSTANCE); + INSTANCE.ALL.RTI.rti := __ghdl_rti_access'unchecked_address ( + work__top_ent__ARCH__default__RTI); + work__top_ent__DECL_ELAB (INSTANCE); + --# 20 + --# 20 + --# 21 + DECLARE + LOCAL VAR T1_0 : ieee__std_logic_1164__std_logic_vector__BASEP; + LOCAL VAR T1_1 : __ghdl_index_type; + LOCAL VAR T1_2 : __ghdl_index_type; + BEGIN + T1_0 := ieee__std_logic_1164__std_logic_vector__BASEP'address ( + ARCH_INSTANCE.ALL.foo_v); + T1_1 := 13; + T1_2 := 0; + LOOP 1: + IF __ghdl_bool_type'(T1_2 = T1_1) THEN + EXIT LOOP 1; + END IF; + T1_0.ALL[T1_2] := ieee__std_logic_1164__std_ulogic'[C_1]; + T1_2 := (T1_2 +# 1); + END LOOP; + END; + DECLARE + LOCAL VAR T0_0 : std__standard__integer__BT__TRPTR; + LOCAL VAR T0_1 : work__top_ent__ARCH__default__g__INSTARRPTR; + LOCAL VAR T0_2 : __ghdl_index_type; + LOCAL VAR T0_3 : work__top_ent__ARCH__default__g__INSTPTR; + LOCAL VAR T0_4 : std__standard__integer__BT; + BEGIN + T0_0 := std__standard__integer__BT__TRPTR'address ( + work__top_ent__ARCH__default__g__ix__OT__STR); + T0_1 := work__top_ent__ARCH__default__g__INSTARRPTR'conv (__ghdl_malloc0 (( + T0_0.ALL.length *# __ghdl_index_type'sizeof ( + work__top_ent__ARCH__default__g__INSTTYPE)))); + ARCH_INSTANCE.ALL.g := T0_1; + T0_2 := 0; + LOOP 1: + IF __ghdl_bool_type'(T0_2 = T0_0.ALL.length) THEN + EXIT LOOP 1; + END IF; + T0_3 := work__top_ent__ARCH__default__g__INSTPTR'address (T0_1.ALL[T0_2]) + ; + T0_3.ALL.ORIGIN := ARCH_INSTANCE; + T0_3.ALL.CONFIGURED := __ghdl_bool_type'[false]; + IF __ghdl_bool_type'(T0_0.ALL.dir = __ghdl_dir_type'[dir_to]) THEN + T0_4 := T0_0.ALL.left; + ELSE + T0_4 := T0_0.ALL.right; + END IF; + T0_3.ALL.ix := (T0_4 +# std__standard__integer__BT'conv (T0_2)); + --# 24 + --# 24 + DECLARE + LOCAL VAR T3_0 : std__standard__integer__BT__TRPTR; + BEGIN + T3_0 := std__standard__integer__BT__TRPTR'address (T0_3.ALL. + foo_v__OT__STB.dim_1); + T3_0.ALL.left := std__standard__integer__BT'conv ( + std__standard__integer__BT'[0]); + T3_0.ALL.right := std__standard__integer__BT'conv (T0_3.ALL.ix); + T3_0.ALL.dir := __ghdl_dir_type'[dir_to]; + DECLARE + LOCAL VAR T5_0 : __ghdl_index_type; + BEGIN + DECLARE + LOCAL VAR T6_0 : __ghdl_i32; + BEGIN + T6_0 := (__ghdl_i32'conv (T3_0.ALL.right) -# __ghdl_i32'conv (T3_0. + ALL.left)); + IF __ghdl_bool_type'(T6_0 < 0) THEN + T5_0 := 0; + ELSE + T5_0 := (__ghdl_index_type'conv (T6_0) +# 1); + END IF; + END; + T3_0.ALL.length := T5_0; + END; + END; + T0_3.ALL.foo_v__OT__SIZE := (T0_3.ALL.foo_v__OT__STB.dim_1.length *# + __ghdl_index_type'sizeof (ieee__std_logic_1164__std_ulogic)); + T0_3.ALL.foo_v := ieee__std_logic_1164__std_logic_vector__BASEP'conv ( + __ghdl_malloc0 (T0_3.ALL.foo_v__OT__SIZE)); + DECLARE + LOCAL VAR T2_0 : ieee__std_logic_1164__std_logic_vector__BASEP; + LOCAL VAR T2_1 : __ghdl_index_type; + LOCAL VAR T2_2 : __ghdl_index_type; + BEGIN + T2_0 := T0_3.ALL.foo_v; + T2_1 := T0_3.ALL.foo_v__OT__STB.dim_1.length; + T2_2 := 0; + LOOP 2: + IF __ghdl_bool_type'(T2_2 = T2_1) THEN + EXIT LOOP 2; + END IF; + T2_0.ALL[T2_2] := ieee__std_logic_1164__std_ulogic'[C_1]; + T2_2 := (T2_2 +# 1); + END LOOP; + END; + work__top_ent__ARCH__default__g__inst__COMP_ELAB (T0_3); + work__top_ent__ARCH__default__g__inst2__COMP_ELAB (T0_3); + T0_2 := (T0_2 +# 1); + END LOOP; + END; +END; + +PUBLIC PROCEDURE work__top_ent__ARCH__default__STMT_ELAB ( + INSTANCE: work__top_ent__INSTPTR) +DECLARE + LOCAL VAR ARCH_INSTANCE : work__top_ent__ARCH__default__INSTPTR; +BEGIN + ARCH_INSTANCE := work__top_ent__ARCH__default__INSTPTR'conv (INSTANCE); + work__top_ent__STMT_ELAB (INSTANCE); + --# 20 + DECLARE + LOCAL VAR T0_0 : work__top_ent__ARCH__default__g__INSTARRPTR; + LOCAL VAR T0_1 : __ghdl_index_type; + LOCAL VAR T0_2 : __ghdl_index_type; + LOCAL VAR T0_3 : work__top_ent__ARCH__default__g__INSTPTR; + BEGIN + T0_0 := ARCH_INSTANCE.ALL.g; + T0_1 := work__top_ent__ARCH__default__g__ix__OT__STR.length; + T0_2 := 0; + LOOP 1: + IF __ghdl_bool_type'(T0_2 = T0_1) THEN + EXIT LOOP 1; + END IF; + T0_3 := work__top_ent__ARCH__default__g__INSTPTR'address (T0_0.ALL[T0_2]) + ; + T0_2 := (T0_2 +# 1); + END LOOP; + END; +END; + diff --git a/testsuite/gna/issue626/top.vhdl b/testsuite/gna/issue626/top.vhdl new file mode 100644 index 000000000..8deea15f6 --- /dev/null +++ b/testsuite/gna/issue626/top.vhdl @@ -0,0 +1,38 @@ +library ieee; +use ieee.std_logic_1164.all; + +entity inc_ent is + generic ( + works : integer; + vec : std_logic_vector); +end entity; + +architecture default of inc_ent is +begin + assert false report integer'image(works) & " " & integer'image(vec'length); +end architecture; + +library ieee; +use ieee.std_logic_1164.all; + +entity top_ent is end entity; + +architecture default of top_ent is + constant foo_v : std_logic_vector(0 to 12) := (others => '1'); +begin + g : for ix in 0 to 4 generate + constant foo_v : std_logic_vector(0 to ix) := (others => '1'); + begin + + inst : entity work.inc_ent + generic map ( + works => 0, + vec => (0 to ix => '1') + ); + inst2 : entity work.inc_ent + generic map ( + works => 1, + vec => foo_v + ); + end generate; +end architecture; |