aboutsummaryrefslogtreecommitdiffstats
path: root/misc/yosysjs/yosysjs.js
blob: ea98c9b51704d3f03fd4abd9d1a750a1be394b64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
var YosysJS = new function() {
	this.script_element = document.currentScript;
	this.viz_element = undefined;
	this.viz_ready = true;

	this.url_prefix = this.script_element.src.replace(/[^/]+$/, '')

	this.load_viz = function() {
		if (this.viz_element)
			return;

		this.viz_element = document.createElement('iframe')
		this.viz_element.style.display = 'none'
		document.body.appendChild(this.viz_element);

		this.viz_element.contentWindow.document.open();
		this.viz_element.contentWindow.document.write('<script type="text/javascript" onload="viz_ready = true;" src="' + this.url_prefix + 'viz.js"></' + 'script>');
		this.viz_element.contentWindow.document.close();

		var that = this;
		function check_viz_ready() {
			if (that.viz_element.contentWindow.viz_ready) {
				console.log("YosysJS: Successfully loaded Viz.");
				that.viz_ready = true;
			} else
				window.setTimeout(check_viz_ready, 100);
		}

		this.viz_ready = false;
		window.setTimeout(check_viz_ready, 100);
	}

	this.dot_to_svg = function(dot_text) {
		return this.viz_element.contentWindow.Viz(dot_text, "svg");
	}

	this.dot_into_svg = function(dot_text, svg_element) {
		if (typeof(svg_element) == 'string' && svg_element != "")
			svg_element = document.getElementById(svg_element);
		svg_element.innerHTML = this.dot_to_svg(dot_text);
		c = svg_element.firstChild;
		while (c) {
			if (c.tagName == 'svg') {
				while (c.firstChild)
					svg_element.appendChild(c.firstChild);
				svg_element.setAttribute('viewBox', c.getAttribute('viewBox'));
				// svg_element.removeChild(c);
				break;
			}
			c = c.nextSibling;
		}
	}

	this.create = function(reference_element, on_ready) {
		var ys = new Object();
		ys.YosysJS = this;
		ys.init_script = "";
		ys.ready = false;
		ys.verbose = false;
		ys.logprint = false;
		ys.echo = false;
		ys.errmsg = "";

		if (typeof(reference_element) == 'string' && reference_element != "")
			reference_element = document.getElementById(reference_element);

		if (reference_element) {
			if (reference_element.tagName == 'textarea')
				ys.init_script = reference_element.value;

			if (reference_element.tagName == 'iframe') {
				ys.iframe_element = reference_element;
			} else {
				ys.iframe_element = document.createElement('iframe');
				ys.iframe_element.id = reference_element.id;
				for (i in reference_element.style)
					ys.iframe_element.style[i] = reference_element.style[i];
				reference_element.parentNode.insertBefore(ys.iframe_element, reference_element);
				reference_element.parentNode.removeChild(reference_element);
			}
		} else {
			ys.iframe_element = document.createElement('iframe');
			ys.iframe_element.style.display = 'none';
			document.body.appendChild(ys.iframe_element);
		}

		ys.print_buffer = "";
		ys.last_line_empty = false;
		ys.got_normal_log_message = false;
		ys.window = ys.iframe_element.contentWindow;

		var doc = ys.window.document;
		var mod = ys.window.Module = {
			print: function(text) {
				if (typeof(text) == 'number')
					return;
				ys.print_buffer += text + "\n";
				ys.got_normal_log_message = true;
				if (ys.logprint)
					console.log(text);
				if (ys.verbose) {
					ys.last_line_empty = text == "";
					if (text == "") {
						span = doc.createElement('br');
					} else {
						span = doc.createElement('span');
						span.textContent = text + "\n";
						span.style.fontFamily = 'monospace';
						span.style.whiteSpace = 'pre';
					}
					doc.firstChild.appendChild(span);
					if (doc.body)
						ys.window.scrollTo(0, doc.body.scrollHeight);
					else
						ys.window.scrollBy(0, 100);
				}
				ys.ready = true;
			},
			printErr: function(text) {
				if (typeof(text) == 'number')
					return;
				if (ys.logprint)
					console.log(text);
				if (ys.got_normal_log_message) {
					ys.print_buffer += text + "\n";
					ys.last_line_empty = text == "";
					if (text == "") {
						span = doc.createElement('br');
					} else {
						span = doc.createElement('span');
						span.textContent = text + "\n";
						span.style.fontFamily = 'monospace';
						span.style.whiteSpace = 'pre';
						span.style.color = 'red';
					}
					doc.firstChild.appendChild(span);
					if (doc.body)
						ys.window.scrollTo(0, doc.body.scrollHeight);
					else
						ys.window.scrollBy(0, 100);
				} else
				if (!ys.logprint)
					console.log(text);
			},
		};

		ys.write = function(text) {
			ys.print_buffer += text + "\n";
			ys.last_line_empty = text == "";
			span = doc.createElement('span');
			span.textContent = text + "\n";
			span.style.fontFamily = 'monospace';
			span.style.whiteSpace = 'pre';
			doc.firstChild.appendChild(span);
			if (doc.body)
				ys.window.scrollTo(0, doc.body.scrollHeight);
			else
				ys.window.scrollBy(0, 100);
		}

		ys.prompt = function() {
			return mod.ccall('prompt', 'string', [], [])
		}

		ys.run = function(cmd) {
			ys.print_buffer = "";
			if (ys.echo) {
				if (!ys.last_line_empty)
					ys.write("");
				ys.write(ys.prompt() + cmd);
			}
			try {
				mod.ccall('run', '', ['string'], [cmd]);
			} catch (e) {
				ys.errmsg = mod.ccall('errmsg', 'string', [], []);
			}
			return ys.print_buffer;
		}

		ys.read_file = function(filename) {
			try {
				return ys.window.FS.readFile(filename, {encoding: 'utf8'});
			} catch (e) {
				return "";
			}
		}

		ys.write_file = function(filename, text) {
			return ys.window.FS.writeFile(filename, text, {encoding: 'utf8'});
		}

		ys.read_dir = function(dirname) {
			return ys.window.FS.readdir(dirname);
		}

		ys.remove_file = function(filename) {
			try {
				ys.window.FS.unlink(filename);
			} catch (e) { }
		}

		doc.open();
		doc.write('<script type="text/javascript" src="' + this.url_prefix + 'yosys.js"></' + 'script>');
		doc.close();

		if (on_ready || ys.init_script) {
			function check_ready() {
				if (ys.ready && ys.YosysJS.viz_ready) {
					if (ys.init_script) {
						ys.write_file("/script.ys", ys.init_script);
						ys.run("script /script.ys");
					}
					if (on_ready)
						on_ready(ys);
				} else
					window.setTimeout(check_ready, 100);
			}
			window.setTimeout(check_ready, 100);
		}

		return ys;
	}

	this.create_worker = function(on_ready) {
		var ys = new Object();
		ys.YosysJS = this;
		ys.worker = new Worker(this.url_prefix + 'yosyswrk.js');
		ys.callback_idx = 1;
		ys.callback_cache = {};
		ys.errmsg = "";

		ys.callback_cache[0] = on_ready;
		on_ready = null;

		ys.worker.onmessage = function(e) {
			var response = e.data[0];
			var callback = ys.callback_cache[response.idx];
			delete ys.callback_cache[response.idx];
			if ("errmsg" in response) ys.errmsg = response.errmsg;
			if (callback) callback.apply(null, response.args);
		}

		ys.run = function(cmd, callback) {
			var request = {
				"idx": ys.callback_idx,
				"mode": "run",
				"cmd": cmd
			};

			ys.callback_cache[ys.callback_idx++] = callback;
			ys.worker.postMessage([request]);
		}

		ys.read_file = function(filename, callback) {
			var request = {
				"idx": ys.callback_idx,
				"mode": "read_file",
				"filename": filename
			};

			ys.callback_cache[ys.callback_idx++] = callback;
			ys.worker.postMessage([request]);
		}

		ys.write_file = function(filename, text, callback) {
			var request = {
				"idx": ys.callback_idx,
				"mode": "write_file",
				"filename": filename,
				"text": text
			};

			ys.callback_cache[ys.callback_idx++] = callback;
			ys.worker.postMessage([request]);
		}

		ys.read_dir = function(dirname, callback) {
			var request = {
				"idx": ys.callback_idx,
				"mode": "read_dir",
				"dirname": dirname
			};

			ys.callback_cache[ys.callback_idx++] = callback;
			ys.worker.postMessage([request]);
		}

		ys.remove_file = function(filename, callback) {
			var request = {
				"idx": ys.callback_idx,
				"mode": "remove_file",
				"filename": filename
			};

			ys.callback_cache[ys.callback_idx++] = callback;
			ys.worker.postMessage([request]);
		}

		ys.verbose = function(value, callback) {
			var request = {
				"idx": ys.callback_idx,
				"mode": "verbose",
				"value": value
			};

			ys.callback_cache[ys.callback_idx++] = callback;
			ys.worker.postMessage([request]);
		}

		return ys;
	}
}
rate_Block_Configuration, Field_Generate_Statement_Body, Field_Alternative_Label, Field_Generate_Else_Clause, Field_Condition, Field_Else_Clause, Field_Parameter_Specification, Field_Parent, Field_Loop_Label, Field_Exit_Flag, Field_Next_Flag, Field_Component_Name, Field_Instantiation_List, Field_Entity_Aspect, Field_Default_Entity_Aspect, Field_Binding_Indication, Field_Named_Entity, Field_Referenced_Name, Field_Expr_Staticness, Field_Scalar_Size, Field_Error_Origin, Field_Operand, Field_Left, Field_Right, Field_Unit_Name, Field_Name, Field_Group_Template_Name, Field_Name_Staticness, Field_Prefix, Field_Signature_Prefix, Field_External_Pathname, Field_Pathname_Suffix, Field_Pathname_Expression, Field_In_Formal_Flag, Field_Inertial_Flag, Field_Slice_Subtype, Field_Suffix, Field_Index_Subtype, Field_Parameter, Field_Parameter_2, Field_Parameter_3, Field_Parameter_4, Field_Attr_Chain, Field_Attribute_Implicit_Declaration, Field_Actual_Type, Field_Actual_Type_Definition, Field_Association_Chain, Field_Individual_Association_Chain, Field_Subprogram_Association_Chain, Field_Aggregate_Info, Field_Sub_Aggregate_Info, Field_Aggr_Dynamic_Flag, Field_Aggr_Min_Length, Field_Aggr_Low_Limit, Field_Aggr_High_Limit, Field_Aggr_Others_Flag, Field_Aggr_Named_Flag, Field_Aggregate_Expand_Flag, Field_Determined_Aggregate_Flag, Field_Association_Choices_Chain, Field_Case_Statement_Alternative_Chain, Field_Matching_Flag, Field_Choice_Staticness, Field_Procedure_Call, Field_Implementation, Field_Parameter_Association_Chain, Field_Method_Object, Field_Subtype_Type_Mark, Field_Subnature_Nature_Mark, Field_Type_Conversion_Subtype, Field_Type_Mark, Field_File_Type_Mark, Field_Return_Type_Mark, Field_Has_Disconnect_Flag, Field_Has_Active_Flag, Field_Is_Within_Flag, Field_Type_Marks_List, Field_Implicit_Alias_Flag, Field_Alias_Signature, Field_Attribute_Signature, Field_Overload_List, Field_Simple_Name_Identifier, Field_Simple_Name_Subtype, Field_Protected_Type_Body, Field_Protected_Type_Declaration, Field_Use_Flag, Field_Elaborated_Flag, Field_End_Has_Reserved_Id, Field_End_Has_Identifier, Field_End_Has_Postponed, Field_Has_Label, Field_Has_Begin, Field_Has_End, Field_Has_Is, Field_Has_Pure, Field_Has_Body, Field_Has_Parameter, Field_Has_Component, Field_Has_Identifier_List, Field_Has_Mode, Field_Has_Class, Field_Has_Delay_Mechanism, Field_Suspend_Flag, Field_Stop_Flag, Field_Is_Ref, Field_Is_Forward_Ref, Field_Psl_Property, Field_Psl_Sequence, Field_Psl_Declaration, Field_Psl_Expression, Field_Psl_Boolean, Field_PSL_Clock, Field_PSL_NFA, Field_PSL_Nbr_States, Field_PSL_Clock_Sensitivity, Field_PSL_EOS_Flag, Field_PSL_Abort_Flag, Field_Count_Expression, Field_Clock_Expression, Field_Default_Clock, Field_Foreign_Node, Field_Suspend_State_Index, Field_Suspend_State_Chain, Field_Suspend_State_Last, Field_Suspend_State_Decl ); pragma Discard_Names (Fields_Enum); -- Return the type of field F. function Get_Field_Type (F : Fields_Enum) return Types_Enum; -- Get the name of a field. function Get_Field_Image (F : Fields_Enum) return String; -- Get the name of a kind. function Get_Iir_Image (K : Iir_Kind) return String; -- Possible attributes of a field. type Field_Attribute is ( Attr_None, Attr_Chain, Attr_Chain_Next, Attr_Forward_Ref, Attr_Maybe_Forward_Ref, Attr_Maybe_Ref, Attr_Of_Maybe_Ref, Attr_Of_Ref, Attr_Ref ); -- Get the attribute of a field. function Get_Field_Attribute (F : Fields_Enum) return Field_Attribute; type Fields_Index_Extended is new Int32; subtype Fields_Index is Fields_Index_Extended range 0 .. Fields_Index_Extended'Last; type Fields_Array is array (Fields_Index range <>) of Fields_Enum; -- Return the list of fields for node K. The fields are sorted: first -- the non nodes/list of nodes, then the nodes/lists that aren't reference, -- and then the reference. function Get_Fields (K : Iir_Kind) return Fields_Array; -- Likewise, but without using arrays (for interfacing with C). function Get_Fields_First (K : Iir_Kind) return Fields_Index; function Get_Fields_Last (K : Iir_Kind) return Fields_Index; function Get_Field_By_Index (Idx : Fields_Index) return Fields_Enum; -- Get/Set a field. function Get_Boolean (N : Iir; F : Fields_Enum) return Boolean; procedure Set_Boolean (N : Iir; F : Fields_Enum; V: Boolean); function Get_Date_State_Type (N : Iir; F : Fields_Enum) return Date_State_Type; procedure Set_Date_State_Type (N : Iir; F : Fields_Enum; V: Date_State_Type); function Get_Date_Type (N : Iir; F : Fields_Enum) return Date_Type; procedure Set_Date_Type (N : Iir; F : Fields_Enum; V: Date_Type); function Get_Direction_Type (N : Iir; F : Fields_Enum) return Direction_Type; procedure Set_Direction_Type (N : Iir; F : Fields_Enum; V: Direction_Type); function Get_File_Checksum_Id (N : Iir; F : Fields_Enum) return File_Checksum_Id; procedure Set_File_Checksum_Id (N : Iir; F : Fields_Enum; V: File_Checksum_Id); function Get_Fp64 (N : Iir; F : Fields_Enum) return Fp64; procedure Set_Fp64 (N : Iir; F : Fields_Enum; V: Fp64); function Get_Iir (N : Iir; F : Fields_Enum) return Iir; procedure Set_Iir (N : Iir; F : Fields_Enum; V: Iir); function Get_Iir_All_Sensitized (N : Iir; F : Fields_Enum) return Iir_All_Sensitized; procedure Set_Iir_All_Sensitized (N : Iir; F : Fields_Enum; V: Iir_All_Sensitized); function Get_Iir_Constraint (N : Iir; F : Fields_Enum) return Iir_Constraint; procedure Set_Iir_Constraint (N : Iir; F : Fields_Enum; V: Iir_Constraint); function Get_Iir_Delay_Mechanism (N : Iir; F : Fields_Enum) return Iir_Delay_Mechanism; procedure Set_Iir_Delay_Mechanism (N : Iir; F : Fields_Enum; V: Iir_Delay_Mechanism); function Get_Iir_Flist (N : Iir; F : Fields_Enum) return Iir_Flist; procedure Set_Iir_Flist (N : Iir; F : Fields_Enum; V: Iir_Flist); function Get_Iir_Force_Mode (N : Iir; F : Fields_Enum) return Iir_Force_Mode; procedure Set_Iir_Force_Mode (N : Iir; F : Fields_Enum; V: Iir_Force_Mode); function Get_Iir_Index32 (N : Iir; F : Fields_Enum) return Iir_Index32; procedure Set_Iir_Index32 (N : Iir; F : Fields_Enum; V: Iir_Index32); function Get_Iir_Int32 (N : Iir; F : Fields_Enum) return Iir_Int32; procedure Set_Iir_Int32 (N : Iir; F : Fields_Enum; V: Iir_Int32); function Get_Iir_List (N : Iir; F : Fields_Enum) return Iir_List; procedure Set_Iir_List (N : Iir; F : Fields_Enum; V: Iir_List); function Get_Iir_Mode (N : Iir; F : Fields_Enum) return Iir_Mode; procedure Set_Iir_Mode (N : Iir; F : Fields_Enum; V: Iir_Mode); function Get_Iir_Predefined_Functions (N : Iir; F : Fields_Enum) return Iir_Predefined_Functions; procedure Set_Iir_Predefined_Functions (N : Iir; F : Fields_Enum; V: Iir_Predefined_Functions); function Get_Iir_Pure_State (N : Iir; F : Fields_Enum) return Iir_Pure_State; procedure Set_Iir_Pure_State (N : Iir; F : Fields_Enum; V: Iir_Pure_State); function Get_Iir_Signal_Kind (N : Iir; F : Fields_Enum) return Iir_Signal_Kind; procedure Set_Iir_Signal_Kind (N : Iir; F : Fields_Enum; V: Iir_Signal_Kind); function Get_Iir_Staticness (N : Iir; F : Fields_Enum) return Iir_Staticness; procedure Set_Iir_Staticness (N : Iir; F : Fields_Enum; V: Iir_Staticness); function Get_Int32 (N : Iir; F : Fields_Enum) return Int32; procedure Set_Int32 (N : Iir; F : Fields_Enum; V: Int32); function Get_Int64 (N : Iir; F : Fields_Enum) return Int64; procedure Set_Int64 (N : Iir; F : Fields_Enum; V: Int64); function Get_Name_Id (N : Iir; F : Fields_Enum) return Name_Id; procedure Set_Name_Id (N : Iir; F : Fields_Enum; V: Name_Id); function Get_Number_Base_Type (N : Iir; F : Fields_Enum) return Number_Base_Type; procedure Set_Number_Base_Type (N : Iir; F : Fields_Enum; V: Number_Base_Type); function Get_PSL_NFA (N : Iir; F : Fields_Enum) return PSL_NFA; procedure Set_PSL_NFA (N : Iir; F : Fields_Enum; V: PSL_NFA); function Get_PSL_Node (N : Iir; F : Fields_Enum) return PSL_Node; procedure Set_PSL_Node (N : Iir; F : Fields_Enum; V: PSL_Node); function Get_Scalar_Size (N : Iir; F : Fields_Enum) return Scalar_Size; procedure Set_Scalar_Size (N : Iir; F : Fields_Enum; V: Scalar_Size); function Get_Source_File_Entry (N : Iir; F : Fields_Enum) return Source_File_Entry; procedure Set_Source_File_Entry (N : Iir; F : Fields_Enum; V: Source_File_Entry); function Get_Source_Ptr (N : Iir; F : Fields_Enum) return Source_Ptr; procedure Set_Source_Ptr (N : Iir; F : Fields_Enum; V: Source_Ptr); function Get_String8_Id (N : Iir; F : Fields_Enum) return String8_Id; procedure Set_String8_Id (N : Iir; F : Fields_Enum; V: String8_Id); function Get_Time_Stamp_Id (N : Iir; F : Fields_Enum) return Time_Stamp_Id; procedure Set_Time_Stamp_Id (N : Iir; F : Fields_Enum; V: Time_Stamp_Id); function Get_Token_Type (N : Iir; F : Fields_Enum) return Token_Type; procedure Set_Token_Type (N : Iir; F : Fields_Enum; V: Token_Type); function Get_Tri_State_Type (N : Iir; F : Fields_Enum) return Tri_State_Type; procedure Set_Tri_State_Type (N : Iir; F : Fields_Enum; V: Tri_State_Type); function Has_First_Design_Unit (K : Iir_Kind) return Boolean; function Has_Last_Design_Unit (K : Iir_Kind) return Boolean; function Has_Library_Declaration (K : Iir_Kind) return Boolean; function Has_File_Checksum (K : Iir_Kind) return Boolean; function Has_Analysis_Time_Stamp (K : Iir_Kind) return Boolean; function Has_Design_File_Source (K : Iir_Kind) return Boolean; function Has_Library (K : Iir_Kind) return Boolean; function Has_Design_File_Filename (K : Iir_Kind) return Boolean; function Has_Design_File_Directory (K : Iir_Kind) return Boolean; function Has_Design_File (K : Iir_Kind) return Boolean; function Has_Design_File_Chain (K : Iir_Kind) return Boolean; function Has_Library_Directory (K : Iir_Kind) return Boolean; function Has_Date (K : Iir_Kind) return Boolean; function Has_Context_Items (K : Iir_Kind) return Boolean; function Has_Dependence_List (K : Iir_Kind) return Boolean; function Has_Analysis_Checks_List (K : Iir_Kind) return Boolean; function Has_Date_State (K : Iir_Kind) return Boolean; function Has_Guarded_Target_State (K : Iir_Kind) return Boolean; function Has_Library_Unit (K : Iir_Kind) return Boolean; function Has_Hash_Chain (K : Iir_Kind) return Boolean; function Has_Design_Unit_Source_Pos (K : Iir_Kind) return Boolean; function Has_Design_Unit_Source_Line (K : Iir_Kind) return Boolean; function Has_Design_Unit_Source_Col (K : Iir_Kind) return Boolean; function Has_Value (K : Iir_Kind) return Boolean; function Has_Enum_Pos (K : Iir_Kind) return Boolean; function Has_Physical_Literal (K : Iir_Kind) return Boolean; function Has_Fp_Value (K : Iir_Kind) return Boolean; function Has_Simple_Aggregate_List (K : Iir_Kind) return Boolean; function Has_String8_Id (K : Iir_Kind) return Boolean; function Has_String_Length (K : Iir_Kind) return Boolean; function Has_Bit_String_Base (K : Iir_Kind) return Boolean; function Has_Has_Signed (K : Iir_Kind) return Boolean; function Has_Has_Sign (K : Iir_Kind) return Boolean; function Has_Has_Length (K : Iir_Kind) return Boolean; function Has_Literal_Length (K : Iir_Kind) return Boolean; function Has_Literal_Origin (K : Iir_Kind) return Boolean; function Has_Range_Origin (K : Iir_Kind) return Boolean; function Has_Literal_Subtype (K : Iir_Kind) return Boolean; function Has_Allocator_Subtype (K : Iir_Kind) return Boolean; function Has_Entity_Class (K : Iir_Kind) return Boolean; function Has_Entity_Name_List (K : Iir_Kind) return Boolean; function Has_Attribute_Designator (K : Iir_Kind) return Boolean; function Has_Attribute_Specification_Chain (K : Iir_Kind) return Boolean; function Has_Attribute_Specification (K : Iir_Kind) return Boolean; function Has_Static_Attribute_Flag (K : Iir_Kind) return Boolean; function Has_Signal_List (K : Iir_Kind) return Boolean; function Has_Quantity_List (K : Iir_Kind) return Boolean; function Has_Designated_Entity (K : Iir_Kind) return Boolean; function Has_Formal (K : Iir_Kind) return Boolean; function Has_Actual (K : Iir_Kind) return Boolean; function Has_Open_Actual (K : Iir_Kind) return Boolean; function Has_Actual_Conversion (K : Iir_Kind) return Boolean; function Has_Formal_Conversion (K : Iir_Kind) return Boolean; function Has_Whole_Association_Flag (K : Iir_Kind) return Boolean; function Has_Collapse_Signal_Flag (K : Iir_Kind) return Boolean; function Has_Artificial_Flag (K : Iir_Kind) return Boolean; function Has_Open_Flag (K : Iir_Kind) return Boolean; function Has_After_Drivers_Flag (K : Iir_Kind) return Boolean; function Has_We_Value (K : Iir_Kind) return Boolean; function Has_Time (K : Iir_Kind) return Boolean; function Has_Associated_Expr (K : Iir_Kind) return Boolean; function Has_Associated_Block (K : Iir_Kind) return Boolean; function Has_Associated_Chain (K : Iir_Kind) return Boolean; function Has_Choice_Name (K : Iir_Kind) return Boolean; function Has_Choice_Expression (K : Iir_Kind) return Boolean; function Has_Choice_Range (K : Iir_Kind) return Boolean; function Has_Same_Alternative_Flag (K : Iir_Kind) return Boolean; function Has_Element_Type_Flag (K : Iir_Kind) return Boolean; function Has_Architecture (K : Iir_Kind) return Boolean; function Has_Block_Specification (K : Iir_Kind) return Boolean; function Has_Prev_Block_Configuration (K : Iir_Kind) return Boolean; function Has_Configuration_Item_Chain (K : Iir_Kind) return Boolean; function Has_Attribute_Value_Chain (K : Iir_Kind) return Boolean; function Has_Spec_Chain (K : Iir_Kind) return Boolean; function Has_Value_Chain (K : Iir_Kind) return Boolean; function Has_Attribute_Value_Spec_Chain (K : Iir_Kind) return Boolean; function Has_Entity_Name (K : Iir_Kind) return Boolean; function Has_Package (K : Iir_Kind) return Boolean; function Has_Package_Body (K : Iir_Kind) return Boolean; function Has_Instance_Package_Body (K : Iir_Kind) return Boolean; function Has_Need_Body (K : Iir_Kind) return Boolean; function Has_Immediate_Body_Flag (K : Iir_Kind) return Boolean; function Has_Macro_Expanded_Flag (K : Iir_Kind) return Boolean; function Has_Need_Instance_Bodies (K : Iir_Kind) return Boolean; function Has_Hierarchical_Name (K : Iir_Kind) return Boolean; function Has_Vunit_Item_Chain (K : Iir_Kind) return Boolean; function Has_Bound_Vunit_Chain (K : Iir_Kind) return Boolean; function Has_Verification_Block_Configuration (K : Iir_Kind) return Boolean; function Has_Block_Configuration (K : Iir_Kind) return Boolean; function Has_Concurrent_Statement_Chain (K : Iir_Kind) return Boolean; function Has_Chain (K : Iir_Kind) return Boolean; function Has_Port_Chain (K : Iir_Kind) return Boolean; function Has_Generic_Chain (K : Iir_Kind) return Boolean; function Has_Type (K : Iir_Kind) return Boolean; function Has_Subtype_Indication (K : Iir_Kind) return Boolean; function Has_Discrete_Range (K : Iir_Kind) return Boolean; function Has_Type_Definition (K : Iir_Kind) return Boolean; function Has_Subtype_Definition (K : Iir_Kind) return Boolean; function Has_Incomplete_Type_Declaration (K : Iir_Kind) return Boolean; function Has_Interface_Type_Subprograms (K : Iir_Kind) return Boolean; function Has_Interface_Type_Definition (K : Iir_Kind) return Boolean; function Has_Nature_Definition (K : Iir_Kind) return Boolean; function Has_Nature (K : Iir_Kind) return Boolean; function Has_Subnature_Indication (K : Iir_Kind) return Boolean; function Has_Reference_Terminal_Flag (K : Iir_Kind) return Boolean; function Has_Mode (K : Iir_Kind) return Boolean; function Has_Guarded_Signal_Flag (K : Iir_Kind) return Boolean; function Has_Signal_Kind (K : Iir_Kind) return Boolean; function Has_Base_Name (K : Iir_Kind) return Boolean; function Has_Interface_Declaration_Chain (K : Iir_Kind) return Boolean; function Has_Default_Subprogram (K : Iir_Kind) return Boolean; function Has_Associated_Subprogram (K : Iir_Kind) return Boolean; function Has_Subprogram_Specification (K : Iir_Kind) return Boolean; function Has_Sequential_Statement_Chain (K : Iir_Kind) return Boolean; function Has_Simultaneous_Statement_Chain (K : Iir_Kind) return Boolean; function Has_Subprogram_Body (K : Iir_Kind) return Boolean; function Has_Overload_Number (K : Iir_Kind) return Boolean; function Has_Subprogram_Depth (K : Iir_Kind) return Boolean; function Has_Subprogram_Hash (K : Iir_Kind) return Boolean; function Has_Impure_Depth (K : Iir_Kind) return Boolean; function Has_Return_Type (K : Iir_Kind) return Boolean; function Has_Implicit_Definition (K : Iir_Kind) return Boolean; function Has_Uninstantiated_Subprogram_Name (K : Iir_Kind) return Boolean; function Has_Default_Value (K : Iir_Kind) return Boolean; function Has_Deferred_Declaration (K : Iir_Kind) return Boolean; function Has_Deferred_Declaration_Flag (K : Iir_Kind) return Boolean; function Has_Shared_Flag (K : Iir_Kind) return Boolean; function Has_Design_Unit (K : Iir_Kind) return Boolean; function Has_Block_Statement (K : Iir_Kind) return Boolean; function Has_Signal_Driver (K : Iir_Kind) return Boolean; function Has_Declaration_Chain (K : Iir_Kind) return Boolean; function Has_File_Logical_Name (K : Iir_Kind) return Boolean; function Has_File_Open_Kind (K : Iir_Kind) return Boolean; function Has_Element_Position (K : Iir_Kind) return Boolean; function Has_Use_Clause_Chain (K : Iir_Kind) return Boolean; function Has_Context_Reference_Chain (K : Iir_Kind) return Boolean; function Has_Inherit_Spec_Chain (K : Iir_Kind) return Boolean; function Has_Selected_Name (K : Iir_Kind) return Boolean; function Has_Type_Declarator (K : Iir_Kind) return Boolean; function Has_Complete_Type_Definition (K : Iir_Kind) return Boolean; function Has_Incomplete_Type_Ref_Chain (K : Iir_Kind) return Boolean; function Has_Associated_Type (K : Iir_Kind) return Boolean; function Has_Enumeration_Literal_List (K : Iir_Kind) return Boolean; function Has_Entity_Class_Entry_Chain (K : Iir_Kind) return Boolean; function Has_Group_Constituent_List (K : Iir_Kind) return Boolean; function Has_Unit_Chain (K : Iir_Kind) return Boolean; function Has_Primary_Unit (K : Iir_Kind) return Boolean; function Has_Identifier (K : Iir_Kind) return Boolean; function Has_Label (K : Iir_Kind) return Boolean; function Has_Return_Identifier (K : Iir_Kind) return Boolean; function Has_Visible_Flag (K : Iir_Kind) return Boolean; function Has_Range_Constraint (K : Iir_Kind) return Boolean; function Has_Direction (K : Iir_Kind) return Boolean; function Has_Left_Limit (K : Iir_Kind) return Boolean; function Has_Right_Limit (K : Iir_Kind) return Boolean; function Has_Left_Limit_Expr (K : Iir_Kind) return Boolean; function Has_Right_Limit_Expr (K : Iir_Kind) return Boolean; function Has_Parent_Type (K : Iir_Kind) return Boolean; function Has_Simple_Nature (K : Iir_Kind) return Boolean; function Has_Base_Nature (K : Iir_Kind) return Boolean; function Has_Resolution_Indication (K : Iir_Kind) return Boolean; function Has_Record_Element_Resolution_Chain (K : Iir_Kind) return Boolean; function Has_Tolerance (K : Iir_Kind) return Boolean; function Has_Plus_Terminal_Name (K : Iir_Kind) return Boolean; function Has_Minus_Terminal_Name (K : Iir_Kind) return Boolean; function Has_Plus_Terminal (K : Iir_Kind) return Boolean; function Has_Minus_Terminal (K : Iir_Kind) return Boolean; function Has_Magnitude_Expression (K : Iir_Kind) return Boolean; function Has_Phase_Expression (K : Iir_Kind) return Boolean; function Has_Power_Expression (K : Iir_Kind) return Boolean; function Has_Simultaneous_Left (K : Iir_Kind) return Boolean; function Has_Simultaneous_Right (K : Iir_Kind) return Boolean; function Has_Text_File_Flag (K : Iir_Kind) return Boolean; function Has_Only_Characters_Flag (K : Iir_Kind) return Boolean; function Has_Is_Character_Type (K : Iir_Kind) return Boolean; function Has_Nature_Staticness (K : Iir_Kind) return Boolean; function Has_Type_Staticness (K : Iir_Kind) return Boolean; function Has_Constraint_State (K : Iir_Kind) return Boolean; function Has_Index_Subtype_List (K : Iir_Kind) return Boolean; function Has_Index_Subtype_Definition_List (K : Iir_Kind) return Boolean; function Has_Element_Subtype_Indication (K : Iir_Kind) return Boolean; function Has_Element_Subtype (K : Iir_Kind) return Boolean; function Has_Element_Subnature_Indication (K : Iir_Kind) return Boolean; function Has_Element_Subnature (K : Iir_Kind) return Boolean; function Has_Index_Constraint_List (K : Iir_Kind) return Boolean; function Has_Array_Element_Constraint (K : Iir_Kind) return Boolean; function Has_Has_Array_Constraint_Flag (K : Iir_Kind) return Boolean; function Has_Has_Element_Constraint_Flag (K : Iir_Kind) return Boolean; function Has_Elements_Declaration_List (K : Iir_Kind) return Boolean; function Has_Owned_Elements_Chain (K : Iir_Kind) return Boolean; function Has_Designated_Type (K : Iir_Kind) return Boolean; function Has_Designated_Subtype_Indication (K : Iir_Kind) return Boolean; function Has_Index_List (K : Iir_Kind) return Boolean; function Has_Reference (K : Iir_Kind) return Boolean; function Has_Nature_Declarator (K : Iir_Kind) return Boolean; function Has_Across_Type_Mark (K : Iir_Kind) return Boolean; function Has_Through_Type_Mark (K : Iir_Kind) return Boolean; function Has_Across_Type_Definition (K : Iir_Kind) return Boolean; function Has_Through_Type_Definition (K : Iir_Kind) return Boolean; function Has_Across_Type (K : Iir_Kind) return Boolean; function Has_Through_Type (K : Iir_Kind) return Boolean; function Has_Target (K : Iir_Kind) return Boolean; function Has_Waveform_Chain (K : Iir_Kind) return Boolean; function Has_Guard (K : Iir_Kind) return Boolean; function Has_Delay_Mechanism (K : Iir_Kind) return Boolean; function Has_Reject_Time_Expression (K : Iir_Kind) return Boolean; function Has_Force_Mode (K : Iir_Kind) return Boolean; function Has_Has_Force_Mode (K : Iir_Kind) return Boolean; function Has_Sensitivity_List (K : Iir_Kind) return Boolean; function Has_Process_Origin (K : Iir_Kind) return Boolean; function Has_Package_Origin (K : Iir_Kind) return Boolean; function Has_Condition_Clause (K : Iir_Kind) return Boolean; function Has_Break_Element (K : Iir_Kind) return Boolean; function Has_Selector_Quantity (K : Iir_Kind) return Boolean; function Has_Break_Quantity (K : Iir_Kind) return Boolean; function Has_Timeout_Clause (K : Iir_Kind) return Boolean; function Has_Postponed_Flag (K : Iir_Kind) return Boolean; function Has_Callees_List (K : Iir_Kind) return Boolean; function Has_Passive_Flag (K : Iir_Kind) return Boolean; function Has_Resolution_Function_Flag (K : Iir_Kind) return Boolean; function Has_Wait_State (K : Iir_Kind) return Boolean; function Has_All_Sensitized_State (K : Iir_Kind) return Boolean; function Has_Seen_Flag (K : Iir_Kind) return Boolean; function Has_Pure_Flag (K : Iir_Kind) return Boolean; function Has_Foreign_Flag (K : Iir_Kind) return Boolean; function Has_Resolved_Flag (K : Iir_Kind) return Boolean; function Has_Signal_Type_Flag (K : Iir_Kind) return Boolean; function Has_Has_Signal_Flag (K : Iir_Kind) return Boolean; function Has_Purity_State (K : Iir_Kind) return Boolean; function Has_Elab_Flag (K : Iir_Kind) return Boolean; function Has_Vendor_Library_Flag (K : Iir_Kind) return Boolean; function Has_Configuration_Mark_Flag (K : Iir_Kind) return Boolean; function Has_Configuration_Done_Flag (K : Iir_Kind) return Boolean; function Has_Index_Constraint_Flag (K : Iir_Kind) return Boolean; function Has_Hide_Implicit_Flag (K : Iir_Kind) return Boolean; function Has_Assertion_Condition (K : Iir_Kind) return Boolean; function Has_Report_Expression (K : Iir_Kind) return Boolean; function Has_Severity_Expression (K : Iir_Kind) return Boolean; function Has_Instantiated_Unit (K : Iir_Kind) return Boolean; function Has_Instantiated_Header (K : Iir_Kind) return Boolean; function Has_Generic_Map_Aspect_Chain (K : Iir_Kind) return Boolean; function Has_Port_Map_Aspect_Chain (K : Iir_Kind) return Boolean; function Has_Configuration_Name (K : Iir_Kind) return Boolean; function Has_Component_Configuration (K : Iir_Kind) return Boolean; function Has_Configuration_Specification (K : Iir_Kind) return Boolean; function Has_Default_Binding_Indication (K : Iir_Kind) return Boolean; function Has_Default_Configuration_Declaration (K : Iir_Kind) return Boolean; function Has_Expression (K : Iir_Kind) return Boolean; function Has_Conditional_Expression_Chain (K : Iir_Kind) return Boolean; function Has_Allocator_Designated_Type (K : Iir_Kind) return Boolean; function Has_Selected_Waveform_Chain (K : Iir_Kind) return Boolean; function Has_Conditional_Waveform_Chain (K : Iir_Kind) return Boolean; function Has_Guard_Expression (K : Iir_Kind) return Boolean; function Has_Guard_Decl (K : Iir_Kind) return Boolean; function Has_Guard_Sensitivity_List (K : Iir_Kind) return Boolean; function Has_Attribute_Implicit_Chain (K : Iir_Kind) return Boolean; function Has_Block_Block_Configuration (K : Iir_Kind) return Boolean; function Has_Package_Header (K : Iir_Kind) return Boolean; function Has_Block_Header (K : Iir_Kind) return Boolean; function Has_Uninstantiated_Package_Name (K : Iir_Kind) return Boolean; function Has_Uninstantiated_Package_Decl (K : Iir_Kind) return Boolean; function Has_Associated_Package (K : Iir_Kind) return Boolean; function Has_Instance_Source_File (K : Iir_Kind) return Boolean; function Has_Generate_Block_Configuration (K : Iir_Kind) return Boolean; function Has_Generate_Statement_Body (K : Iir_Kind) return Boolean; function Has_Alternative_Label (K : Iir_Kind) return Boolean; function Has_Generate_Else_Clause (K : Iir_Kind) return Boolean; function Has_Condition (K : Iir_Kind) return Boolean; function Has_Else_Clause (K : Iir_Kind) return Boolean; function Has_Parameter_Specification (K : Iir_Kind) return Boolean; function Has_Parent (K : Iir_Kind) return Boolean; function Has_Loop_Label (K : Iir_Kind) return Boolean; function Has_Exit_Flag (K : Iir_Kind) return Boolean; function Has_Next_Flag (K : Iir_Kind) return Boolean; function Has_Component_Name (K : Iir_Kind) return Boolean; function Has_Instantiation_List (K : Iir_Kind) return Boolean; function Has_Entity_Aspect (K : Iir_Kind) return Boolean; function Has_Default_Entity_Aspect (K : Iir_Kind) return Boolean; function Has_Binding_Indication (K : Iir_Kind) return Boolean; function Has_Named_Entity (K : Iir_Kind) return Boolean; function Has_Referenced_Name (K : Iir_Kind) return Boolean; function Has_Expr_Staticness (K : Iir_Kind) return Boolean; function Has_Scalar_Size (K : Iir_Kind) return Boolean; function Has_Error_Origin (K : Iir_Kind) return Boolean; function Has_Operand (K : Iir_Kind) return Boolean; function Has_Left (K : Iir_Kind) return Boolean; function Has_Right (K : Iir_Kind) return Boolean; function Has_Unit_Name (K : Iir_Kind) return Boolean; function Has_Name (K : Iir_Kind) return Boolean; function Has_Group_Template_Name (K : Iir_Kind) return Boolean; function Has_Name_Staticness (K : Iir_Kind) return Boolean; function Has_Prefix (K : Iir_Kind) return Boolean; function Has_Signature_Prefix (K : Iir_Kind) return Boolean; function Has_External_Pathname (K : Iir_Kind) return Boolean; function Has_Pathname_Suffix (K : Iir_Kind) return Boolean; function Has_Pathname_Expression (K : Iir_Kind) return Boolean; function Has_In_Formal_Flag (K : Iir_Kind) return Boolean; function Has_Inertial_Flag (K : Iir_Kind) return Boolean; function Has_Slice_Subtype (K : Iir_Kind) return Boolean; function Has_Suffix (K : Iir_Kind) return Boolean; function Has_Index_Subtype (K : Iir_Kind) return Boolean; function Has_Parameter (K : Iir_Kind) return Boolean; function Has_Parameter_2 (K : Iir_Kind) return Boolean; function Has_Parameter_3 (K : Iir_Kind) return Boolean; function Has_Parameter_4 (K : Iir_Kind) return Boolean; function Has_Attr_Chain (K : Iir_Kind) return Boolean; function Has_Attribute_Implicit_Declaration (K : Iir_Kind) return Boolean; function Has_Actual_Type (K : Iir_Kind) return Boolean; function Has_Actual_Type_Definition (K : Iir_Kind) return Boolean; function Has_Association_Chain (K : Iir_Kind) return Boolean; function Has_Individual_Association_Chain (K : Iir_Kind) return Boolean; function Has_Subprogram_Association_Chain (K : Iir_Kind) return Boolean; function Has_Aggregate_Info (K : Iir_Kind) return Boolean; function Has_Sub_Aggregate_Info (K : Iir_Kind) return Boolean; function Has_Aggr_Dynamic_Flag (K : Iir_Kind) return Boolean; function Has_Aggr_Min_Length (K : Iir_Kind) return Boolean; function Has_Aggr_Low_Limit (K : Iir_Kind) return Boolean; function Has_Aggr_High_Limit (K : Iir_Kind) return Boolean; function Has_Aggr_Others_Flag (K : Iir_Kind) return Boolean; function Has_Aggr_Named_Flag (K : Iir_Kind) return Boolean; function Has_Aggregate_Expand_Flag (K : Iir_Kind) return Boolean; function Has_Determined_Aggregate_Flag (K : Iir_Kind) return Boolean; function Has_Association_Choices_Chain (K : Iir_Kind) return Boolean; function Has_Case_Statement_Alternative_Chain (K : Iir_Kind) return Boolean; function Has_Matching_Flag (K : Iir_Kind) return Boolean; function Has_Choice_Staticness (K : Iir_Kind) return Boolean; function Has_Procedure_Call (K : Iir_Kind) return Boolean; function Has_Implementation (K : Iir_Kind) return Boolean; function Has_Parameter_Association_Chain (K : Iir_Kind) return Boolean; function Has_Method_Object (K : Iir_Kind) return Boolean; function Has_Subtype_Type_Mark (K : Iir_Kind) return Boolean; function Has_Subnature_Nature_Mark (K : Iir_Kind) return Boolean; function Has_Type_Conversion_Subtype (K : Iir_Kind) return Boolean; function Has_Type_Mark (K : Iir_Kind) return Boolean; function Has_File_Type_Mark (K : Iir_Kind) return Boolean; function Has_Return_Type_Mark (K : Iir_Kind) return Boolean; function Has_Has_Disconnect_Flag (K : Iir_Kind) return Boolean; function Has_Has_Active_Flag (K : Iir_Kind) return Boolean; function Has_Is_Within_Flag (K : Iir_Kind) return Boolean; function Has_Type_Marks_List (K : Iir_Kind) return Boolean; function Has_Implicit_Alias_Flag (K : Iir_Kind) return Boolean; function Has_Alias_Signature (K : Iir_Kind) return Boolean; function Has_Attribute_Signature (K : Iir_Kind) return Boolean; function Has_Overload_List (K : Iir_Kind) return Boolean; function Has_Simple_Name_Identifier (K : Iir_Kind) return Boolean; function Has_Simple_Name_Subtype (K : Iir_Kind) return Boolean; function Has_Protected_Type_Body (K : Iir_Kind) return Boolean; function Has_Protected_Type_Declaration (K : Iir_Kind) return Boolean; function Has_Use_Flag (K : Iir_Kind) return Boolean; function Has_Elaborated_Flag (K : Iir_Kind) return Boolean; function Has_End_Has_Reserved_Id (K : Iir_Kind) return Boolean; function Has_End_Has_Identifier (K : Iir_Kind) return Boolean; function Has_End_Has_Postponed (K : Iir_Kind) return Boolean; function Has_Has_Label (K : Iir_Kind) return Boolean; function Has_Has_Begin (K : Iir_Kind) return Boolean; function Has_Has_End (K : Iir_Kind) return Boolean; function Has_Has_Is (K : Iir_Kind) return Boolean; function Has_Has_Pure (K : Iir_Kind) return Boolean; function Has_Has_Body (K : Iir_Kind) return Boolean; function Has_Has_Parameter (K : Iir_Kind) return Boolean; function Has_Has_Component (K : Iir_Kind) return Boolean; function Has_Has_Identifier_List (K : Iir_Kind) return Boolean; function Has_Has_Mode (K : Iir_Kind) return Boolean; function Has_Has_Class (K : Iir_Kind) return Boolean; function Has_Has_Delay_Mechanism (K : Iir_Kind) return Boolean; function Has_Suspend_Flag (K : Iir_Kind) return Boolean; function Has_Stop_Flag (K : Iir_Kind) return Boolean; function Has_Is_Ref (K : Iir_Kind) return Boolean; function Has_Is_Forward_Ref (K : Iir_Kind) return Boolean; function Has_Psl_Property (K : Iir_Kind) return Boolean; function Has_Psl_Sequence (K : Iir_Kind) return Boolean; function Has_Psl_Declaration (K : Iir_Kind) return Boolean; function Has_Psl_Expression (K : Iir_Kind) return Boolean; function Has_Psl_Boolean (K : Iir_Kind) return Boolean; function Has_PSL_Clock (K : Iir_Kind) return Boolean; function Has_PSL_NFA (K : Iir_Kind) return Boolean; function Has_PSL_Nbr_States (K : Iir_Kind) return Boolean; function Has_PSL_Clock_Sensitivity (K : Iir_Kind) return Boolean; function Has_PSL_EOS_Flag (K : Iir_Kind) return Boolean; function Has_PSL_Abort_Flag (K : Iir_Kind) return Boolean; function Has_Count_Expression (K : Iir_Kind) return Boolean; function Has_Clock_Expression (K : Iir_Kind) return Boolean; function Has_Default_Clock (K : Iir_Kind) return Boolean; function Has_Foreign_Node (K : Iir_Kind) return Boolean; function Has_Suspend_State_Index (K : Iir_Kind) return Boolean; function Has_Suspend_State_Chain (K : Iir_Kind) return Boolean; function Has_Suspend_State_Last (K : Iir_Kind) return Boolean; function Has_Suspend_State_Decl (K : Iir_Kind) return Boolean; end Vhdl.Nodes_Meta;