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

Override default baud rate for FireChip #625

Merged
merged 1 commit into from
Jul 10, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions generators/chipyard/src/main/scala/ConfigFragments.scala
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ class WithGPIO extends Config((site, here, up) => {
})
// DOC include end: gpio config fragment

class WithUART extends Config((site, here, up) => {
class WithUART(baudrate: BigInt = 115200) extends Config((site, here, up) => {
case PeripheryUARTKey => Seq(
UARTParams(address = 0x54000000L, nTxEntries = 256, nRxEntries = 256))
UARTParams(address = 0x54000000L, nTxEntries = 256, nRxEntries = 256, initBaudRate = baudrate))
})

class WithSPIFlash(size: BigInt = 0x10000000) extends Config((site, here, up) => {
Expand Down Expand Up @@ -143,4 +143,4 @@ class WithHwachaTest extends Config((site, here, up) => {
suiteHelper.addSuite(hwachaBmarks)
"SRC_EXTENSION = $(base_dir)/hwacha/$(src_path)/*.scala" + "\nDISASM_EXTENSION = --extension=hwacha"
}
})
})
7 changes: 4 additions & 3 deletions generators/firechip/src/main/scala/TargetConfigs.scala
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ class WithNVDLASmall extends nvidia.blocks.dla.WithNVDLA("small")
class WithFireSimConfigTweaks extends Config(
// Required*: When using FireSim-as-top to provide a correct path to the target bootrom source
new WithBootROM ++
// Optional*: Removing this will require target-software changes to properly capture UART output
// Optional*: Removing this will require adjusting the UART baud rate and
// potential target-software changes to properly capture UART output
Copy link
Contributor

@timsnyder timsnyder Jul 13, 2020

Choose a reason for hiding this comment

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

@a0u Any tips on the "potential target-software changes"? In the past Sagar pointed to adjusting the UART div in riscv-pk. If I'm using the br-base-bin linux image from Firemarshal, would I need to adjust the kconfig somewhere instead of adjusting riscv-pk/machine/uart.c like Sagar mentioned?

Copy link
Member Author

Choose a reason for hiding this comment

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

As of firesim/firesim#598, both the UART device and bridge are initialized with the same baud rate from UARTParams, so target software no longer needs to adjust the divisor after reset. This has recently enabled FireMarshal to switch back to upstream riscv-pk. At this point, a user is largely free to change the initBaudRate parameter and pbus frequency without worrying about software, but the cautionary note still applies to at least two situations:

  • As a fundamental constraint, the baud rate cannot exceed the pbus frequency (divided by 2).
  • The Linux UART driver normally defaults to 115200 baud, unless specified otherwise by the boot command line or /etc/inittab (getty). Most FireSim users do not need to be concerned about this since FireMarshal kernels use the SBI console driver, which is agnostic to the baud rate and bus frequency.

Copy link
Contributor

Choose a reason for hiding this comment

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

Thanks for your reply @a0u. This information is very helpful.

new WithPeripheryBusFrequency(BigInt(3200000000L)) ++
// Required: Existing FAME-1 transform cannot handle black-box clock gates
new WithoutClockGating ++
Expand All @@ -85,8 +86,8 @@ class WithFireSimConfigTweaks extends Config(
new testchipip.WithTSI ++
// Optional: Removing this will require using an initramfs under linux
new testchipip.WithBlockDevice ++
// Required*:
new chipyard.config.WithUART
// Required*: Scale default baud rate with periphery bus frequency
new chipyard.config.WithUART(BigInt(3686400L))
)

/*******************************************************************************
Expand Down