{
	"title": "property",
	"description": "A property file for project of DIDE",
	"type": "object",
	"properties": {
		"toolChain": {
			"type": "string",
			"description": "The tool chain you need",
			"enum": [
				"xilinx",
                "efinity"
			]
		},
		"prjName": {
			"type": "object",
			"default": {
				"PL": "template"
			},
			"properties": {
				"PL": {
					"type": "string",
					"description": "project name of FPGA",
					"default": "template"
				},
				"PS": {
					"type": "string",
					"description": "project name of SOC",
					"default": "test"
				}
			}
		},
		"arch": {
			"type": "object",
			"properties": {
				"prjPath": {
					"type": "string"
				},
				"hardware": {
					"type": "object",
					"properties": {
						"src": {
							"type": "string"
						},
						"sim": {
							"type": "string"
						},
						"data": {
							"type": "string"
						}
					}
				},
				"software": {
					"type": "object",
					"properties": {
						"src": {
							"type": "string"
						},
						"data": {
							"type": "string"
						}
					}
				}
			}
		},
		"library": {
			"type": "object",
			"properties": {
				"state": {
					"type": "string",
					"enum": [
						"local",
						"remote"
					]
				},
				"hardware": {
					"type": "object",
					"properties": {
						"common": {
							"type": "array"
						},
						"custom": {
							"type": "array"
						}
					}
				}
			}
		},
		"IP_REPO": {
			"type": "array"
		},
		"soc": {
			"type": "object",
			"default": {
				"core": "none"
			},
			"properties": {
				"core": {
					"type": "string",
					"description": "Supported CPU for SOC",
					"enum": [
						"none",
						"cortexM3",
						"microblaze",
						"ps7_cortexa9_0",
						"ps7_cortexa9_1",
						"psu_cortexr5",
						"psu_cortexa53"
					]
				},
				"bd": {
					"type": "string",
					"description": "The bd_file for FPGA Designed",
					"enum": [
						"zynq_default",
						"m3_xIP_default",
						"MicroBlaze_default",
						"PCIe_Test"
					]
				},
				"os": {
					"type": "string",
					"default": "standalone",
					"description": "the os for SOC application",
					"enum": [
						"linux",
						"xilkernel",
						"standalone",
						"freertos10_xilinx"
					]
				},
				"app": {
					"type": "string",
					"default": "Hello World",
					"description": "the app for SOC application",
					"enum": [
						"Hello World",
						"Empty Application",
						"Zynq FSBL",
						"Zynq MP FSBL",
						"SREC SPI Bootloader",
						"SREC Bootloader",
						"Zynq DRAM tests",
						"Zynq MP DRAM tests",
						"ZynqMP PMU Firmware",
						"RSA Authentication App",
						"Libmetal AMP Demo",
						"lwIP Echo Server",
						"lwIP TCP Perf Client",
						"lwIP TCP Perf Server",
						"lwIP UDP Perf Client",
						"lwIP UDP Perf Server",
						"Memory Tests",
						"OpenAMP echo-test",
						"OpenAMP matrix multiplication Demo",
						"OpenAMP RPC Demo",
						"Peripheral Tests",
						"DDR self refresh",
						"Dhrystone",
						"Xilkernel POSIX Threads Demo",
						"FreeRTOS Hello World",
						"FreeRTOS lwIP Echo Server",
						"FreeRTOS lwIP TCP Perf Client",
						"FreeRTOS lwIP TCP Perf Server",
						"FreeRTOS lwIP UDP Perf Client",
						"FreeRTOS lwIP UDP Perf Server",
						"Linux Empty Application",
						"Linux Hello World"
					]
				}
			},
			"dependencies": {
				"bd": [
					"core"
				],
				"os": [
					"core"
				],
				"app": [
					"core"
				]
			}
		},
		"enableShowLog": {
			"type": "boolean",
			"description": "Whether to display logs during compilation",
			"default": false,
			"enum": [
				true,
				false
			]
		},
		"device": {
			"type": "string",
			"description": "The device type",
			"enum": [
				"none",
				"xc7z020clg400-2",
				"xc7a35tftg256-1",
				"xc7a35tcsg324-1",
				"xc7z035ffg676-2",
				"xc7z020clg484-1"
			]
		},
        "iverilogCompileOptions": {
            "type": "object",
            "description": "options to define iverilog arguments",
            "properties": {
                "standard": {
                    "type": "string",
                    "description": "value of argument -g, default is -g2012",
                    "default": "2012"
                },
                "includes": {
                    "type": "array",
                    "description": "value of argument -I"
                }
            }
        }
	},
	"required": [
		"toolChain",
		"soc",
		"device"
	]
}