UCIS 1.0

XML interchange format of the Accellera Unified Coverage Interoperability Standard (UCIS), version 1.0: the schema of chapter 9 of the standard (June 2012), section 9.14.

Read by pyEDAA.Reports.CodeCoverage.UCIS.Document - see UCIS XML - for a report, whose root <UCIS> of namespace UCIS states ucisVersion="1.0".

Accellera publishes the standard, but not its schema as a file; Accellera’s FC4SC repository does, under the Apache License 2.0, with four changes. This schema is derived from that file (ucis/UCIS.xsd of accellera-official/fc4sc): the four changes are reverted - so it has the standard’s complex types, elements, attributes, their order, occurrences, types and defaults -, the definitions are reformatted and grouped by coverage kind. Where the standard’s tables and examples contradict its schema - e.g. an example’s branchStatement for statement, exprBin for bin, or a coverpointBin with name and key -, the schema decides.

Download

UCIS-1.0.xsd (24.5 kiB)

Validate a report

xmllint --schema UCIS-1.0.xsd --noout coverage.xml

Source

  1<?xml version="1.0" encoding="UTF-8"?>
  2<!--
  3	Copyright 2012 Accellera Systems Initiative, Inc.
  4	Copyright 2020 NVIDIA Corporation
  5	Copyright 2026-2026 Electronic Design Automation Abstraction (EDA²)
  6
  7	Licensed under the Apache License, Version 2.0 (the "License");
  8	you may not use this file except in compliance with the License.
  9	You may obtain a copy of the License at
 10
 11	  http://www.apache.org/licenses/LICENSE-2.0
 12
 13	Unless required by applicable law or agreed to in writing, software
 14	distributed under the License is distributed on an "AS IS" BASIS,
 15	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 16	See the License for the specific language governing permissions and
 17	limitations under the License.
 18
 19	SPDX-License-Identifier: Apache-2.0
 20
 21	Modified by EDA²: derived from 'ucis/UCIS.xsd' of https://github.com/accellera-official/fc4sc, commit 31b9339a. The
 22	four changes made there in 2020 are reverted to the schema of the UCIS 1.0 standard (section 9.14). The definitions
 23	are reformatted and grouped by coverage kind, the comments are replaced, the documentation is added.
 24-->
 25<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="UCIS" targetNamespace="UCIS"
 26           elementFormDefault="qualified" attributeFormDefault="unqualified">
 27	<xs:annotation>
 28		<xs:documentation>
 29			XML interchange format of the Accellera Unified Coverage Interoperability Standard (UCIS), version 1.0.
 30
 31			The schema of chapter 9 'XML Interchange Format' of the standard (June 2012), section 9.14: namespace 'UCIS', root
 32			element 'UCIS', the same complex types, elements, attributes, their order, occurrences, types and defaults. Where
 33			the chapter's tables and examples contradict this schema - e.g. an example's 'branchStatement', or a
 34			'coverpointBin' with a 'name' -, this schema decides.
 35		</xs:documentation>
 36	</xs:annotation>
 37
 38	<!-- Common types -->
 39	<xs:complexType name="NAME_VALUE">
 40		<xs:sequence>
 41			<xs:element name="name"  type="xs:string"/>
 42			<xs:element name="value" type="xs:string"/>
 43		</xs:sequence>
 44	</xs:complexType>
 45
 46	<xs:complexType name="USER_ATTR" mixed="true">
 47		<xs:attribute name="key"  type="xs:string" use="required"/>
 48		<xs:attribute name="type"                  use="required">
 49			<xs:simpleType>
 50				<xs:restriction base="xs:string">
 51					<xs:enumeration value="int"/>
 52					<xs:enumeration value="float"/>
 53					<xs:enumeration value="double"/>
 54					<xs:enumeration value="str"/>
 55					<xs:enumeration value="bits"/>
 56					<xs:enumeration value="int64"/>
 57				</xs:restriction>
 58			</xs:simpleType>
 59		</xs:attribute>
 60		<xs:attribute name="len"  type="xs:integer"/>
 61	</xs:complexType>
 62
 63	<xs:complexType name="BIN_CONTENTS">
 64		<xs:sequence>
 65			<xs:element name="historyNodeId" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="unbounded"/>
 66		</xs:sequence>
 67		<xs:attribute name="nameComponent" type="xs:string"/>
 68		<xs:attribute name="typeComponent" type="xs:string"/>
 69		<xs:attribute name="coverageCount" type="xs:nonNegativeInteger" use="required"/>
 70	</xs:complexType>
 71
 72	<xs:attributeGroup name="binAttributes">
 73		<xs:attribute name="alias"             type="xs:string"/>
 74		<xs:attribute name="coverageCountGoal" type="xs:nonNegativeInteger"/>
 75		<xs:attribute name="excluded"          type="xs:boolean"            default="false"/>
 76		<xs:attribute name="excludedReason"    type="xs:string"/>
 77		<xs:attribute name="weight"            type="xs:nonNegativeInteger" default="1"/>
 78	</xs:attributeGroup>
 79
 80	<xs:complexType name="BIN">
 81		<xs:sequence>
 82			<xs:element name="contents" type="BIN_CONTENTS"/>
 83			<xs:element name="userAttr" type="USER_ATTR"    minOccurs="0" maxOccurs="unbounded"/>
 84		</xs:sequence>
 85		<xs:attributeGroup ref="binAttributes"/>
 86	</xs:complexType>
 87
 88	<xs:attributeGroup name="objAttributes">
 89		<xs:attribute name="alias"          type="xs:string"/>
 90		<xs:attribute name="excluded"       type="xs:boolean"            default="false"/>
 91		<xs:attribute name="excludedReason" type="xs:string"/>
 92		<xs:attribute name="weight"         type="xs:nonNegativeInteger" default="1"/>
 93	</xs:attributeGroup>
 94
 95	<xs:attributeGroup name="metricAttributes">
 96		<xs:attribute name="metricMode" type="xs:string"/>
 97		<xs:attribute name="weight"     type="xs:nonNegativeInteger" default="1"/>
 98	</xs:attributeGroup>
 99
100	<xs:complexType name="METRIC_MODE">
101		<xs:sequence>
102			<xs:element name="userAttr" type="USER_ATTR" minOccurs="0" maxOccurs="unbounded"/>
103		</xs:sequence>
104		<xs:attribute name="metricMode" type="xs:string" use="required"/>
105	</xs:complexType>
106
107	<xs:complexType name="SOURCE_FILE">
108		<xs:attribute name="fileName" type="xs:string"          use="required"/>
109		<xs:attribute name="id"       type="xs:positiveInteger" use="required"/>
110	</xs:complexType>
111
112	<xs:complexType name="LINE_ID">
113		<xs:attribute name="file" type="xs:positiveInteger" use="required"/>
114		<xs:attribute name="line" type="xs:positiveInteger" use="required"/>
115	</xs:complexType>
116
117	<xs:complexType name="STATEMENT_ID">
118		<xs:attribute name="file"        type="xs:positiveInteger" use="required"/>
119		<xs:attribute name="line"        type="xs:positiveInteger" use="required"/>
120		<xs:attribute name="inlineCount" type="xs:positiveInteger" use="required"/>
121	</xs:complexType>
122
123	<xs:complexType name="DIMENSION">
124		<xs:attribute name="left"   type="xs:integer" use="required"/>
125		<xs:attribute name="right"  type="xs:integer" use="required"/>
126		<xs:attribute name="downto" type="xs:boolean" use="required"/>
127	</xs:complexType>
128
129	<!-- History nodes -->
130	<xs:complexType name="HISTORY_NODE">
131		<xs:sequence>
132			<xs:element name="userAttr" type="USER_ATTR" minOccurs="0" maxOccurs="unbounded"/>
133		</xs:sequence>
134		<xs:attribute name="historyNodeId"     type="xs:nonNegativeInteger" use="required"/>
135		<xs:attribute name="parentId"          type="xs:nonNegativeInteger"/>
136		<xs:attribute name="logicalName"       type="xs:string"             use="required"/>
137		<xs:attribute name="physicalName"      type="xs:string"/>
138		<xs:attribute name="kind"              type="xs:string"/>
139		<xs:attribute name="testStatus"        type="xs:boolean"            use="required"/>
140		<xs:attribute name="simtime"           type="xs:double"/>
141		<xs:attribute name="timeunit"          type="xs:string"/>
142		<xs:attribute name="runCwd"            type="xs:string"/>
143		<xs:attribute name="cpuTime"           type="xs:double"/>
144		<xs:attribute name="seed"              type="xs:string"/>
145		<xs:attribute name="cmd"               type="xs:string"/>
146		<xs:attribute name="args"              type="xs:string"/>
147		<xs:attribute name="compulsory"        type="xs:string"/>
148		<xs:attribute name="date"              type="xs:dateTime"           use="required"/>
149		<xs:attribute name="userName"          type="xs:string"/>
150		<xs:attribute name="cost"              type="xs:decimal"/>
151		<xs:attribute name="toolCategory"      type="xs:string"             use="required"/>
152		<xs:attribute name="ucisVersion"       type="xs:string"             use="required"/>
153		<xs:attribute name="vendorId"          type="xs:string"             use="required"/>
154		<xs:attribute name="vendorTool"        type="xs:string"             use="required"/>
155		<xs:attribute name="vendorToolVersion" type="xs:string"             use="required"/>
156		<xs:attribute name="sameTests"         type="xs:nonNegativeInteger"/>
157		<xs:attribute name="comment"           type="xs:string"/>
158	</xs:complexType>
159
160	<!-- Toggle coverage -->
161	<xs:complexType name="TOGGLE">
162		<xs:sequence>
163			<xs:element name="bin" type="BIN"/>
164		</xs:sequence>
165		<xs:attribute name="from" type="xs:string" use="required"/>
166		<xs:attribute name="to"   type="xs:string" use="required"/>
167	</xs:complexType>
168
169	<xs:complexType name="TOGGLE_BIT">
170		<xs:sequence>
171			<xs:element name="index"    type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="unbounded"/>
172			<xs:element name="toggle"   type="TOGGLE"                minOccurs="1" maxOccurs="unbounded"/>
173			<xs:element name="userAttr" type="USER_ATTR"             minOccurs="0" maxOccurs="unbounded"/>
174		</xs:sequence>
175		<xs:attribute name="name" type="xs:string" use="required"/>
176		<xs:attribute name="key"  type="xs:string" use="required"/>
177		<xs:attributeGroup ref="objAttributes"/>
178	</xs:complexType>
179
180	<xs:complexType name="TOGGLE_OBJECT">
181		<xs:sequence>
182			<xs:element name="dimension" type="DIMENSION"    minOccurs="0" maxOccurs="unbounded"/>
183			<xs:element name="id"        type="STATEMENT_ID"/>
184			<xs:element name="toggleBit" type="TOGGLE_BIT"   minOccurs="1" maxOccurs="unbounded"/>
185			<xs:element name="userAttr"  type="USER_ATTR"    minOccurs="0" maxOccurs="unbounded"/>
186		</xs:sequence>
187		<xs:attribute name="name"          type="xs:string" use="required"/>
188		<xs:attribute name="key"           type="xs:string" use="required"/>
189		<xs:attribute name="type"          type="xs:string"/>
190		<xs:attribute name="portDirection" type="xs:string"/>
191		<xs:attributeGroup ref="objAttributes"/>
192	</xs:complexType>
193
194	<xs:complexType name="TOGGLE_COVERAGE">
195		<xs:sequence>
196			<xs:element name="toggleObject" type="TOGGLE_OBJECT" minOccurs="0" maxOccurs="unbounded"/>
197			<xs:element name="metricMode"   type="METRIC_MODE"   minOccurs="0" maxOccurs="unbounded"/>
198			<xs:element name="userAttr"     type="USER_ATTR"     minOccurs="0" maxOccurs="unbounded"/>
199		</xs:sequence>
200		<xs:attributeGroup ref="metricAttributes"/>
201	</xs:complexType>
202
203	<!-- Statement and block coverage -->
204	<xs:complexType name="STATEMENT">
205		<xs:sequence>
206			<xs:element name="id"       type="STATEMENT_ID"/>
207			<xs:element name="bin"      type="BIN"/>
208			<xs:element name="userAttr" type="USER_ATTR"    minOccurs="0" maxOccurs="unbounded"/>
209		</xs:sequence>
210		<xs:attributeGroup ref="objAttributes"/>
211	</xs:complexType>
212
213	<xs:complexType name="BLOCK">
214		<xs:sequence>
215			<xs:element name="statementId"       type="STATEMENT_ID" minOccurs="0" maxOccurs="unbounded"/>
216			<xs:element name="hierarchicalBlock" type="BLOCK"        minOccurs="0" maxOccurs="unbounded"/>
217			<xs:element name="blockBin"          type="BIN"/>
218			<xs:element name="blockId"           type="STATEMENT_ID"/>
219			<xs:element name="userAttr"          type="USER_ATTR"    minOccurs="0" maxOccurs="unbounded"/>
220		</xs:sequence>
221		<xs:attribute name="parentProcess" type="xs:string"/>
222		<xs:attributeGroup ref="objAttributes"/>
223	</xs:complexType>
224
225	<xs:complexType name="PROCESS_BLOCK">
226		<xs:sequence>
227			<xs:element name="block"    type="BLOCK"     minOccurs="0" maxOccurs="unbounded"/>
228			<xs:element name="userAttr" type="USER_ATTR" minOccurs="0" maxOccurs="unbounded"/>
229		</xs:sequence>
230		<xs:attribute name="processType" type="xs:string" use="required"/>
231		<xs:attributeGroup ref="objAttributes"/>
232	</xs:complexType>
233
234	<xs:complexType name="BLOCK_COVERAGE">
235		<xs:sequence>
236			<xs:choice>
237				<xs:element name="process"   type="PROCESS_BLOCK" minOccurs="1" maxOccurs="unbounded"/>
238				<xs:element name="block"     type="BLOCK"         minOccurs="1" maxOccurs="unbounded"/>
239				<xs:element name="statement" type="STATEMENT"     minOccurs="1" maxOccurs="unbounded"/>
240			</xs:choice>
241			<xs:element name="userAttr" type="USER_ATTR" minOccurs="0" maxOccurs="unbounded"/>
242		</xs:sequence>
243		<xs:attributeGroup ref="metricAttributes"/>
244	</xs:complexType>
245
246	<!-- Condition and expression coverage -->
247	<xs:complexType name="EXPR">
248		<xs:sequence>
249			<xs:element name="id"               type="STATEMENT_ID"/>
250			<xs:element name="subExpr"          type="xs:string"    minOccurs="1" maxOccurs="unbounded"/>
251			<xs:element name="bin"              type="BIN"          minOccurs="1" maxOccurs="unbounded"/>
252			<xs:element name="hierarchicalExpr" type="EXPR"         minOccurs="0" maxOccurs="unbounded"/>
253			<xs:element name="userAttr"         type="USER_ATTR"    minOccurs="0" maxOccurs="unbounded"/>
254		</xs:sequence>
255		<xs:attribute name="name"          type="xs:string"             use="required"/>
256		<xs:attribute name="key"           type="xs:string"             use="required"/>
257		<xs:attribute name="exprString"    type="xs:string"             use="required"/>
258		<xs:attribute name="index"         type="xs:nonNegativeInteger" use="required"/>
259		<xs:attribute name="width"         type="xs:nonNegativeInteger" use="required"/>
260		<xs:attribute name="statementType" type="xs:string"/>
261		<xs:attributeGroup ref="objAttributes"/>
262	</xs:complexType>
263
264	<xs:complexType name="CONDITION_COVERAGE">
265		<xs:sequence>
266			<xs:element name="expr"     type="EXPR"      minOccurs="0" maxOccurs="unbounded"/>
267			<xs:element name="userAttr" type="USER_ATTR" minOccurs="0" maxOccurs="unbounded"/>
268		</xs:sequence>
269		<xs:attributeGroup ref="metricAttributes"/>
270	</xs:complexType>
271
272	<!-- Branch coverage -->
273	<xs:complexType name="BRANCH">
274		<xs:sequence>
275			<xs:element name="id"           type="STATEMENT_ID"/>
276			<xs:element name="nestedBranch" type="BRANCH_STATEMENT" minOccurs="0" maxOccurs="unbounded"/>
277			<xs:element name="branchBin"    type="BIN"/>
278			<xs:element name="userAttr"     type="USER_ATTR"        minOccurs="0" maxOccurs="unbounded"/>
279		</xs:sequence>
280	</xs:complexType>
281
282	<xs:complexType name="BRANCH_STATEMENT">
283		<xs:sequence>
284			<xs:element name="id"       type="STATEMENT_ID"/>
285			<xs:element name="branch"   type="BRANCH"       minOccurs="0" maxOccurs="unbounded"/>
286			<xs:element name="userAttr" type="USER_ATTR"    minOccurs="0" maxOccurs="unbounded"/>
287		</xs:sequence>
288		<xs:attribute name="branchExpr"    type="xs:string"/>
289		<xs:attribute name="statementType" type="xs:string" use="required"/>
290		<xs:attributeGroup ref="objAttributes"/>
291	</xs:complexType>
292
293	<xs:complexType name="BRANCH_COVERAGE">
294		<xs:sequence>
295			<xs:element name="statement" type="BRANCH_STATEMENT" minOccurs="0" maxOccurs="unbounded"/>
296			<xs:element name="userAttr"  type="USER_ATTR"        minOccurs="0" maxOccurs="unbounded"/>
297		</xs:sequence>
298		<xs:attributeGroup ref="metricAttributes"/>
299	</xs:complexType>
300
301	<!-- FSM coverage -->
302	<xs:complexType name="FSM_STATE">
303		<xs:sequence>
304			<xs:element name="stateBin" type="BIN"/>
305			<xs:element name="userAttr" type="USER_ATTR" minOccurs="0" maxOccurs="unbounded"/>
306		</xs:sequence>
307		<xs:attribute name="stateName"  type="xs:string"/>
308		<xs:attribute name="stateValue" type="xs:string"/>
309	</xs:complexType>
310
311	<xs:complexType name="FSM_TRANSITION">
312		<xs:sequence>
313			<xs:element name="state"         type="xs:string" minOccurs="2" maxOccurs="unbounded"/>
314			<xs:element name="transitionBin" type="BIN"/>
315			<xs:element name="userAttr"      type="USER_ATTR" minOccurs="0" maxOccurs="unbounded"/>
316		</xs:sequence>
317	</xs:complexType>
318
319	<xs:complexType name="FSM">
320		<xs:sequence>
321			<xs:element name="state"           type="FSM_STATE"      minOccurs="0" maxOccurs="unbounded"/>
322			<xs:element name="stateTransition" type="FSM_TRANSITION" minOccurs="0" maxOccurs="unbounded"/>
323			<xs:element name="userAttr"        type="USER_ATTR"      minOccurs="0" maxOccurs="unbounded"/>
324		</xs:sequence>
325		<xs:attribute name="name"  type="xs:string"/>
326		<xs:attribute name="type"  type="xs:string"/>
327		<xs:attribute name="width" type="xs:positiveInteger"/>
328		<xs:attributeGroup ref="objAttributes"/>
329	</xs:complexType>
330
331	<xs:complexType name="FSM_COVERAGE">
332		<xs:sequence>
333			<xs:element name="fsm"      type="FSM"       minOccurs="0" maxOccurs="unbounded"/>
334			<xs:element name="userAttr" type="USER_ATTR" minOccurs="0" maxOccurs="unbounded"/>
335		</xs:sequence>
336		<xs:attributeGroup ref="metricAttributes"/>
337	</xs:complexType>
338
339	<!-- Assertion coverage -->
340	<xs:complexType name="ASSERTION">
341		<xs:sequence>
342			<xs:element name="coverBin"      type="BIN"       minOccurs="0" maxOccurs="1"/>
343			<xs:element name="passBin"       type="BIN"       minOccurs="0" maxOccurs="1"/>
344			<xs:element name="failBin"       type="BIN"       minOccurs="0" maxOccurs="1"/>
345			<xs:element name="vacuousBin"    type="BIN"       minOccurs="0" maxOccurs="1"/>
346			<xs:element name="disabledBin"   type="BIN"       minOccurs="0" maxOccurs="1"/>
347			<xs:element name="attemptBin"    type="BIN"       minOccurs="0" maxOccurs="1"/>
348			<xs:element name="activeBin"     type="BIN"       minOccurs="0" maxOccurs="1"/>
349			<xs:element name="peakActiveBin" type="BIN"       minOccurs="0" maxOccurs="1"/>
350			<xs:element name="userAttr"      type="USER_ATTR" minOccurs="0" maxOccurs="unbounded"/>
351		</xs:sequence>
352		<xs:attribute name="name"          type="xs:string" use="required"/>
353		<xs:attribute name="assertionKind" type="xs:string" use="required"/>
354		<xs:attributeGroup ref="objAttributes"/>
355	</xs:complexType>
356
357	<xs:complexType name="ASSERTION_COVERAGE">
358		<xs:sequence>
359			<xs:element name="assertion" type="ASSERTION" minOccurs="0" maxOccurs="unbounded"/>
360			<xs:element name="userAttr"  type="USER_ATTR" minOccurs="0" maxOccurs="unbounded"/>
361		</xs:sequence>
362		<xs:attributeGroup ref="metricAttributes"/>
363	</xs:complexType>
364
365	<!-- Covergroup coverage -->
366	<xs:complexType name="SEQUENCE">
367		<xs:sequence>
368			<xs:element name="contents" type="BIN_CONTENTS"/>
369			<xs:element name="seqValue" type="xs:integer"   minOccurs="1" maxOccurs="unbounded"/>
370		</xs:sequence>
371	</xs:complexType>
372
373	<xs:complexType name="RANGE_VALUE">
374		<xs:sequence>
375			<xs:element name="contents" type="BIN_CONTENTS"/>
376		</xs:sequence>
377		<xs:attribute name="from" type="xs:integer" use="required"/>
378		<xs:attribute name="to"   type="xs:integer" use="required"/>
379	</xs:complexType>
380
381	<xs:complexType name="COVERPOINT_BIN">
382		<xs:sequence>
383			<xs:choice>
384				<xs:element name="range"    type="RANGE_VALUE" minOccurs="1" maxOccurs="unbounded"/>
385				<xs:element name="sequence" type="SEQUENCE"    minOccurs="1" maxOccurs="unbounded"/>
386			</xs:choice>
387			<xs:element name="userAttr" type="USER_ATTR" minOccurs="0" maxOccurs="unbounded"/>
388		</xs:sequence>
389		<xs:attribute name="alias" type="xs:string"/>
390		<xs:attribute name="type"  type="xs:string" use="required"/>
391	</xs:complexType>
392
393	<xs:complexType name="CROSS_BIN">
394		<xs:sequence>
395			<xs:element name="index"    type="xs:integer"   minOccurs="1" maxOccurs="unbounded"/>
396			<xs:element name="contents" type="BIN_CONTENTS"/>
397			<xs:element name="userAttr" type="USER_ATTR"    minOccurs="0" maxOccurs="unbounded"/>
398		</xs:sequence>
399		<xs:attribute name="type"  type="xs:string" default="default"/>
400		<xs:attribute name="alias" type="xs:string"/>
401	</xs:complexType>
402
403	<xs:complexType name="CROSS_OPTIONS">
404		<xs:attribute name="weight"                  type="xs:nonNegativeInteger" default="1"/>
405		<xs:attribute name="goal"                    type="xs:nonNegativeInteger" default="100"/>
406		<xs:attribute name="comment"                 type="xs:string"             default=""/>
407		<xs:attribute name="at_least"                type="xs:nonNegativeInteger" default="1"/>
408		<xs:attribute name="cross_num_print_missing" type="xs:nonNegativeInteger" default="0"/>
409	</xs:complexType>
410
411	<xs:complexType name="CROSS">
412		<xs:sequence>
413			<xs:element name="options"   type="CROSS_OPTIONS"/>
414			<xs:element name="crossExpr" type="xs:string"     minOccurs="0" maxOccurs="unbounded"/>
415			<xs:element name="crossBin"  type="CROSS_BIN"     minOccurs="0" maxOccurs="unbounded"/>
416			<xs:element name="userAttr"  type="USER_ATTR"     minOccurs="0" maxOccurs="unbounded"/>
417		</xs:sequence>
418		<xs:attribute name="name"  type="xs:string" use="required"/>
419		<xs:attribute name="key"   type="xs:string" use="required"/>
420		<xs:attribute name="alias" type="xs:string"/>
421	</xs:complexType>
422
423	<xs:complexType name="COVERPOINT_OPTIONS">
424		<xs:attribute name="weight"         type="xs:nonNegativeInteger" default="1"/>
425		<xs:attribute name="goal"           type="xs:nonNegativeInteger" default="100"/>
426		<xs:attribute name="comment"        type="xs:string"             default=""/>
427		<xs:attribute name="at_least"       type="xs:nonNegativeInteger" default="1"/>
428		<xs:attribute name="detect_overlap" type="xs:boolean"            default="false"/>
429		<xs:attribute name="auto_bin_max"   type="xs:nonNegativeInteger" default="64"/>
430	</xs:complexType>
431
432	<xs:complexType name="COVERPOINT">
433		<xs:sequence>
434			<xs:element name="options"       type="COVERPOINT_OPTIONS"/>
435			<xs:element name="coverpointBin" type="COVERPOINT_BIN"     minOccurs="1" maxOccurs="unbounded"/>
436			<xs:element name="userAttr"      type="USER_ATTR"          minOccurs="0" maxOccurs="unbounded"/>
437		</xs:sequence>
438		<xs:attribute name="name"       type="xs:string" use="required"/>
439		<xs:attribute name="key"        type="xs:string" use="required"/>
440		<xs:attribute name="alias"      type="xs:string"/>
441		<xs:attribute name="exprString" type="xs:string"/>
442	</xs:complexType>
443
444	<xs:complexType name="CG_ID">
445		<xs:sequence>
446			<xs:element name="cginstSourceId" type="STATEMENT_ID"/>
447			<xs:element name="cgSourceId"     type="STATEMENT_ID"/>
448		</xs:sequence>
449		<xs:attribute name="cgName"     type="xs:string" use="required"/>
450		<xs:attribute name="moduleName" type="xs:string" use="required"/>
451	</xs:complexType>
452
453	<xs:complexType name="CGINST_OPTIONS">
454		<xs:attribute name="weight"                  type="xs:nonNegativeInteger" default="1"/>
455		<xs:attribute name="goal"                    type="xs:nonNegativeInteger" default="100"/>
456		<xs:attribute name="comment"                 type="xs:string"             default=""/>
457		<xs:attribute name="at_least"                type="xs:nonNegativeInteger" default="1"/>
458		<xs:attribute name="detect_overlap"          type="xs:boolean"            default="false"/>
459		<xs:attribute name="auto_bin_max"            type="xs:nonNegativeInteger" default="64"/>
460		<xs:attribute name="cross_num_print_missing" type="xs:nonNegativeInteger" default="0"/>
461		<xs:attribute name="per_instance"            type="xs:boolean"            default="false"/>
462		<xs:attribute name="merge_instances"         type="xs:boolean"            default="false"/>
463	</xs:complexType>
464
465	<xs:complexType name="CGINSTANCE">
466		<xs:sequence>
467			<xs:element name="options"    type="CGINST_OPTIONS"/>
468			<xs:element name="cgId"       type="CG_ID"/>
469			<xs:element name="cgParms"    type="NAME_VALUE"     minOccurs="0" maxOccurs="unbounded"/>
470			<xs:element name="coverpoint" type="COVERPOINT"     minOccurs="1" maxOccurs="unbounded"/>
471			<xs:element name="cross"      type="CROSS"          minOccurs="0" maxOccurs="unbounded"/>
472			<xs:element name="userAttr"   type="USER_ATTR"      minOccurs="0" maxOccurs="unbounded"/>
473		</xs:sequence>
474		<xs:attribute name="name"           type="xs:string"  use="required"/>
475		<xs:attribute name="key"            type="xs:string"  use="required"/>
476		<xs:attribute name="alias"          type="xs:string"/>
477		<xs:attribute name="excluded"       type="xs:boolean" default="false"/>
478		<xs:attribute name="excludedReason" type="xs:string"/>
479	</xs:complexType>
480
481	<xs:complexType name="COVERGROUP_COVERAGE">
482		<xs:sequence>
483			<xs:element name="cgInstance" type="CGINSTANCE" minOccurs="0" maxOccurs="unbounded"/>
484			<xs:element name="userAttr"   type="USER_ATTR"  minOccurs="0" maxOccurs="unbounded"/>
485		</xs:sequence>
486		<xs:attributeGroup ref="metricAttributes"/>
487	</xs:complexType>
488
489	<!-- Instances -->
490	<xs:complexType name="INSTANCE_COVERAGE">
491		<xs:sequence>
492			<xs:element name="designParameter"    type="NAME_VALUE"          minOccurs="0" maxOccurs="unbounded"/>
493			<xs:element name="id"                 type="STATEMENT_ID"/>
494			<xs:element name="toggleCoverage"     type="TOGGLE_COVERAGE"     minOccurs="0" maxOccurs="unbounded"/>
495			<xs:element name="blockCoverage"      type="BLOCK_COVERAGE"      minOccurs="0" maxOccurs="unbounded"/>
496			<xs:element name="conditionCoverage"  type="CONDITION_COVERAGE"  minOccurs="0" maxOccurs="unbounded"/>
497			<xs:element name="branchCoverage"     type="BRANCH_COVERAGE"     minOccurs="0" maxOccurs="unbounded"/>
498			<xs:element name="fsmCoverage"        type="FSM_COVERAGE"        minOccurs="0" maxOccurs="unbounded"/>
499			<xs:element name="assertionCoverage"  type="ASSERTION_COVERAGE"  minOccurs="0" maxOccurs="unbounded"/>
500			<xs:element name="covergroupCoverage" type="COVERGROUP_COVERAGE" minOccurs="0" maxOccurs="unbounded"/>
501			<xs:element name="userAttr"           type="USER_ATTR"           minOccurs="0" maxOccurs="unbounded"/>
502		</xs:sequence>
503		<xs:attribute name="name"             type="xs:string"  use="required"/>
504		<xs:attribute name="key"              type="xs:string"  use="required"/>
505		<xs:attribute name="instanceId"       type="xs:integer"/>
506		<xs:attribute name="alias"            type="xs:string"/>
507		<xs:attribute name="moduleName"       type="xs:string"/>
508		<xs:attribute name="parentInstanceId" type="xs:integer"/>
509	</xs:complexType>
510
511	<!-- Root -->
512	<xs:element name="UCIS">
513		<xs:complexType>
514			<xs:sequence>
515				<xs:element name="sourceFiles"       type="SOURCE_FILE"       minOccurs="1" maxOccurs="unbounded"/>
516				<xs:element name="historyNodes"      type="HISTORY_NODE"      minOccurs="1" maxOccurs="unbounded"/>
517				<xs:element name="instanceCoverages" type="INSTANCE_COVERAGE" minOccurs="1" maxOccurs="unbounded"/>
518			</xs:sequence>
519			<xs:attribute name="ucisVersion" type="xs:string"   use="required"/>
520			<xs:attribute name="writtenBy"   type="xs:string"   use="required"/>
521			<xs:attribute name="writtenTime" type="xs:dateTime" use="required"/>
522		</xs:complexType>
523	</xs:element>
524</xs:schema>