synthesizable radiance
This commit is contained in:
@@ -5,10 +5,8 @@ import chipyard.stage.phases.TargetDirKey
|
|||||||
import freechips.rocketchip.devices.tilelink.BootROMLocated
|
import freechips.rocketchip.devices.tilelink.BootROMLocated
|
||||||
import freechips.rocketchip.diplomacy.{AsynchronousCrossing, BigIntHexContext}
|
import freechips.rocketchip.diplomacy.{AsynchronousCrossing, BigIntHexContext}
|
||||||
import freechips.rocketchip.subsystem.{InCluster, WithCluster, WithExtMemSize}
|
import freechips.rocketchip.subsystem.{InCluster, WithCluster, WithExtMemSize}
|
||||||
import freechips.rocketchip.tile.XLen
|
|
||||||
import org.chipsalliance.cde.config.Config
|
import org.chipsalliance.cde.config.Config
|
||||||
import radiance.memory._
|
import radiance.memory._
|
||||||
import radiance.subsystem.WithRadianceGemmini
|
|
||||||
|
|
||||||
class WithRadROMs(address: BigInt, size: Int, filename: String) extends Config((site, here, up) => {
|
class WithRadROMs(address: BigInt, size: Int, filename: String) extends Config((site, here, up) => {
|
||||||
case RadianceROMsLocated() => Some(up(RadianceROMsLocated()).getOrElse(Seq()) ++
|
case RadianceROMsLocated() => Some(up(RadianceROMsLocated()).getOrElse(Seq()) ++
|
||||||
@@ -45,11 +43,12 @@ class RadianceBaseConfig(argsBinFilename: String = "args.bin") extends Config(
|
|||||||
new WithRadROMs(0x28000L, 0x8000, "sims/op_b.bin") ++
|
new WithRadROMs(0x28000L, 0x8000, "sims/op_b.bin") ++
|
||||||
new chipyard.harness.WithCeaseSuccess ++
|
new chipyard.harness.WithCeaseSuccess ++
|
||||||
new chipyard.iobinders.WithCeasePunchThrough ++
|
new chipyard.iobinders.WithCeasePunchThrough ++
|
||||||
|
new radiance.subsystem.WithRadianceSimParams(true) ++
|
||||||
new AbstractConfig)
|
new AbstractConfig)
|
||||||
|
|
||||||
class RadianceConfig extends Config(
|
class RadianceConfig extends Config(
|
||||||
// important to keep gemmini tile before RadianceCores to ensure radiance tile id is 0-indexed
|
// important to keep gemmini tile before RadianceCores to ensure radiance tile id is 0-indexed
|
||||||
new WithRadianceGemmini(location = InCluster(0), dim = 8, extMemBase = x"ff000000", spSizeInKB = 16, accSizeInKB = 8) ++
|
new radiance.subsystem.WithRadianceGemmini(location = InCluster(0), dim = 8, extMemBase = x"ff000000", spSizeInKB = 16, accSizeInKB = 8) ++
|
||||||
new radiance.subsystem.WithRadianceCores(1, location=InCluster(0), useVxCache = false) ++
|
new radiance.subsystem.WithRadianceCores(1, location=InCluster(0), useVxCache = false) ++
|
||||||
new radiance.subsystem.WithCoalescer(nNewSrcIds = 8) ++
|
new radiance.subsystem.WithCoalescer(nNewSrcIds = 8) ++
|
||||||
new radiance.subsystem.WithVortexL1Banks(nBanks = 4)++
|
new radiance.subsystem.WithVortexL1Banks(nBanks = 4)++
|
||||||
@@ -58,7 +57,7 @@ class RadianceConfig extends Config(
|
|||||||
|
|
||||||
class RadianceClusterConfig extends Config(
|
class RadianceClusterConfig extends Config(
|
||||||
// important to keep gemmini tile before RadianceCores to ensure radiance tile id is 0-indexed
|
// important to keep gemmini tile before RadianceCores to ensure radiance tile id is 0-indexed
|
||||||
new WithRadianceGemmini(location = InCluster(0), dim = 8, extMemBase = x"ff000000", spSizeInKB = 16, accSizeInKB = 8) ++
|
new radiance.subsystem.WithRadianceGemmini(location = InCluster(0), dim = 8, extMemBase = x"ff000000", spSizeInKB = 16, accSizeInKB = 8) ++
|
||||||
new radiance.subsystem.WithRadianceCores(2, location=InCluster(0), useVxCache = false) ++
|
new radiance.subsystem.WithRadianceCores(2, location=InCluster(0), useVxCache = false) ++
|
||||||
new radiance.subsystem.WithCoalescer(nNewSrcIds = 8) ++
|
new radiance.subsystem.WithCoalescer(nNewSrcIds = 8) ++
|
||||||
new radiance.subsystem.WithVortexL1Banks(nBanks = 8)++
|
new radiance.subsystem.WithVortexL1Banks(nBanks = 8)++
|
||||||
@@ -86,6 +85,10 @@ class RadianceClusterConfig2 extends Config(
|
|||||||
new radiance.subsystem.WithRadianceCluster(0) ++
|
new radiance.subsystem.WithRadianceCluster(0) ++
|
||||||
new RadianceBaseConfig("args.2.bin"))
|
new RadianceBaseConfig("args.2.bin"))
|
||||||
|
|
||||||
|
class RadianceClusterSynConfig extends Config(
|
||||||
|
new radiance.subsystem.WithRadianceSimParams(false) ++
|
||||||
|
new RadianceClusterConfig)
|
||||||
|
|
||||||
class RadianceGemminiConfig extends Config(
|
class RadianceGemminiConfig extends Config(
|
||||||
new radiance.subsystem.WithRadianceCores(1, useVxCache = false) ++
|
new radiance.subsystem.WithRadianceCores(1, useVxCache = false) ++
|
||||||
new radiance.subsystem.WithCoalescer(nNewSrcIds = 8) ++
|
new radiance.subsystem.WithCoalescer(nNewSrcIds = 8) ++
|
||||||
|
|||||||
Submodule generators/radiance updated: 824cae7c50...3e0d87e1dd
@@ -50,9 +50,6 @@ VCS_NONCC_OPTS = \
|
|||||||
+incdir+$(base_dir)/generators/radiance/src/main/resources/vsrc/vortex/third_party/fpnew/src/common_cells/include \
|
+incdir+$(base_dir)/generators/radiance/src/main/resources/vsrc/vortex/third_party/fpnew/src/common_cells/include \
|
||||||
$(base_dir)/generators/radiance/src/main/resources/vsrc/vortex/third_party/fpnew/src/fpnew_pkg.sv \
|
$(base_dir)/generators/radiance/src/main/resources/vsrc/vortex/third_party/fpnew/src/fpnew_pkg.sv \
|
||||||
$(base_dir)/generators/radiance/src/main/resources/vsrc/vortex/third_party/fpnew/src/fpu_div_sqrt_mvp/hdl/defs_div_sqrt_mvp.sv \
|
$(base_dir)/generators/radiance/src/main/resources/vsrc/vortex/third_party/fpnew/src/fpu_div_sqrt_mvp/hdl/defs_div_sqrt_mvp.sv \
|
||||||
$(base_dir)/generators/radiance/src/main/resources/vsrc/vortex/third_party/fpnew/src/common_cells/src/cb_filter_pkg.sv \
|
|
||||||
$(base_dir)/generators/radiance/src/main/resources/vsrc/vortex/third_party/fpnew/src/common_cells/src/cf_math_pkg.sv \
|
|
||||||
$(base_dir)/generators/radiance/src/main/resources/vsrc/vortex/third_party/fpnew/src/common_cells/src/ecc_pkg.sv \
|
|
||||||
-f $(sim_common_files) \
|
-f $(sim_common_files) \
|
||||||
-sverilog +systemverilogext+.sv+.svi+.svh+.svt -assert svaext +libext+.sv \
|
-sverilog +systemverilogext+.sv+.svi+.svh+.svt -assert svaext +libext+.sv \
|
||||||
+v2k +verilog2001ext+.v95+.vt+.vp +libext+.v \
|
+v2k +verilog2001ext+.v95+.vt+.vp +libext+.v \
|
||||||
|
|||||||
30
vlsi/make_syn_f.sh
Executable file
30
vlsi/make_syn_f.sh
Executable file
@@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check if an argument is provided
|
||||||
|
if [ "$#" -ne 1 ]; then
|
||||||
|
echo "Usage: $0 <directory_path>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
directory_path=$1
|
||||||
|
gen_collateral_path="${directory_path}/gen-collateral"
|
||||||
|
output_file="${directory_path}/syn.f"
|
||||||
|
|
||||||
|
if [ ! -d "$gen_collateral_path" ]; then
|
||||||
|
echo "The subdirectory gen-collateral does not exist in the provided directory."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# find "$gen_collateral_path" -type f \( -name "*.v" -o -name "*.sv" \) -exec realpath {} \; > "$output_file"
|
||||||
|
cat "${directory_path}/"*.top.f > "$output_file"
|
||||||
|
cat "${directory_path}/"*.bb.f | grep -E ".*v$" >> "$output_file"
|
||||||
|
find "$gen_collateral_path" -type f \( -name "*.top.mems.v" \) -exec realpath {} \; >> "$output_file"
|
||||||
|
|
||||||
|
temp_file=$(mktemp)
|
||||||
|
grep "pkg" "$output_file" > "$temp_file"
|
||||||
|
grep "defs_div" "$output_file" >> "$temp_file"
|
||||||
|
cat "$output_file" | grep -v "pkg" | grep -v "defs_div" | grep -E -v "Sim.*.v" | sort -u >> "$temp_file"
|
||||||
|
mv "$temp_file" "$output_file"
|
||||||
|
|
||||||
|
echo "File paths have been written to $output_file."
|
||||||
|
|
||||||
Reference in New Issue
Block a user