[top] Remove NexysVideo pinout configuration and files

This partially addresses #12221

Signed-off-by: Michael Schaffner <msf@opentitan.org>
diff --git a/hw/top_earlgrey/chip_earlgrey_nexysvideo.core b/hw/top_earlgrey/chip_earlgrey_nexysvideo.core
deleted file mode 100644
index ae620e0..0000000
--- a/hw/top_earlgrey/chip_earlgrey_nexysvideo.core
+++ /dev/null
@@ -1,87 +0,0 @@
-CAPI=2:
-# Copyright lowRISC contributors.
-# Licensed under the Apache License, Version 2.0, see LICENSE for details.
-# SPDX-License-Identifier: Apache-2.0
-name: "lowrisc:systems:chip_earlgrey_nexysvideo:0.1"
-description: "Earl Grey toplevel for the Nexys Video board"
-filesets:
-  files_rtl_nexysvideo:
-    depend:
-      - lowrisc:systems:top_earlgrey:0.1
-      - lowrisc:systems:top_earlgrey_pkg
-      - lowrisc:systems:padring
-      - lowrisc:systems:ast
-      - lowrisc:tool:chip_earlgrey_nexysvideo_size_check
-    files:
-      - rtl/clkgen_xil7series.sv
-      - rtl/usr_access_xil7series.sv
-      - rtl/autogen/chip_earlgrey_nexysvideo.sv
-    file_type: systemVerilogSource
-
-  files_constraints:
-    files:
-      - data/clocks.xdc
-      - data/pins_nexysvideo.xdc
-    file_type: xdc
-
-  files_tcl:
-    files:
-      - util/vivado_setup_hooks.tcl: { file_type: tclSource }
-      # File copied by fusesoc into the workroot (the file containing the
-      # .eda.yml file), and referenced from vivado_setup_hooks.tcl
-      - util/vivado_hook_synth_design_pre.tcl: { file_type: user, copyto: vivado_hook_synth_design_pre.tcl }
-      - util/vivado_hook_write_bitstream_pre.tcl: { file_type: user, copyto: vivado_hook_write_bitstream_pre.tcl }
-      - util/vivado_hook_opt_design_post.tcl: { file_type: user, copyto: vivado_hook_opt_design_post.tcl }
-
-parameters:
-  # XXX: This parameter needs to be absolute, or relative to the *.runs/synth_1
-  # directory. It's best to pass it as absolute path when invoking fusesoc, e.g.
-  # --BootRomInitFile=$PWD/build-bin/sw/device/lib/testing/test_rom/test_rom_fpga_nexysvideo.scr.39.vmem
-  # XXX: The VMEM file should be added to the sources of the Vivado project to
-  # make the Vivado dependency tracking work. However this requires changes to
-  # fusesoc first.
-  BootRomInitFile:
-    datatype: str
-    description: Scrambled boot ROM initialization file in 40 bit vmem hex format
-    default: "../../../../../build-bin/sw/device/lib/testing/test_rom/test_rom_fpga_nexysvideo.scr.39.vmem"
-    paramtype: vlogparam
-  OtpCtrlMemInitFile:
-    datatype: str
-    description: OTP initialization file in vmem hex format
-    default: "../../../../../build-bin/sw/device/otp_img/otp_img_fpga_nexysvideo.vmem"
-    paramtype: vlogparam
-  # For value definition, please see ip/prim/rtl/prim_pkg.sv
-  PRIM_DEFAULT_IMPL:
-    datatype: str
-    paramtype: vlogdefine
-    description: Primitives implementation to use, e.g. "prim_pkg::ImplGeneric".
-
-targets:
-  default: &default_target
-    filesets:
-      - files_rtl_nexysvideo
-    toplevel: chip_earlgrey_nexysvideo
-
-  synth:
-    default_tool: vivado
-    filesets:
-      - files_rtl_nexysvideo
-      - files_constraints
-      - files_tcl
-    toplevel: chip_earlgrey_nexysvideo
-    parameters:
-      - BootRomInitFile
-      - OtpCtrlMemInitFile
-      - PRIM_DEFAULT_IMPL=prim_pkg::ImplXilinx
-    tools:
-      vivado:
-        part: "xc7a200tsbg484-1" # Nexys Video
-
-  lint:
-    <<: *default_target
-    default_tool: verilator
-    tools:
-      verilator:
-        mode: lint-only
-        verilator_options:
-          - "-Wall"
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index af26fbc..0453ecb 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -12465,188 +12465,6 @@
         ]
       }
     }
-    {
-      name: nexysvideo
-      pinout:
-      {
-        remove_ports: []
-        remove_pads:
-        [
-          CC1
-          CC2
-          SPI_DEV_D2
-          SPI_DEV_D3
-          SPI_HOST_CLK
-          SPI_HOST_CS_L
-          SPI_HOST_D0
-          SPI_HOST_D1
-          SPI_HOST_D2
-          SPI_HOST_D3
-          FLASH_TEST_VOLT
-          OTP_EXT_VOLT
-          FLASH_TEST_MODE0
-          FLASH_TEST_MODE1
-          IOB10
-          IOB11
-          IOB12
-          IOC0
-          IOC1
-          IOC12
-          IOR2
-          IOR3
-          IOR4
-          IOR5
-          IOR6
-          IOR7
-          IOR8
-          IOR9
-          IOR10
-          IOR11
-          IOR12
-          IOR13
-        ]
-        add_pads:
-        [
-          {
-            name: IO_CLK
-            type: InputStd
-            bank: VCC
-            connection: manual
-            desc: Extra clock input for FPGA target
-          }
-          {
-            name: IO_JSRST_N
-            type: InputStd
-            bank: VCC
-            connection: manual
-            desc: Dedicated JTAG system reset input
-          }
-          {
-            name: IO_USB_DNPULLUP0
-            type: BidirStd
-            bank: VCC
-            connection: manual
-            desc: Manual USB signal for FPGA target
-          }
-          {
-            name: IO_USB_DPPULLUP0
-            type: BidirStd
-            bank: VCC
-            connection: manual
-            desc: Manual USB signal for FPGA target
-          }
-          {
-            name: IO_UPHY_DP_TX
-            type: BidirStd
-            bank: VCC
-            connection: manual
-            desc: Manual USB UPHY signal for FPGA target
-          }
-          {
-            name: IO_UPHY_DN_TX
-            type: BidirStd
-            bank: VCC
-            connection: manual
-            desc: Manual USB UPHY signal for FPGA target
-          }
-          {
-            name: IO_UPHY_DP_RX
-            type: BidirStd
-            bank: VCC
-            connection: manual
-            desc: Manual USB UPHY signal for FPGA target
-          }
-          {
-            name: IO_UPHY_DN_RX
-            type: BidirStd
-            bank: VCC
-            connection: manual
-            desc: Manual USB UPHY signal for FPGA target
-          }
-          {
-            name: IO_UPHY_D_RX
-            type: BidirStd
-            bank: VCC
-            connection: manual
-            desc: Manual USB UPHY signal for FPGA target
-          }
-          {
-            name: IO_UPHY_OE_N
-            type: BidirStd
-            bank: VCC
-            connection: manual
-            desc: Manual USB UPHY signal for FPGA target
-          }
-          {
-            name: IO_UPHY_DPPULLUP
-            type: BidirStd
-            bank: VCC
-            connection: manual
-            desc: Manual USB UPHY signal for FPGA target
-          }
-        ]
-      }
-      pinmux:
-      {
-        special_signals:
-        [
-          {
-            name: tap0
-            pad: IOC0
-            desc: TAP strap signal, maps to a stubbed-off MIO.
-            idx: 22
-          }
-          {
-            name: tap1
-            pad: IOB7
-            desc: TAP strap signal, maps to MIO pad 16.
-            idx: 16
-          }
-          {
-            name: dft0
-            pad: IOC1
-            desc: DFT strap signal, maps to a stubbed-off MIO.
-            idx: 23
-          }
-          {
-            name: dft1
-            pad: IOC12
-            desc: DFT strap signal, maps to a stubbed-off MIO.
-            idx: 34
-          }
-          {
-            name: tck
-            pad: SPI_DEV_CLK
-            desc: JTAG tck signal, overlaid on SPI_DEV.
-            idx: 59
-          }
-          {
-            name: tms
-            pad: SPI_DEV_CS_L
-            desc: JTAG tms signal, overlaid on SPI_DEV.
-            idx: 60
-          }
-          {
-            name: trst_n
-            pad: IOB9
-            desc: JTAG trst_n signal, maps to MIO pad 18.
-            idx: 18
-          }
-          {
-            name: tdi
-            pad: SPI_DEV_D0
-            desc: JTAG tdi signal, overlaid on SPI_DEV.
-            idx: 53
-          }
-          {
-            name: tdo
-            pad: SPI_DEV_D1
-            desc: JTAG tdo signal, overlaid on SPI_DEV.
-            idx: 54
-          }
-        ]
-      }
-    }
   ]
   exported_clks: {}
   wakeups:
diff --git a/hw/top_earlgrey/data/pins_nexysvideo.xdc b/hw/top_earlgrey/data/pins_nexysvideo.xdc
deleted file mode 100644
index 4cfece2..0000000
--- a/hw/top_earlgrey/data/pins_nexysvideo.xdc
+++ /dev/null
@@ -1,355 +0,0 @@
-# This file has been prepared by Digilent and edited for use in this project.
-# Upstream source:
-# https://github.com/Digilent/digilent-xdc/blob/master/Nexys-Video-Master.xdc
-
-## Clock Signal
-set_property -dict { PACKAGE_PIN R4    IOSTANDARD LVCMOS33 } [get_ports { IO_CLK }]; #IO_L13P_T2_MRCC_34 Sch=sysclk
-create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports IO_CLK]
-
-## Clock constraints
-## set via clocks.xdc
-
-## Preserve prim_prince modules and setup multi-cycle paths
-## These are no longer required, but kept here as a reference
-## set_property KEEP_HIERARCHY TRUE [get_cells top_earlgrey/u_flash_eflash/gen_flash_banks[*].i_core/u_scramble/u_cipher]
-## set_multicycle_path -setup 2 -through [get_pins -of_objects [get_cells top_earlgrey/u_flash_eflash/gen_flash_banks[*].i_core/u_scramble/u_cipher]]
-## set_multicycle_path -hold 1  -through [get_pins -of_objects [get_cells top_earlgrey/u_flash_eflash/gen_flash_banks[*].i_core/u_scramble/u_cipher]]
-
-#set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets IO_SDCK_IBUF]; # SDCK clock to be ignored
-
-## FMC Transceiver clocks (Must be set to value provided by Mezzanine card, currently set to 156.25 MHz)
-## Note: This clock is attached to a MGTREFCLK pin
-#set_property -dict { PACKAGE_PIN E6 } [get_ports { GTP_CLK_N }];
-#set_property -dict { PACKAGE_PIN F6 } [get_ports { GTP_CLK_P }];
-#create_clock -add -name gtpclk0_pin -period 6.400 -waveform {0 3.200} [get_ports {GTP_CLK_P}];
-#set_property -dict { PACKAGE_PIN E10 } [get_ports { FMC_MGT_CLK_N }];
-#set_property -dict { PACKAGE_PIN F10 } [get_ports { FMC_MGT_CLK_P }];
-#create_clock -add -name mgtclk1_pin -period 6.400 -waveform {0 3.200} [get_ports {FMC_MGT_CLK_P}];
-
-
-## LEDs
-set_property -dict { PACKAGE_PIN T14   IOSTANDARD LVCMOS25 } [get_ports { IOA8 }]; #IO_L15P_T2_DQS_13 Sch=led[0]
-set_property -dict { PACKAGE_PIN T15   IOSTANDARD LVCMOS25 } [get_ports { IOB0 }]; #IO_L15N_T2_DQS_13 Sch=led[1]
-set_property -dict { PACKAGE_PIN T16   IOSTANDARD LVCMOS25 } [get_ports { IOB1 }]; #IO_L17P_T2_13 Sch=led[2]
-set_property -dict { PACKAGE_PIN U16   IOSTANDARD LVCMOS25 } [get_ports { IOB2 }]; #IO_L17N_T2_13 Sch=led[3]
-set_property -dict { PACKAGE_PIN V15   IOSTANDARD LVCMOS25 } [get_ports { IOB3 }]; #IO_L14N_T2_SRCC_13 Sch=led[4]
-set_property -dict { PACKAGE_PIN W16   IOSTANDARD LVCMOS25 } [get_ports { IOB4 }]; #IO_L16N_T2_13 Sch=led[5]
-set_property -dict { PACKAGE_PIN W15   IOSTANDARD LVCMOS25 } [get_ports { IOB5 }]; #IO_L16P_T2_13 Sch=led[6]
-set_property -dict { PACKAGE_PIN Y13   IOSTANDARD LVCMOS25 } [get_ports { IOB6 }]; #IO_L5P_T0_13 Sch=led[7]
-
-
-## Buttons
-#set_property -dict { PACKAGE_PIN B22 IOSTANDARD LVCMOS12 } [get_ports { btnc }]; #IO_L20N_T3_16 Sch=btnc
-#set_property -dict { PACKAGE_PIN D22 IOSTANDARD LVCMOS12 } [get_ports { btnd }]; #IO_L22N_T3_16 Sch=btnd
-#set_property -dict { PACKAGE_PIN C22 IOSTANDARD LVCMOS12 } [get_ports { btnl }]; #IO_L20P_T3_16 Sch=btnl
-#set_property -dict { PACKAGE_PIN D14 IOSTANDARD LVCMOS12 } [get_ports { btnr }]; #IO_L6P_T0_16 Sch=btnr
-#set_property -dict { PACKAGE_PIN F15 IOSTANDARD LVCMOS12 } [get_ports { btnu }]; #IO_0_16 Sch=btnu
-set_property -dict { PACKAGE_PIN G4  IOSTANDARD LVCMOS15 } [get_ports { POR_N }]; #IO_L12N_T1_MRCC_35 Sch=cpu_resetn
-
-
-## Switches
-set_property -dict { PACKAGE_PIN E22  IOSTANDARD LVCMOS12 } [get_ports { IOA0 }]; #IO_L22P_T3_16 Sch=sw[0]
-set_property -dict { PACKAGE_PIN F21  IOSTANDARD LVCMOS12 } [get_ports { IOA1 }]; #IO_25_16 Sch=sw[1]
-set_property -dict { PACKAGE_PIN G21  IOSTANDARD LVCMOS12 } [get_ports { IOA2 }]; #IO_L24P_T3_16 Sch=sw[2]
-set_property -dict { PACKAGE_PIN G22  IOSTANDARD LVCMOS12 } [get_ports { IOA3 }]; #IO_L24N_T3_16 Sch=sw[3]
-set_property -dict { PACKAGE_PIN H17  IOSTANDARD LVCMOS12 } [get_ports { IOA4 }]; #IO_L6P_T0_15 Sch=sw[4]
-set_property -dict { PACKAGE_PIN J16  IOSTANDARD LVCMOS12 } [get_ports { IOA5 }]; #IO_0_15 Sch=sw[5]
-set_property -dict { PACKAGE_PIN K13  IOSTANDARD LVCMOS12 } [get_ports { IOA6 }]; #IO_L19P_T3_A22_15 Sch=sw[6]
-set_property -dict { PACKAGE_PIN M17  IOSTANDARD LVCMOS12 } [get_ports { IOA7 }]; #IO_25_15 Sch=sw[7]
-
-
-## OLED Display
-#set_property -dict { PACKAGE_PIN W22   IOSTANDARD LVCMOS33 } [get_ports { oled_dc }]; #IO_L7N_T1_D10_14 Sch=oled_dc
-#set_property -dict { PACKAGE_PIN U21   IOSTANDARD LVCMOS33 } [get_ports { oled_res }]; #IO_L4N_T0_D05_14 Sch=oled_res
-#set_property -dict { PACKAGE_PIN W21   IOSTANDARD LVCMOS33 } [get_ports { oled_sclk }]; #IO_L7P_T1_D09_14 Sch=oled_sclk
-#set_property -dict { PACKAGE_PIN Y22   IOSTANDARD LVCMOS33 } [get_ports { oled_sdin }]; #IO_L9N_T1_DQS_D13_14 Sch=oled_sdin
-#set_property -dict { PACKAGE_PIN P20   IOSTANDARD LVCMOS33 } [get_ports { oled_vbat }]; #IO_0_14 Sch=oled_vbat
-#set_property -dict { PACKAGE_PIN V22   IOSTANDARD LVCMOS33 } [get_ports { oled_vdd }]; #IO_L3N_T0_DQS_EMCCLK_14 Sch=oled_vdd
-
-
-## HDMI in
-#set_property -dict { PACKAGE_PIN AA5   IOSTANDARD LVCMOS33 } [get_ports { hdmi_rx_cec }]; #IO_L10P_T1_34 Sch=hdmi_rx_cec
-#set_property -dict { PACKAGE_PIN W4    IOSTANDARD TMDS_33  } [get_ports { hdmi_rx_clk_n }]; #IO_L12N_T1_MRCC_34 Sch=hdmi_rx_clk_n
-#set_property -dict { PACKAGE_PIN V4    IOSTANDARD TMDS_33  } [get_ports { hdmi_rx_clk_p }]; #IO_L12P_T1_MRCC_34 Sch=hdmi_rx_clk_p
-#set_property -dict { PACKAGE_PIN AB12  IOSTANDARD LVCMOS25 } [get_ports { hdmi_rx_hpa }]; #IO_L7N_T1_13 Sch=hdmi_rx_hpa
-#set_property -dict { PACKAGE_PIN Y4    IOSTANDARD LVCMOS33 } [get_ports { hdmi_rx_scl }]; #IO_L11P_T1_SRCC_34 Sch=hdmi_rx_scl
-#set_property -dict { PACKAGE_PIN AB5   IOSTANDARD LVCMOS33 } [get_ports { hdmi_rx_sda }]; #IO_L10N_T1_34 Sch=hdmi_rx_sda
-#set_property -dict { PACKAGE_PIN R3    IOSTANDARD LVCMOS33 } [get_ports { hdmi_rx_txen }]; #IO_L3P_T0_DQS_34 Sch=hdmi_rx_txen
-#set_property -dict { PACKAGE_PIN AA3   IOSTANDARD TMDS_33  } [get_ports { hdmi_rx_n[0] }]; #IO_L9N_T1_DQS_34 Sch=hdmi_rx_n[0]
-#set_property -dict { PACKAGE_PIN Y3    IOSTANDARD TMDS_33  } [get_ports { hdmi_rx_p[0] }]; #IO_L9P_T1_DQS_34 Sch=hdmi_rx_p[0]
-#set_property -dict { PACKAGE_PIN Y2    IOSTANDARD TMDS_33  } [get_ports { hdmi_rx_n[1] }]; #IO_L4N_T0_34 Sch=hdmi_rx_n[1]
-#set_property -dict { PACKAGE_PIN W2    IOSTANDARD TMDS_33  } [get_ports { hdmi_rx_p[1] }]; #IO_L4P_T0_34 Sch=hdmi_rx_p[1]
-#set_property -dict { PACKAGE_PIN V2    IOSTANDARD TMDS_33  } [get_ports { hdmi_rx_n[2] }]; #IO_L2N_T0_34 Sch=hdmi_rx_n[2]
-#set_property -dict { PACKAGE_PIN U2    IOSTANDARD TMDS_33  } [get_ports { hdmi_rx_p[2] }]; #IO_L2P_T0_34 Sch=hdmi_rx_p[2]
-
-
-## HDMI out
-#set_property -dict { PACKAGE_PIN AA4   IOSTANDARD LVCMOS33 } [get_ports { hdmi_tx_cec }]; #IO_L11N_T1_SRCC_34 Sch=hdmi_tx_cec
-#set_property -dict { PACKAGE_PIN U1    IOSTANDARD TMDS_33  } [get_ports { hdmi_tx_clk_n }]; #IO_L1N_T0_34 Sch=hdmi_tx_clk_n
-#set_property -dict { PACKAGE_PIN T1    IOSTANDARD TMDS_33  } [get_ports { hdmi_tx_clk_p }]; #IO_L1P_T0_34 Sch=hdmi_tx_clk_p
-#set_property -dict { PACKAGE_PIN AB13  IOSTANDARD LVCMOS25 } [get_ports { hdmi_tx_hpd }]; #IO_L3N_T0_DQS_13 Sch=hdmi_tx_hpd
-#set_property -dict { PACKAGE_PIN U3    IOSTANDARD LVCMOS33 } [get_ports { hdmi_tx_rscl }]; #IO_L6P_T0_34 Sch=hdmi_tx_rscl
-#set_property -dict { PACKAGE_PIN V3    IOSTANDARD LVCMOS33 } [get_ports { hdmi_tx_rsda }]; #IO_L6N_T0_VREF_34 Sch=hdmi_tx_rsda
-#set_property -dict { PACKAGE_PIN Y1    IOSTANDARD TMDS_33  } [get_ports { hdmi_tx_n[0] }]; #IO_L5N_T0_34 Sch=hdmi_tx_n[0]
-#set_property -dict { PACKAGE_PIN W1    IOSTANDARD TMDS_33  } [get_ports { hdmi_tx_p[0] }]; #IO_L5P_T0_34 Sch=hdmi_tx_p[0]
-#set_property -dict { PACKAGE_PIN AB1   IOSTANDARD TMDS_33  } [get_ports { hdmi_tx_n[1] }]; #IO_L7N_T1_34 Sch=hdmi_tx_n[1]
-#set_property -dict { PACKAGE_PIN AA1   IOSTANDARD TMDS_33  } [get_ports { hdmi_tx_p[1] }]; #IO_L7P_T1_34 Sch=hdmi_tx_p[1]
-#set_property -dict { PACKAGE_PIN AB2   IOSTANDARD TMDS_33  } [get_ports { hdmi_tx_n[2] }]; #IO_L8N_T1_34 Sch=hdmi_tx_n[2]
-#set_property -dict { PACKAGE_PIN AB3   IOSTANDARD TMDS_33  } [get_ports { hdmi_tx_p[2] }]; #IO_L8P_T1_34 Sch=hdmi_tx_p[2]
-
-
-## Display Port
-#set_property -dict { PACKAGE_PIN AB10  IOSTANDARD TMDS_33  } [get_ports { dp_tx_aux_n }]; #IO_L8N_T1_13 Sch=dp_tx_aux_n
-#set_property -dict { PACKAGE_PIN AA11  IOSTANDARD TMDS_33  } [get_ports { dp_tx_aux_n }]; #IO_L9N_T1_DQS_13 Sch=dp_tx_aux_n
-#set_property -dict { PACKAGE_PIN AA9   IOSTANDARD TMDS_33  } [get_ports { dp_tx_aux_p }]; #IO_L8P_T1_13 Sch=dp_tx_aux_p
-#set_property -dict { PACKAGE_PIN AA10  IOSTANDARD TMDS_33  } [get_ports { dp_tx_aux_p }]; #IO_L9P_T1_DQS_13 Sch=dp_tx_aux_p
-#set_property -dict { PACKAGE_PIN N15   IOSTANDARD LVCMOS33 } [get_ports { dp_tx_hpd }]; #IO_25_14 Sch=dp_tx_hpd
-
-
-## Audio Codec
-#set_property -dict { PACKAGE_PIN T4    IOSTANDARD LVCMOS33 } [get_ports { ac_adc_sdata }]; #IO_L13N_T2_MRCC_34 Sch=ac_adc_sdata
-#set_property -dict { PACKAGE_PIN T5    IOSTANDARD LVCMOS33 } [get_ports { ac_bclk }]; #IO_L14P_T2_SRCC_34 Sch=ac_bclk
-#set_property -dict { PACKAGE_PIN W6    IOSTANDARD LVCMOS33 } [get_ports { ac_dac_sdata }]; #IO_L15P_T2_DQS_34 Sch=ac_dac_sdata
-#set_property -dict { PACKAGE_PIN U5    IOSTANDARD LVCMOS33 } [get_ports { ac_lrclk }]; #IO_L14N_T2_SRCC_34 Sch=ac_lrclk
-#set_property -dict { PACKAGE_PIN U6    IOSTANDARD LVCMOS33 } [get_ports { ac_mclk }]; #IO_L16P_T2_34 Sch=ac_mclk
-
-
-## Pmod header JA
-set_property -dict { PACKAGE_PIN AB22  IOSTANDARD LVCMOS33 } [get_ports { IOC2 }]; #IO_L10N_T1_D15_14 Sch=ja[1]
-set_property -dict { PACKAGE_PIN AB18  IOSTANDARD LVCMOS33 } [get_ports { IOC5 }]; #IO_L17N_T2_A13_D29_14 Sch=ja[4]
-set_property -dict { PACKAGE_PIN Y21   IOSTANDARD LVCMOS33 } [get_ports { IOC6 }]; #IO_L9P_T1_DQS_14 Sch=ja[7]
-set_property -dict { PACKAGE_PIN AA21  IOSTANDARD LVCMOS33 } [get_ports { IOC7 }]; #IO_L8N_T1_D12_14 Sch=ja[8]
-set_property -dict { PACKAGE_PIN AA20  IOSTANDARD LVCMOS33 } [get_ports { IOC8 }]; #IO_L8P_T1_D11_14 Sch=ja[9]
-set_property -dict { PACKAGE_PIN AA18  IOSTANDARD LVCMOS33 } [get_ports { IOC9 }]; #IO_L17P_T2_A14_D30_14 Sch=ja[10]
-set_property -dict { PACKAGE_PIN AB21  IOSTANDARD LVCMOS33 } [get_ports { IOC10 }]; #IO_L10P_T1_D14_14 Sch=ja[2]
-set_property -dict { PACKAGE_PIN AB20  IOSTANDARD LVCMOS33 } [get_ports { IOC11 }]; #IO_L15N_T2_DQS_DOUT_CSO_B_14 Sch=ja[3]
-
-
-## Pmod header JB
-set_property -dict { PACKAGE_PIN V9    IOSTANDARD LVCMOS33 DRIVE 8 SLEW FAST } [get_ports { USB_P }]; #IO_L21P_T3_DQS_34 Sch=jb_p[1]
-set_property -dict { PACKAGE_PIN V8    IOSTANDARD LVCMOS33 DRIVE 8 SLEW FAST } [get_ports { USB_N }]; #IO_L21N_T3_DQS_34 Sch=jb_n[1]
-set_property -dict { PACKAGE_PIN V7    IOSTANDARD LVCMOS33 } [get_ports { IO_USB_DPPULLUP0 }]; #IO_L19P_T3_34 Sch=jb_p[2]
-set_property -dict { PACKAGE_PIN W7    IOSTANDARD LVCMOS33 } [get_ports { IOR1 }]; #IO_L19N_T3_VREF_34 Sch=jb_n[2]
-set_property -dict { PACKAGE_PIN Y8    IOSTANDARD LVCMOS33 } [get_ports { IO_USB_DNPULLUP0 }]; #IO_L23P_T3_34 Sch=jb_p[4]
-
-## Pmod header JB UNUSED pins (used for testing 2 USB interfaces)
-#set_property -dict { PACKAGE_PIN W9    IOSTANDARD LVCMOS33 DRIVE 8 SLEW FAST } [get_ports { IO_USB_DP1 }]; #IO_L24P_T3_34 Sch=jb_p[3]
-#set_property -dict { PACKAGE_PIN Y9    IOSTANDARD LVCMOS33 DRIVE 8 SLEW FAST } [get_ports { IO_USB_DN1 }]; #IO_L24N_T3_34 Sch=jb_n[3]
-#set_property -dict { PACKAGE_PIN Y7    IOSTANDARD LVCMOS33 } [get_ports { IO_USB_SENSE1 }]; #IO_L23N_T3_34 Sch=jb_n[4]
-
-## Pmod header JC -- When used for SPI
-#set_property -dict { PACKAGE_PIN Y6    IOSTANDARD LVCMOS33 } [get_ports { IO_SDCK   }]; #IO_L18P_T2_34 Sch=jc_p[1]
-#set_property -dict { PACKAGE_PIN AA6   IOSTANDARD LVCMOS33 } [get_ports { IO_SDCSB  }]; #IO_L18N_T2_34 Sch=jc_n[1]
-#set_property -dict { PACKAGE_PIN AA8   IOSTANDARD LVCMOS33 } [get_ports { IO_SDSDI }]; #IO_L22P_T3_34 Sch=jc_p[2]
-#set_property -dict { PACKAGE_PIN AB8   IOSTANDARD LVCMOS33 } [get_ports { IO_SDSDO }]; #IO_L22N_T3_34 Sch=jc_n[2]
-
-## Pmod header JC -- When used for TI TUSB1106 USB PHY usbdev testing
-set_property -dict { PACKAGE_PIN Y6    IOSTANDARD LVCMOS33 } [get_ports { IO_UPHY_DP_TX }]; #IO_L18P_T2_34 Sch=jc_p[1]
-set_property -dict { PACKAGE_PIN AA6   IOSTANDARD LVCMOS33 } [get_ports { IO_UPHY_DN_TX }]; #IO_L18N_T2_34 Sch=jc_n[1]
-set_property -dict { PACKAGE_PIN AA8   IOSTANDARD LVCMOS33 } [get_ports { IO_UPHY_DP_RX }]; #IO_L22P_T3_34 Sch=jc_p[2]
-set_property -dict { PACKAGE_PIN AB8   IOSTANDARD LVCMOS33 } [get_ports { IO_UPHY_DN_RX }]; #IO_L22N_T3_34 Sch=jc_n[2]
-set_property -dict { PACKAGE_PIN R6    IOSTANDARD LVCMOS33 } [get_ports { IO_UPHY_DPPULLUP }]; #IO_L17P_T2_34 Sch=jc_p[3]
-set_property -dict { PACKAGE_PIN T6    IOSTANDARD LVCMOS33 } [get_ports { IOR0 }]; #IO_L17N_T2_34 Sch=jc_n[3]
-set_property -dict { PACKAGE_PIN AB7   IOSTANDARD LVCMOS33 } [get_ports { IO_UPHY_OE_N }]; #IO_L20P_T3_34 Sch=jc_p[4]
-set_property -dict { PACKAGE_PIN AB6   IOSTANDARD LVCMOS33 } [get_ports { IO_UPHY_D_RX }]; #IO_L20N_T3_34 Sch=jc_n[4]
-
-## USB input delay to accommodate T_FST (full-speed transition time) and the
-## PHY's sampling logic. The PHY expects to only see up to one transient / fake
-## SE0. The phase relationship with the PHY's sampling clock is arbitrary, but
-## for simplicity, constrain the maximum path delay to something smaller than
-## `T_sample - T_FST(max)` to help keep the P/N skew from slipping beyond one
-## sample period.
-set clks_48_unbuf [get_clocks -of_objects [get_pin clkgen/pll/CLKOUT1]]
-set_input_delay -clock ${clks_48_unbuf} -min 3 [get_ports {IO_UPHY_DP_RX IO_UPHY_DN_RX IO_UPHY_D_RX}]
-set_input_delay -clock ${clks_48_unbuf} -add_delay -max 17 [get_ports {IO_UPHY_DP_RX IO_UPHY_DN_RX IO_UPHY_D_RX}]
-
-## USB output max skew constraint
-## Use the output-enable as a "clock" and time the P/N relative to it. Keep the skew within T_FST.
-set usb_embed_out_clk [create_generated_clock -name usb_embed_out_clk -source [get_pin clkgen/pll/CLKOUT1] -multiply_by 1 [get_ports IO_UPHY_OE_N]]
-set_false_path -from [get_clocks -include_generated_clocks clk_io_div4] -to ${usb_embed_out_clk}
-set_output_delay -min -clock ${usb_embed_out_clk} 7 [get_ports {IO_UPHY_DP_TX IO_UPHY_DN_TX}]
-set_output_delay -max -clock ${usb_embed_out_clk} 14 [get_ports {IO_UPHY_DP_TX IO_UPHY_DN_TX}] -add_delay
-
-## Pmod header JC -- Default
-#set_property -dict { PACKAGE_PIN Y6    IOSTANDARD LVCMOS33 } [get_ports { IO_OBS }]; #IO_L18P_T2_34 Sch=jc_p[1]
-#set_property -dict { PACKAGE_PIN AA6   IOSTANDARD LVCMOS33 } [get_ports { jc[1] }]; #IO_L18N_T2_34 Sch=jc_n[1]
-#set_property -dict { PACKAGE_PIN AA8   IOSTANDARD LVCMOS33 } [get_ports { jc[2] }]; #IO_L22P_T3_34 Sch=jc_p[2]
-#set_property -dict { PACKAGE_PIN AB8   IOSTANDARD LVCMOS33 } [get_ports { jc[3] }]; #IO_L22N_T3_34 Sch=jc_n[2]
-#set_property -dict { PACKAGE_PIN R6    IOSTANDARD LVCMOS33 } [get_ports { jc[4] }]; #IO_L17P_T2_34 Sch=jc_p[3]
-#set_property -dict { PACKAGE_PIN T6    IOSTANDARD LVCMOS33 } [get_ports { jc[5] }]; #IO_L17N_T2_34 Sch=jc_n[3]
-#set_property -dict { PACKAGE_PIN AB7   IOSTANDARD LVCMOS33 } [get_ports { jc[6] }]; #IO_L20P_T3_34 Sch=jc_p[4]
-#set_property -dict { PACKAGE_PIN AB6   IOSTANDARD LVCMOS33 } [get_ports { jc[7] }]; #IO_L20N_T3_34 Sch=jc_n[4]
-
-
-## XADC Header
-#set_property -dict { PACKAGE_PIN J14   IOSTANDARD LVCMOS33 } [get_ports { xa_p[0] }]; #IO_L3P_T0_DQS_AD1P_15 Sch=xa_p[1]
-#set_property -dict { PACKAGE_PIN H14   IOSTANDARD LVCMOS33 } [get_ports { xa_n[0] }]; #IO_L3N_T0_DQS_AD1N_15 Sch=xa_n[1]
-#set_property -dict { PACKAGE_PIN H13   IOSTANDARD LVCMOS33 } [get_ports { xa_p[1] }]; #IO_L1P_T0_AD0P_15 Sch=xa_p[2]
-#set_property -dict { PACKAGE_PIN G13   IOSTANDARD LVCMOS33 } [get_ports { xa_n[1] }]; #IO_L1N_T0_AD0N_15 Sch=xa_n[2]
-#set_property -dict { PACKAGE_PIN G15   IOSTANDARD LVCMOS33 } [get_ports { xa_p[2] }]; #IO_L2P_T0_AD8P_15 Sch=xa_p[3]
-#set_property -dict { PACKAGE_PIN G16   IOSTANDARD LVCMOS33 } [get_ports { xa_n[2] }]; #IO_L2N_T0_AD8N_15 Sch=xa_n[3]
-#set_property -dict { PACKAGE_PIN J15   IOSTANDARD LVCMOS33 } [get_ports { xa_p[3] }]; #IO_L5P_T0_AD9P_15 Sch=xa_p[4]
-#set_property -dict { PACKAGE_PIN H15   IOSTANDARD LVCMOS33 } [get_ports { xa_n[3] }]; #IO_L5N_T0_AD9N_15 Sch=xa_n[4]
-
-
-## UART
-set_property -dict { PACKAGE_PIN AA19  IOSTANDARD LVCMOS33 } [get_ports { IOC4 }]; #IO_L15P_T2_DQS_RDWR_B_14 Sch=uart_rx_out
-set_property -dict { PACKAGE_PIN V18   IOSTANDARD LVCMOS33 } [get_ports { IOC3 }]; #IO_L14P_T2_SRCC_14 Sch=uart_tx_in
-
-
-## Ethernet
-#set_property -dict { PACKAGE_PIN Y14   IOSTANDARD LVCMOS25 } [get_ports { eth_int_b }]; #IO_L6N_T0_VREF_13 Sch=eth_int_b
-#set_property -dict { PACKAGE_PIN AA16  IOSTANDARD LVCMOS25 } [get_ports { eth_mdc }]; #IO_L1N_T0_13 Sch=eth_mdc
-#set_property -dict { PACKAGE_PIN Y16   IOSTANDARD LVCMOS25 } [get_ports { eth_mdio }]; #IO_L1P_T0_13 Sch=eth_mdio
-#set_property -dict { PACKAGE_PIN W14   IOSTANDARD LVCMOS25 } [get_ports { eth_pme_b }]; #IO_L6P_T0_13 Sch=eth_pme_b
-#set_property -dict { PACKAGE_PIN U7    IOSTANDARD LVCMOS33 } [get_ports { eth_rst_b }]; #IO_25_34 Sch=eth_rst_b
-#set_property -dict { PACKAGE_PIN V13   IOSTANDARD LVCMOS25 } [get_ports { eth_rxck }]; #IO_L13P_T2_MRCC_13 Sch=eth_rxck
-#set_property -dict { PACKAGE_PIN W10   IOSTANDARD LVCMOS25 } [get_ports { eth_rxctl }]; #IO_L10N_T1_13 Sch=eth_rxctl
-#set_property -dict { PACKAGE_PIN AB16  IOSTANDARD LVCMOS25 } [get_ports { eth_rxd[0] }]; #IO_L2P_T0_13 Sch=eth_rxd[0]
-#set_property -dict { PACKAGE_PIN AA15  IOSTANDARD LVCMOS25 } [get_ports { eth_rxd[1] }]; #IO_L4P_T0_13 Sch=eth_rxd[1]
-#set_property -dict { PACKAGE_PIN AB15  IOSTANDARD LVCMOS25 } [get_ports { eth_rxd[2] }]; #IO_L4N_T0_13 Sch=eth_rxd[2]
-#set_property -dict { PACKAGE_PIN AB11  IOSTANDARD LVCMOS25 } [get_ports { eth_rxd[3] }]; #IO_L7P_T1_13 Sch=eth_rxd[3]
-#set_property -dict { PACKAGE_PIN AA14  IOSTANDARD LVCMOS25 } [get_ports { eth_txck }]; #IO_L5N_T0_13 Sch=eth_txck
-#set_property -dict { PACKAGE_PIN V10   IOSTANDARD LVCMOS25 } [get_ports { eth_txctl }]; #IO_L10P_T1_13 Sch=eth_txctl
-#set_property -dict { PACKAGE_PIN Y12   IOSTANDARD LVCMOS25 } [get_ports { eth_txd[0] }]; #IO_L11N_T1_SRCC_13 Sch=eth_txd[0]
-#set_property -dict { PACKAGE_PIN W12   IOSTANDARD LVCMOS25 } [get_ports { eth_txd[1] }]; #IO_L12N_T1_MRCC_13 Sch=eth_txd[1]
-#set_property -dict { PACKAGE_PIN W11   IOSTANDARD LVCMOS25 } [get_ports { eth_txd[2] }]; #IO_L12P_T1_MRCC_13 Sch=eth_txd[2]
-#set_property -dict { PACKAGE_PIN Y11   IOSTANDARD LVCMOS25 } [get_ports { eth_txd[3] }]; #IO_L11P_T1_SRCC_13 Sch=eth_txd[3]
-
-
-## Fan PWM
-#set_property -dict { PACKAGE_PIN U15   IOSTANDARD LVCMOS25 } [get_ports { fan_pwm }]; #IO_L14P_T2_SRCC_13 Sch=fan_pwm
-
-
-## DPTI/DSPI
-#set_property -dict { PACKAGE_PIN Y18   IOSTANDARD LVCMOS33 } [get_ports { prog_clko }]; #IO_L13P_T2_MRCC_14 Sch=prog_clko
-set_property -dict { PACKAGE_PIN U20   IOSTANDARD LVCMOS33 } [get_ports { SPI_DEV_CLK }]; #IO_L11P_T1_SRCC_14 Sch=prog_d0/sck
-set_property -dict { PACKAGE_PIN P14   IOSTANDARD LVCMOS33 } [get_ports { SPI_DEV_D0 }]; #IO_L19P_T3_A10_D26_14 Sch=prog_d1/sdi
-set_property -dict { PACKAGE_PIN P15   IOSTANDARD LVCMOS33 } [get_ports { SPI_DEV_D1 }]; #IO_L22P_T3_A05_D21_14 Sch=prog_d2/sdo
-set_property -dict { PACKAGE_PIN U17   IOSTANDARD LVCMOS33 } [get_ports { SPI_DEV_CS_L }]; #IO_L18P_T2_A12_D28_14 Sch=prog_d3/ss
-set_property -dict { PACKAGE_PIN R17   IOSTANDARD LVCMOS33 } [get_ports { IOB9 }]; #IO_L24N_T3_A00_D16_14 Sch=prog_d[4]
-set_property -dict { PACKAGE_PIN P16   IOSTANDARD LVCMOS33 PULLTYPE PULLUP } [get_ports { IO_JSRST_N }]; #IO_L24P_T3_A01_D17_14 Sch=prog_d[5]
-set_property -dict { PACKAGE_PIN R18   IOSTANDARD LVCMOS33 PULLTYPE PULLDOWN } [get_ports { IOB7 }]; #IO_L20P_T3_A08_D24_14 Sch=prog_d[6]
-set_property -dict { PACKAGE_PIN N14   IOSTANDARD LVCMOS33 PULLTYPE PULLDOWN } [get_ports { IOB8 }]; #IO_L23N_T3_A02_D18_14 Sch=prog_d[7]
-#set_property -dict { PACKAGE_PIN V17   IOSTANDARD LVCMOS33 } [get_ports { prog_oen }]; #IO_L16P_T2_CSI_B_14 Sch=prog_oen
-#set_property -dict { PACKAGE_PIN P19   IOSTANDARD LVCMOS33 } [get_ports { prog_rdn }]; #IO_L5P_T0_D06_14 Sch=prog_rdn
-#set_property -dict { PACKAGE_PIN N17   IOSTANDARD LVCMOS33 } [get_ports { prog_rxen }]; #IO_L21P_T3_DQS_14 Sch=prog_rxen
-#set_property -dict { PACKAGE_PIN P17   IOSTANDARD LVCMOS33 } [get_ports { prog_siwun }]; #IO_L21N_T3_DQS_A06_D22_14 Sch=prog_siwun
-#set_property -dict { PACKAGE_PIN R14   IOSTANDARD LVCMOS33 } [get_ports { prog_spien }]; #IO_L19N_T3_A09_D25_VREF_14 Sch=prog_spien
-#set_property -dict { PACKAGE_PIN Y19   IOSTANDARD LVCMOS33 } [get_ports { prog_txen }]; #IO_L13N_T2_MRCC_14 Sch=prog_txen
-#set_property -dict { PACKAGE_PIN R19   IOSTANDARD LVCMOS33 } [get_ports { prog_wrn }]; #IO_L5N_T0_D07_14 Sch=prog_wrn
-
-
-## HID port
-#set_property -dict { PACKAGE_PIN W17   IOSTANDARD LVCMOS33   PULLUP true } [get_ports { ps2_clk }]; #IO_L16N_T2_A15_D31_14 Sch=ps2_clk
-#set_property -dict { PACKAGE_PIN N13   IOSTANDARD LVCMOS33   PULLUP true } [get_ports { ps2_data }]; #IO_L23P_T3_A03_D19_14 Sch=ps2_data
-
-
-## QSPI
-#set_property -dict { PACKAGE_PIN T19   IOSTANDARD LVCMOS33 } [get_ports { qspi_cs }]; #IO_L6P_T0_FCS_B_14 Sch=qspi_cs
-#set_property -dict { PACKAGE_PIN P22   IOSTANDARD LVCMOS33 } [get_ports { qspi_dq[0] }]; #IO_L1P_T0_D00_SDI_14 Sch=qspi_dq[0]
-#set_property -dict { PACKAGE_PIN R22   IOSTANDARD LVCMOS33 } [get_ports { qspi_dq[1] }]; #IO_L1N_T0_D01_DIN_14 Sch=qspi_dq[1]
-#set_property -dict { PACKAGE_PIN P21   IOSTANDARD LVCMOS33 } [get_ports { qspi_dq[2] }]; #IO_L2P_T0_D02_14 Sch=qspi_dq[2]
-#set_property -dict { PACKAGE_PIN R21   IOSTANDARD LVCMOS33 } [get_ports { qspi_dq[3] }]; #IO_L2N_T0_D03_14 Sch=qspi_dq[3]
-
-
-## SD card
-#set_property -dict { PACKAGE_PIN W19   IOSTANDARD LVCMOS33 } [get_ports { sd_cclk }]; #IO_L12P_T1_MRCC_14 Sch=sd_cclk
-#set_property -dict { PACKAGE_PIN T18   IOSTANDARD LVCMOS33 } [get_ports { sd_cd }]; #IO_L20N_T3_A07_D23_14 Sch=sd_cd
-#set_property -dict { PACKAGE_PIN W20   IOSTANDARD LVCMOS33 } [get_ports { sd_cmd }]; #IO_L12N_T1_MRCC_14 Sch=sd_cmd
-#set_property -dict { PACKAGE_PIN V19   IOSTANDARD LVCMOS33 } [get_ports { sd_d[0] }]; #IO_L14N_T2_SRCC_14 Sch=sd_d[0]
-#set_property -dict { PACKAGE_PIN T21   IOSTANDARD LVCMOS33 } [get_ports { sd_d[1] }]; #IO_L4P_T0_D04_14 Sch=sd_d[1]
-#set_property -dict { PACKAGE_PIN T20   IOSTANDARD LVCMOS33 } [get_ports { sd_d[2] }]; #IO_L6N_T0_D08_VREF_14 Sch=sd_d[2]
-#set_property -dict { PACKAGE_PIN U18   IOSTANDARD LVCMOS33 } [get_ports { sd_d[3] }]; #IO_L18N_T2_A11_D27_14 Sch=sd_d[3]
-#set_property -dict { PACKAGE_PIN V20   IOSTANDARD LVCMOS33 } [get_ports { sd_reset }]; #IO_L11N_T1_SRCC_14 Sch=sd_reset
-
-
-## I2C
-#set_property -dict { PACKAGE_PIN W5    IOSTANDARD LVCMOS33 } [get_ports { scl }]; #IO_L15N_T2_DQS_34 Sch=scl
-#set_property -dict { PACKAGE_PIN V5    IOSTANDARD LVCMOS33 } [get_ports { sda }]; #IO_L16N_T2_34 Sch=sda
-
-
-## Voltage Adjust
-#set_property -dict { PACKAGE_PIN AA13  IOSTANDARD LVCMOS25 } [get_ports { set_vadj[0] }]; #IO_L3P_T0_DQS_13 Sch=set_vadj[0]
-#set_property -dict { PACKAGE_PIN AB17  IOSTANDARD LVCMOS25 } [get_ports { set_vadj[1] }]; #IO_L2N_T0_13 Sch=set_vadj[1]
-#set_property -dict { PACKAGE_PIN V14   IOSTANDARD LVCMOS25 } [get_ports { vadj_en }]; #IO_L13N_T2_MRCC_13 Sch=vadj_en
-
-
-## FMC
-#set_property -dict { PACKAGE_PIN H19   IOSTANDARD LVCMOS12 } [get_ports { fmc_clk0_m2c_n }]; #IO_L12N_T1_MRCC_15 Sch=fmc_clk0_m2c_n
-#set_property -dict { PACKAGE_PIN J19   IOSTANDARD LVCMOS12 } [get_ports { fmc_clk0_m2c_p }]; #IO_L12P_T1_MRCC_15 Sch=fmc_clk0_m2c_p
-#set_property -dict { PACKAGE_PIN C19   IOSTANDARD LVCMOS12 } [get_ports { fmc_clk1_m2c_n }]; #IO_L13N_T2_MRCC_16 Sch=fmc_clk1_m2c_n
-#set_property -dict { PACKAGE_PIN C18   IOSTANDARD LVCMOS12 } [get_ports { fmc_clk1_m2c_p }]; #IO_L13P_T2_MRCC_16 Sch=fmc_clk1_m2c_p
-#set_property -dict { PACKAGE_PIN K19   IOSTANDARD LVCMOS12 } [get_ports { fmc_la00_cc_n }]; #IO_L13N_T2_MRCC_15 Sch=fmc_la00_cc_n
-#set_property -dict { PACKAGE_PIN K18   IOSTANDARD LVCMOS12 } [get_ports { fmc_la00_cc_p }]; #IO_L13P_T2_MRCC_15 Sch=fmc_la00_cc_p
-#set_property -dict { PACKAGE_PIN J21   IOSTANDARD LVCMOS12 } [get_ports { fmc_la01_cc_n }]; #IO_L11N_T1_SRCC_15 Sch=fmc_la01_cc_n
-#set_property -dict { PACKAGE_PIN J20   IOSTANDARD LVCMOS12 } [get_ports { fmc_la01_cc_p }]; #IO_L11P_T1_SRCC_15 Sch=fmc_la01_cc_p
-#set_property -dict { PACKAGE_PIN L18   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[02] }]; #IO_L16N_T2_A27_15 Sch=fmc_la_n[02]
-#set_property -dict { PACKAGE_PIN M18   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[02] }]; #IO_L16P_T2_A28_15 Sch=fmc_la_p[02]
-#set_property -dict { PACKAGE_PIN N19   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[03] }]; #IO_L17N_T2_A25_15 Sch=fmc_la_n[03]
-#set_property -dict { PACKAGE_PIN N18   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[03] }]; #IO_L17P_T2_A26_15 Sch=fmc_la_p[03]
-#set_property -dict { PACKAGE_PIN M20   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[04] }]; #IO_L18N_T2_A23_15 Sch=fmc_la_n[04]
-#set_property -dict { PACKAGE_PIN N20   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[04] }]; #IO_L18P_T2_A24_15 Sch=fmc_la_p[04]
-#set_property -dict { PACKAGE_PIN L21   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[05] }]; #IO_L10N_T1_AD11N_15 Sch=fmc_la_n[05]
-#set_property -dict { PACKAGE_PIN M21   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[05] }]; #IO_L10P_T1_AD11P_15 Sch=fmc_la_p[05]
-#set_property -dict { PACKAGE_PIN M22   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[06] }]; #IO_L15N_T2_DQS_ADV_B_15 Sch=fmc_la_n[06]
-#set_property -dict { PACKAGE_PIN N22   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[06] }]; #IO_L15P_T2_DQS_15 Sch=fmc_la_p[06]
-#set_property -dict { PACKAGE_PIN L13   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[07] }]; #IO_L20N_T3_A19_15 Sch=fmc_la_n[07]
-#set_property -dict { PACKAGE_PIN M13   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[07] }]; #IO_L20P_T3_A20_15 Sch=fmc_la_p[07]
-#set_property -dict { PACKAGE_PIN M16   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[08] }]; #IO_L24N_T3_RS0_15 Sch=fmc_la_n[08]
-#set_property -dict { PACKAGE_PIN M15   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[08] }]; #IO_L24P_T3_RS1_15 Sch=fmc_la_p[08]
-#set_property -dict { PACKAGE_PIN G20   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[09] }]; #IO_L8N_T1_AD10N_15 Sch=fmc_la_n[09]
-#set_property -dict { PACKAGE_PIN H20   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[09] }]; #IO_L8P_T1_AD10P_15 Sch=fmc_la_p[09]
-#set_property -dict { PACKAGE_PIN K22   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[10] }]; #IO_L9N_T1_DQS_AD3N_15 Sch=fmc_la_n[10]
-#set_property -dict { PACKAGE_PIN K21   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[10] }]; #IO_L9P_T1_DQS_AD3P_15 Sch=fmc_la_p[10]
-#set_property -dict { PACKAGE_PIN L15   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[11] }]; #IO_L22N_T3_A16_15 Sch=fmc_la_n[11]
-#set_property -dict { PACKAGE_PIN L14   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[11] }]; #IO_L22P_T3_A17_15 Sch=fmc_la_p[11]
-#set_property -dict { PACKAGE_PIN L20   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[12] }]; #IO_L14N_T2_SRCC_15 Sch=fmc_la_n[12]
-#set_property -dict { PACKAGE_PIN L19   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[12] }]; #IO_L14P_T2_SRCC_15 Sch=fmc_la_p[12]
-#set_property -dict { PACKAGE_PIN J17   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[13] }]; #IO_L21N_T3_DQS_A18_15 Sch=fmc_la_n[13]
-#set_property -dict { PACKAGE_PIN K17   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[13] }]; #IO_L21P_T3_DQS_15 Sch=fmc_la_p[13]
-#set_property -dict { PACKAGE_PIN H22   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[14] }]; #IO_L7N_T1_AD2N_15 Sch=fmc_la_n[14]
-#set_property -dict { PACKAGE_PIN J22   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[14] }]; #IO_L7P_T1_AD2P_15 Sch=fmc_la_p[14]
-#set_property -dict { PACKAGE_PIN K16   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[15] }]; #IO_L23N_T3_FWE_B_15 Sch=fmc_la_n[15]
-#set_property -dict { PACKAGE_PIN L16   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[15] }]; #IO_L23P_T3_FOE_B_15 Sch=fmc_la_p[15]
-#set_property -dict { PACKAGE_PIN G18   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[16] }]; #IO_L4N_T0_15 Sch=fmc_la_n[16]
-#set_property -dict { PACKAGE_PIN G17   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[16] }]; #IO_L4P_T0_15 Sch=fmc_la_p[16]
-#set_property -dict { PACKAGE_PIN B18   IOSTANDARD LVCMOS12 } [get_ports { fmc_la17_cc_n }]; #IO_L11N_T1_SRCC_16 Sch=fmc_la17_cc_n
-#set_property -dict { PACKAGE_PIN B17   IOSTANDARD LVCMOS12 } [get_ports { fmc_la17_cc_p }]; #IO_L11P_T1_SRCC_16 Sch=fmc_la17_cc_p
-#set_property -dict { PACKAGE_PIN C17   IOSTANDARD LVCMOS12 } [get_ports { fmc_la18_cc_n }]; #IO_L12N_T1_MRCC_16 Sch=fmc_la18_cc_n
-#set_property -dict { PACKAGE_PIN D17   IOSTANDARD LVCMOS12 } [get_ports { fmc_la18_cc_p }]; #IO_L12P_T1_MRCC_16 Sch=fmc_la18_cc_p
-#set_property -dict { PACKAGE_PIN A19   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[19] }]; #IO_L17N_T2_16 Sch=fmc_la_n[19]
-#set_property -dict { PACKAGE_PIN A18   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[19] }]; #IO_L17P_T2_16 Sch=fmc_la_p[19]
-#set_property -dict { PACKAGE_PIN F20   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[20] }]; #IO_L18N_T2_16 Sch=fmc_la_n[20]
-#set_property -dict { PACKAGE_PIN F19   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[20] }]; #IO_L18P_T2_16 Sch=fmc_la_p[20]
-#set_property -dict { PACKAGE_PIN D19   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[21] }]; #IO_L14N_T2_SRCC_16 Sch=fmc_la_n[21]
-#set_property -dict { PACKAGE_PIN E19   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[21] }]; #IO_L14P_T2_SRCC_16 Sch=fmc_la_p[21]
-#set_property -dict { PACKAGE_PIN D21   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[22] }]; #IO_L23N_T3_16 Sch=fmc_la_n[22]
-#set_property -dict { PACKAGE_PIN E21   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[22] }]; #IO_L23P_T3_16 Sch=fmc_la_p[22]
-#set_property -dict { PACKAGE_PIN A21   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[23] }]; #IO_L21N_T3_DQS_16 Sch=fmc_la_n[23]
-#set_property -dict { PACKAGE_PIN B21   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[23] }]; #IO_L21P_T3_DQS_16 Sch=fmc_la_p[23]
-#set_property -dict { PACKAGE_PIN B16   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[24] }]; #IO_L7N_T1_16 Sch=fmc_la_n[24]
-#set_property -dict { PACKAGE_PIN B15   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[24] }]; #IO_L7P_T1_16 Sch=fmc_la_p[24]
-#set_property -dict { PACKAGE_PIN E17   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[25] }]; #IO_L2N_T0_16 Sch=fmc_la_n[25]
-#set_property -dict { PACKAGE_PIN F16   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[25] }]; #IO_L2P_T0_16 Sch=fmc_la_p[25]
-#set_property -dict { PACKAGE_PIN E18   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[26] }]; #IO_L15N_T2_DQS_16 Sch=fmc_la_n[26]
-#set_property -dict { PACKAGE_PIN F18   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[26] }]; #IO_L15P_T2_DQS_16 Sch=fmc_la_p[26]
-#set_property -dict { PACKAGE_PIN A20   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[27] }]; #IO_L16N_T2_16 Sch=fmc_la_n[27]
-#set_property -dict { PACKAGE_PIN B20   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[27] }]; #IO_L16P_T2_16 Sch=fmc_la_p[27]
-#set_property -dict { PACKAGE_PIN B13   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[28] }]; #IO_L8N_T1_16 Sch=fmc_la_n[28]
-#set_property -dict { PACKAGE_PIN C13   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[28] }]; #IO_L8P_T1_16 Sch=fmc_la_p[28]
-#set_property -dict { PACKAGE_PIN C15   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[29] }]; #IO_L3N_T0_DQS_16 Sch=fmc_la_n[29]
-#set_property -dict { PACKAGE_PIN C14   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[29] }]; #IO_L3P_T0_DQS_16 Sch=fmc_la_p[29]
-#set_property -dict { PACKAGE_PIN A14   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[30] }]; #IO_L10N_T1_16 Sch=fmc_la_n[30]
-#set_property -dict { PACKAGE_PIN A13   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[30] }]; #IO_L10P_T1_16 Sch=fmc_la_p[30]
-#set_property -dict { PACKAGE_PIN E14   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[31] }]; #IO_L4N_T0_16 Sch=fmc_la_n[31]
-#set_property -dict { PACKAGE_PIN E13   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[31] }]; #IO_L4P_T0_16 Sch=fmc_la_p[31]
-#set_property -dict { PACKAGE_PIN A16   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[32] }]; #IO_L9N_T1_DQS_16 Sch=fmc_la_n[32]
-#set_property -dict { PACKAGE_PIN A15   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[32] }]; #IO_L9P_T1_DQS_16 Sch=fmc_la_p[32]
-#set_property -dict { PACKAGE_PIN F14   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_n[33] }]; #IO_L1N_T0_16 Sch=fmc_la_n[33]
-#set_property -dict { PACKAGE_PIN F13   IOSTANDARD LVCMOS12 } [get_ports { fmc_la_p[33] }]; #IO_L1P_T0_16 Sch=fmc_la_p[33]
-
-
-## Configuration options, can be used for all designs
-set_property CONFIG_VOLTAGE 3.3 [current_design]
-set_property CFGBVS VCCO [current_design]
diff --git a/hw/top_earlgrey/data/top_earlgrey.hjson b/hw/top_earlgrey/data/top_earlgrey.hjson
index 18d0694..b1592dd 100644
--- a/hw/top_earlgrey/data/top_earlgrey.hjson
+++ b/hw/top_earlgrey/data/top_earlgrey.hjson
@@ -1418,54 +1418,5 @@
         ],
       }
     }
-    { name: 'nexysvideo',
-
-      pinout: {
-        remove_ports: [],
-        remove_pads: [
-          'CC1', 'CC2',
-          'SPI_DEV_D2', 'SPI_DEV_D3'
-          'SPI_HOST_CLK', 'SPI_HOST_CS_L',
-          'SPI_HOST_D0', 'SPI_HOST_D1', 'SPI_HOST_D2', 'SPI_HOST_D3',
-          'FLASH_TEST_VOLT', 'OTP_EXT_VOLT'
-          'FLASH_TEST_MODE0', 'FLASH_TEST_MODE1',
-          'IOB10', 'IOB11', 'IOB12',
-          'IOC0', 'IOC1', 'IOC12',
-          'IOR2', 'IOR3', 'IOR4', 'IOR5', 'IOR6', 'IOR7', 'IOR8', 'IOR9', 'IOR10', 'IOR11', 'IOR12', 'IOR13'
-        ],
-
-        add_pads: [
-          // Additional infrastructure pads
-          { name: 'IO_CLK',           type: 'InputStd', bank: 'VCC', connection: 'manual', desc: 'Extra clock input for FPGA target'}
-          { name: 'IO_JSRST_N',       type: 'InputStd', bank: 'VCC', connection: 'manual', desc: 'Dedicated JTAG system reset input'}
-          // Custom USB pads
-          { name: 'IO_USB_DNPULLUP0', type: 'BidirStd', bank: 'VCC', connection: 'manual', desc: 'Manual USB signal for FPGA target'}
-          { name: 'IO_USB_DPPULLUP0', type: 'BidirStd', bank: 'VCC', connection: 'manual', desc: 'Manual USB signal for FPGA target'}
-          { name: 'IO_UPHY_DP_TX',    type: 'BidirStd', bank: 'VCC', connection: 'manual', desc: 'Manual USB UPHY signal for FPGA target'}
-          { name: 'IO_UPHY_DN_TX',    type: 'BidirStd', bank: 'VCC', connection: 'manual', desc: 'Manual USB UPHY signal for FPGA target'}
-          { name: 'IO_UPHY_DP_RX',    type: 'BidirStd', bank: 'VCC', connection: 'manual', desc: 'Manual USB UPHY signal for FPGA target'}
-          { name: 'IO_UPHY_DN_RX',    type: 'BidirStd', bank: 'VCC', connection: 'manual', desc: 'Manual USB UPHY signal for FPGA target'}
-          { name: 'IO_UPHY_D_RX',     type: 'BidirStd', bank: 'VCC', connection: 'manual', desc: 'Manual USB UPHY signal for FPGA target'}
-          { name: 'IO_UPHY_OE_N',     type: 'BidirStd', bank: 'VCC', connection: 'manual', desc: 'Manual USB UPHY signal for FPGA target'}
-          { name: 'IO_UPHY_DPPULLUP', type: 'BidirStd', bank: 'VCC', connection: 'manual', desc: 'Manual USB UPHY signal for FPGA target'}
-        ],
-      },
-
-      pinmux: {
-        special_signals: [
-          // Straps
-          { name: 'tap0',   pad: 'IOC0' ,        desc: 'TAP strap signal, maps to a stubbed-off MIO.'  },
-          { name: 'tap1',   pad: 'IOB7',         desc: 'TAP strap signal, maps to MIO pad 16.'         },
-          { name: 'dft0',   pad: 'IOC1' ,        desc: 'DFT strap signal, maps to a stubbed-off MIO.'  },
-          { name: 'dft1',   pad: 'IOC12',        desc: 'DFT strap signal, maps to a stubbed-off MIO.'  },
-          // JTAG
-          { name: 'tck',    pad: 'SPI_DEV_CLK' , desc: 'JTAG tck signal, overlaid on SPI_DEV.'   },
-          { name: 'tms',    pad: 'SPI_DEV_CS_L', desc: 'JTAG tms signal, overlaid on SPI_DEV.'   },
-          { name: 'trst_n', pad: 'IOB9'        , desc: 'JTAG trst_n signal, maps to MIO pad 18.' },
-          { name: 'tdi',    pad: 'SPI_DEV_D0'  , desc: 'JTAG tdi signal, overlaid on SPI_DEV.'   },
-          { name: 'tdo',    pad: 'SPI_DEV_D1'  , desc: 'JTAG tdo signal, overlaid on SPI_DEV.'   },
-        ],
-      }
-    }
   ]
 }
diff --git a/hw/top_earlgrey/ip/pinmux/doc/autogen/targets.md b/hw/top_earlgrey/ip/pinmux/doc/autogen/targets.md
index d7fbc78..d6a7ff0 100644
--- a/hw/top_earlgrey/ip/pinmux/doc/autogen/targets.md
+++ b/hw/top_earlgrey/ip/pinmux/doc/autogen/targets.md
@@ -5,8 +5,7 @@
 
 -->
 
-|  Target Name  |  #IO Banks  |  #Muxed Pads  |  #Direct Pads  |  #Manual Pads  |  #Total Pads  |                                  Pinout / Pinmux Tables                                  |
-|:-------------:|:-----------:|:-------------:|:--------------:|:--------------:|:-------------:|:----------------------------------------------------------------------------------------:|
-|     ASIC      |      4      |      47       |       14       |       10       |      71       |    [Pinout Table](../../../top_earlgrey/ip/pinmux/doc/autogen/pinout_asic/index.html)    |
-|     CW310     |      4      |      30       |       10       |       14       |      54       |   [Pinout Table](../../../top_earlgrey/ip/pinmux/doc/autogen/pinout_cw310/index.html)    |
-|  NEXYSVIDEO   |      4      |      31       |       4        |       14       |      49       | [Pinout Table](../../../top_earlgrey/ip/pinmux/doc/autogen/pinout_nexysvideo/index.html) |
\ No newline at end of file
+|  Target Name  |  #IO Banks  |  #Muxed Pads  |  #Direct Pads  |  #Manual Pads  |  #Total Pads  |                               Pinout / Pinmux Tables                                |
+|:-------------:|:-----------:|:-------------:|:--------------:|:--------------:|:-------------:|:-----------------------------------------------------------------------------------:|
+|     ASIC      |      4      |      47       |       14       |       10       |      71       | [Pinout Table](../../../top_earlgrey/ip/pinmux/doc/autogen/pinout_asic/index.html)  |
+|     CW310     |      4      |      30       |       10       |       14       |      54       | [Pinout Table](../../../top_earlgrey/ip/pinmux/doc/autogen/pinout_cw310/index.html) |
diff --git a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv b/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv
deleted file mode 100644
index 40f3357..0000000
--- a/hw/top_earlgrey/rtl/autogen/chip_earlgrey_nexysvideo.sv
+++ /dev/null
@@ -1,1080 +0,0 @@
-// Copyright lowRISC contributors.
-// Licensed under the Apache License, Version 2.0, see LICENSE for details.
-// SPDX-License-Identifier: Apache-2.0
-//
-// ------------------- W A R N I N G: A U T O - G E N E R A T E D   C O D E !! -------------------//
-// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED WITH THE FOLLOWING COMMAND:
-//
-// util/topgen.py -t hw/top_earlgrey/data/top_earlgrey.hjson \
-//                -o hw/top_earlgrey/ \
-//                --rnd_cnst_seed 4881560218908238235
-
-module chip_earlgrey_nexysvideo #(
-  // Path to a VMEM file containing the contents of the boot ROM, which will be
-  // baked into the FPGA bitstream.
-  parameter BootRomInitFile = "test_rom_fpga_nexysvideo.32.vmem",
-  // Path to a VMEM file containing the contents of the emulated OTP, which will be
-  // baked into the FPGA bitstream.
-  parameter OtpCtrlMemInitFile = "otp_img_fpga_nexysvideo.vmem"
-) (
-  // Dedicated Pads
-  inout POR_N, // Manual Pad
-  inout USB_P, // Manual Pad
-  inout USB_N, // Manual Pad
-  inout SPI_DEV_D0, // Dedicated Pad for spi_device_sd
-  inout SPI_DEV_D1, // Dedicated Pad for spi_device_sd
-  inout SPI_DEV_CLK, // Dedicated Pad for spi_device_sck
-  inout SPI_DEV_CS_L, // Dedicated Pad for spi_device_csb
-  inout IO_CLK, // Manual Pad
-  inout IO_JSRST_N, // Manual Pad
-  inout IO_USB_DNPULLUP0, // Manual Pad
-  inout IO_USB_DPPULLUP0, // Manual Pad
-  inout IO_UPHY_DP_TX, // Manual Pad
-  inout IO_UPHY_DN_TX, // Manual Pad
-  inout IO_UPHY_DP_RX, // Manual Pad
-  inout IO_UPHY_DN_RX, // Manual Pad
-  inout IO_UPHY_D_RX, // Manual Pad
-  inout IO_UPHY_OE_N, // Manual Pad
-  inout IO_UPHY_DPPULLUP, // Manual Pad
-
-  // Muxed Pads
-  inout IOA0, // MIO Pad 0
-  inout IOA1, // MIO Pad 1
-  inout IOA2, // MIO Pad 2
-  inout IOA3, // MIO Pad 3
-  inout IOA4, // MIO Pad 4
-  inout IOA5, // MIO Pad 5
-  inout IOA6, // MIO Pad 6
-  inout IOA7, // MIO Pad 7
-  inout IOA8, // MIO Pad 8
-  inout IOB0, // MIO Pad 9
-  inout IOB1, // MIO Pad 10
-  inout IOB2, // MIO Pad 11
-  inout IOB3, // MIO Pad 12
-  inout IOB4, // MIO Pad 13
-  inout IOB5, // MIO Pad 14
-  inout IOB6, // MIO Pad 15
-  inout IOB7, // MIO Pad 16
-  inout IOB8, // MIO Pad 17
-  inout IOB9, // MIO Pad 18
-  inout IOC2, // MIO Pad 24
-  inout IOC3, // MIO Pad 25
-  inout IOC4, // MIO Pad 26
-  inout IOC5, // MIO Pad 27
-  inout IOC6, // MIO Pad 28
-  inout IOC7, // MIO Pad 29
-  inout IOC8, // MIO Pad 30
-  inout IOC9, // MIO Pad 31
-  inout IOC10, // MIO Pad 32
-  inout IOC11, // MIO Pad 33
-  inout IOR0, // MIO Pad 35
-  inout IOR1  // MIO Pad 36
-);
-
-  import top_earlgrey_pkg::*;
-  import prim_pad_wrapper_pkg::*;
-
-  ////////////////////////////
-  // Special Signal Indices //
-  ////////////////////////////
-
-  localparam int Tap0PadIdx = 22;
-  localparam int Tap1PadIdx = 16;
-  localparam int Dft0PadIdx = 23;
-  localparam int Dft1PadIdx = 34;
-  localparam int TckPadIdx = 59;
-  localparam int TmsPadIdx = 60;
-  localparam int TrstNPadIdx = 18;
-  localparam int TdiPadIdx = 53;
-  localparam int TdoPadIdx = 54;
-
-  // DFT and Debug signal positions in the pinout.
-  localparam pinmux_pkg::target_cfg_t PinmuxTargetCfg = '{
-    tck_idx:           TckPadIdx,
-    tms_idx:           TmsPadIdx,
-    trst_idx:          TrstNPadIdx,
-    tdi_idx:           TdiPadIdx,
-    tdo_idx:           TdoPadIdx,
-    tap_strap0_idx:    Tap0PadIdx,
-    tap_strap1_idx:    Tap1PadIdx,
-    dft_strap0_idx:    Dft0PadIdx,
-    dft_strap1_idx:    Dft1PadIdx,
-    // TODO: check whether there is a better way to pass these USB-specific params
-    usb_dp_idx:        DioUsbdevUsbDp,
-    usb_dn_idx:        DioUsbdevUsbDn,
-    usb_sense_idx:     MioInUsbdevSense,
-    // Pad types for attribute WARL behavior
-    dio_pad_type: {
-      BidirStd, // DIO spi_host0_csb
-      BidirStd, // DIO spi_host0_sck
-      InputStd, // DIO spi_device_csb
-      InputStd, // DIO spi_device_sck
-      BidirOd, // DIO sysrst_ctrl_aon_flash_wp_l
-      BidirOd, // DIO sysrst_ctrl_aon_ec_rst_l
-      BidirStd, // DIO spi_device_sd
-      BidirStd, // DIO spi_device_sd
-      BidirStd, // DIO spi_device_sd
-      BidirStd, // DIO spi_device_sd
-      BidirStd, // DIO spi_host0_sd
-      BidirStd, // DIO spi_host0_sd
-      BidirStd, // DIO spi_host0_sd
-      BidirStd, // DIO spi_host0_sd
-      BidirStd, // DIO usbdev_usb_dn
-      BidirStd  // DIO usbdev_usb_dp
-    },
-    mio_pad_type: {
-      BidirOd, // MIO Pad 46
-      BidirOd, // MIO Pad 45
-      BidirOd, // MIO Pad 44
-      BidirOd, // MIO Pad 43
-      BidirStd, // MIO Pad 42
-      BidirStd, // MIO Pad 41
-      BidirStd, // MIO Pad 40
-      BidirStd, // MIO Pad 39
-      BidirStd, // MIO Pad 38
-      BidirStd, // MIO Pad 37
-      BidirStd, // MIO Pad 36
-      BidirStd, // MIO Pad 35
-      BidirOd, // MIO Pad 34
-      BidirOd, // MIO Pad 33
-      BidirOd, // MIO Pad 32
-      BidirStd, // MIO Pad 31
-      BidirStd, // MIO Pad 30
-      BidirStd, // MIO Pad 29
-      BidirStd, // MIO Pad 28
-      BidirStd, // MIO Pad 27
-      BidirStd, // MIO Pad 26
-      BidirStd, // MIO Pad 25
-      BidirStd, // MIO Pad 24
-      BidirStd, // MIO Pad 23
-      BidirStd, // MIO Pad 22
-      BidirOd, // MIO Pad 21
-      BidirOd, // MIO Pad 20
-      BidirOd, // MIO Pad 19
-      BidirOd, // MIO Pad 18
-      BidirStd, // MIO Pad 17
-      BidirStd, // MIO Pad 16
-      BidirStd, // MIO Pad 15
-      BidirStd, // MIO Pad 14
-      BidirStd, // MIO Pad 13
-      BidirStd, // MIO Pad 12
-      BidirStd, // MIO Pad 11
-      BidirStd, // MIO Pad 10
-      BidirStd, // MIO Pad 9
-      BidirOd, // MIO Pad 8
-      BidirOd, // MIO Pad 7
-      BidirOd, // MIO Pad 6
-      BidirStd, // MIO Pad 5
-      BidirStd, // MIO Pad 4
-      BidirStd, // MIO Pad 3
-      BidirStd, // MIO Pad 2
-      BidirStd, // MIO Pad 1
-      BidirStd  // MIO Pad 0
-    }
-  };
-
-  ////////////////////////
-  // Signal definitions //
-  ////////////////////////
-
-
-  pad_attr_t [pinmux_reg_pkg::NMioPads-1:0] mio_attr;
-  pad_attr_t [pinmux_reg_pkg::NDioPads-1:0] dio_attr;
-  logic [pinmux_reg_pkg::NMioPads-1:0] mio_out;
-  logic [pinmux_reg_pkg::NMioPads-1:0] mio_oe;
-  logic [pinmux_reg_pkg::NMioPads-1:0] mio_in;
-  logic [pinmux_reg_pkg::NMioPads-1:0] mio_in_raw;
-  logic [pinmux_reg_pkg::NDioPads-1:0] dio_out;
-  logic [pinmux_reg_pkg::NDioPads-1:0] dio_oe;
-  logic [pinmux_reg_pkg::NDioPads-1:0] dio_in;
-
-  logic unused_mio_in_raw;
-  assign unused_mio_in_raw = ^mio_in_raw;
-
-  // Manual pads
-  logic manual_in_por_n, manual_out_por_n, manual_oe_por_n;
-  logic manual_in_usb_p, manual_out_usb_p, manual_oe_usb_p;
-  logic manual_in_usb_n, manual_out_usb_n, manual_oe_usb_n;
-  logic manual_in_io_clk, manual_out_io_clk, manual_oe_io_clk;
-  logic manual_in_io_jsrst_n, manual_out_io_jsrst_n, manual_oe_io_jsrst_n;
-  logic manual_in_io_usb_dnpullup0, manual_out_io_usb_dnpullup0, manual_oe_io_usb_dnpullup0;
-  logic manual_in_io_usb_dppullup0, manual_out_io_usb_dppullup0, manual_oe_io_usb_dppullup0;
-  logic manual_in_io_uphy_dp_tx, manual_out_io_uphy_dp_tx, manual_oe_io_uphy_dp_tx;
-  logic manual_in_io_uphy_dn_tx, manual_out_io_uphy_dn_tx, manual_oe_io_uphy_dn_tx;
-  logic manual_in_io_uphy_dp_rx, manual_out_io_uphy_dp_rx, manual_oe_io_uphy_dp_rx;
-  logic manual_in_io_uphy_dn_rx, manual_out_io_uphy_dn_rx, manual_oe_io_uphy_dn_rx;
-  logic manual_in_io_uphy_d_rx, manual_out_io_uphy_d_rx, manual_oe_io_uphy_d_rx;
-  logic manual_in_io_uphy_oe_n, manual_out_io_uphy_oe_n, manual_oe_io_uphy_oe_n;
-  logic manual_in_io_uphy_dppullup, manual_out_io_uphy_dppullup, manual_oe_io_uphy_dppullup;
-
-  pad_attr_t manual_attr_por_n;
-  pad_attr_t manual_attr_usb_p;
-  pad_attr_t manual_attr_usb_n;
-  pad_attr_t manual_attr_io_clk;
-  pad_attr_t manual_attr_io_jsrst_n;
-  pad_attr_t manual_attr_io_usb_dnpullup0;
-  pad_attr_t manual_attr_io_usb_dppullup0;
-  pad_attr_t manual_attr_io_uphy_dp_tx;
-  pad_attr_t manual_attr_io_uphy_dn_tx;
-  pad_attr_t manual_attr_io_uphy_dp_rx;
-  pad_attr_t manual_attr_io_uphy_dn_rx;
-  pad_attr_t manual_attr_io_uphy_d_rx;
-  pad_attr_t manual_attr_io_uphy_oe_n;
-  pad_attr_t manual_attr_io_uphy_dppullup;
-
-  /////////////////////////
-  // Stubbed pad tie-off //
-  /////////////////////////
-
-  // Only signals going to non-custom pads need to be tied off.
-  logic [69:0] unused_sig;
-  assign dio_in[DioSpiHost0Sd0] = 1'b0;
-  assign unused_sig[9] = dio_out[DioSpiHost0Sd0] ^ dio_oe[DioSpiHost0Sd0];
-  assign dio_in[DioSpiHost0Sd1] = 1'b0;
-  assign unused_sig[10] = dio_out[DioSpiHost0Sd1] ^ dio_oe[DioSpiHost0Sd1];
-  assign dio_in[DioSpiHost0Sd2] = 1'b0;
-  assign unused_sig[11] = dio_out[DioSpiHost0Sd2] ^ dio_oe[DioSpiHost0Sd2];
-  assign dio_in[DioSpiHost0Sd3] = 1'b0;
-  assign unused_sig[12] = dio_out[DioSpiHost0Sd3] ^ dio_oe[DioSpiHost0Sd3];
-  assign dio_in[DioSpiHost0Sck] = 1'b0;
-  assign unused_sig[13] = dio_out[DioSpiHost0Sck] ^ dio_oe[DioSpiHost0Sck];
-  assign dio_in[DioSpiHost0Csb] = 1'b0;
-  assign unused_sig[14] = dio_out[DioSpiHost0Csb] ^ dio_oe[DioSpiHost0Csb];
-  assign dio_in[DioSpiDeviceSd2] = 1'b0;
-  assign unused_sig[17] = dio_out[DioSpiDeviceSd2] ^ dio_oe[DioSpiDeviceSd2];
-  assign dio_in[DioSpiDeviceSd3] = 1'b0;
-  assign unused_sig[18] = dio_out[DioSpiDeviceSd3] ^ dio_oe[DioSpiDeviceSd3];
-  assign mio_in[19] = 1'b0;
-  assign mio_in_raw[19] = 1'b0;
-  assign unused_sig[40] = mio_out[19] ^ mio_oe[19];
-  assign mio_in[20] = 1'b0;
-  assign mio_in_raw[20] = 1'b0;
-  assign unused_sig[41] = mio_out[20] ^ mio_oe[20];
-  assign mio_in[21] = 1'b0;
-  assign mio_in_raw[21] = 1'b0;
-  assign unused_sig[42] = mio_out[21] ^ mio_oe[21];
-  assign mio_in[22] = 1'b0;
-  assign mio_in_raw[22] = 1'b0;
-  assign unused_sig[43] = mio_out[22] ^ mio_oe[22];
-  assign mio_in[23] = 1'b0;
-  assign mio_in_raw[23] = 1'b0;
-  assign unused_sig[44] = mio_out[23] ^ mio_oe[23];
-  assign mio_in[34] = 1'b0;
-  assign mio_in_raw[34] = 1'b0;
-  assign unused_sig[55] = mio_out[34] ^ mio_oe[34];
-  assign mio_in[37] = 1'b0;
-  assign mio_in_raw[37] = 1'b0;
-  assign unused_sig[58] = mio_out[37] ^ mio_oe[37];
-  assign mio_in[38] = 1'b0;
-  assign mio_in_raw[38] = 1'b0;
-  assign unused_sig[59] = mio_out[38] ^ mio_oe[38];
-  assign mio_in[39] = 1'b0;
-  assign mio_in_raw[39] = 1'b0;
-  assign unused_sig[60] = mio_out[39] ^ mio_oe[39];
-  assign mio_in[40] = 1'b0;
-  assign mio_in_raw[40] = 1'b0;
-  assign unused_sig[61] = mio_out[40] ^ mio_oe[40];
-  assign mio_in[41] = 1'b0;
-  assign mio_in_raw[41] = 1'b0;
-  assign unused_sig[62] = mio_out[41] ^ mio_oe[41];
-  assign mio_in[42] = 1'b0;
-  assign mio_in_raw[42] = 1'b0;
-  assign unused_sig[63] = mio_out[42] ^ mio_oe[42];
-  assign dio_in[DioSysrstCtrlAonEcRstL] = 1'b0;
-  assign unused_sig[64] = dio_out[DioSysrstCtrlAonEcRstL] ^ dio_oe[DioSysrstCtrlAonEcRstL];
-  assign dio_in[DioSysrstCtrlAonFlashWpL] = 1'b0;
-  assign unused_sig[65] = dio_out[DioSysrstCtrlAonFlashWpL] ^ dio_oe[DioSysrstCtrlAonFlashWpL];
-  assign mio_in[43] = 1'b0;
-  assign mio_in_raw[43] = 1'b0;
-  assign unused_sig[66] = mio_out[43] ^ mio_oe[43];
-  assign mio_in[44] = 1'b0;
-  assign mio_in_raw[44] = 1'b0;
-  assign unused_sig[67] = mio_out[44] ^ mio_oe[44];
-  assign mio_in[45] = 1'b0;
-  assign mio_in_raw[45] = 1'b0;
-  assign unused_sig[68] = mio_out[45] ^ mio_oe[45];
-  assign mio_in[46] = 1'b0;
-  assign mio_in_raw[46] = 1'b0;
-  assign unused_sig[69] = mio_out[46] ^ mio_oe[46];
-
-  //////////////////////
-  // Padring Instance //
-  //////////////////////
-
-  ast_pkg::ast_clks_t ast_base_clks;
-
-
-  padring #(
-    // Padring specific counts may differ from pinmux config due
-    // to custom, stubbed or added pads.
-    .NDioPads(18),
-    .NMioPads(31),
-    .DioPadType ({
-      BidirStd, // IO_UPHY_DPPULLUP
-      BidirStd, // IO_UPHY_OE_N
-      BidirStd, // IO_UPHY_D_RX
-      BidirStd, // IO_UPHY_DN_RX
-      BidirStd, // IO_UPHY_DP_RX
-      BidirStd, // IO_UPHY_DN_TX
-      BidirStd, // IO_UPHY_DP_TX
-      BidirStd, // IO_USB_DPPULLUP0
-      BidirStd, // IO_USB_DNPULLUP0
-      InputStd, // IO_JSRST_N
-      InputStd, // IO_CLK
-      InputStd, // SPI_DEV_CS_L
-      InputStd, // SPI_DEV_CLK
-      BidirStd, // SPI_DEV_D1
-      BidirStd, // SPI_DEV_D0
-      DualBidirTol, // USB_N
-      DualBidirTol, // USB_P
-      InputStd  // POR_N
-    }),
-    .MioPadType ({
-      BidirStd, // IOR1
-      BidirStd, // IOR0
-      BidirOd, // IOC11
-      BidirOd, // IOC10
-      BidirStd, // IOC9
-      BidirStd, // IOC8
-      BidirStd, // IOC7
-      BidirStd, // IOC6
-      BidirStd, // IOC5
-      BidirStd, // IOC4
-      BidirStd, // IOC3
-      BidirStd, // IOC2
-      BidirOd, // IOB9
-      BidirStd, // IOB8
-      BidirStd, // IOB7
-      BidirStd, // IOB6
-      BidirStd, // IOB5
-      BidirStd, // IOB4
-      BidirStd, // IOB3
-      BidirStd, // IOB2
-      BidirStd, // IOB1
-      BidirStd, // IOB0
-      BidirOd, // IOA8
-      BidirOd, // IOA7
-      BidirOd, // IOA6
-      BidirStd, // IOA5
-      BidirStd, // IOA4
-      BidirStd, // IOA3
-      BidirStd, // IOA2
-      BidirStd, // IOA1
-      BidirStd  // IOA0
-    })
-  ) u_padring (
-  // This is only used for scan and DFT purposes
-    .clk_scan_i   ( 1'b0                  ),
-    .scanmode_i   ( prim_mubi_pkg::MuBi4False ),
-    .dio_in_raw_o ( ),
-    // Chip IOs
-    .dio_pad_io ({
-      IO_UPHY_DPPULLUP,
-      IO_UPHY_OE_N,
-      IO_UPHY_D_RX,
-      IO_UPHY_DN_RX,
-      IO_UPHY_DP_RX,
-      IO_UPHY_DN_TX,
-      IO_UPHY_DP_TX,
-      IO_USB_DPPULLUP0,
-      IO_USB_DNPULLUP0,
-      IO_JSRST_N,
-      IO_CLK,
-      SPI_DEV_CS_L,
-      SPI_DEV_CLK,
-      SPI_DEV_D1,
-      SPI_DEV_D0,
-      USB_N,
-      USB_P,
-      POR_N
-    }),
-
-    .mio_pad_io ({
-      IOR1,
-      IOR0,
-      IOC11,
-      IOC10,
-      IOC9,
-      IOC8,
-      IOC7,
-      IOC6,
-      IOC5,
-      IOC4,
-      IOC3,
-      IOC2,
-      IOB9,
-      IOB8,
-      IOB7,
-      IOB6,
-      IOB5,
-      IOB4,
-      IOB3,
-      IOB2,
-      IOB1,
-      IOB0,
-      IOA8,
-      IOA7,
-      IOA6,
-      IOA5,
-      IOA4,
-      IOA3,
-      IOA2,
-      IOA1,
-      IOA0
-    }),
-
-    // Core-facing
-    .dio_in_o ({
-        manual_in_io_uphy_dppullup,
-        manual_in_io_uphy_oe_n,
-        manual_in_io_uphy_d_rx,
-        manual_in_io_uphy_dn_rx,
-        manual_in_io_uphy_dp_rx,
-        manual_in_io_uphy_dn_tx,
-        manual_in_io_uphy_dp_tx,
-        manual_in_io_usb_dppullup0,
-        manual_in_io_usb_dnpullup0,
-        manual_in_io_jsrst_n,
-        manual_in_io_clk,
-        dio_in[DioSpiDeviceCsb],
-        dio_in[DioSpiDeviceSck],
-        dio_in[DioSpiDeviceSd1],
-        dio_in[DioSpiDeviceSd0],
-        manual_in_usb_n,
-        manual_in_usb_p,
-        manual_in_por_n
-      }),
-    .dio_out_i ({
-        manual_out_io_uphy_dppullup,
-        manual_out_io_uphy_oe_n,
-        manual_out_io_uphy_d_rx,
-        manual_out_io_uphy_dn_rx,
-        manual_out_io_uphy_dp_rx,
-        manual_out_io_uphy_dn_tx,
-        manual_out_io_uphy_dp_tx,
-        manual_out_io_usb_dppullup0,
-        manual_out_io_usb_dnpullup0,
-        manual_out_io_jsrst_n,
-        manual_out_io_clk,
-        dio_out[DioSpiDeviceCsb],
-        dio_out[DioSpiDeviceSck],
-        dio_out[DioSpiDeviceSd1],
-        dio_out[DioSpiDeviceSd0],
-        manual_out_usb_n,
-        manual_out_usb_p,
-        manual_out_por_n
-      }),
-    .dio_oe_i ({
-        manual_oe_io_uphy_dppullup,
-        manual_oe_io_uphy_oe_n,
-        manual_oe_io_uphy_d_rx,
-        manual_oe_io_uphy_dn_rx,
-        manual_oe_io_uphy_dp_rx,
-        manual_oe_io_uphy_dn_tx,
-        manual_oe_io_uphy_dp_tx,
-        manual_oe_io_usb_dppullup0,
-        manual_oe_io_usb_dnpullup0,
-        manual_oe_io_jsrst_n,
-        manual_oe_io_clk,
-        dio_oe[DioSpiDeviceCsb],
-        dio_oe[DioSpiDeviceSck],
-        dio_oe[DioSpiDeviceSd1],
-        dio_oe[DioSpiDeviceSd0],
-        manual_oe_usb_n,
-        manual_oe_usb_p,
-        manual_oe_por_n
-      }),
-    .dio_attr_i ({
-        manual_attr_io_uphy_dppullup,
-        manual_attr_io_uphy_oe_n,
-        manual_attr_io_uphy_d_rx,
-        manual_attr_io_uphy_dn_rx,
-        manual_attr_io_uphy_dp_rx,
-        manual_attr_io_uphy_dn_tx,
-        manual_attr_io_uphy_dp_tx,
-        manual_attr_io_usb_dppullup0,
-        manual_attr_io_usb_dnpullup0,
-        manual_attr_io_jsrst_n,
-        manual_attr_io_clk,
-        dio_attr[DioSpiDeviceCsb],
-        dio_attr[DioSpiDeviceSck],
-        dio_attr[DioSpiDeviceSd1],
-        dio_attr[DioSpiDeviceSd0],
-        manual_attr_usb_n,
-        manual_attr_usb_p,
-        manual_attr_por_n
-      }),
-
-    .mio_in_o ({
-        mio_in[36:35],
-        mio_in[33:24],
-        mio_in[18:0]
-      }),
-    .mio_out_i ({
-        mio_out[36:35],
-        mio_out[33:24],
-        mio_out[18:0]
-      }),
-    .mio_oe_i ({
-        mio_oe[36:35],
-        mio_oe[33:24],
-        mio_oe[18:0]
-      }),
-    .mio_attr_i ({
-        mio_attr[36:35],
-        mio_attr[33:24],
-        mio_attr[18:0]
-      }),
-    .mio_in_raw_o ({
-        mio_in_raw[36:35],
-        mio_in_raw[33:24],
-        mio_in_raw[18:0]
-      })
-  );
-
-
-
-
-  /////////////////////
-  // USB Overlay Mux //
-  /////////////////////
-
-  // TODO: generalize this USB mux code and align with other tops.
-
-  // Software can enable the pinflip feature inside usbdev.
-  // The example hello_usbdev does this based on GPIO0 (a switch on the board)
-  //
-  // Here, we use the state of the DN pullup to effectively undo the
-  // swapping such that the PCB always sees the unflipped D+/D-. We
-  // could do the same inside the .xdc file but then two FPGA
-  // bitstreams would be needed for testing.
-  //
-  // dio_in/out/oe map is: PADS <- _padring <- JTAG mux -> _umux -> USB mux -> _core
-
-  // Split out for differential PHY testing
-
-  // Outputs always drive and just copy the value
-  // Let them go to the normal place too because it won't do any harm
-  // and it simplifies the changes needed
-  logic usb_dp_pullup_en;
-  logic usb_dn_pullup_en;
-  logic usb_rx_d;
-  logic usb_tx_d;
-  logic usb_tx_se0;
-  logic usb_tx_use_d_se0;
-  logic usb_suspend;
-  logic usb_rx_enable;
-
-  // The value for IO_USB_DNPULLUP0 is used to decide whether we need to undo the swapping.
-  logic undo_swap;
-  assign undo_swap = usb_dn_pullup_en;
-
-  // GPIO[2] = Switch 2 on board is used to select using the UPHY
-  // Keep GPIO[1] for selecting differential in sw
-  logic use_uphy;
-  assign use_uphy = mio_in[MioPadIoa2];
-
-  // DioUsbdevUsbDn
-  assign manual_attr_usb_n = '0;
-  assign manual_attr_io_uphy_dn_tx = '0;
-
-  assign manual_out_io_uphy_dn_tx = manual_out_usb_n;
-  assign manual_out_usb_n = undo_swap ? dio_out[DioUsbdevUsbDp] :
-                                        dio_out[DioUsbdevUsbDn];
-
-  assign manual_oe_io_uphy_dn_tx = manual_oe_usb_n;
-  assign manual_oe_usb_n = undo_swap ? dio_oe[DioUsbdevUsbDp] :
-                                       dio_oe[DioUsbdevUsbDn];
-
-  assign dio_in[DioUsbdevUsbDn] = use_uphy ?
-                                  (undo_swap ? manual_in_io_uphy_dp_rx :
-                                               manual_in_io_uphy_dn_rx) :
-                                  (undo_swap ? manual_in_usb_p :
-                                               manual_in_usb_n);
-  // DioUsbdevUsbDp
-  assign manual_attr_usb_p = '0;
-  assign manual_attr_io_uphy_dp_tx = '0;
-
-  assign manual_out_io_uphy_dp_tx = manual_out_usb_p;
-  assign manual_out_usb_p = undo_swap ? dio_out[DioUsbdevUsbDn] :
-                                        dio_out[DioUsbdevUsbDp];
-
-  assign manual_oe_io_uphy_dp_tx = manual_oe_usb_p;
-  assign manual_oe_usb_p = undo_swap ? dio_oe[DioUsbdevUsbDn] :
-                                       dio_oe[DioUsbdevUsbDp];
-  assign dio_in[DioUsbdevUsbDp] = use_uphy ?
-                                  (undo_swap ? manual_in_io_uphy_dn_rx :
-                                               manual_in_io_uphy_dp_rx) :
-                                  (undo_swap ? manual_in_usb_n :
-                                               manual_in_usb_p);
-  // UsbdevD
-  // This is not connected at the moment
-  logic unused_out_usb_d;
-  assign unused_out_usb_d = usb_tx_d;
-  assign usb_rx_d = use_uphy ?
-                              (undo_swap ? ~manual_in_io_uphy_d_rx :
-                                            manual_in_io_uphy_d_rx) :
-                              // This is not connected at the moment
-                              (undo_swap ? 1'b1 : 1'b0);
-  assign manual_out_io_uphy_d_rx = 1'b0;
-  assign manual_oe_io_uphy_d_rx = 1'b0;
-
-  // UsbdevDnPullup
-  assign manual_attr_io_usb_dnpullup0 = '0;
-  assign manual_out_io_usb_dnpullup0 = usb_dn_pullup_en;
-  assign manual_oe_io_usb_dnpullup0 = undo_swap ? usb_dp_pullup_en : usb_dn_pullup_en;
-
-  // DioUsbdevDpPullup
-  assign manual_attr_io_usb_dppullup0 = '0;
-  assign manual_out_io_usb_dppullup0 = usb_dp_pullup_en;
-  assign manual_oe_io_usb_dppullup0 = undo_swap ? usb_dn_pullup_en : usb_dp_pullup_en;
-
-  // Additional outputs for uphy
-  assign manual_oe_io_uphy_dppullup = 1'b1;
-  assign manual_out_io_uphy_dppullup = manual_out_io_usb_dppullup0 &
-                                       manual_oe_io_usb_dppullup0;
-
-  logic unused_in_io_uphy_dppullup;
-  assign unused_in_io_uphy_dppullup = manual_in_io_uphy_dppullup;
-
-  assign manual_oe_io_uphy_oe_n = 1'b1;
-  assign manual_out_io_uphy_oe_n = ~manual_oe_usb_p;
-
-  logic unused_in_io_uphy_oe_n;
-  assign unused_in_io_uphy_oe_n = manual_in_io_uphy_oe_n;
-
-
-
-  //////////////////////////////////
-  // AST - Common for all targets //
-  //////////////////////////////////
-
-  // pwrmgr interface
-  pwrmgr_pkg::pwr_ast_req_t base_ast_pwr;
-  pwrmgr_pkg::pwr_ast_rsp_t ast_base_pwr;
-
-  // assorted ast status
-  ast_pkg::ast_pwst_t ast_pwst;
-  ast_pkg::ast_pwst_t ast_pwst_h;
-
-  // TLUL interface
-  tlul_pkg::tl_h2d_t base_ast_bus;
-  tlul_pkg::tl_d2h_t ast_base_bus;
-
-  // synchronization clocks / rests
-  clkmgr_pkg::clkmgr_out_t clkmgr_aon_clocks;
-  rstmgr_pkg::rstmgr_out_t rstmgr_aon_resets;
-
-  // external clock
-  logic ext_clk;
-
-  // monitored clock
-  logic sck_monitor;
-
-  // observe interface
-  logic [7:0] fla_obs;
-  logic [7:0] otp_obs;
-  ast_pkg::ast_obs_ctrl_t obs_ctrl;
-
-  // otp power sequence
-  otp_ctrl_pkg::otp_ast_req_t otp_ctrl_otp_ast_pwr_seq;
-  otp_ctrl_pkg::otp_ast_rsp_t otp_ctrl_otp_ast_pwr_seq_h;
-
-  logic usb_ref_pulse;
-  logic usb_ref_val;
-
-  // adc
-  ast_pkg::adc_ast_req_t adc_req;
-  ast_pkg::adc_ast_rsp_t adc_rsp;
-
-  // entropy source interface
-  // The entropy source pacakge definition should eventually be moved to es
-  entropy_src_pkg::entropy_src_rng_req_t es_rng_req;
-  entropy_src_pkg::entropy_src_rng_rsp_t es_rng_rsp;
-  logic es_rng_fips;
-
-  // entropy distribution network
-  edn_pkg::edn_req_t ast_edn_edn_req;
-  edn_pkg::edn_rsp_t ast_edn_edn_rsp;
-
-  // alerts interface
-  ast_pkg::ast_alert_rsp_t ast_alert_rsp;
-  ast_pkg::ast_alert_req_t ast_alert_req;
-
-  // Flash connections
-  prim_mubi_pkg::mubi4_t flash_bist_enable;
-  logic flash_power_down_h;
-  logic flash_power_ready_h;
-
-  // clock bypass req/ack
-  prim_mubi_pkg::mubi4_t io_clk_byp_req;
-  prim_mubi_pkg::mubi4_t io_clk_byp_ack;
-  prim_mubi_pkg::mubi4_t all_clk_byp_req;
-  prim_mubi_pkg::mubi4_t all_clk_byp_ack;
-  prim_mubi_pkg::mubi4_t hi_speed_sel;
-  prim_mubi_pkg::mubi4_t div_step_down_req;
-
-  // DFT connections
-  logic scan_en;
-  lc_ctrl_pkg::lc_tx_t dft_en;
-  pinmux_pkg::dft_strap_test_req_t dft_strap_test;
-
-  // Debug connections
-  logic [ast_pkg::Ast2PadOutWidth-1:0] ast2pinmux;
-  logic [ast_pkg::Pad2AstInWidth-1:0] pad2ast;
-
-  // Jitter enable
-  prim_mubi_pkg::mubi4_t jen;
-
-  // reset domain connections
-  import rstmgr_pkg::PowerDomains;
-  import rstmgr_pkg::DomainAonSel;
-  import rstmgr_pkg::Domain0Sel;
-
-  // Memory configuration connections
-  ast_pkg::spm_rm_t ast_ram_1p_cfg;
-  ast_pkg::spm_rm_t ast_rf_cfg;
-  ast_pkg::spm_rm_t ast_rom_cfg;
-  ast_pkg::dpm_rm_t ast_ram_2p_fcfg;
-  ast_pkg::dpm_rm_t ast_ram_2p_lcfg;
-
-  prim_ram_1p_pkg::ram_1p_cfg_t ram_1p_cfg;
-  prim_ram_2p_pkg::ram_2p_cfg_t ram_2p_cfg;
-  prim_rom_pkg::rom_cfg_t rom_cfg;
-
-  // conversion from ast structure to memory centric structures
-  assign ram_1p_cfg = '{
-    ram_cfg: '{
-                cfg_en: ast_ram_1p_cfg.marg_en,
-                cfg:    ast_ram_1p_cfg.marg
-              },
-    rf_cfg:  '{
-                cfg_en: ast_rf_cfg.marg_en,
-                cfg:    ast_rf_cfg.marg
-              }
-  };
-
-  assign ram_2p_cfg = '{
-    a_ram_fcfg: '{
-                   cfg_en: ast_ram_2p_fcfg.marg_en_a,
-                   cfg:    ast_ram_2p_fcfg.marg_a
-                 },
-    a_ram_lcfg: '{
-                   cfg_en: ast_ram_2p_lcfg.marg_en_a,
-                   cfg:    ast_ram_2p_lcfg.marg_a
-                 },
-    b_ram_fcfg: '{
-                   cfg_en: ast_ram_2p_fcfg.marg_en_b,
-                   cfg:    ast_ram_2p_fcfg.marg_b
-                 },
-    b_ram_lcfg: '{
-                   cfg_en: ast_ram_2p_lcfg.marg_en_b,
-                   cfg:    ast_ram_2p_lcfg.marg_b
-                 }
-  };
-
-  assign rom_cfg = '{
-    cfg_en: ast_rom_cfg.marg_en,
-    cfg: ast_rom_cfg.marg
-  };
-
-
-  //////////////////////////////////
-  // AST - Custom for targets     //
-  //////////////////////////////////
-
-
-  // TODO: Hook this up when FPGA pads are updated
-  assign ext_clk = '0;
-  assign pad2ast = '0;
-
-  assign ast_base_pwr.main_pok = base_ast_pwr.main_pd_n;
-
-  logic clk_main, clk_usb_48mhz, clk_aon, rst_n;
-  clkgen_xil7series # (
-    .AddClkBuf(0)
-  ) clkgen (
-    .clk_i(manual_in_io_clk),
-    .rst_ni(manual_in_por_n),
-    .jtag_srst_ni(manual_in_io_jsrst_n),
-    .clk_main_o(clk_main),
-    .clk_48MHz_o(clk_usb_48mhz),
-    .clk_aon_o(clk_aon),
-    .rst_no(rst_n)
-  );
-
-  logic [31:0] fpga_info;
-  usr_access_xil7series u_info (
-    .info_o(fpga_info)
-  );
-
-  ast_pkg::clks_osc_byp_t clks_osc_byp;
-  assign clks_osc_byp = '{
-    usb: clk_usb_48mhz,
-    sys: clk_main,
-    io:  clk_main,
-    aon: clk_aon
-  };
-
-
-  ast #(
-    .EntropyStreams(ast_pkg::EntropyStreams),
-    .AdcChannels(ast_pkg::AdcChannels),
-    .AdcDataWidth(ast_pkg::AdcDataWidth),
-    .UsbCalibWidth(ast_pkg::UsbCalibWidth),
-    .Ast2PadOutWidth(ast_pkg::Ast2PadOutWidth),
-    .Pad2AstInWidth(ast_pkg::Pad2AstInWidth)
-  ) u_ast (
-    // external POR
-    .por_ni                ( rst_n ),
-
-    // USB IO Pull-up Calibration Setting
-    .usb_io_pu_cal_o       ( ),
-
-    // clocks' oschillator bypass for FPGA
-    .clk_osc_byp_i         ( clks_osc_byp ),
-
-    // adc
-    .adc_a0_ai             ( '0 ),
-    .adc_a1_ai             ( '0 ),
-
-    // Direct short to PAD
-    .ast2pad_t0_ao         (  ),
-    .ast2pad_t1_ao         (  ),
-
-    // clocks and resets supplied for detection
-    .sns_clks_i            ( clkmgr_aon_clocks    ),
-    .sns_rsts_i            ( rstmgr_aon_resets    ),
-    .sns_spi_ext_clk_i     ( sck_monitor          ),
-    // tlul
-    .tl_i                  ( base_ast_bus ),
-    .tl_o                  ( ast_base_bus ),
-    // init done indication
-    .ast_init_done_o       ( ast_init_done ),
-    // buffered clocks & resets
-    .clk_ast_tlul_i (clkmgr_aon_clocks.clk_io_div4_secure),
-    .clk_ast_adc_i (clkmgr_aon_clocks.clk_aon_secure),
-    .clk_ast_alert_i (clkmgr_aon_clocks.clk_io_div4_secure),
-    .clk_ast_es_i (clkmgr_aon_clocks.clk_main_secure),
-    .clk_ast_rng_i (clkmgr_aon_clocks.clk_main_secure),
-    .clk_ast_usb_i (clkmgr_aon_clocks.clk_usb_secure),
-    .rst_ast_tlul_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel]),
-    .rst_ast_adc_ni (rstmgr_aon_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel]),
-    .rst_ast_alert_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel]),
-    .rst_ast_es_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
-    .rst_ast_rng_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
-    .rst_ast_usb_ni (rstmgr_aon_resets.rst_usbif_n[rstmgr_pkg::Domain0Sel]),
-    .clk_ast_ext_i         ( ext_clk ),
-
-    // pok test for FPGA
-    .vcc_supp_i            ( 1'b1 ),
-    .vcaon_supp_i          ( 1'b1 ),
-    .vcmain_supp_i         ( 1'b1 ),
-    .vioa_supp_i           ( 1'b1 ),
-    .viob_supp_i           ( 1'b1 ),
-    // pok
-    .ast_pwst_o            ( ast_pwst ),
-    .ast_pwst_h_o          ( ast_pwst_h ),
-    // main regulator
-    .main_env_iso_en_i     ( base_ast_pwr.pwr_clamp_env ),
-    .main_pd_ni            ( base_ast_pwr.main_pd_n ),
-    // pdm control (flash)/otp
-    .flash_power_down_h_o  ( flash_power_down_h ),
-    .flash_power_ready_h_o ( flash_power_ready_h ),
-    .otp_power_seq_i       ( otp_ctrl_otp_ast_pwr_seq ),
-    .otp_power_seq_h_o     ( otp_ctrl_otp_ast_pwr_seq_h ),
-    // system source clock
-    .clk_src_sys_en_i      ( base_ast_pwr.core_clk_en ),
-    // need to add function in clkmgr
-    .clk_src_sys_jen_i     ( jen ),
-    .clk_src_sys_o         ( ast_base_clks.clk_sys  ),
-    .clk_src_sys_val_o     ( ast_base_pwr.core_clk_val ),
-    // aon source clock
-    .clk_src_aon_o         ( ast_base_clks.clk_aon ),
-    .clk_src_aon_val_o     ( ast_base_pwr.slow_clk_val ),
-    // io source clock
-    .clk_src_io_en_i       ( base_ast_pwr.io_clk_en ),
-    .clk_src_io_o          ( ast_base_clks.clk_io ),
-    .clk_src_io_val_o      ( ast_base_pwr.io_clk_val ),
-    .clk_src_io_48m_o      ( div_step_down_req ),
-    // usb source clock
-    .usb_ref_pulse_i       ( usb_ref_pulse ),
-    .usb_ref_val_i         ( usb_ref_val ),
-    .clk_src_usb_en_i      ( base_ast_pwr.usb_clk_en ),
-    .clk_src_usb_o         ( ast_base_clks.clk_usb ),
-    .clk_src_usb_val_o     ( ast_base_pwr.usb_clk_val ),
-    // adc
-    .adc_pd_i              ( adc_req.pd ),
-    .adc_chnsel_i          ( adc_req.channel_sel ),
-    .adc_d_o               ( adc_rsp.data ),
-    .adc_d_val_o           ( adc_rsp.data_valid ),
-    // rng
-    .rng_en_i              ( es_rng_req.rng_enable ),
-    .rng_fips_i            ( es_rng_fips ),
-    .rng_val_o             ( es_rng_rsp.rng_valid ),
-    .rng_b_o               ( es_rng_rsp.rng_b ),
-    // entropy
-    .entropy_rsp_i         ( ast_edn_edn_rsp ),
-    .entropy_req_o         ( ast_edn_edn_req ),
-    // alerts
-    .fla_alert_src_i       ( flash_alert    ),
-    .otp_alert_src_i       ( otp_alert      ),
-    .alert_rsp_i           ( ast_alert_rsp  ),
-    .alert_req_o           ( ast_alert_req  ),
-    // dft
-    .dft_strap_test_i      ( dft_strap_test   ),
-    .lc_dft_en_i           ( dft_en           ),
-    .fla_obs_i             ( fla_obs ),
-    .otp_obs_i             ( otp_obs ),
-    .otm_obs_i             ( '0 ),
-    .usb_obs_i             ( usb_diff_rx_obs ),
-    .obs_ctrl_o            ( obs_ctrl ),
-    // pinmux related
-    .padmux2ast_i          ( pad2ast    ),
-    .ast2padmux_o          ( ast2pinmux ),
-    .ext_freq_is_96m_i     ( hi_speed_sel ),
-    .all_clk_byp_req_i     ( all_clk_byp_req  ),
-    .all_clk_byp_ack_o     ( all_clk_byp_ack  ),
-    .io_clk_byp_req_i      ( io_clk_byp_req   ),
-    .io_clk_byp_ack_o      ( io_clk_byp_ack   ),
-    .flash_bist_en_o       ( flash_bist_enable ),
-    // Memory configuration connections
-    .dpram_rmf_o           ( ast_ram_2p_fcfg ),
-    .dpram_rml_o           ( ast_ram_2p_lcfg ),
-    .spram_rm_o            ( ast_ram_1p_cfg  ),
-    .sprgf_rm_o            ( ast_rf_cfg      ),
-    .sprom_rm_o            ( ast_rom_cfg     ),
-    // scan
-    .dft_scan_md_o         ( scanmode ),
-    .scan_shift_en_o       ( scan_en ),
-    .scan_reset_no         ( scan_rst_n )
-  );
-
-
-
-
-  //////////////////
-  // PLL for FPGA //
-  //////////////////
-
-  assign manual_out_io_clk = 1'b0;
-  assign manual_oe_io_clk = 1'b0;
-  assign manual_out_por_n = 1'b0;
-  assign manual_oe_por_n = 1'b0;
-  assign manual_out_io_jsrst_n = 1'b0;
-  assign manual_oe_io_jsrst_n = 1'b0;
-
-
-  //////////////////////
-  // Top-level design //
-  //////////////////////
-
-  // the rst_ni pin only goes to AST
-  // the rest of the logic generates reset based on the 'pok' signal.
-  // for verilator purposes, make these two the same.
-  prim_mubi_pkg::mubi4_t lc_clk_bypass;   // TODO Tim
-
-// TODO: align this with ASIC version to minimize the duplication.
-// Also need to add AST simulation and FPGA emulation models for things like entropy source -
-// otherwise Verilator / FPGA will hang.
-  top_earlgrey #(
-    .SecAesMasking(1'b0),
-    .SecAesSBoxImpl(aes_pkg::SBoxImplLut),
-    .KmacEnMasking(1'b0),
-    .KeymgrKmacEnMasking(0),
-    .SecAesStartTriggerDelay(0),
-    .SecAesAllowForcingMasks(1'b0),
-    .SecAesSkipPRNGReseeding(1'b0),
-    .EntropySrcStub(1'b1),
-    .CsrngSBoxImpl(aes_pkg::SBoxImplLut),
-    .OtbnRegFile(otbn_pkg::RegFileFPGA),
-    .OtbnStub(1'b1),
-    .OtpCtrlMemInitFile(OtpCtrlMemInitFile),
-    .RomCtrlBootRomInitFile(BootRomInitFile),
-    .RvCoreIbexRegFile(ibex_pkg::RegFileFPGA),
-    .RvCoreIbexPipeLine(1),
-    .RvCoreIbexSecureIbex(0),
-    .SramCtrlRetAonInstrExec(0),
-    .SramCtrlMainInstrExec(1),
-    .PinmuxAonTargetCfg(PinmuxTargetCfg)
-  ) top_earlgrey (
-    .por_n_i                      ( {rst_n, rst_n}        ),
-    .clk_main_i                   ( ast_base_clks.clk_sys ),
-    .clk_io_i                     ( ast_base_clks.clk_io  ),
-    .clk_usb_i                    ( ast_base_clks.clk_usb ),
-    .clk_aon_i                    ( ast_base_clks.clk_aon ),
-    .clks_ast_o                   ( clkmgr_aon_clocks     ),
-    .clk_main_jitter_en_o         ( jen                   ),
-    .rsts_ast_o                   ( rstmgr_aon_resets     ),
-    .sck_monitor_o                ( sck_monitor           ),
-    .pwrmgr_ast_req_o             ( base_ast_pwr          ),
-    .pwrmgr_ast_rsp_i             ( ast_base_pwr          ),
-    .usb_dp_pullup_en_o           ( usb_dp_pullup_en      ),
-    .usb_dn_pullup_en_o           ( usb_dn_pullup_en      ),
-    .usbdev_usb_rx_d_i            ( usb_rx_d              ),
-    .usbdev_usb_tx_d_o            ( usb_tx_d              ),
-    .usbdev_usb_tx_se0_o          ( usb_tx_se0            ),
-    .usbdev_usb_tx_use_d_se0_o    ( usb_tx_use_d_se0      ),
-    .usbdev_usb_suspend_o         ( usb_suspend           ),
-    .usbdev_usb_rx_enable_o       ( usb_rx_enable         ),
-    .usbdev_usb_ref_val_o         ( usb_ref_val           ),
-    .usbdev_usb_ref_pulse_o       ( usb_ref_pulse         ),
-    .ast_edn_req_i                ( ast_edn_edn_req       ),
-    .ast_edn_rsp_o                ( ast_edn_edn_rsp       ),
-    .obs_ctrl_i                   ( obs_ctrl              ),
-    .flash_bist_enable_i          ( flash_bist_enable     ),
-    .flash_power_down_h_i         ( 1'b0                  ),
-    .flash_power_ready_h_i        ( 1'b1                  ),
-    .flash_obs_o                  ( flash_obs             ),
-    .io_clk_byp_req_o             ( io_clk_byp_req        ),
-    .io_clk_byp_ack_i             ( io_clk_byp_ack        ),
-    .all_clk_byp_req_o            ( all_clk_byp_req       ),
-    .all_clk_byp_ack_i            ( all_clk_byp_ack       ),
-    .hi_speed_sel_o               ( hi_speed_sel          ),
-    .div_step_down_req_i          ( div_step_down_req     ),
-    .fpga_info_i                  ( fpga_info             ),
-    .ast_tl_req_o                 ( base_ast_bus               ),
-    .ast_tl_rsp_i                 ( ast_base_bus               ),
-    .adc_req_o                    ( adc_req                    ),
-    .adc_rsp_i                    ( adc_rsp                    ),
-    .otp_ctrl_otp_ast_pwr_seq_o   ( otp_ctrl_otp_ast_pwr_seq   ),
-    .otp_ctrl_otp_ast_pwr_seq_h_i ( otp_ctrl_otp_ast_pwr_seq_h ),
-    .otp_alert_o                  ( otp_alert                  ),
-    .otp_obs_o                    ( otp_obs                    ),
-    .sensor_ctrl_ast_alert_req_i  ( ast_alert_req              ),
-    .sensor_ctrl_ast_alert_rsp_o  ( ast_alert_rsp              ),
-    .sensor_ctrl_ast_status_i     ( ast_pwst.io_pok            ),
-    .es_rng_req_o                 ( es_rng_req                 ),
-    .es_rng_rsp_i                 ( es_rng_rsp                 ),
-    .es_rng_fips_o                ( es_rng_fips                ),
-    .ast2pinmux_i                 ( ast2pinmux                 ),
-    .ast_init_done_i              ( ast_init_done              ),
-
-    // Multiplexed I/O
-    .mio_in_i        ( mio_in   ),
-    .mio_out_o       ( mio_out  ),
-    .mio_oe_o        ( mio_oe   ),
-
-    // Dedicated I/O
-    .dio_in_i        ( dio_in   ),
-    .dio_out_o       ( dio_out  ),
-    .dio_oe_o        ( dio_oe   ),
-
-    // Pad attributes
-    .mio_attr_o      ( mio_attr      ),
-    .dio_attr_o      ( dio_attr      ),
-
-    // Memory attributes
-    .ram_1p_cfg_i    ( '0 ),
-    .ram_2p_cfg_i    ( '0 ),
-    .rom_cfg_i       ( '0 ),
-
-    // DFT signals
-    .dft_hold_tap_sel_i ( '0               ),
-    .scan_rst_ni        ( 1'b1             ),
-    .scan_en_i          ( 1'b0             ),
-    .scanmode_i         ( prim_mubi_pkg::MuBi4False )
-  );
-
-
-endmodule : chip_earlgrey_nexysvideo
diff --git a/util/topgen/gen_top_docs.py b/util/topgen/gen_top_docs.py
index d311365..3749ea9 100644
--- a/util/topgen/gen_top_docs.py
+++ b/util/topgen/gen_top_docs.py
@@ -198,7 +198,7 @@
                              headers="firstrow",
                              tablefmt="pipe",
                              colalign=colalign)
-    summary_table = TABLE_HEADER + gencmd + "-->\n\n" + summary_table
+    summary_table = TABLE_HEADER + gencmd + "-->\n\n" + summary_table + "\n"
 
     target_table_path = doc_path / "targets.md"
     with open(target_table_path, 'w') as target_outfile: