Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add UART device/JTAG to Arty100T default design #1712

Merged
merged 6 commits into from
Dec 30, 2023
Merged

Conversation

jerryz123
Copy link
Contributor

The UART and JTAG are mapped to PMOD JD pins.

Related PRs / Issues:

Type of change:

  • Bug fix
  • New feature
  • Other enhancement

Impact:

  • RTL change
  • Software change (RISC-V software)
  • Build system change
  • Other

Contributor Checklist:

  • Did you set main as the base branch?
  • Is this PR's title suitable for inclusion in the changelog and have you added a changelog:<topic> label?
  • Did you state the type-of-change/impact?
  • Did you delete any extraneous prints/debugging code?
  • Did you mark the PR with a changelog: label?
  • (If applicable) Did you update the conda .conda-lock.yml file if you updated the conda requirements file?
  • (If applicable) Did you add documentation for the feature?
  • (If applicable) Did you add a test demonstrating the PR?
  • (If applicable) Did you mark the PR as Please Backport?

@T-K-233
Copy link
Member

T-K-233 commented Dec 22, 2023

Vivado gives the following error on pins uart_tsi_tsi2tl_state[3:0] and uart_tsi_dropped when generating bitstream:

ERROR: [DRC NSTD-1] Unspecified I/O Standard: 5 out of 79 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all I/O standards. This design will fail to generate a bitstream unless all logical ports have a user specified I/O standard value defined. To allow bitstream creation with unspecified I/O standard values (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-1].  NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: uart_tsi_tsi2tl_state[3:0], and uart_tsi_dropped.
ERROR: [DRC UCIO-1] Unconstrained Logical Port: 5 out of 79 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined.  To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1].  NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run.  Problem ports: uart_tsi_tsi2tl_state[3:0], and uart_tsi_dropped.

@jerryz123
Copy link
Contributor Author

^ Does that actually break the build?

@T-K-233
Copy link
Member

T-K-233 commented Dec 23, 2023

^ Does that actually break the build?

Yes, vivado gives an error and fails to generate bitstream

@michael-etzkorn
Copy link
Contributor

Vivado does not allow floating IO in the top level of the design by default, so the TSI pins would need to be removed or tied off by default.

They could be tied to unused PMOD pins and set to pulldown. I'd have to pull up the ARTY FPGA pin layout and the generated xdc to find the remaining pins.

# pin contraint here

# iostandard contraint
set_property IOSTANDARD LVCMOS33 [get_ports {uart_tsi_tsi2tl_state[3:0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {uart_tsi_dropped}]

# pulldown
set_property PULLDOWN true [get_ports {uart_tsi_tsi2tl_state[0]}]
set_property PULLDOWN true [get_ports {uart_tsi_tsi2tl_state[1]}]
set_property PULLDOWN true [get_ports {uart_tsi_tsi2tl_state[2]}]
set_property PULLDOWN true [get_ports {uart_tsi_tsi2tl_state[3]}]

set_property PULLDOWN true [get_ports {uart_tsi_dropped}]

If 0 or 1 won't effect the config, the PULLDOWN isn't necessary.

@michael-etzkorn
Copy link
Contributor

michael-etzkorn commented Dec 23, 2023 via email

@jerryz123
Copy link
Contributor Author

@T-K-233 Try now

Copy link
Member

@T-K-233 T-K-233 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Working now

@jerryz123
Copy link
Contributor Author

@T-K-233 thanks!

@jerryz123
Copy link
Contributor Author

@T-K-233 the comment in your commit is inaccurate. That line adds a separate memory, it does not affect the L1 caches at all.

@T-K-233
Copy link
Member

T-K-233 commented Dec 30, 2023

Oh sorry... copilot failed me
This is different from the new freechips.rocketchip.subsystem.WithScratchpadsOnly config.

Fixed now.

@jerryz123 jerryz123 merged commit 8e4c972 into main Dec 30, 2023
52 checks passed
@T-K-233 T-K-233 deleted the arty100tfeatures branch December 30, 2023 03:27
@ksungkeun84 ksungkeun84 mentioned this pull request Feb 6, 2024
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants