{
"version": "0.10.0", "any": { "oneOf": [ { "type": "object", "title": "Catalog document", "properties": { "catalog": { "type": "object", "properties": { "components": { "type": "array", "items": { "$ref": "defs#/component" } }, "designs": { "type": "array", "items": { "$ref": "defs#/design" } }, "busDefinitions": { "type": "array", "items": { "$ref": "defs#/abstractionDefinition" } } } } }, "required": [ "catalog" ] }, { "type": "object", "title": "Component document", "description": "\nComponent document collects information about a single hardware block without\nexpressing internal structure or hierarchy. Component document expressing following aspects:\n* name, version\n* top level ports\n* parameter schema\n* bus interfaces\n* memory regions\n* registers\n* clocks, resets\n* block generation flow\n* references to implementation, documentation, tests\n", "required": [ "component" ], "properties": { "component": { "type": "object", "required": [ "vendor", "library", "name", "version" ], "properties": { "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" }, "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "busInterfaces": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "$ref": "defs#/busInterface" } }, "model": { "type": "object", "required": [ "ports" ], "properties": { "ports": { "title": "Ports", "oneOf": [ { "type": "object", "patternProperties": { ".+": { "oneOf": [ { "type": "integer" }, { "type": "string" }, { "type": "object", "required": [ "direction", "width" ], "properties": { "direction": { "enum": [ "in", "out", "inout" ] }, "width": { "oneOf": [ { "type": "integer", "minimum": 1 }, { "type": "string" } ] }, "analog": { "enum": [ "in", "out", "inout" ] }, "displayName": { "type": "string" }, "description": { "type": "string" } } } ] } } }, { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "type": "object", "required": [ "name", "wire" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "wire": { "oneOf": [ { "type": "integer" }, { "type": "string" }, { "type": "object", "required": [ "direction", "width" ], "properties": { "direction": { "enum": [ "in", "out", "inout" ] }, "width": { "oneOf": [ { "type": "integer", "minimum": 1 }, { "type": "string" } ] }, "analog": { "enum": [ "in", "out", "inout" ] }, "displayName": { "type": "string" }, "description": { "type": "string" } } } ] } } } } ] } } }, "addressSpaces": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "type": "object", "title": "Address space", "required": [ "name", "range", "width" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "range": { "type": "integer", "minimum": 0 }, "width": { "type": "integer", "minimum": 0 } } } }, "memoryMaps": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "$ref": "defs#/memoryMap" } }, "componentGenerators": { "type": "array" }, "fileSets": { "type": "object" }, "parameters": { "type": "array" } } } } }, { "type": "object", "title": "Desgin document", "properties": { "design": { "type": "object", "properties": { "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" }, "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "instances": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "ref": { "type": "object" } }, "required": [ "name", "ref" ] } }, "connections": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "source": { "type": "array", "items": { "type": "string" }, "minItems": 2, "maxItems": 2 }, "target": { "type": "array", "items": { "type": "string" }, "minItems": 2, "maxItems": 2 }, "import": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "export": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" } } } }, "adHocConnections": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "portReferences": { "type": "array", "items": { "type": "object", "oneOf": [ { "properties": { "kind": { "enum": [ "internal" ] }, "componentRef": { "type": "object" }, "portRef": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" } }, "required": [ "portRef", "componentRef" ] }, { "properties": { "kind": { "enum": [ "extrenal" ] }, "portRef": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" } }, "required": [ "portRef" ] } ] } } } } } }, "required": [ "vendor", "library", "name", "version" ] } }, "required": [ "design" ] }, { "type": "object", "title": "Abstraction definition document", "required": [ "abstractionDefinition" ], "properties": { "abstractionDefinition": { "type": "object", "required": [ "name", "version", "vendor", "library", "busType", "ports" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" }, "busType": { "type": "object", "required": [ "name", "version", "vendor", "library" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" } } }, "ports": { "type": "object", "patternProperties": { ".+": { "type": "object", "required": [ "description", "wire" ], "properties": { "description": { "type": "string" }, "wire": { "type": "object", "properties": { "onMaster": { "type": "object", "properties": { "direction": { "enum": [ "in", "out" ] }, "width": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "oneOf": [ { "required": [ "direction" ], "properties": { "presence": { "enum": [ "optional", "required" ] } } }, { "required": [ "presence" ], "properties": { "presence": { "enum": [ "illegal" ] } } } ] }, "onSlave": { "type": "object", "properties": { "direction": { "enum": [ "in", "out" ] }, "width": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "oneOf": [ { "required": [ "direction" ], "properties": { "presence": { "enum": [ "optional", "required" ] } } }, { "required": [ "presence" ], "properties": { "presence": { "enum": [ "illegal" ] } } } ] }, "onInitiator": { "type": "object", "properties": { "direction": { "enum": [ "in", "out" ] }, "width": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "oneOf": [ { "required": [ "direction" ], "properties": { "presence": { "enum": [ "optional", "required" ] } } }, { "required": [ "presence" ], "properties": { "presence": { "enum": [ "illegal" ] } } } ] }, "onTarget": { "type": "object", "properties": { "direction": { "enum": [ "in", "out" ] }, "width": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "oneOf": [ { "required": [ "direction" ], "properties": { "presence": { "enum": [ "optional", "required" ] } } }, { "required": [ "presence" ], "properties": { "presence": { "enum": [ "illegal" ] } } } ] }, "isAddress": { "description": "the port contains address information", "type": "boolean", "default": false }, "isData": { "description": "the port contains data information", "type": "boolean", "default": false }, "isClock": { "description": "port is a clock for this bus interface", "type": "boolean", "default": false }, "isReset": { "description": "port is a reset for this bus interface", "type": "boolean", "default": false }, "requiresDriver": { "description": "specifies whether the port requires a driver when used in a completed design", "type": "boolean", "default": false }, "defaultValue": { "description": "default logic value for this wire port", "type": "integer", "minimum": 0, "default": 0 } } } } } } }, "props": { "type": "object", "patternProperties": { ".+": { "type": "object", "properties": { "type": { "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] }, "description": { "type": "string" }, "properties": { "type": "object" }, "allOf": { "type": "array", "minItems": 1 }, "anyOf": { "type": "array", "minItems": 1 }, "oneOf": { "type": "array", "minItems": 1 } } } } } } } } }, { "type": "object", "title": "Bus definition document", "required": [ "busDefinition" ], "properties": { "busDefinition": { "type": "object", "required": [ "name", "version", "vendor", "library" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" }, "description": { "type": "string" } } } } } ] }, "component": { "type": "object", "title": "Component document", "description": "\nComponent document collects information about a single hardware block without\nexpressing internal structure or hierarchy. Component document expressing following aspects:\n* name, version\n* top level ports\n* parameter schema\n* bus interfaces\n* memory regions\n* registers\n* clocks, resets\n* block generation flow\n* references to implementation, documentation, tests\n", "required": [ "component" ], "properties": { "component": { "type": "object", "required": [ "vendor", "library", "name", "version" ], "properties": { "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" }, "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "busInterfaces": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "$ref": "defs#/busInterface" } }, "model": { "type": "object", "required": [ "ports" ], "properties": { "ports": { "title": "Ports", "oneOf": [ { "type": "object", "patternProperties": { ".+": { "oneOf": [ { "type": "integer" }, { "type": "string" }, { "type": "object", "required": [ "direction", "width" ], "properties": { "direction": { "enum": [ "in", "out", "inout" ] }, "width": { "oneOf": [ { "type": "integer", "minimum": 1 }, { "type": "string" } ] }, "analog": { "enum": [ "in", "out", "inout" ] }, "displayName": { "type": "string" }, "description": { "type": "string" } } } ] } } }, { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "type": "object", "required": [ "name", "wire" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "wire": { "oneOf": [ { "type": "integer" }, { "type": "string" }, { "type": "object", "required": [ "direction", "width" ], "properties": { "direction": { "enum": [ "in", "out", "inout" ] }, "width": { "oneOf": [ { "type": "integer", "minimum": 1 }, { "type": "string" } ] }, "analog": { "enum": [ "in", "out", "inout" ] }, "displayName": { "type": "string" }, "description": { "type": "string" } } } ] } } } } ] } } }, "addressSpaces": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "type": "object", "title": "Address space", "required": [ "name", "range", "width" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "range": { "type": "integer", "minimum": 0 }, "width": { "type": "integer", "minimum": 0 } } } }, "memoryMaps": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "$ref": "defs#/memoryMap" } }, "componentGenerators": { "type": "array" }, "fileSets": { "type": "object" }, "parameters": { "type": "array" } } } } }, "abstractionDefinition": { "type": "object", "title": "Abstraction definition document", "required": [ "abstractionDefinition" ], "properties": { "abstractionDefinition": { "type": "object", "required": [ "name", "version", "vendor", "library", "busType", "ports" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" }, "busType": { "type": "object", "required": [ "name", "version", "vendor", "library" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" } } }, "ports": { "type": "object", "patternProperties": { ".+": { "type": "object", "required": [ "description", "wire" ], "properties": { "description": { "type": "string" }, "wire": { "type": "object", "properties": { "onMaster": { "type": "object", "properties": { "direction": { "enum": [ "in", "out" ] }, "width": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "oneOf": [ { "required": [ "direction" ], "properties": { "presence": { "enum": [ "optional", "required" ] } } }, { "required": [ "presence" ], "properties": { "presence": { "enum": [ "illegal" ] } } } ] }, "onSlave": { "type": "object", "properties": { "direction": { "enum": [ "in", "out" ] }, "width": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "oneOf": [ { "required": [ "direction" ], "properties": { "presence": { "enum": [ "optional", "required" ] } } }, { "required": [ "presence" ], "properties": { "presence": { "enum": [ "illegal" ] } } } ] }, "onInitiator": { "type": "object", "properties": { "direction": { "enum": [ "in", "out" ] }, "width": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "oneOf": [ { "required": [ "direction" ], "properties": { "presence": { "enum": [ "optional", "required" ] } } }, { "required": [ "presence" ], "properties": { "presence": { "enum": [ "illegal" ] } } } ] }, "onTarget": { "type": "object", "properties": { "direction": { "enum": [ "in", "out" ] }, "width": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "oneOf": [ { "required": [ "direction" ], "properties": { "presence": { "enum": [ "optional", "required" ] } } }, { "required": [ "presence" ], "properties": { "presence": { "enum": [ "illegal" ] } } } ] }, "isAddress": { "description": "the port contains address information", "type": "boolean", "default": false }, "isData": { "description": "the port contains data information", "type": "boolean", "default": false }, "isClock": { "description": "port is a clock for this bus interface", "type": "boolean", "default": false }, "isReset": { "description": "port is a reset for this bus interface", "type": "boolean", "default": false }, "requiresDriver": { "description": "specifies whether the port requires a driver when used in a completed design", "type": "boolean", "default": false }, "defaultValue": { "description": "default logic value for this wire port", "type": "integer", "minimum": 0, "default": 0 } } } } } } }, "props": { "type": "object", "patternProperties": { ".+": { "type": "object", "properties": { "type": { "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] }, "description": { "type": "string" }, "properties": { "type": "object" }, "allOf": { "type": "array", "minItems": 1 }, "anyOf": { "type": "array", "minItems": 1 }, "oneOf": { "type": "array", "minItems": 1 } } } } } } } } }, "defs": { "$id": "defs", "catalog": { "type": "object", "title": "Catalog document", "properties": { "catalog": { "type": "object", "properties": { "components": { "type": "array", "items": { "$ref": "defs#/component" } }, "designs": { "type": "array", "items": { "$ref": "defs#/design" } }, "busDefinitions": { "type": "array", "items": { "$ref": "defs#/abstractionDefinition" } } } } }, "required": [ "catalog" ] }, "component": { "type": "object", "title": "Component document", "description": "\nComponent document collects information about a single hardware block without\nexpressing internal structure or hierarchy. Component document expressing following aspects:\n* name, version\n* top level ports\n* parameter schema\n* bus interfaces\n* memory regions\n* registers\n* clocks, resets\n* block generation flow\n* references to implementation, documentation, tests\n", "required": [ "component" ], "properties": { "component": { "type": "object", "required": [ "vendor", "library", "name", "version" ], "properties": { "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" }, "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "busInterfaces": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "$ref": "defs#/busInterface" } }, "model": { "type": "object", "required": [ "ports" ], "properties": { "ports": { "title": "Ports", "oneOf": [ { "type": "object", "patternProperties": { ".+": { "oneOf": [ { "type": "integer" }, { "type": "string" }, { "type": "object", "required": [ "direction", "width" ], "properties": { "direction": { "enum": [ "in", "out", "inout" ] }, "width": { "oneOf": [ { "type": "integer", "minimum": 1 }, { "type": "string" } ] }, "analog": { "enum": [ "in", "out", "inout" ] }, "displayName": { "type": "string" }, "description": { "type": "string" } } } ] } } }, { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "type": "object", "required": [ "name", "wire" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "wire": { "oneOf": [ { "type": "integer" }, { "type": "string" }, { "type": "object", "required": [ "direction", "width" ], "properties": { "direction": { "enum": [ "in", "out", "inout" ] }, "width": { "oneOf": [ { "type": "integer", "minimum": 1 }, { "type": "string" } ] }, "analog": { "enum": [ "in", "out", "inout" ] }, "displayName": { "type": "string" }, "description": { "type": "string" } } } ] } } } } ] } } }, "addressSpaces": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "type": "object", "title": "Address space", "required": [ "name", "range", "width" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "range": { "type": "integer", "minimum": 0 }, "width": { "type": "integer", "minimum": 0 } } } }, "memoryMaps": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "$ref": "defs#/memoryMap" } }, "componentGenerators": { "type": "array" }, "fileSets": { "type": "object" }, "parameters": { "type": "array" } } } } }, "design": { "type": "object", "title": "Desgin document", "properties": { "design": { "type": "object", "properties": { "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" }, "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "instances": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "ref": { "type": "object" } }, "required": [ "name", "ref" ] } }, "connections": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "source": { "type": "array", "items": { "type": "string" }, "minItems": 2, "maxItems": 2 }, "target": { "type": "array", "items": { "type": "string" }, "minItems": 2, "maxItems": 2 }, "import": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "export": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" } } } }, "adHocConnections": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "portReferences": { "type": "array", "items": { "type": "object", "oneOf": [ { "properties": { "kind": { "enum": [ "internal" ] }, "componentRef": { "type": "object" }, "portRef": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" } }, "required": [ "portRef", "componentRef" ] }, { "properties": { "kind": { "enum": [ "extrenal" ] }, "portRef": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" } }, "required": [ "portRef" ] } ] } } } } } }, "required": [ "vendor", "library", "name", "version" ] } }, "required": [ "design" ] }, "abstractionDefinition": { "type": "object", "title": "Abstraction definition document", "required": [ "abstractionDefinition" ], "properties": { "abstractionDefinition": { "type": "object", "required": [ "name", "version", "vendor", "library", "busType", "ports" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" }, "busType": { "type": "object", "required": [ "name", "version", "vendor", "library" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" } } }, "ports": { "type": "object", "patternProperties": { ".+": { "type": "object", "required": [ "description", "wire" ], "properties": { "description": { "type": "string" }, "wire": { "type": "object", "properties": { "onMaster": { "type": "object", "properties": { "direction": { "enum": [ "in", "out" ] }, "width": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "oneOf": [ { "required": [ "direction" ], "properties": { "presence": { "enum": [ "optional", "required" ] } } }, { "required": [ "presence" ], "properties": { "presence": { "enum": [ "illegal" ] } } } ] }, "onSlave": { "type": "object", "properties": { "direction": { "enum": [ "in", "out" ] }, "width": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "oneOf": [ { "required": [ "direction" ], "properties": { "presence": { "enum": [ "optional", "required" ] } } }, { "required": [ "presence" ], "properties": { "presence": { "enum": [ "illegal" ] } } } ] }, "onInitiator": { "type": "object", "properties": { "direction": { "enum": [ "in", "out" ] }, "width": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "oneOf": [ { "required": [ "direction" ], "properties": { "presence": { "enum": [ "optional", "required" ] } } }, { "required": [ "presence" ], "properties": { "presence": { "enum": [ "illegal" ] } } } ] }, "onTarget": { "type": "object", "properties": { "direction": { "enum": [ "in", "out" ] }, "width": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] } }, "oneOf": [ { "required": [ "direction" ], "properties": { "presence": { "enum": [ "optional", "required" ] } } }, { "required": [ "presence" ], "properties": { "presence": { "enum": [ "illegal" ] } } } ] }, "isAddress": { "description": "the port contains address information", "type": "boolean", "default": false }, "isData": { "description": "the port contains data information", "type": "boolean", "default": false }, "isClock": { "description": "port is a clock for this bus interface", "type": "boolean", "default": false }, "isReset": { "description": "port is a reset for this bus interface", "type": "boolean", "default": false }, "requiresDriver": { "description": "specifies whether the port requires a driver when used in a completed design", "type": "boolean", "default": false }, "defaultValue": { "description": "default logic value for this wire port", "type": "integer", "minimum": 0, "default": 0 } } } } } } }, "props": { "type": "object", "patternProperties": { ".+": { "type": "object", "properties": { "type": { "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] }, "description": { "type": "string" }, "properties": { "type": "object" }, "allOf": { "type": "array", "minItems": 1 }, "anyOf": { "type": "array", "minItems": 1 }, "oneOf": { "type": "array", "minItems": 1 } } } } } } } } }, "busDefinition": { "type": "object", "title": "Bus definition document", "required": [ "busDefinition" ], "properties": { "busDefinition": { "type": "object", "required": [ "name", "version", "vendor", "library" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" }, "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" }, "description": { "type": "string" } } } } }, "busInterface": { "type": "object", "title": "Bus interface", "required": [ "name", "busType" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "displayName": { "type": "string" }, "description": { "type": "string" }, "interfaceMode": { "enum": [ "master", "slave", "initiator", "target", "monitor", null ] }, "memoryMapRef": { "type": "string" }, "busType": { "oneOf": [ { "type": "object", "required": [ "vendor", "library", "name", "version" ], "properties": { "vendor": { "type": "string", "minLength": 3, "maxLength": 256, "pattern": "^[a-zA-Z][a-zA-Z0-9_.-]*$" }, "library": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" }, "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "version": { "type": "string" } } }, { "type": "string" } ] }, "abstractionTypes": { "type": "array", "items": { "type": "object", "properties": { "viewRef": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[a-zA-Z][:a-zA-Z0-9_-]*$" }, "portMaps": { "oneOf": [ { "type": "object", "patternProperties": { ".+": { "$ref": "defs#/bundle" } } }, { "type": "array", "items": { "type": "string" } } ] } } } } } }, "memoryMap": { "type": "object", "title": "Memory map", "required": [ "name", "addressBlocks" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "addressUnitBits": { "enum": [ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 ], "default": 8 }, "addressBlocks": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "type": "object", "title": "Address block", "required": [ "name", "baseAddress", "range", "width" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "baseAddress": { "type": "integer", "minimum": 0 }, "range": { "type": "integer", "minimum": 0 }, "width": { "type": "integer", "minimum": 0 }, "usage": { "enum": [ "memory", "register" ] }, "volatile": { "type": "boolean" }, "access": { "description": "specifies the accessibility of the data in the address block", "enum": [ "read-write", "read-only", "write-only", "read-writeOnce", "writeOnce" ] }, "registers": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "$ref": "defs#/register" } }, "registerFiles": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "type": "object", "title": "Register file", "required": [ "name", "addressOffset", "range" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "addressOffset": { "oneOf": [ { "type": "string", "minLength": 1, "maxLength": 256 }, { "type": "integer", "minimum": 0 } ] }, "range": { "type": "integer", "minimum": 0 }, "registers": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "$ref": "defs#/register" } } } } } } } } } }, "register": { "type": "object", "title": "Register", "required": [ "name", "addressOffset", "size" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "addressOffset": { "oneOf": [ { "type": "string", "minLength": 1, "maxLength": 256 }, { "type": "integer", "minimum": 0 } ] }, "size": { "oneOf": [ { "type": "string", "minLength": 1, "maxLength": 256 }, { "type": "integer", "minimum": 0 } ] }, "access": { "description": "specifies the accessibility of the data in the address block", "enum": [ "read-write", "read-only", "write-only", "read-writeOnce", "writeOnce" ] }, "displayName": { "type": "string" }, "description": { "type": "string" }, "fields": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "type": "object", "title": "Register field", "required": [ "name", "bitOffset", "bitWidth" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "description": { "type": "string" }, "bitOffset": { "oneOf": [ { "type": "string", "minLength": 1, "maxLength": 256 }, { "type": "integer", "minimum": 0 } ] }, "resetValue": { "type": "integer" }, "bitWidth": { "oneOf": [ { "type": "string", "minLength": 1, "maxLength": 256 }, { "type": "integer", "minimum": 0 } ] }, "volatile": { "type": "boolean" }, "access": { "description": "specifies the accessibility of the data in the address block", "enum": [ "read-write", "read-only", "write-only", "read-writeOnce", "writeOnce" ] }, "enumeratedValues": { "type": "array", "uniqueItemProperties": [ "name" ], "items": { "type": "object", "title": "Enumerated values", "required": [ "name", "value" ], "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[_:A-Za-z][-._:A-Za-z0-9]*$" }, "description": { "type": "string" }, "displayName": { "type": "string" }, "value": { "type": "integer" } } } }, "modifiedWriteValue": { "description": "manipulation of data written to a field", "enum": [ "oneToClear", "oneToSet", "oneToToggle", "zeroToClear", "zeroToSet", "zeroToToggle", "clear", "set", "modify" ] }, "readAction": { "description": "an action that happens to a field after a read operation happens", "enum": [ "clear", "set", "modify" ] }, "testable": { "type": "boolean" }, "reserved": { "type": "boolean" } } } }, "resetValue": { "type": "integer" } } }, "bundle": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } }, { "type": "object", "patternProperties": { ".+": { "$ref": "defs#/bundle" } } } ] } }
}