{
  "schema": "xpg.programming_guide.v0.2",
  "register_input_format": "company_rdf_json",
  "generated_at": "2026-11-04T00:00:00.000Z",
  "files": {
    "rdf_blocks": [
      "demo_control_rdf.json",
      "demo_sensor_rdf.json"
    ],
    "addr_maps": [
      "demo_addr_map.json"
    ],
    "rnoc_maps": [
      "demo_bus_map.json"
    ]
  },
  "flow": {
    "id": "demo.sensor_init",
    "description": "Synthetic controller and sensor initialization; all names and addresses are fictional",
    "scope": "fictional_soc",
    "applies_to": {
      "ip_sim": true,
      "soc_sim": true,
      "post_si": true,
      "programming_guide": true
    },
    "phases": [
      {
        "id": "demo_init",
        "title": "Demo initialization",
        "owner": "demo_owner",
        "steps": [
          {
            "op": "read",
            "target": "register",
            "reg": "DEMO_CONTROL",
            "field": "",
            "value": "",
            "condition": "",
            "timeout_us": "",
            "interval_us": "",
            "comment": "Inspect the fictional controller before configuration.",
            "source": {
              "block": "demo_control_reg",
              "block_id": "demo_control_rdf.json:demo_control_reg",
              "file": "demo_control_rdf.json",
              "map_to": "demoDecoder",
              "address": "0x40001000",
              "local_offset": "0x00000000",
              "block_offset": "0x00001000",
              "addr_map": "demo_control_reg.demo_control_reg.demoDecoder",
              "rnoc_map": "demo.demo_bus.demoDecoder",
              "sv_macro_namespace": "DEMO_BUS",
              "sv_macro_block": "DEMO_CONTROL_REG",
              "hdl_path": "demo.control.config",
              "access": "RW",
              "bit_range": "[31:0]",
              "width": 32,
              "reset": "",
              "description": "Fictional controller configuration"
            }
          },
          {
            "op": "write",
            "target": "register",
            "reg": "DEMO_SENSOR_CONFIG",
            "field": "",
            "value": "0x00001001",
            "condition": "",
            "timeout_us": "",
            "interval_us": "",
            "comment": "Enable fictional sampling with a 16-tick demo period.",
            "source": {
              "block": "demo_sensor_reg",
              "block_id": "demo_sensor_rdf.json:demo_sensor_reg",
              "file": "demo_sensor_rdf.json",
              "map_to": "demoDecoder",
              "address": "0x40002000",
              "local_offset": "0x00000000",
              "block_offset": "0x00002000",
              "addr_map": "demo_sensor_reg.demo_sensor_reg.demoDecoder",
              "rnoc_map": "demo.demo_bus.demoDecoder",
              "sv_macro_namespace": "DEMO_BUS",
              "sv_macro_block": "DEMO_SENSOR_REG",
              "hdl_path": "demo.sensor.config",
              "access": "RW",
              "bit_range": "[31:0]",
              "width": 32,
              "reset": "",
              "description": "Fictional sensor configuration"
            }
          },
          {
            "op": "rmw",
            "target": "field",
            "reg": "DEMO_CONTROL",
            "field": "enable",
            "value": "0x1",
            "condition": "",
            "timeout_us": "",
            "interval_us": "",
            "comment": "Enable the fictional controller while preserving other fields.",
            "source": {
              "block": "demo_control_reg",
              "block_id": "demo_control_rdf.json:demo_control_reg",
              "file": "demo_control_rdf.json",
              "map_to": "demoDecoder",
              "address": "0x40001000",
              "local_offset": "0x00000000",
              "block_offset": "0x00001000",
              "addr_map": "demo_control_reg.demo_control_reg.demoDecoder",
              "rnoc_map": "demo.demo_bus.demoDecoder",
              "sv_macro_namespace": "DEMO_BUS",
              "sv_macro_block": "DEMO_CONTROL_REG",
              "hdl_path": "demo.control.config",
              "access": "RW",
              "bit_range": "[0]",
              "width": 1,
              "reset": "0x0",
              "description": "Enable the fictional controller"
            },
            "fields": [
              {
                "name": "enable",
                "value": "0x1",
                "bit_range": "[0]",
                "reset": "0x0",
                "width": 1,
                "description": "Enable the fictional controller"
              }
            ]
          },
          {
            "op": "poll",
            "target": "field",
            "reg": "DEMO_SENSOR_STATUS",
            "field": "ready",
            "value": "0x1",
            "condition": "eq",
            "timeout_us": 1000,
            "interval_us": 10,
            "comment": "Wait for fictional sensor readiness with a bounded timeout.",
            "source": {
              "block": "demo_sensor_reg",
              "block_id": "demo_sensor_rdf.json:demo_sensor_reg",
              "file": "demo_sensor_rdf.json",
              "map_to": "demoDecoder",
              "address": "0x40002004",
              "local_offset": "0x00000004",
              "block_offset": "0x00002000",
              "addr_map": "demo_sensor_reg.demo_sensor_reg.demoDecoder",
              "rnoc_map": "demo.demo_bus.demoDecoder",
              "sv_macro_namespace": "DEMO_BUS",
              "sv_macro_block": "DEMO_SENSOR_REG",
              "hdl_path": "demo.sensor.status",
              "access": "RO",
              "bit_range": "[0]",
              "width": 1,
              "reset": "0x0",
              "description": "The fictional sensor is ready"
            },
            "fields": [
              {
                "name": "ready",
                "value": "0x1",
                "bit_range": "[0]",
                "reset": "0x0",
                "width": 1,
                "description": "The fictional sensor is ready"
              }
            ]
          }
        ]
      }
    ]
  }
}
