Merge pull request #976 from ucb-bar/bump-firesim
Bump Firesim + Use ResetPulseBridge
This commit is contained in:
@@ -13,13 +13,20 @@ source $SCRIPT_DIR/defaults.sh
|
||||
# call clean on exit
|
||||
trap clean EXIT
|
||||
|
||||
# Directory locations for handling firesim-local installations of libelf/libdwarf
|
||||
# This would generally be handled by build-setup.sh/firesim-setup.sh
|
||||
firesim_sysroot=lib-install
|
||||
local_firesim_sysroot=$LOCAL_FIRESIM_DIR/$firesim_sysroot
|
||||
remote_firesim_sysroot=$REMOTE_FIRESIM_DIR/$firesim_sysroot
|
||||
|
||||
cd $LOCAL_CHIPYARD_DIR
|
||||
./scripts/init-submodules-no-riscv-tools.sh
|
||||
cd $LOCAL_CHIPYARD_DIR/sims/firesim/sim/firesim-lib/src/main/cc/lib
|
||||
git submodule update --init elfutils libdwarf
|
||||
cd $LOCAL_CHIPYARD_DIR/sims/firesim
|
||||
./scripts/build-libelf.sh
|
||||
./scripts/build-libdwarf.sh
|
||||
mkdir -p $local_firesim_sysroot
|
||||
./scripts/build-libelf.sh $local_firesim_sysroot
|
||||
./scripts/build-libdwarf.sh $local_firesim_sysroot
|
||||
cd $LOCAL_CHIPYARD_DIR
|
||||
|
||||
# replace the workspace dir with a local dir so you can copy around
|
||||
@@ -42,8 +49,8 @@ run "cp -r ~/.ivy2 $REMOTE_WORK_DIR"
|
||||
run "cp -r ~/.sbt $REMOTE_WORK_DIR"
|
||||
|
||||
TOOLS_DIR=$REMOTE_RISCV_DIR
|
||||
LD_LIB_DIR=$REMOTE_RISCV_DIR/lib
|
||||
|
||||
LD_LIB_DIR=$remote_firesim_sysroot/lib:$REMOTE_RISCV_DIR/lib
|
||||
|
||||
# Run Firesim Scala Tests
|
||||
run "export RISCV=\"$TOOLS_DIR\"; \
|
||||
|
||||
@@ -13,7 +13,7 @@ import freechips.rocketchip.config.{Field, Config, Parameters}
|
||||
import freechips.rocketchip.diplomacy.{LazyModule, InModuleBody, ValName}
|
||||
import freechips.rocketchip.util.{ResetCatchAndSync, RecordMap}
|
||||
|
||||
import midas.widgets.{Bridge, PeekPokeBridge, RationalClockBridge, RationalClock}
|
||||
import midas.widgets.{Bridge, PeekPokeBridge, RationalClockBridge, RationalClock, ResetPulseBridge, ResetPulseBridgeParameters}
|
||||
|
||||
import chipyard._
|
||||
import chipyard.harness._
|
||||
@@ -227,7 +227,21 @@ class FireSim(implicit val p: Parameters) extends RawModule with HasHarnessSigna
|
||||
|
||||
val buildtopClock = Wire(Clock())
|
||||
val buildtopReset = WireInit(false.B)
|
||||
val peekPokeBridge = PeekPokeBridge(buildtopClock, buildtopReset)
|
||||
// The peek-poke bridge must still be instantiated even though it's
|
||||
// functionally unused. This will be removed in a future PR.
|
||||
val dummy = WireInit(false.B)
|
||||
val peekPokeBridge = PeekPokeBridge(buildtopClock, dummy)
|
||||
|
||||
val resetBridge = Module(new ResetPulseBridge(ResetPulseBridgeParameters()))
|
||||
// In effect, the bridge counts the length of the reset in terms of this clock.
|
||||
resetBridge.io.clock := buildtopClock
|
||||
buildtopReset := resetBridge.io.reset
|
||||
// Ensures FireSim-synthesized assertions and instrumentation is disabled
|
||||
// while buildtopReset is asserted. This ensures assertions do not fire at
|
||||
// time zero in the event their local reset is delayed (typically because it
|
||||
// has been pipelined)
|
||||
midas.targetutils.GlobalResetCondition(buildtopReset)
|
||||
|
||||
def dutReset = { require(false, "dutReset should not be used in Firesim"); false.B }
|
||||
def success = { require(false, "success should not be used in Firesim"); false.B }
|
||||
|
||||
|
||||
Submodule sims/firesim updated: b611551ca5...a2a6b3bc27
Reference in New Issue
Block a user