fusesoc files for Crossbar - Add a fusesoc core and build rules to allow exporting Crossbar through the build system. Change-Id: Ie754a62333d6762dfb26e22137b6c8c93f0124fc
diff --git a/hdl/chisel/BUILD b/hdl/chisel/BUILD index c466618..88cf0d0 100644 --- a/hdl/chisel/BUILD +++ b/hdl/chisel/BUILD
@@ -16,12 +16,14 @@ name = "matcha_kelvin_verilog", srcs = [ "//hdl/chisel/src/matcha:Kelvin.sv", + "//hdl/chisel/src/matcha:Crossbar.sv", "//hdl/verilog:ClockGate.v", "//hdl/verilog:Sram_1rw_256x256.v", "//hdl/verilog:Sram_1rwm_256x288.v", ], outs = [ "kelvin.sv", + "crossbar.sv", "ClockGate.v", "Sram_1rw_256x256.v", "Sram_1rwm_256x288.v", @@ -34,6 +36,11 @@ \\`define ASSERT_VERBOSE_COND 0 " > $(location kelvin.sv) cat $(location //hdl/chisel/src/matcha:Kelvin.sv) >> $(location kelvin.sv) + echo "\\`define STOP_COND 0 +\\`define PRINTF_COND 0 +\\`define ASSERT_VERBOSE_COND 0 +" > $(location crossbar.sv) + cat $(location //hdl/chisel/src/matcha:Crossbar.sv) >> $(location crossbar.sv) cp -f $(location //hdl/verilog:ClockGate.v) $(location ClockGate.v) cp -f $(location //hdl/verilog:Sram_1rw_256x256.v) $(location Sram_1rw_256x256.v) cp -f $(location //hdl/verilog:Sram_1rwm_256x288.v) $(location Sram_1rwm_256x288.v) @@ -46,10 +53,17 @@ genrule( name = "kelvin_core", srcs = [ + "crossbar.core.in", "kelvin.core.in", "matcha_kelvin_verilog", ], - outs = ["kelvin.core"], - cmd = "cp -f $(location kelvin.core.in) $@", + outs = [ + "crossbar.core", + "kelvin.core", + ], + cmd = """ + cp -f $(location kelvin.core.in) $(location kelvin.core) + cp -f $(location crossbar.core.in) $(location crossbar.core) + """, visibility = ["//visibility:public"], )
diff --git a/hdl/chisel/crossbar.core.in b/hdl/chisel/crossbar.core.in new file mode 100644 index 0000000..730e9d6 --- /dev/null +++ b/hdl/chisel/crossbar.core.in
@@ -0,0 +1,34 @@ +CAPI=2: +# Copyright 2023 Google LLC +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 +name: "google:ip:crossbar:0.1" +description: "Kelvin SRAM Crossbar" +filesets: + files_rtl: + files: + - crossbar.sv + file_type: systemVerilogSource + +parameters: + SYNTHESIS: + datatype: bool + paramtype: vlogdefine + + +targets: + default: &default_target + filesets: + - files_rtl + toplevel: crossbar + + lint: + <<: *default_target + default_tool: verilator + parameters: + - SYNTHESIS=true + tools: + verilator: + mode: lint-only + verilator_options: + - "-Wall"
diff --git a/hdl/chisel/src/matcha/BUILD b/hdl/chisel/src/matcha/BUILD index 6b10e4e..eb4ab1b 100644 --- a/hdl/chisel/src/matcha/BUILD +++ b/hdl/chisel/src/matcha/BUILD
@@ -39,4 +39,11 @@ "//hdl/verilog:sram_1rw_256x256", "//hdl/verilog:sram_1rw_256x288", ], -) \ No newline at end of file +) + +chisel_cc_library( + name = "crossbar_cc_library", + chisel_lib = ":matcha", + emit_class = "matcha.EmitCrossbar", + module_name = "Crossbar", +)