{
    "id": "FM_DelayBlock",
    "name": "FM_DelayBlock",
    "features": {
        "DelayBlock": {
            "name": "DelayBlock",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "DelayBlock_23": {
            "name": "DelayBlock_23",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "d_input": {
            "name": "d_input",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "d_parameter": {
            "name": "d_parameter",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "e_input": {
            "name": "e_input",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "enable_via_input": {
            "name": "enable_via_input",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "external_init_value": {
            "name": "external_init_value",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "ic_input": {
            "name": "ic_input",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "ic_parameter": {
            "name": "ic_parameter",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "res_input": {
            "name": "res_input",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "resettable": {
            "name": "resettable",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "rootFeature": {
            "name": "rootFeature",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "sem": {
            "name": "sem",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "sem_enable": {
            "name": "sem_enable",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "sem_reset": {
            "name": "sem_reset",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "sem_reset_enable": {
            "name": "sem_reset_enable",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "sem_reset_enable_variable_delay": {
            "name": "sem_reset_enable_variable_delay",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "sem_reset_variable_delay": {
            "name": "sem_reset_variable_delay",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "sem_variable_delay": {
            "name": "sem_variable_delay",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        },
        "semantics": {
            "name": "semantics",
            "optional": false,
            "type": "XOR",
            "note": ""
        },
        "u_input": {
            "name": "u_input",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "v_output": {
            "name": "v_output",
            "optional": false,
            "type": "FEATURE",
            "note": ""
        },
        "variable_delay": {
            "name": "variable_delay",
            "optional": true,
            "type": "FEATURE",
            "note": ""
        }
    },
    "tree": {
        "id": "DelayBlock",
        "children": [
            {
                "id": "DelayBlock_23"
            },
            {
                "id": "d_parameter"
            },
            {
                "id": "ic_parameter"
            },
            {
                "id": "rootFeature",
                "children": [
                    {
                        "id": "enable_via_input",
                        "children": [
                            {
                                "id": "e_input"
                            }
                        ]
                    },
                    {
                        "id": "external_init_value",
                        "children": [
                            {
                                "id": "ic_input"
                            }
                        ]
                    },
                    {
                        "id": "resettable",
                        "children": [
                            {
                                "id": "res_input"
                            }
                        ]
                    },
                    {
                        "id": "variable_delay",
                        "children": [
                            {
                                "id": "d_input"
                            }
                        ]
                    }
                ]
            },
            {
                "id": "semantics",
                "children": [
                    {
                        "id": "sem"
                    },
                    {
                        "id": "sem_enable"
                    },
                    {
                        "id": "sem_reset"
                    },
                    {
                        "id": "sem_reset_enable"
                    },
                    {
                        "id": "sem_reset_enable_variable_delay"
                    },
                    {
                        "id": "sem_reset_variable_delay"
                    },
                    {
                        "id": "sem_variable_delay"
                    }
                ]
            },
            {
                "id": "u_input"
            },
            {
                "id": "v_output"
            }
        ]
    },
    "constraints": {
        "Constraint 0": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_reset_variable_delay"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "resettable"
                    ]
                }
            ]
        },
        "Constraint 1": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_reset"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "resettable"
                    ]
                }
            ]
        },
        "Constraint 2": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_reset_variable_delay"
                    ]
                },
                {
                    "type": "NotTerm",
                    "operands": [
                        {
                            "type": "FeatureTerm",
                            "operands": [
                                "enable_via_input"
                            ]
                        }
                    ]
                }
            ]
        },
        "Constraint 3": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_enable"
                    ]
                },
                {
                    "type": "NotTerm",
                    "operands": [
                        {
                            "type": "FeatureTerm",
                            "operands": [
                                "resettable"
                            ]
                        }
                    ]
                }
            ]
        },
        "Constraint 4": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_reset_enable_variable_delay"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "variable_delay"
                    ]
                }
            ]
        },
        "Constraint 5": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_reset_enable_variable_delay"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "resettable"
                    ]
                }
            ]
        },
        "Constraint 6": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_reset"
                    ]
                },
                {
                    "type": "NotTerm",
                    "operands": [
                        {
                            "type": "FeatureTerm",
                            "operands": [
                                "enable_via_input"
                            ]
                        }
                    ]
                }
            ]
        },
        "Constraint 7": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem"
                    ]
                },
                {
                    "type": "NotTerm",
                    "operands": [
                        {
                            "type": "FeatureTerm",
                            "operands": [
                                "resettable"
                            ]
                        }
                    ]
                }
            ]
        },
        "Constraint 8": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "d_parameter"
                    ]
                }
            ]
        },
        "Constraint 9": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_enable"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "enable_via_input"
                    ]
                }
            ]
        },
        "Constraint 10": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem"
                    ]
                },
                {
                    "type": "NotTerm",
                    "operands": [
                        {
                            "type": "FeatureTerm",
                            "operands": [
                                "enable_via_input"
                            ]
                        }
                    ]
                }
            ]
        },
        "Constraint 11": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_reset_enable"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "enable_via_input"
                    ]
                }
            ]
        },
        "Constraint 12": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_reset_enable"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "resettable"
                    ]
                }
            ]
        },
        "Constraint 13": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_variable_delay"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "variable_delay"
                    ]
                }
            ]
        },
        "Constraint 14": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_variable_delay"
                    ]
                },
                {
                    "type": "NotTerm",
                    "operands": [
                        {
                            "type": "FeatureTerm",
                            "operands": [
                                "resettable"
                            ]
                        }
                    ]
                }
            ]
        },
        "Constraint 15": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_variable_delay"
                    ]
                },
                {
                    "type": "NotTerm",
                    "operands": [
                        {
                            "type": "FeatureTerm",
                            "operands": [
                                "enable_via_input"
                            ]
                        }
                    ]
                }
            ]
        },
        "Constraint 16": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_reset_enable_variable_delay"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "enable_via_input"
                    ]
                }
            ]
        },
        "Constraint 17": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "sem_reset_variable_delay"
                    ]
                },
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "variable_delay"
                    ]
                }
            ]
        },
        "Constraint 18": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "ic_parameter"
                    ]
                },
                {
                    "type": "NotTerm",
                    "operands": [
                        {
                            "type": "FeatureTerm",
                            "operands": [
                                "external_init_value"
                            ]
                        }
                    ]
                }
            ]
        },
        "Constraint 19": {
            "type": "ImpliesTerm",
            "operands": [
                {
                    "type": "FeatureTerm",
                    "operands": [
                        "d_parameter"
                    ]
                },
                {
                    "type": "NotTerm",
                    "operands": [
                        {
                            "type": "FeatureTerm",
                            "operands": [
                                "variable_delay"
                            ]
                        }
                    ]
                }
            ]
        }
    }
}