Skip to content

Commit

Permalink
[topgen] Add topgen generator core and FuseSoC wrapper
Browse files Browse the repository at this point in the history
This infrastructure is needed to allow FuseSoC calling topgen in order
to auto-generate top-level IPs and the top-level at build time without the
need for checking in those files.

Signed-off-by: Pirmin Vogel <[email protected]>
  • Loading branch information
vogelpi committed Dec 23, 2020
1 parent 7ac9f33 commit 6724059
Show file tree
Hide file tree
Showing 21 changed files with 279 additions and 30 deletions.
1 change: 1 addition & 0 deletions hw/ip/alert_handler/alert_handler_component.core
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ filesets:
- lowrisc:ip:tlul
- lowrisc:prim:all
- lowrisc:prim:lfsr
- "fileset_topgen ? (lowrisc:systems:topgen-reg-only)"
files:
- rtl/alert_pkg.sv
- rtl/alert_handler_reg_wrap.sv
Expand Down
7 changes: 4 additions & 3 deletions hw/ip/alert_handler/alert_handler_reg.core
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ filesets:
files_rtl:
depend:
- lowrisc:tlul:headers
- fileset_top ? (lowrisc:systems:alert_handler_reg)
- "fileset_top ? (lowrisc:systems:alert_handler_reg)"
- "fileset_topgen ? (lowrisc:systems:topgen-reg-only)"
files:
- fileset_ip ? (rtl/alert_handler_reg_pkg.sv)
- fileset_ip ? (rtl/alert_handler_reg_top.sv)
- "fileset_ip ? (rtl/alert_handler_reg_pkg.sv)"
- "fileset_ip ? (rtl/alert_handler_reg_top.sv)"
file_type: systemVerilogSource


Expand Down
3 changes: 2 additions & 1 deletion hw/ip/flash_ctrl/flash_ctrl.core
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ filesets:
- lowrisc:prim:lc_sync
- lowrisc:ip:otp_ctrl_pkg
- lowrisc:ip:flash_ctrl_pkg
- "fileset_top ? (lowrisc:systems:flash_ctrl)"
- "fileset_top ? (lowrisc:systems:flash_ctrl)"
- "fileset_topgen ? (lowrisc:systems:topgen)"
files:
- "fileset_ip ? (rtl/flash_ctrl_reg_top.sv)"
- "fileset_ip ? (rtl/flash_ctrl.sv)"
Expand Down
7 changes: 4 additions & 3 deletions hw/ip/flash_ctrl/flash_ctrl_pkg.core
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,11 @@ filesets:
- lowrisc:ip:lc_ctrl_pkg
- lowrisc:ip:pwrmgr_pkg
- lowrisc:ip:edn_pkg
- fileset_top ? (lowrisc:systems:flash_ctrl_pkg)
- "fileset_top ? (lowrisc:systems:flash_ctrl_pkg)"
- "fileset_topgen ? (lowrisc:systems:topgen)"
files:
- fileset_ip ? (rtl/flash_ctrl_reg_pkg.sv)
- fileset_ip ? (rtl/flash_ctrl_pkg.sv)
- "fileset_ip ? (rtl/flash_ctrl_reg_pkg.sv)"
- "fileset_ip ? (rtl/flash_ctrl_pkg.sv)"
- rtl/flash_phy_pkg.sv
file_type: systemVerilogSource

Expand Down
2 changes: 2 additions & 0 deletions hw/ip/padctrl/padctrl_component.core
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ filesets:
depend:
- lowrisc:ip:tlul
- lowrisc:prim:all
# padring.sv depends on padctrl_reg_pkg.sv
- "fileset_topgen ? (lowrisc:systems:topgen-reg-only)"
files:
- rtl/jtag_mux.sv
- rtl/padring.sv
Expand Down
2 changes: 2 additions & 0 deletions hw/ip/pinmux/pinmux_component.core
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ filesets:
depend:
- lowrisc:ip:tlul
- lowrisc:prim:all
# pinmux_wkup.sv depends on pinmux_reg_pkg.sv
- "fileset_topgen ? (lowrisc:systems:topgen-reg-only)"
files:
- rtl/pinmux_pkg.sv
- rtl/pinmux_wkup.sv
Expand Down
2 changes: 1 addition & 1 deletion hw/ip/pwrmgr/pwrmgr.core
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ CAPI=2:
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: "lowrisc:ip:pwrmgr:0.1"
description: "Power Manager"
description: "Power manager component without the generated portions"

filesets:
files_rtl:
Expand Down
2 changes: 0 additions & 2 deletions hw/ip/pwrmgr/pwrmgr_pkg.core
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ CAPI=2:
name: "lowrisc:ip:pwrmgr_pkg:0.1"
description: "Power manager package"

# pwrmgr pkg does not actually depend on ip:tlul
# but it's used as "serialization" point for the ip/top level split
filesets:
files_rtl:
depend:
Expand Down
9 changes: 5 additions & 4 deletions hw/ip/pwrmgr/pwrmgr_reg.core
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,17 @@ CAPI=2:
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: "lowrisc:ip:pwrmgr_reg:0.1"
description: "pwrmgr IP only register"
description: "Power manager registers"

filesets:
files_rtl:
depend:
- lowrisc:tlul:headers
- fileset_top ? (lowrisc:systems:pwrmgr_reg)
- "fileset_top ? (lowrisc:systems:pwrmgr_reg)"
- "fileset_topgen ? (lowrisc:systems:topgen-reg-only)"
files:
- fileset_ip ? (rtl/pwrmgr_reg_pkg.sv)
- fileset_ip ? (rtl/pwrmgr_reg_top.sv)
- "fileset_ip ? (rtl/pwrmgr_reg_pkg.sv)"
- "fileset_ip ? (rtl/pwrmgr_reg_top.sv)"
file_type: systemVerilogSource

targets:
Expand Down
8 changes: 5 additions & 3 deletions hw/ip/rstmgr/rstmgr.core
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@ filesets:
depend:
- lowrisc:ip:tlul
- lowrisc:prim:clock_mux2
- lowrisc:ip:rstmgr_pkg
- fileset_top ? (lowrisc:systems:rstmgr)
- "fileset_ip ? (lowrisc:ip:rstmgr_pkg)"
- "fileset_top ? (lowrisc:systems:rstmgr_pkg)"
- "fileset_top ? (lowrisc:systems:rstmgr)"
- "fileset_topgen ? (lowrisc:systems:topgen)"
files:
- rtl/rstmgr_ctrl.sv
- rtl/rstmgr_por.sv
- rtl/rstmgr_crash_info.sv
- fileset_ip ? (rtl/rstmgr.sv)
- "fileset_ip ? (rtl/rstmgr.sv)"
file_type: systemVerilogSource

files_verilator_waiver:
Expand Down
5 changes: 3 additions & 2 deletions hw/ip/rstmgr/rstmgr_pkg.core
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ CAPI=2:
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: "lowrisc:ip:rstmgr_pkg:0.1"
description: "Reset Manager Package"
description: "Reset manager package"

filesets:
files_rtl:
Expand All @@ -13,7 +13,8 @@ filesets:
- lowrisc:ip:alert_handler_reg
- lowrisc:ip:alert_handler_component
- lowrisc:ip:rv_core_ibex_pkg
- "fileset_top ? (lowrisc:systems:rstmgr_pkg)"
- "fileset_top ? (lowrisc:systems:rstmgr_pkg)"
- "fileset_topgen ? (lowrisc:systems:topgen)"
files:
- "fileset_ip ? (rtl/rstmgr_pkg.sv)"
file_type: systemVerilogSource
Expand Down
9 changes: 5 additions & 4 deletions hw/ip/rstmgr/rstmgr_reg.core
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,17 @@ CAPI=2:
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: "lowrisc:ip:rstmgr_reg:0.1"
description: "rstmgr registers"
description: "Reset manager registers"

filesets:
files_rtl:
depend:
- lowrisc:tlul:headers
- fileset_top ? (lowrisc:systems:rstmgr_reg)
- "fileset_top ? (lowrisc:systems:rstmgr_reg)"
- "fileset_topgen ? (lowrisc:systems:topgen-reg-only)"
files:
- fileset_ip ? (rtl/rstmgr_reg_pkg.sv)
- fileset_ip ? (rtl/rstmgr_reg_top.sv)
- "fileset_ip ? (rtl/rstmgr_reg_pkg.sv)"
- "fileset_ip ? (rtl/rstmgr_reg_top.sv)"
file_type: systemVerilogSource

targets:
Expand Down
7 changes: 4 additions & 3 deletions hw/top_earlgrey/ip/ast/ast_wrapper.core
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ filesets:
- lowrisc:systems:ast_wrapper_pkg
- lowrisc:systems:ast
- lowrisc:systems:sensor_ctrl_reg
- lowrisc:ip:clkmgr_pkg
- lowrisc:ip:pwrmgr_pkg
- lowrisc:ip:rstmgr_pkg
- "fileset_top ? (lowrisc:ip:clkmgr_pkg)"
- "fileset_top ? (lowrisc:ip:pwrmgr_pkg)"
- "fileset_topgen ? (lowrisc:systems:topgen)"
- lowrisc:ip:rstmgr
- lowrisc:ip:entropy_src_pkg
files:
- rtl/ast_wrapper.sv
Expand Down
2 changes: 1 addition & 1 deletion hw/top_earlgrey/ip/pwrmgr/pwrmgr_reg.core
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ CAPI=2:
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: "lowrisc:systems:pwrmgr_reg:0.1"
description: "Auto-generated pwrmgr register sources for top_earlgrey"
description: "Auto-generated power manager registers for top_earlgrey"

filesets:
files_rtl:
Expand Down
2 changes: 1 addition & 1 deletion hw/top_earlgrey/ip/rstmgr/system_rstmgr.core
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ CAPI=2:
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: "lowrisc:systems:rstmgr:0.1"
description: "Top specific Reset Manager"
description: "Auto-generated reset manager for top_earlgrey"

filesets:
files_rtl:
Expand Down
2 changes: 1 addition & 1 deletion hw/top_earlgrey/ip/rstmgr/system_rstmgr_pkg.core
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ CAPI=2:
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: "lowrisc:systems:rstmgr_pkg:0.1"
description: "Top level Reset Manager Package"
description: "Auto-generated reset manager package for top_earlgrey"

filesets:
files_rtl:
Expand Down
2 changes: 1 addition & 1 deletion hw/top_earlgrey/ip/rstmgr/system_rstmgr_reg.core
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ CAPI=2:
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: "lowrisc:systems:rstmgr_reg:0.1"
description: "Top level rstmgr registers"
description: "Auto-generated reset manager registers for top_earlgrey"

filesets:
files_rtl:
Expand Down
11 changes: 11 additions & 0 deletions topgen-generator.core
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
CAPI=2:
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: "lowrisc:systems:topgen-generator"
description: "FuseSoC generator for top-level generator tool."

generators:
topgen-generator:
interpreter: python3
command: util/topgen-fusesoc.py
25 changes: 25 additions & 0 deletions topgen-reg-only.core
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
CAPI=2:
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: "lowrisc:systems:topgen-reg-only"
description: "Top-level generator tool."

filesets:
rtl:
depend:
- lowrisc:systems:topgen-generator

generate:
generated_topgen:
generator: topgen-generator
parameters:
topname: top_englishbreakfast
reg-only: 1

targets:
default: &default
filesets:
- rtl
generate:
- generated_topgen
24 changes: 24 additions & 0 deletions topgen.core
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
CAPI=2:
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
name: "lowrisc:systems:topgen"
description: "Top-level generator tool."

filesets:
rtl:
depend:
- lowrisc:systems:topgen-generator

generate:
generated_topgen:
generator: topgen-generator
parameters:
topname: top_englishbreakfast

targets:
default: &default
filesets:
- rtl
generate:
- generated_topgen
Loading

0 comments on commit 6724059

Please sign in to comment.