Merge remote-tracking branch 'origin/main' into nitefury_ii
This commit is contained in:
commit
c17cbee41e
|
@ -7,7 +7,7 @@ from common import manager_fsim_dir, set_fabric_firesim_pem
|
||||||
def build_default_workloads():
|
def build_default_workloads():
|
||||||
""" Builds workloads that will be run on F1 instances as part of CI """
|
""" Builds workloads that will be run on F1 instances as part of CI """
|
||||||
|
|
||||||
with prefix(f'cd {manager_fsim_dir} && source sourceme-f1-manager.sh'), \
|
with prefix(f'cd {manager_fsim_dir} && source sourceme-manager.sh'), \
|
||||||
prefix(f'cd {manager_fsim_dir}/deploy/workloads'):
|
prefix(f'cd {manager_fsim_dir}/deploy/workloads'):
|
||||||
|
|
||||||
# avoid logging excessive amounts to prevent GH-A masking secrets (which slows down log output)
|
# avoid logging excessive amounts to prevent GH-A masking secrets (which slows down log output)
|
||||||
|
|
|
@ -12,7 +12,7 @@ def build_vitis_driver():
|
||||||
# - machine-launch-script requirements are already installed
|
# - machine-launch-script requirements are already installed
|
||||||
|
|
||||||
with prefix(f"cd {ci_env['REMOTE_WORK_DIR']}"):
|
with prefix(f"cd {ci_env['REMOTE_WORK_DIR']}"):
|
||||||
with prefix('source sourceme-f1-manager.sh --skip-ssh-setup'):
|
with prefix('source sourceme-manager.sh --skip-ssh-setup'):
|
||||||
with prefix("cd ./sim"):
|
with prefix("cd ./sim"):
|
||||||
run("make PLATFORM=vitis vitis")
|
run("make PLATFORM=vitis vitis")
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ def run_docs_generated_components_check():
|
||||||
""" Runs checks to make sure generated components of docs have been
|
""" Runs checks to make sure generated components of docs have been
|
||||||
updated. """
|
updated. """
|
||||||
|
|
||||||
with cd(manager_fsim_dir), prefix('source sourceme-f1-manager.sh'):
|
with cd(manager_fsim_dir), prefix('source sourceme-manager.sh'):
|
||||||
with prefix("cd deploy"):
|
with prefix("cd deploy"):
|
||||||
run("cat config_runtime.yaml")
|
run("cat config_runtime.yaml")
|
||||||
path = 'docs/Getting-Started-Guides/AWS-EC2-F1-Tutorial/Running-Simulations-Tutorial/DOCS_EXAMPLE_config_runtime.yaml'
|
path = 'docs/Getting-Started-Guides/AWS-EC2-F1-Tutorial/Running-Simulations-Tutorial/DOCS_EXAMPLE_config_runtime.yaml'
|
||||||
|
|
|
@ -16,7 +16,7 @@ def run_docs_generated_components_check():
|
||||||
# repo should already be checked out
|
# repo should already be checked out
|
||||||
|
|
||||||
with prefix(f"cd {ci_env['REMOTE_WORK_DIR']}"):
|
with prefix(f"cd {ci_env['REMOTE_WORK_DIR']}"):
|
||||||
with prefix('source sourceme-f1-manager.sh --skip-ssh-setup'):
|
with prefix('source sourceme-manager.sh --skip-ssh-setup'):
|
||||||
with prefix("cd deploy"):
|
with prefix("cd deploy"):
|
||||||
run("cat config_runtime.yaml")
|
run("cat config_runtime.yaml")
|
||||||
path = "docs/Getting-Started-Guides/On-Premises-FPGA-Tutorial/Running-Simulations/DOCS_EXAMPLE_config_runtime.yaml"
|
path = "docs/Getting-Started-Guides/On-Premises-FPGA-Tutorial/Running-Simulations/DOCS_EXAMPLE_config_runtime.yaml"
|
||||||
|
|
|
@ -15,7 +15,7 @@ def run_agfi_buildbitstream():
|
||||||
relative_hwdb_path = f"deploy/sample-backup-configs/sample_config_hwdb.yaml"
|
relative_hwdb_path = f"deploy/sample-backup-configs/sample_config_hwdb.yaml"
|
||||||
relative_build_path = f"deploy/sample-backup-configs/sample_config_build.yaml"
|
relative_build_path = f"deploy/sample-backup-configs/sample_config_build.yaml"
|
||||||
|
|
||||||
with prefix(f'cd {manager_fsim_dir} && source sourceme-f1-manager.sh'):
|
with prefix(f'cd {manager_fsim_dir} && source sourceme-manager.sh'):
|
||||||
rc = 0
|
rc = 0
|
||||||
|
|
||||||
# unique tag based on the ci workflow and filename is needed to ensure
|
# unique tag based on the ci workflow and filename is needed to ensure
|
||||||
|
|
|
@ -9,7 +9,7 @@ from ci_variables import ci_env
|
||||||
def run_aws_configure() -> None:
|
def run_aws_configure() -> None:
|
||||||
""" Runs AWS configure on the CI manager """
|
""" Runs AWS configure on the CI manager """
|
||||||
|
|
||||||
with cd(manager_fsim_dir), prefix("source ./sourceme-f1-manager.sh"):
|
with cd(manager_fsim_dir), prefix("source ./sourceme-manager.sh"):
|
||||||
run(".github/scripts/firesim-managerinit.expect {} {} {}".format(
|
run(".github/scripts/firesim-managerinit.expect {} {} {}".format(
|
||||||
ci_env['AWS_ACCESS_KEY_ID'],
|
ci_env['AWS_ACCESS_KEY_ID'],
|
||||||
ci_env['AWS_SECRET_ACCESS_KEY'],
|
ci_env['AWS_SECRET_ACCESS_KEY'],
|
||||||
|
|
|
@ -16,7 +16,7 @@ from util.filelineswap import file_line_swap
|
||||||
def run_linux_poweroff_externally_provisioned():
|
def run_linux_poweroff_externally_provisioned():
|
||||||
""" Runs Linux poweroff workloads using externally provisioned AWS run farm """
|
""" Runs Linux poweroff workloads using externally provisioned AWS run farm """
|
||||||
|
|
||||||
with prefix(f"cd {manager_fsim_dir} && source sourceme-f1-manager.sh"):
|
with prefix(f"cd {manager_fsim_dir} && source sourceme-manager.sh"):
|
||||||
|
|
||||||
def run_w_timeout(workload_path, workload, timeout, num_passes):
|
def run_w_timeout(workload_path, workload, timeout, num_passes):
|
||||||
""" Run workload with a specific timeout
|
""" Run workload with a specific timeout
|
||||||
|
|
|
@ -17,7 +17,7 @@ def run_linux_poweroff_vitis():
|
||||||
|
|
||||||
with prefix(f"cd {ci_env['REMOTE_WORK_DIR']}"):
|
with prefix(f"cd {ci_env['REMOTE_WORK_DIR']}"):
|
||||||
run("./build-setup.sh --skip-validate")
|
run("./build-setup.sh --skip-validate")
|
||||||
with prefix('source sourceme-f1-manager.sh --skip-ssh-setup'):
|
with prefix('source sourceme-manager.sh --skip-ssh-setup'):
|
||||||
with prefix('cd sw/firesim-software'):
|
with prefix('cd sw/firesim-software'):
|
||||||
# build outputs.yaml (use this workload since firemarshal can guestmount)
|
# build outputs.yaml (use this workload since firemarshal can guestmount)
|
||||||
run("./marshal -v build test/outputs.yaml")
|
run("./marshal -v build test/outputs.yaml")
|
||||||
|
|
|
@ -12,7 +12,7 @@ from ci_variables import ci_env
|
||||||
def run_linux_poweroff():
|
def run_linux_poweroff():
|
||||||
""" Runs Linux poweroff workloads """
|
""" Runs Linux poweroff workloads """
|
||||||
|
|
||||||
with prefix(f"cd {manager_fsim_dir} && source sourceme-f1-manager.sh"):
|
with prefix(f"cd {manager_fsim_dir} && source sourceme-manager.sh"):
|
||||||
def run_w_timeout(workload, timeout, num_passes):
|
def run_w_timeout(workload, timeout, num_passes):
|
||||||
""" Run workload with a specific timeout
|
""" Run workload with a specific timeout
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import os
|
||||||
from github import Github
|
from github import Github
|
||||||
import base64
|
import base64
|
||||||
import time
|
import time
|
||||||
|
import argparse
|
||||||
|
|
||||||
from ci_variables import ci_env
|
from ci_variables import ci_env
|
||||||
|
|
||||||
|
@ -83,7 +84,7 @@ def run_local_buildbitstreams():
|
||||||
manager_fsim_dir = ci_env['REMOTE_WORK_DIR']
|
manager_fsim_dir = ci_env['REMOTE_WORK_DIR']
|
||||||
with prefix(f"cd {manager_fsim_dir}"):
|
with prefix(f"cd {manager_fsim_dir}"):
|
||||||
|
|
||||||
with prefix('source sourceme-f1-manager.sh --skip-ssh-setup'):
|
with prefix('source sourceme-manager.sh --skip-ssh-setup'):
|
||||||
|
|
||||||
# return a copy of config_build.yaml w/ hwdb entry(s) uncommented + new build dir
|
# return a copy of config_build.yaml w/ hwdb entry(s) uncommented + new build dir
|
||||||
def modify_config_build(hwdb_entries_to_gen: List[str]) -> str:
|
def modify_config_build(hwdb_entries_to_gen: List[str]) -> str:
|
||||||
|
@ -202,42 +203,55 @@ def run_local_buildbitstreams():
|
||||||
("firesim1", "vivado:2019.1"),
|
("firesim1", "vivado:2019.1"),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def do_builds(batch_hwdbs):
|
||||||
|
assert len(hosts) >= len(batch_hwdbs), f"Need at least {len(batch_hwdbs)} hosts to run builds"
|
||||||
|
|
||||||
|
# map hwdb tuple to hosts
|
||||||
|
hwdb_2_host = {}
|
||||||
|
for hwdb in batch_hwdbs:
|
||||||
|
buildtool_version = hwdb[2]
|
||||||
|
for host in hosts:
|
||||||
|
if host[1] == buildtool_version:
|
||||||
|
if not host[0] in hwdb_2_host.values():
|
||||||
|
hwdb_2_host[hwdb[0]] = host[0]
|
||||||
|
|
||||||
|
assert len(hwdb_2_host) == len(batch_hwdbs), "Unable to map hosts to hwdb build"
|
||||||
|
|
||||||
|
hwdbs_ordered = [hwdb[0] for hwdb in batch_hwdbs]
|
||||||
|
platforms_ordered = [hwdb[1] for hwdb in batch_hwdbs]
|
||||||
|
hosts_ordered = hwdb_2_host.values()
|
||||||
|
|
||||||
|
print("Mappings")
|
||||||
|
print(f"HWDBS: {hwdbs_ordered}")
|
||||||
|
print(f"Platforms: {platforms_ordered}")
|
||||||
|
print(f"Hosts: {hosts_ordered}")
|
||||||
|
|
||||||
|
copy_build_yaml = modify_config_build(hwdbs_ordered)
|
||||||
|
copy_build_yaml_2 = add_host_list(copy_build_yaml, hosts_ordered)
|
||||||
|
links = build_upload(copy_build_yaml_2, hwdbs_ordered, platforms_ordered)
|
||||||
|
for hwdb, link in zip(hwdbs_ordered, links):
|
||||||
|
replace_in_hwdb(hwdb, link)
|
||||||
|
|
||||||
|
# wipe old data
|
||||||
|
for host in hosts_ordered:
|
||||||
|
run(f"ssh {host} rm -rf {build_location}")
|
||||||
|
|
||||||
# same order as in config_build.yaml
|
# same order as in config_build.yaml
|
||||||
# hwdb_entry_name, platform_name, buildtool:version
|
# hwdb_entry_name, platform_name, buildtool:version
|
||||||
batch_hwdbs = [
|
batch_hwdbs_in = [
|
||||||
("vitis_firesim_rocket_singlecore_no_nic", "vitis", "vitis:2022.1"),
|
("vitis_firesim_rocket_singlecore_no_nic", "vitis", "vitis:2022.1"),
|
||||||
("vitis_firesim_gemmini_rocket_singlecore_no_nic", "vitis", "vitis:2022.1"),
|
("vitis_firesim_gemmini_rocket_singlecore_no_nic", "vitis", "vitis:2022.1"),
|
||||||
("alveo_u250_firesim_rocket_singlecore_no_nic", "xilinx_alveo_u250", "vivado:2021.1"),
|
("alveo_u250_firesim_rocket_singlecore_no_nic", "xilinx_alveo_u250", "vivado:2021.1"),
|
||||||
("xilinx_vcu118_firesim_rocket_singlecore_4GB_no_nic", "xilinx_vcu118", "vivado:2019.1"),
|
("xilinx_vcu118_firesim_rocket_singlecore_4GB_no_nic", "xilinx_vcu118", "vivado:2019.1"),
|
||||||
]
|
]
|
||||||
|
|
||||||
assert len(hosts) >= len(batch_hwdbs), f"Need at least {len(batch_hwdbs)} hosts to run builds"
|
do_builds(batch_hwdbs_in)
|
||||||
|
|
||||||
# map hwdb tuple to hosts
|
batch_hwdbs_in = [
|
||||||
hwdb_2_host = {}
|
("alveo_u280_firesim_rocket_singlecore_no_nic", "xilinx_alveo_u280", "vivado:2021.1"),
|
||||||
for hwdb in batch_hwdbs:
|
]
|
||||||
buildtool_version = hwdb[2]
|
|
||||||
for host in hosts:
|
|
||||||
if host[1] == buildtool_version:
|
|
||||||
if not host[0] in hwdb_2_host.values():
|
|
||||||
hwdb_2_host[hwdb[0]] = host[0]
|
|
||||||
|
|
||||||
assert len(hwdb_2_host) == len(batch_hwdbs), "Unable to map hosts to hwdb build"
|
do_builds(batch_hwdbs_in)
|
||||||
|
|
||||||
hwdbs_ordered = [hwdb[0] for hwdb in batch_hwdbs]
|
|
||||||
platforms_ordered = [hwdb[1] for hwdb in batch_hwdbs]
|
|
||||||
hosts_ordered = hwdb_2_host.values()
|
|
||||||
|
|
||||||
print("Mappings")
|
|
||||||
print(f"HWDBS: {hwdbs_ordered}")
|
|
||||||
print(f"Platforms: {platforms_ordered}")
|
|
||||||
print(f"Hosts: {hosts_ordered}")
|
|
||||||
|
|
||||||
copy_build_yaml = modify_config_build(hwdbs_ordered)
|
|
||||||
copy_build_yaml_2 = add_host_list(copy_build_yaml, hosts_ordered)
|
|
||||||
links = build_upload(copy_build_yaml_2, hwdbs_ordered, platforms_ordered)
|
|
||||||
for hwdb, link in zip(hwdbs_ordered, links):
|
|
||||||
replace_in_hwdb(hwdb, link)
|
|
||||||
|
|
||||||
print(f"Printing {sample_hwdb_filename}...")
|
print(f"Printing {sample_hwdb_filename}...")
|
||||||
run(f"cat {sample_hwdb_filename}")
|
run(f"cat {sample_hwdb_filename}")
|
||||||
|
@ -245,9 +259,5 @@ def run_local_buildbitstreams():
|
||||||
# copy back to workspace area so you can PR it
|
# copy back to workspace area so you can PR it
|
||||||
run(f"cp -f {sample_hwdb_filename} {ci_env['GITHUB_WORKSPACE']}/{relative_hwdb_path}")
|
run(f"cp -f {sample_hwdb_filename} {ci_env['GITHUB_WORKSPACE']}/{relative_hwdb_path}")
|
||||||
|
|
||||||
# wipe old data
|
|
||||||
for host in hosts_ordered:
|
|
||||||
run(f"ssh {host} rm -rf {build_location}")
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
execute(run_local_buildbitstreams, hosts=["localhost"])
|
execute(run_local_buildbitstreams, hosts=["localhost"])
|
||||||
|
|
|
@ -9,7 +9,7 @@ from common import manager_fsim_dir, set_fabric_firesim_pem
|
||||||
def run_managerinit() -> None:
|
def run_managerinit() -> None:
|
||||||
""" Runs AWS configure on the CI manager """
|
""" Runs AWS configure on the CI manager """
|
||||||
|
|
||||||
with cd(manager_fsim_dir), prefix("source ./sourceme-f1-manager.sh"):
|
with cd(manager_fsim_dir), prefix("source ./sourceme-manager.sh"):
|
||||||
run(".github/scripts/firesim-managerinit.expect {} {} {}".format(
|
run(".github/scripts/firesim-managerinit.expect {} {} {}".format(
|
||||||
ci_env['AWS_ACCESS_KEY_ID'],
|
ci_env['AWS_ACCESS_KEY_ID'],
|
||||||
ci_env['AWS_SECRET_ACCESS_KEY'],
|
ci_env['AWS_SECRET_ACCESS_KEY'],
|
||||||
|
|
|
@ -17,7 +17,7 @@ def run_parallel_metasim():
|
||||||
# repo should already be checked out
|
# repo should already be checked out
|
||||||
|
|
||||||
with prefix(f"cd {ci_env['REMOTE_WORK_DIR']}"):
|
with prefix(f"cd {ci_env['REMOTE_WORK_DIR']}"):
|
||||||
with prefix('source sourceme-f1-manager.sh --skip-ssh-setup'):
|
with prefix('source sourceme-manager.sh --skip-ssh-setup'):
|
||||||
with prefix('cd sw/firesim-software'):
|
with prefix('cd sw/firesim-software'):
|
||||||
# build hello world baremetal test
|
# build hello world baremetal test
|
||||||
run("./marshal -v build test/bare.yaml")
|
run("./marshal -v build test/bare.yaml")
|
||||||
|
|
|
@ -11,7 +11,7 @@ from ci_variables import ci_env
|
||||||
def run_parallel_metasim():
|
def run_parallel_metasim():
|
||||||
""" Runs parallel baremetal metasimulations """
|
""" Runs parallel baremetal metasimulations """
|
||||||
|
|
||||||
with prefix(f"cd {manager_fsim_dir} && source sourceme-f1-manager.sh"):
|
with prefix(f"cd {manager_fsim_dir} && source sourceme-manager.sh"):
|
||||||
|
|
||||||
# build hello world baremetal test
|
# build hello world baremetal test
|
||||||
with prefix('cd sw/firesim-software'):
|
with prefix('cd sw/firesim-software'):
|
||||||
|
|
|
@ -423,7 +423,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
cd ${{ env.REMOTE_WORK_DIR }}
|
cd ${{ env.REMOTE_WORK_DIR }}
|
||||||
./build-setup.sh --skip-validate
|
./build-setup.sh --skip-validate
|
||||||
source sourceme-f1-manager.sh --skip-ssh-setup
|
source sourceme-manager.sh --skip-ssh-setup
|
||||||
firesim managerinit --platform vitis
|
firesim managerinit --platform vitis
|
||||||
cd sw/firesim-software && ./init-submodules.sh
|
cd sw/firesim-software && ./init-submodules.sh
|
||||||
|
|
||||||
|
|
|
@ -279,7 +279,5 @@ env_append "$NDEBUG_CHECK"
|
||||||
echo "$env_string" > env.sh
|
echo "$env_string" > env.sh
|
||||||
|
|
||||||
echo "Setup complete!"
|
echo "Setup complete!"
|
||||||
echo "To generate simulator RTL and run metasimulation simulation, source env.sh"
|
echo "To get started, source sourceme-manager.sh to setup your environment."
|
||||||
echo "To use the manager to deploy builds/simulations on EC2, source sourceme-f1-manager.sh to setup your environment."
|
|
||||||
echo "To run builds/simulations manually on this machine, source sourceme-f1-full.sh to setup your environment."
|
|
||||||
echo "For more information, see docs at https://docs.fires.im/."
|
echo "For more information, see docs at https://docs.fires.im/."
|
||||||
|
|
|
@ -65,7 +65,7 @@ class BitBuilder(metaclass=abc.ABCMeta):
|
||||||
prefix(f'export RISCV={os.getenv("RISCV", "")}'), \
|
prefix(f'export RISCV={os.getenv("RISCV", "")}'), \
|
||||||
prefix(f'export PATH={os.getenv("PATH", "")}'), \
|
prefix(f'export PATH={os.getenv("PATH", "")}'), \
|
||||||
prefix(f'export LD_LIBRARY_PATH={os.getenv("LD_LIBRARY_PATH", "")}'), \
|
prefix(f'export LD_LIBRARY_PATH={os.getenv("LD_LIBRARY_PATH", "")}'), \
|
||||||
prefix('source sourceme-f1-manager.sh --skip-ssh-setup'), \
|
prefix('source sourceme-manager.sh --skip-ssh-setup'), \
|
||||||
InfoStreamLogger('stdout'), \
|
InfoStreamLogger('stdout'), \
|
||||||
prefix('cd sim/'):
|
prefix('cd sim/'):
|
||||||
run(self.build_config.make_recipe("replace-rtl"))
|
run(self.build_config.make_recipe("replace-rtl"))
|
||||||
|
@ -79,7 +79,7 @@ class BitBuilder(metaclass=abc.ABCMeta):
|
||||||
prefix(f'export RISCV={os.getenv("RISCV", "")}'), \
|
prefix(f'export RISCV={os.getenv("RISCV", "")}'), \
|
||||||
prefix(f'export PATH={os.getenv("PATH", "")}'), \
|
prefix(f'export PATH={os.getenv("PATH", "")}'), \
|
||||||
prefix(f'export LD_LIBRARY_PATH={os.getenv("LD_LIBRARY_PATH", "")}'), \
|
prefix(f'export LD_LIBRARY_PATH={os.getenv("LD_LIBRARY_PATH", "")}'), \
|
||||||
prefix('source sourceme-f1-manager.sh --skip-ssh-setup'), \
|
prefix('source sourceme-manager.sh --skip-ssh-setup'), \
|
||||||
prefix('cd sim/'):
|
prefix('cd sim/'):
|
||||||
run(self.build_config.make_recipe("driver"))
|
run(self.build_config.make_recipe("driver"))
|
||||||
|
|
||||||
|
|
|
@ -431,7 +431,7 @@ def check_env() -> None:
|
||||||
"""
|
"""
|
||||||
# make sure that sourceme-f1 was sourced
|
# make sure that sourceme-f1 was sourced
|
||||||
if os.environ.get('FIRESIM_SOURCED') is None:
|
if os.environ.get('FIRESIM_SOURCED') is None:
|
||||||
rootLogger.critical("ERROR: You must source firesim/sourceme-f1-manager.sh!")
|
rootLogger.critical("ERROR: You must source firesim/sourceme-manager.sh!")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -490,7 +490,7 @@ class RuntimeHWConfig:
|
||||||
prefix(f'export RISCV={os.getenv("RISCV", "")}'), \
|
prefix(f'export RISCV={os.getenv("RISCV", "")}'), \
|
||||||
prefix(f'export PATH={os.getenv("PATH", "")}'), \
|
prefix(f'export PATH={os.getenv("PATH", "")}'), \
|
||||||
prefix(f'export LD_LIBRARY_PATH={os.getenv("LD_LIBRARY_PATH", "")}'), \
|
prefix(f'export LD_LIBRARY_PATH={os.getenv("LD_LIBRARY_PATH", "")}'), \
|
||||||
prefix('source sourceme-f1-manager.sh --skip-ssh-setup'), \
|
prefix('source sourceme-manager.sh --skip-ssh-setup'), \
|
||||||
prefix('cd sim/'):
|
prefix('cd sim/'):
|
||||||
driverbuildcommand = f"make PLATFORM={self.get_platform()} TARGET_PROJECT={target_project} DESIGN={design} TARGET_CONFIG={target_config} PLATFORM_CONFIG={platform_config} {self.get_driver_build_target()}"
|
driverbuildcommand = f"make PLATFORM={self.get_platform()} TARGET_PROJECT={target_project} DESIGN={design} TARGET_CONFIG={target_config} PLATFORM_CONFIG={platform_config} {self.get_driver_build_target()}"
|
||||||
buildresult = run(driverbuildcommand)
|
buildresult = run(driverbuildcommand)
|
||||||
|
|
|
@ -250,7 +250,7 @@ As part of target-generation, Rocket Chip emits a make fragment with recipes
|
||||||
for running suites of assembly tests. MIDAS puts this in
|
for running suites of assembly tests. MIDAS puts this in
|
||||||
``firesim/sim/generated-src/f1/<DESIGN>-<TARGET_CONFIG>-<PLATFORM_CONFIG>/firesim.d``.
|
``firesim/sim/generated-src/f1/<DESIGN>-<TARGET_CONFIG>-<PLATFORM_CONFIG>/firesim.d``.
|
||||||
Make sure your ``$RISCV`` environment variable is set by sourcing
|
Make sure your ``$RISCV`` environment variable is set by sourcing
|
||||||
``firesim/sourceme-f1-manager.sh`` or ``firesim/env.sh``, and type:
|
``firesim/sourceme-manager.sh`` or ``firesim/env.sh``, and type:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ To get the new default AGFI's you must run the manager initialization again by d
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
cd firesim
|
cd firesim
|
||||||
source sourceme-f1-manager.sh
|
source sourceme-manager.sh
|
||||||
firesim managerinit
|
firesim managerinit
|
||||||
|
|
||||||
Is there a good way to keep track of what AGFI corresponds to what FireSim commit?
|
Is there a good way to keep track of what AGFI corresponds to what FireSim commit?
|
||||||
|
@ -22,7 +22,7 @@ To view a list of AGFI's that you have built and what you have access to, you ca
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
cd firesim
|
cd firesim
|
||||||
source sourceme-f1-manager.sh
|
source sourceme-manager.sh
|
||||||
aws ec2 describe-fpga-images --fpga-image-ids # List all AGFI images
|
aws ec2 describe-fpga-images --fpga-image-ids # List all AGFI images
|
||||||
|
|
||||||
You can also view a specific AGFI image by giving the AGFI ID (found in ``deploy/config_hwdb.yaml``) through the following command:
|
You can also view a specific AGFI image by giving the AGFI ID (found in ``deploy/config_hwdb.yaml``) through the following command:
|
||||||
|
@ -30,7 +30,7 @@ You can also view a specific AGFI image by giving the AGFI ID (found in ``deploy
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
cd firesim
|
cd firesim
|
||||||
source sourceme-f1-manager.sh
|
source sourceme-manager.sh
|
||||||
aws ec2 describe-fpga-images --filter Name=fpga-image-global-id,Values=agfi-<Your ID Here> # List particular AGFI image
|
aws ec2 describe-fpga-images --filter Name=fpga-image-global-id,Values=agfi-<Your ID Here> # List particular AGFI image
|
||||||
|
|
||||||
After querying an AGFI, you can find the commit hash of the FireSim repository used to build the AGFI within the "Description"
|
After querying an AGFI, you can find the commit hash of the FireSim repository used to build the AGFI within the "Description"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Overview
|
Overview
|
||||||
========================
|
========================
|
||||||
|
|
||||||
When you source ``sourceme-f1-manager.sh`` in your copy of the FireSim repo,
|
When you source ``sourceme-manager.sh`` in your copy of the FireSim repo,
|
||||||
you get access to a new command, ``firesim``, which is the FireSim simulation
|
you get access to a new command, ``firesim``, which is the FireSim simulation
|
||||||
manager. If you've used tools like Vagrant or Docker, the ``firesim`` program
|
manager. If you've used tools like Vagrant or Docker, the ``firesim`` program
|
||||||
is to FireSim what ``vagrant`` and ``docker`` are to Vagrant and Docker
|
is to FireSim what ``vagrant`` and ``docker`` are to Vagrant and Docker
|
||||||
|
|
|
@ -44,7 +44,7 @@ Please follow along with the following steps to get setup if you already have an
|
||||||
|
|
||||||
./scripts/firesim-setup.sh --fast
|
./scripts/firesim-setup.sh --fast
|
||||||
cd sims/firesim
|
cd sims/firesim
|
||||||
source sourceme-f1-manager.sh
|
source sourceme-manager.sh
|
||||||
|
|
||||||
cd ~/chipyard-morning/sims/verilator/
|
cd ~/chipyard-morning/sims/verilator/
|
||||||
make
|
make
|
||||||
|
@ -69,7 +69,7 @@ Please follow along with the following steps to get setup if you already have an
|
||||||
|
|
||||||
./scripts/firesim-setup.sh --fast
|
./scripts/firesim-setup.sh --fast
|
||||||
cd sims/firesim
|
cd sims/firesim
|
||||||
source sourceme-f1-manager.sh
|
source sourceme-manager.sh
|
||||||
cd sim
|
cd sim
|
||||||
unset MAKEFLAGS
|
unset MAKEFLAGS
|
||||||
make f1
|
make f1
|
||||||
|
@ -119,7 +119,7 @@ Please follow along with the following steps to get setup if you already have an
|
||||||
# Uncomment the following line if you don't like systemctl's auto-paging feature:
|
# Uncomment the following line if you don't like systemctl's auto-paging feature:
|
||||||
# export SYSTEMD_PAGER=
|
# export SYSTEMD_PAGER=
|
||||||
# User specific aliases and functions
|
# User specific aliases and functions
|
||||||
cd /home/centos/chipyard-afternoon && source env.sh && cd sims/firesim && source sourceme-f1-manager.sh && cd /home/centos/
|
cd /home/centos/chipyard-afternoon && source env.sh && cd sims/firesim && source sourceme-manager.sh && cd /home/centos/
|
||||||
export FDIR=/home/centos/chipyard-afternoon/sims/firesim/
|
export FDIR=/home/centos/chipyard-afternoon/sims/firesim/
|
||||||
export CDIR=/home/centos/chipyard-afternoon/
|
export CDIR=/home/centos/chipyard-afternoon/
|
||||||
|
|
||||||
|
|
|
@ -128,7 +128,7 @@ Next, run:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
source sourceme-f1-manager.sh
|
source sourceme-manager.sh
|
||||||
|
|
||||||
This will have initialized the AWS shell, added the RISC-V tools to your
|
This will have initialized the AWS shell, added the RISC-V tools to your
|
||||||
path, and started an ``ssh-agent`` that supplies ``~/firesim.pem``
|
path, and started an ``ssh-agent`` that supplies ``~/firesim.pem``
|
||||||
|
|
|
@ -8,7 +8,7 @@ by a network with one 8-port Top-of-Rack (ToR) switch and 200 Gbps, 2μs links.
|
||||||
This will require one ``f1.16xlarge`` (8 FPGA) instance.
|
This will require one ``f1.16xlarge`` (8 FPGA) instance.
|
||||||
|
|
||||||
Make sure you are ``ssh`` or ``mosh``'d into your manager instance and have sourced
|
Make sure you are ``ssh`` or ``mosh``'d into your manager instance and have sourced
|
||||||
``sourceme-f1-manager.sh`` before running any of these commands.
|
``sourceme-manager.sh`` before running any of these commands.
|
||||||
|
|
||||||
Returning to a clean configuration
|
Returning to a clean configuration
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
|
@ -330,7 +330,7 @@ a live status page once simulations are kicked-off:
|
||||||
In cycle-accurate networked mode, this will only exit when any ONE of the
|
In cycle-accurate networked mode, this will only exit when any ONE of the
|
||||||
simulated nodes shuts down. So, let's let it run and open another ssh
|
simulated nodes shuts down. So, let's let it run and open another ssh
|
||||||
connection to the manager instance. From there, ``cd`` into your firesim
|
connection to the manager instance. From there, ``cd`` into your firesim
|
||||||
directory again and ``source sourceme-f1-manager.sh`` again to get our ssh key
|
directory again and ``source sourceme-manager.sh`` again to get our ssh key
|
||||||
setup. To access our simulated system, ssh into the IP address being printed by
|
setup. To access our simulated system, ssh into the IP address being printed by
|
||||||
the status page, **from your manager instance**. In our case, from the above
|
the status page, **from your manager instance**. In our case, from the above
|
||||||
output, we see that our simulated system is running on the instance with IP
|
output, we see that our simulated system is running on the instance with IP
|
||||||
|
|
|
@ -8,7 +8,7 @@ a simulation! In this section, we will simulate **1 target node**, for which we
|
||||||
will need a single ``f1.2xlarge`` (1 FPGA) instance.
|
will need a single ``f1.2xlarge`` (1 FPGA) instance.
|
||||||
|
|
||||||
Make sure you are ``ssh`` or ``mosh``'d into your manager instance and have sourced
|
Make sure you are ``ssh`` or ``mosh``'d into your manager instance and have sourced
|
||||||
``sourceme-f1-manager.sh`` before running any of these commands.
|
``sourceme-manager.sh`` before running any of these commands.
|
||||||
|
|
||||||
|
|
||||||
Building target software
|
Building target software
|
||||||
|
@ -311,7 +311,7 @@ live status page:
|
||||||
|
|
||||||
This will only exit once all of the simulated nodes have shut down. So, let's let it
|
This will only exit once all of the simulated nodes have shut down. So, let's let it
|
||||||
run and open another ssh connection to the manager instance. From there, ``cd`` into
|
run and open another ssh connection to the manager instance. From there, ``cd`` into
|
||||||
your firesim directory again and ``source sourceme-f1-manager.sh`` again to get
|
your firesim directory again and ``source sourceme-manager.sh`` again to get
|
||||||
our ssh key setup. To access our simulated system, ssh into the IP address being
|
our ssh key setup. To access our simulated system, ssh into the IP address being
|
||||||
printed by the status page, **from your manager instance**. In our case, from
|
printed by the status page, **from your manager instance**. In our case, from
|
||||||
the above output, we see that our simulated system is running on the instance with
|
the above output, we see that our simulated system is running on the instance with
|
||||||
|
|
|
@ -77,7 +77,7 @@ Re-enter the FireSim repository and run the following commands to re-setup the r
|
||||||
cd firesim
|
cd firesim
|
||||||
|
|
||||||
# rerunning this since the machine rebooted
|
# rerunning this since the machine rebooted
|
||||||
source sourceme-f1-manager.sh --skip-ssh-setup
|
source sourceme-manager.sh --skip-ssh-setup
|
||||||
|
|
||||||
Next, open up the ``deploy/config_runtime.yaml`` file and replace the following keys to be the following:
|
Next, open up the ``deploy/config_runtime.yaml`` file and replace the following keys to be the following:
|
||||||
|
|
||||||
|
|
|
@ -131,7 +131,7 @@ Next, run:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
source sourceme-f1-manager.sh --skip-ssh-setup
|
source sourceme-manager.sh --skip-ssh-setup
|
||||||
|
|
||||||
This will perform various environment setup steps, such as adding the RISC-V tools to your
|
This will perform various environment setup steps, such as adding the RISC-V tools to your
|
||||||
path. Sourcing this the first time will take some time -- however each time after that should be instantaneous.
|
path. Sourcing this the first time will take some time -- however each time after that should be instantaneous.
|
||||||
|
|
|
@ -5,7 +5,7 @@ Now that we've completed the setup of our manager machine, it's time to run
|
||||||
a simulation! In this section, we will simulate **1 target node**, for which we
|
a simulation! In this section, we will simulate **1 target node**, for which we
|
||||||
will need a single |fpga_type|.
|
will need a single |fpga_type|.
|
||||||
|
|
||||||
**Make sure you have sourced** ``sourceme-f1-manager.sh --skip-ssh-setup`` **before running any of these commands.**
|
**Make sure you have sourced** ``sourceme-manager.sh --skip-ssh-setup`` **before running any of these commands.**
|
||||||
|
|
||||||
Building target software
|
Building target software
|
||||||
------------------------
|
------------------------
|
||||||
|
@ -246,7 +246,7 @@ live status page:
|
||||||
|
|
||||||
This will only exit once all of the simulated nodes have completed simulations. So, let's let it
|
This will only exit once all of the simulated nodes have completed simulations. So, let's let it
|
||||||
run and open another terminal to the manager machine. From there, ``cd`` into
|
run and open another terminal to the manager machine. From there, ``cd`` into
|
||||||
your FireSim directory again and ``source sourceme-f1-manager.sh --skip-ssh-setup``.
|
your FireSim directory again and ``source sourceme-manager.sh --skip-ssh-setup``.
|
||||||
Next, let's ``ssh`` into the simulation machine.
|
Next, let's ``ssh`` into the simulation machine.
|
||||||
In this case, since we are running the simulation on the same machine (i.e. ``localhost``)
|
In this case, since we are running the simulation on the same machine (i.e. ``localhost``)
|
||||||
we can run the following:
|
we can run the following:
|
||||||
|
|
|
@ -6,6 +6,6 @@ set -o pipefail
|
||||||
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
||||||
source $SCRIPT_DIR/defaults.sh
|
source $SCRIPT_DIR/defaults.sh
|
||||||
|
|
||||||
run "cd firesim/ && source sourceme-f1-manager.sh && firesim buildbitstream"
|
run "cd firesim/ && source sourceme-manager.sh && firesim buildbitstream"
|
||||||
|
|
||||||
echo "Success"
|
echo "Success"
|
||||||
|
|
|
@ -39,6 +39,6 @@ run "cd firesim/sw/firesim-software && ./init-submodules.sh"
|
||||||
copy ~/.aws/ $IP_ADDR:~/.aws
|
copy ~/.aws/ $IP_ADDR:~/.aws
|
||||||
copy ~/firesim.pem $IP_ADDR:~/firesim.pem
|
copy ~/firesim.pem $IP_ADDR:~/firesim.pem
|
||||||
copy firesim-managerinit.expect $IP_ADDR:~/firesim-managerinit.expect
|
copy firesim-managerinit.expect $IP_ADDR:~/firesim-managerinit.expect
|
||||||
run "cd firesim && source sourceme-f1-manager.sh && cd ../ && ./firesim-managerinit.expect"
|
run "cd firesim && source sourceme-manager.sh && cd ../ && ./firesim-managerinit.expect"
|
||||||
|
|
||||||
echo "Success"
|
echo "Success"
|
||||||
|
|
|
@ -8,8 +8,8 @@ source $SCRIPT_DIR/defaults.sh
|
||||||
|
|
||||||
cd .. # firesim
|
cd .. # firesim
|
||||||
|
|
||||||
run "cd firesim/ && source sourceme-f1-manager.sh && sw/firesim-software && ./marshal -v build br-base.json && ./marshal -v install br-base.json"
|
run "cd firesim/ && source sourceme-manager.sh && sw/firesim-software && ./marshal -v build br-base.json && ./marshal -v install br-base.json"
|
||||||
run "cd firesim/ && source sourceme-f1-manager.sh && cd deploy/workloads/ && make allpaper"
|
run "cd firesim/ && source sourceme-manager.sh && cd deploy/workloads/ && make allpaper"
|
||||||
run "cd firesim/ && source sourceme-f1-manager.sh && cd deploy/workloads/ && ./run-all.sh"
|
run "cd firesim/ && source sourceme-manager.sh && cd deploy/workloads/ && ./run-all.sh"
|
||||||
|
|
||||||
echo "Success"
|
echo "Success"
|
||||||
|
|
|
@ -5,7 +5,7 @@ set -o pipefail
|
||||||
|
|
||||||
# build setup
|
# build setup
|
||||||
./build-setup.sh fast
|
./build-setup.sh fast
|
||||||
source sourceme-f1-manager.sh
|
source sourceme-manager.sh
|
||||||
|
|
||||||
# run through elaboration flow to get chisel/sbt all setup
|
# run through elaboration flow to get chisel/sbt all setup
|
||||||
cd sim
|
cd sim
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
default: compile
|
default: compile
|
||||||
|
|
||||||
ifndef FIRESIM_ENV_SOURCED
|
ifndef FIRESIM_ENV_SOURCED
|
||||||
$(error You must source sourceme-f1-manager.sh or env.sh to use this Makefile)
|
$(error You must source sourceme-manager.sh or env.sh to use this Makefile)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
firesim_base_dir := $(abspath .)
|
firesim_base_dir := $(abspath .)
|
||||||
|
|
|
@ -1,58 +0,0 @@
|
||||||
# you should source this only if you plan to run build/simulations locally,
|
|
||||||
# without using the manager at all.
|
|
||||||
|
|
||||||
DO_SSH_SETUP=true
|
|
||||||
|
|
||||||
function usage
|
|
||||||
{
|
|
||||||
echo "usage: source sourceme-f1-full.sh [OPTIONS]"
|
|
||||||
echo "options:"
|
|
||||||
echo " --skip-ssh-setup: if set, skips ssh setup checks."
|
|
||||||
}
|
|
||||||
|
|
||||||
while test $# -gt 0
|
|
||||||
do
|
|
||||||
case "$1" in
|
|
||||||
--skip-ssh-setup)
|
|
||||||
DO_SSH_SETUP=false;
|
|
||||||
;;
|
|
||||||
-h | -H | --help)
|
|
||||||
usage
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
--*) echo "ERROR: bad option $1"
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
*) echo "ERROR: bad argument $1"
|
|
||||||
usage
|
|
||||||
exit 2
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
unamestr=$(uname)
|
|
||||||
RDIR=$(pwd)
|
|
||||||
AWSFPGA=$RDIR/platforms/f1/aws-fpga
|
|
||||||
|
|
||||||
# setup risc-v tools
|
|
||||||
source ./env.sh
|
|
||||||
|
|
||||||
# setup AWS tools
|
|
||||||
cd $AWSFPGA
|
|
||||||
source ./hdk_setup.sh
|
|
||||||
source ./sdk_setup.sh
|
|
||||||
export CL_DIR=$AWSFPGA/hdk/cl/developer_designs/cl_firesim
|
|
||||||
cd $RDIR
|
|
||||||
|
|
||||||
# put the manager on the user path
|
|
||||||
export PATH=$PATH:$(pwd)/deploy
|
|
||||||
|
|
||||||
if [ "$DO_SSH_SETUP" = true ]; then
|
|
||||||
# setup ssh-agent
|
|
||||||
source deploy/ssh-setup.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
# flag for scripts to check that this has been sourced
|
|
||||||
export FIRESIM_SOURCED=1
|
|
|
@ -6,7 +6,7 @@ DO_SSH_SETUP=true
|
||||||
|
|
||||||
function usage
|
function usage
|
||||||
{
|
{
|
||||||
echo "usage: source sourceme-f1-manager.sh [OPTIONS]"
|
echo "usage: source sourceme-manager.sh [OPTIONS]"
|
||||||
echo "options:"
|
echo "options:"
|
||||||
echo " --skip-ssh-setup: if set, skips ssh setup checks."
|
echo " --skip-ssh-setup: if set, skips ssh setup checks."
|
||||||
}
|
}
|
Loading…
Reference in New Issue