chipyard icon indicating copy to clipboard operation
chipyard copied to clipboard

Multiple IO ports of same type on FPGA harness

Open T-K-233 opened this issue 2 years ago • 1 comments

Background Work

Chipyard Version and Hash

Release: 1.10.0 Hash: a6a6a6

OS Setup

https://gist.github.com/T-K-233/38e0aff721f2219a96f116822f9dafda

Other Setup

Ex: Prior steps taken / Documentation Followed / etc...

Current Behavior

Currently using this HarnessBinder configuration:

class WithArtyUARTHarnessBinder extends HarnessBinder({
  case (th: Arty35THarness, ports: Seq[UARTPort]) => {
    withClockAndReset(th.clock_32MHz, th.ck_rst) {
      IOBUF(th.uart_rxd_out,  ports(0).io.txd)
      ports(0).io.rxd := IOBUF(th.uart_txd_in)
      
      IOBUF(th.jd_3, ports(1).io.txd)
      ports(1).io.rxd := IOBUF(th.jd_7)

      IOBUF(th.ck_io(0), ports(2).io.txd)
      ports(2).io.rxd := IOBUF(th.ck_io(1))
    }
  }
})

and vivado gives the following error message when generating bistream

ERROR: [Synth 8-2716] syntax error near '"DPI-C' [/home/tk/Desktop/chipyard-fpga/fpga/generated-src/chipyard.fpga.arty.Arty35THarness.TinyRocketArtyConfig/gen-collateral/SimUART.v:3]
WARNING: [Synth 8-11145] root scope declaration is not allowed in Verilog 95/2K mode [/home/tk/Desktop/chipyard-fpga/fpga/generated-src/chipyard.fpga.arty.Arty35THarness.TinyRocketArtyConfig/gen-collateral/SimUART.v:7]
WARNING: [Synth 8-11145] root scope declaration is not allowed in Verilog 95/2K mode [/home/tk/Desktop/chipyard-fpga/fpga/generated-src/chipyard.fpga.arty.Arty35THarness.TinyRocketArtyConfig/gen-collateral/SimUART.v:19]
ERROR: [Synth 8-8896] 'bit' is an unknown type [/home/tk/Desktop/chipyard-fpga/fpga/generated-src/chipyard.fpga.arty.Arty35THarness.TinyRocketArtyConfig/gen-collateral/SimUART.v:35]
ERROR: [Synth 8-8896] 'byte' is an unknown type [/home/tk/Desktop/chipyard-fpga/fpga/generated-src/chipyard.fpga.arty.Arty35THarness.TinyRocketArtyConfig/gen-collateral/SimUART.v:36]
ERROR: [Synth 8-8896] 'bit' is an unknown type [/home/tk/Desktop/chipyard-fpga/fpga/generated-src/chipyard.fpga.arty.Arty35THarness.TinyRocketArtyConfig/gen-collateral/SimUART.v:38]
ERROR: [Synth 8-8896] 'string' is an unknown type [/home/tk/Desktop/chipyard-fpga/fpga/generated-src/chipyard.fpga.arty.Arty35THarness.TinyRocketArtyConfig/gen-collateral/SimUART.v:42]
INFO: [Synth 8-10285] module 'SimUART' is ignored due to previous errors [/home/tk/Desktop/chipyard-fpga/fpga/generated-src/chipyard.fpga.arty.Arty35THarness.TinyRocketArtyConfig/gen-collateral/SimUART.v:90]
INFO: [Synth 8-9084] Verilog file '/home/tk/Desktop/chipyard-fpga/fpga/generated-src/chipyard.fpga.arty.Arty35THarness.TinyRocketArtyConfig/gen-collateral/SimUART.v' ignored due to errors
INFO: [Synth 8-6157] synthesizing module 'Arty35THarness' [/home/tk/Desktop/chipyard-fpga/fpga/generated-src/chipyard.fpga.arty.Arty35THarness.TinyRocketArtyConfig/gen-collateral/Arty35THarness.sv:85]
ERROR: [Synth 8-439] module 'mmcm' not found [/home/tk/Desktop/chipyard-fpga/fpga/generated-src/chipyard.fpga.arty.Arty35THarness.TinyRocketArtyConfig/gen-collateral/Arty35THarness.sv:190]
ERROR: [Synth 8-6156] failed synthesizing module 'Arty35THarness' [/home/tk/Desktop/chipyard-fpga/fpga/generated-src/chipyard.fpga.arty.Arty35THarness.TinyRocketArtyConfig/gen-collateral/Arty35THarness.sv:85]

Expected Behavior

Previous working HarnessBinder configuration:

class WithArtyUARTHarnessBinder extends OverrideHarnessBinder({
  (system: HasPeripheryUARTModuleImp, th: Arty35THarness, ports: Seq[UARTPortIO]) => {
    withClockAndReset(th.clock_32MHz, th.ck_rst) {
      IOBUF(th.uart_rxd_out, ports(0).txd)
      ports(0).rxd := IOBUF(th.uart_txd_in)

      IOBUF(th.jd_3, ports(1).txd)
      ports(1).rxd := IOBUF(th.jd_7)

      IOBUF(th.ck_io(0), ports(2).txd)
      ports(2).rxd := IOBUF(th.ck_io(1))
    }
  }
})

Other Information

No response

T-K-233 avatar Dec 18 '23 07:12 T-K-233

Open a PR adding the new HarnessBinder, I can take a look at the branch in that PR

jerryz123 avatar Dec 28 '23 18:12 jerryz123