// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0

{ name: "pattgen",
  clocking: [{clock: "clk_i", reset: "rst_ni"}],
  bus_interfaces: [
    { protocol: "tlul", direction: "device" }
  ],
  regwidth: "32",
  // OUTPUT pins
  available_output_list: [
    { name: "pda0_tx", desc: "Serial output data bit for pattern generation on Channel 0" }
    { name: "pcl0_tx", desc: "Clock corresponding to pattern data on Channel 0" }
    { name: "pda1_tx", desc: "Serial output data bit for pattern generation on Channel 1" }
    { name: "pcl1_tx", desc: "Clock corresponding to pattern data on Channel 1" }
  ]
  // INTERRUPT pins
  interrupt_list: [
    { name: "done_ch0"
      desc: "raise if pattern generation on Channel 0 is complete"
    }
    { name: "done_ch1"
      desc: "raise if pattern generation on Channel 1 is complete"
    }
  ],
  alert_list: [
    { name: "fatal_fault",
      desc: '''
      This fatal alert is triggered when a fatal TL-UL bus integrity fault is detected.
      '''
    }
  ],
  param_list: [
    { name:    "NumRegsData",
      type:    "int",
      default: "2",
      desc:    "Number of data registers per each channel",
      local:   "true"
    }
  ],
  countermeasures: [
    { name: "BUS.INTEGRITY",
      desc: "End-to-end bus integrity scheme."
    }
  ]

  // REGISTER definition
  registers: [
    // CTRL register
    { name: "CTRL",
      desc: "PATTGEN control register",
      swaccess: "rw",
      hwaccess: "hro",
      fields: [
        { bits: "0",
          resval: "0",
          name: "ENABLE_CH0",
          desc: "Enable pattern generator functionality for Channel 0",
          tags: [// don't write (e.g. 1'b1) to enable bit
                 // because DUT can operate with zero values programmed to registers - it affects several other csrs
                 "excl:CsrNonInitTests:CsrExclWrite"]
        }
        { bits: "1",
          resval: "0",
          name: "ENABLE_CH1",
          desc: "Enable pattern generator functionality for Channel 1",
          tags: [// don't write (e.g. 1'b1) to enable bit
                 // because DUT can operate with zero values programmed to registers - it affects several other csrs
                 "excl:CsrNonInitTests:CsrExclWrite"]
        }
        { bits: "2",
          resval: "0",
          name: "POLARITY_CH0",
          desc: "Clock (`pcl`) polarity for Channel 0.  If low, `pda` signal changes on falling edge of pcl signal, otherwise pda changes on rising edge. Note that writes to a channel's configuration registers have no effect while the channel is enabled."
        }
        { bits: "3",
          resval: "0",
          name: "POLARITY_CH1",
          desc: "Clock (`pcl`) polarity for Channel 1.  If low, `pda` signal changes on falling edge of `pcl` signal, otherwise pda changes on rising edge. Note that writes to a channel's configuration registers have no effect while the channel is enabled."
        }
      ]
    }
    { name: "PREDIV_CH0",
      desc: "PATTGEN pre-divider register for Channel 0",
      swaccess: "rw",
      hwaccess: "hro",
      fields: [
        { bits: "31:0",
          resval: "0",
          name: "CLK_RATIO",
          desc: "Clock divider ratio fpr Channel 0 (relative to I/O clock). Note that writes to a channel's configuration registers have no effect while the channel is enabled."
        }
      ]
    },
    { name: "PREDIV_CH1",
      desc: "PATTGEN pre-divider register for Channel 1",
      swaccess: "rw",
      hwaccess: "hro",
      fields: [
        { bits: "31:0",
          resval: "0",
          name: "CLK_RATIO",
          desc: "Clock divider ratio for Channel 1 (relative to I/O clock). Note that writes to a channel's configuration registers have no effect while the channel is enabled."
        }
      ]
    },
    { multireg: {
        name: "DATA_CH0",
        desc: "PATTGEN seed pattern multi-registers for Channel 0."
        count: "NumRegsData",
        cname: "PATTGEN",
        swaccess: "rw",
        hwaccess: "hro",
        fields: [
          { bits: "31:0",
            resval: "0",
            name: "DATA",
            desc: "Seed pattern for Channel 0 (1-64 bits). Note that writes to a channel's configuration registers have no effect while the channel is enabled."
          }
        ]
      }
    },
    { multireg: {
        name: "DATA_CH1",
        desc: "PATTGEN seed pattern multi-registers for Channel 1."
        count: "NumRegsData",
        cname: "PATTGEN",
        swaccess: "rw",
        hwaccess: "hro",
        fields: [
          { bits: "31:0",
            resval: "0",
            name: "DATA",
            desc: "Seed pattern for Channel 1 (1-64 bits). Note that writes to a channel's configuration registers have no effect while the channel is enabled."
          }
        ]
      }
    },
    { name: "SIZE",
      desc: "PATTGEN pattern length",
      swaccess: "rw",
      hwaccess: "hro",
      fields: [
        { bits: "5:0",
          resval: "0",
          name: "LEN_CH0",
          desc: "Length of the seed pattern for Channel 0, minus 1. Valid values: 0..63. Note that writes to a channel's configuration registers have no effect while the channel is enabled."
        }
        { bits: "15:6",
          resval: "0",
          name: "REPS_CH0",
          desc: "Number of pattern repetitions for Channel 0, minus 1. Valid values: 0..1023. Note that writes to a channel's configuration registers have no effect while the channel is enabled."
        }
        { bits: "21:16",
          resval: "0",
          name: "LEN_CH1",
          desc: "Length of the seed pattern for Channel 1, minus 1. Valid values: 0..63. Note that writes to a channel's configuration registers have no effect while the channel is enabled."
        }
        { bits: "31:22",
          resval: "0",
          name: "REPS_CH1",
          desc: "Number of pattern repetitions for Channel 1, minus 1. Valid values: 0..1023. Note that writes to a channel's configuration registers have no effect while the channel is enabled."
        }
      ]
    }
  ]
}
