| // Copyright lowRISC contributors. |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| // SPDX-License-Identifier: Apache-2.0 |
| // |
| # PADCTRL register template |
| # |
| # Parameter (given by Python tool) |
| # - n_dio_pads: Number of dedicated IO pads |
| # - n_mio_pads: Number of muxed IO pads |
| # - attr_dw: Attribute datawidth |
| { |
| name: "PADCTRL", |
| clock_primary: "clk_i", |
| bus_device: "tlul", |
| regwidth: "32", |
| param_list: [ |
| { name: "NDioPads", |
| desc: "Number of dedicated IO pads", |
| type: "int", |
| default: "4", |
| local: "true" |
| }, |
| { name: "NMioPads", |
| desc: "Number of muxed IO pads", |
| type: "int", |
| default: "16", |
| local: "true" |
| }, |
| { name: "AttrDw", |
| desc: "Pad attribute data width", |
| type: "int", |
| default: "10", |
| local: "true" |
| }, |
| ], |
| registers: [ |
| { name: "REGEN", |
| desc: ''' |
| Register write enable for all control registers. |
| ''', |
| swaccess: "rw0c", |
| hwaccess: "none", |
| fields: [ |
| { |
| bits: "0", |
| name: "wen", |
| desc: ''' When true, all configuration registers can be modified. |
| When false, they become read-only. Defaults true, write zero to clear. |
| ''' |
| resval: 1, |
| }, |
| ] |
| }, |
| # dedicated pads |
| { multireg: { name: "DIO_PADS", |
| desc: '''Dedicated pad attributes. |
| This register has WARL behavior as some attributes may not be implemented. |
| ''', |
| count: "NDioPads", |
| swaccess: "rw", |
| hwaccess: "hrw", |
| hwext: "true", |
| hwqe: "true", |
| regwen: "REGEN", |
| cname: "ATTR", |
| fields: [ |
| { bits: "9:0", |
| name: "ATTR", |
| desc: '''Bit 0: input/output inversion, |
| Bit 1: Virtual open drain enable. |
| Bit 2: Pull enable. |
| Bit 3: Pull select (0: pull down, 1: pull up). |
| Bit 4: Keeper enable. |
| Bit 5: Schmitt trigger enable. |
| Bit 6: Slew rate (0: slow, 1: fast). |
| Bit 7/8: Drive strength (00: weakest, 11: strongest). |
| Bit 9: Reserved. |
| ''' |
| resval: 0 |
| } |
| ], |
| // these CSRs have WARL behavior and may not |
| // read back the same value that was written to them. |
| // further, they have hardware side effects since they drive the |
| // pad attributes, and hence no random data should be written to them. |
| tags: ["excl:CsrAllTests:CsrExclWrite"] |
| } |
| }, |
| # muxed pads |
| { multireg: { name: "MIO_PADS", |
| desc: '''Muxed pad attributes. |
| This register has WARL behavior as some attributes may not be implemented. |
| ''', |
| count: "NMioPads", |
| swaccess: "rw", |
| hwaccess: "hrw", |
| hwext: "true", |
| hwqe: "true", |
| regwen: "REGEN", |
| cname: "ATTR", |
| fields: [ |
| { bits: "9:0", |
| name: "ATTR", |
| desc: '''Bit 0: input/output inversion, |
| Bit 1: Virtual open drain enable. |
| Bit 2: Pull enable. |
| Bit 3: Pull select (0: pull down, 1: pull up). |
| Bit 4: Keeper enable. |
| Bit 5: Schmitt trigger enable. |
| Bit 6: Slew rate (0: slow, 1: fast). |
| Bit 7/8: Drive strength (00: weakest, 11: strongest). |
| Bit 9: Reserved. |
| ''' |
| resval: 0 |
| } |
| ], |
| // these CSRs have WARL behavior and may not |
| // read back the same value that was written to them. |
| // further, they have hardware side effects since they drive the |
| // pad attributes, and hence no random data should be written to them. |
| tags: ["excl:CsrAllTests:CsrExclWrite"] |
| } |
| }, |
| ], |
| } |
| |
| |