Skip to content

Commit 08a4a09

Browse files
committed
Bazelify everything up to Golden Gate
1 parent 3b069fc commit 08a4a09

File tree

8 files changed

+90
-51
lines changed

8 files changed

+90
-51
lines changed

sim/BUILD.bazel

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package(default_visibility = ["//visibility:public"])
22

33
load("@buildifier_prebuilt//:rules.bzl", "buildifier")
4+
load("//build_rules:helpers.bzl", "firesim_genrule", "plugin_chisel_generator", "plugin_golden_gate")
45

56
buildifier(
67
name = "buildifier-fix",
@@ -142,3 +143,14 @@ scala_binary(
142143
],
143144
plugins = ["@mvn//:edu_berkeley_cs_chisel3_plugin_2_13_10"],
144145
)
146+
147+
# TODO: don't think this is right, goal is to have upper level projects
148+
# define their own generator that plugs in nicely into the build flow
149+
plugin_chisel_generator(
150+
name = "invoke-chisel-generator",
151+
generator = ":chisel-generator"
152+
)
153+
plugin_golden_gate(
154+
name = "invoke-golden-gate",
155+
generator = ":invoke-chisel-generator"
156+
)

sim/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ TARGET_PROJECT ?= midasexamples
3535
# Users can override this to point at a collections of Makefrags.
3636
# The following makefrags must be present in the folder:
3737
# config.mk: override configuration variables with project specifics
38-
# build.mk: define the build rule generating the input FIRRTL and annotations
3938
# driver.mk: define the configuration for the driver
4039
# metasim.mk: define rules to run metasimulator binaries.
4140
TARGET_PROJECT_MAKEFRAG ?= $(firesim_base_dir)/src/main/makefrag/$(TARGET_PROJECT)
@@ -52,7 +51,6 @@ include make/utils.mk
5251
include $(TARGET_PROJECT_MAKEFRAG)/config.mk
5352
include make/config.mk
5453

55-
include $(TARGET_PROJECT_MAKEFRAG)/build.mk
5654
include make/goldengate.mk
5755
include make/post-synth.mk
5856

@@ -83,10 +81,12 @@ mostlyclean:
8381
.PHONY: clean
8482
clean:
8583
rm -rf $(GENERATED_DIR) $(OUTPUT_DIR)
84+
bazel clean --expunge
8685

8786
.PHONY: veryclean
8887
veryclean:
8988
rm -rf generated-src output
89+
bazel clean --expunge
9090

9191
# Remove all implicit suffix rules; This improves make performance substantially as it no longer
9292
# attempts to resolve implicit rules on 1000+ scala files.

sim/build_rules/BUILD.bazel

Whitespace-only changes.

sim/build_rules/helpers.bzl

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
def firesim_genrule(name, cmd, **kwargs):
2+
appended_cmd = """
3+
name_quintuplet=$(PLATFORM)-$(TARGET_PROJECT)-$(DESIGN)-$(TARGET_CONFIG)-$(PLATFORM_CONFIG)
4+
long_name=$(DESIGN_PACKAGE).$(DESIGN).$(TARGET_CONFIG)
5+
BUILD_DIR=generated-src
6+
GENERATED_DIR=$${{BUILD_DIR}}/$(PLATFORM)/$${{name_quintuplet}}
7+
OUTPUT_DIR=output/$(PLATFORM)/$${{name_quintuplet}}
8+
FIRRTL_FILE=$${{GENERATED_DIR}}/$${{long_name}}.fir
9+
ANNO_FILE=$${{GENERATED_DIR}}/$${{long_name}}.anno.json
10+
simulator_verilog=$${{GENERATED_DIR}}/$(BASE_FILE_NAME).sv
11+
simulator_xdc=$${{GENERATED_DIR}}/$(BASE_FILE_NAME).synthesis.xdc
12+
{cmd}
13+
""".format(cmd=cmd)
14+
native.genrule(
15+
name=name,
16+
cmd=appended_cmd,
17+
**kwargs)
18+
19+
def plugin_chisel_generator(name, generator):
20+
firesim_genrule(
21+
name = name,
22+
outs = [
23+
"chisel-generator.tar.gz",
24+
],
25+
tools = [generator],
26+
cmd = """
27+
mkdir -p $$GENERATED_DIR
28+
$(location {generator}) \
29+
--target-dir $${{GENERATED_DIR}} \
30+
--name $(NAME) \
31+
--top-module $(TOP_MODULE) \
32+
--configs $(CONFIGS)
33+
tar czf $@ $${{GENERATED_DIR}}
34+
""".format(generator=generator),
35+
message = "Invoke the Chisel generator built-in with FireSim",
36+
)
37+
38+
def plugin_golden_gate(name, generator):
39+
firesim_genrule(
40+
name = name,
41+
srcs = [generator],
42+
outs = [
43+
"golden-gate.tar.gz",
44+
],
45+
tools = ["//midas/src/main/scala:golden-gate"],
46+
cmd = """
47+
tar xzf $(location {generator})
48+
$(location //midas/src/main/scala:golden-gate) \
49+
-i $${{FIRRTL_FILE}} \
50+
-faf $${{ANNO_FILE}} \
51+
-td $${{GENERATED_DIR}} \
52+
-ggcp $(PLATFORM_CONFIG_PACKAGE) \
53+
-ggcs $(PLATFORM_CONFIG) \
54+
--output-filename-base $(BASE_FILE_NAME) \
55+
--allow-unrecognized-annotations \
56+
--no-dedup
57+
grep -sh ^ $${{GENERATED_DIR}}/firrtl_black_box_resource_files.f | xargs cat >> $${{simulator_verilog}}
58+
tar czf $@ $${{GENERATED_DIR}}
59+
""".format(generator=generator),
60+
message = "Invoke the GoldenGate compiler with the Chisel generator built-in with FireSim",
61+
)

sim/make/goldengate.mk

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,21 @@ compile: $(simulator_verilog)
2222
# Disable FIRRTL 1.4 deduplication because it creates multiple failures
2323
# Run the 1.3 version instead (checked-in). If dedup must be completely disabled,
2424
# pass --no-legacy-dedup as well
25-
$(simulator_verilog) $(simulator_xdc) $(header) $(fame_annos) &: $(FIRRTL_FILE) $(ANNO_FILE) $(firesim_main_srcs) $(firesim_test_srcs)
26-
bazel run //midas/src/main/scala:golden-gate -- \
27-
-i $(FIRRTL_FILE) \
28-
-td $(GENERATED_DIR) \
29-
-faf $(ANNO_FILE) \
30-
-ggcp $(PLATFORM_CONFIG_PACKAGE) \
31-
-ggcs $(PLATFORM_CONFIG) \
32-
--output-filename-base $(BASE_FILE_NAME) \
33-
--allow-unrecognized-annotations \
34-
--no-dedup
35-
grep -sh ^ $(GENERATED_DIR)/firrtl_black_box_resource_files.f | \
36-
xargs cat >> $(simulator_verilog) # Append blackboxes to FPGA wrapper, if any
25+
$(simulator_verilog) $(simulator_xdc) $(header) $(fame_annos) &: $(firesim_main_srcs) $(firesim_test_srcs)
26+
bazel build //:invoke-golden-gate \
27+
--define PLATFORM=$(PLATFORM) \
28+
--define PLATFORM_CONFIG_PACKAGE=$(PLATFORM_CONFIG_PACKAGE) \
29+
--define PLATFORM_CONFIG=$(PLATFORM_CONFIG) \
30+
--define TARGET_PROJECT=$(TARGET_PROJECT) \
31+
--define TARGET_CONFIG_PACKAGE=$(TARGET_CONFIG_PACKAGE) \
32+
--define TARGET_CONFIG=$(TARGET_CONFIG) \
33+
--define DESIGN_PACKAGE=$(DESIGN_PACKAGE) \
34+
--define DESIGN=$(DESIGN) \
35+
--define BASE_FILE_NAME=$(BASE_FILE_NAME) \
36+
--define NAME=$(long_name) \
37+
--define TOP_MODULE=$(DESIGN_PACKAGE).$(DESIGN) \
38+
--define CONFIGS=$(TARGET_CONFIG_QUALIFIED)
39+
tar xvf $(shell bazel info bazel-genfiles)/golden-gate.tar.gz
3740

3841
####################################
3942
# Runtime-Configuration Generation #

sim/src/main/makefrag/examples/build.mk

Lines changed: 0 additions & 19 deletions
This file was deleted.

sim/src/main/makefrag/fasedtests/build.mk

Lines changed: 0 additions & 9 deletions
This file was deleted.

sim/src/main/makefrag/midasexamples/build.mk

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)