Skip to content

Commit

Permalink
Build multiple blackparrot cfg
Browse files Browse the repository at this point in the history
Signed-off-by: Kamil Rakoczy <[email protected]>
  • Loading branch information
kamilrakoczy committed Apr 27, 2023
1 parent 4420228 commit 401ed93
Show file tree
Hide file tree
Showing 11 changed files with 1,351 additions and 23 deletions.
12 changes: 9 additions & 3 deletions .github/workflows/large-designs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -487,13 +487,18 @@ jobs:
**/plot_*.svg
blackparrot_synth:
name: Black Parrot (synthesis)
runs-on: [self-hosted, Linux, X64]
container: ubuntu:jammy
strategy:
matrix:
vars: [ {cfg: e_bp_unicore_cfg, machine: n2-highmem-8}, {cfg: e_bp_multicore_1_cfg, machine: n2-highmem-8}, {cfg: e_bp_multicore_1_cce_ucode_cfg, machine: n2-highmem-8}, {cfg: e_bp_multicore_4_cfg, machine: n2-highmem-32}, {cfg: e_bp_multicore_4_cce_ucode_cfg, machine: n2-highmem-32} ]
fail-fast: false
name: Black Parrot (${{ matrix.vars.cfg }} - synthesis)
env:
CC: gcc-9
CXX: g++-9
DEBIAN_FRONTEND: noninteractive
GHA_MACHINE_TYPE: ${{ matrix.vars.machine }}

steps:
- uses: actions/checkout@v3
Expand Down Expand Up @@ -540,11 +545,12 @@ jobs:
env:
TARGET: uhdm/yosys/synth-blackparrot-build
TEST_CASE: tests/black-parrot
BLACKPARROT_CFG: ${{ matrix.vars.cfg }}

- uses: actions/upload-artifact@v2
with:
name: bp_unicore.edif
path: uhdm-tests/black-parrot/black-parrot/bp_top/syn/bp_unicore.edif
name: bp_${{ matrix.vars.cfg }}.edif
path: UHDM-integration-tests/build/bp_${{ matrix.vars.cfg }}.edif

- name: Upload load graphs
if: ${{ always() }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ jobs:
- name: Build binaries
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
cd yosys && git apply ../0001-Add-typedef-support-to-detectSignWidthWorker.patch && cd -
./build_binaries.sh
# By default actions/upload-artifact@v2 do not preserve file permissions
# tar directory to workaround this issue
Expand Down
14 changes: 14 additions & 0 deletions 0001-Add-typedef-support-to-detectSignWidthWorker.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
diff --git a/frontends/ast/genrtlil.cc b/frontends/ast/genrtlil.cc
index eaf6553ce..ee7121548 100644
--- a/frontends/ast/genrtlil.cc
+++ b/frontends/ast/genrtlil.cc
@@ -841,6 +841,9 @@ void AstNode::detectSignWidthWorker(int &width_hint, bool &sign_hint, bool *foun
}
if (!id_ast)
log_file_error(filename, location.first_line, "Failed to resolve identifier %s for width detection!\n", str.c_str());
+ if (id_ast->type == AST_TYPEDEF) {
+ id_ast = id_ast->children[0];
+ }
if (id_ast->type == AST_PARAMETER || id_ast->type == AST_LOCALPARAM || id_ast->type == AST_ENUM_ITEM) {
if (id_ast->children.size() > 1 && id_ast->children[1]->range_valid) {
this_width = id_ast->children[1]->range_left - id_ast->children[1]->range_right + 1;
29 changes: 18 additions & 11 deletions uhdm-tests/black-parrot/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,27 @@ curr_dir:=$(dir $(lastword $(MAKEFILE_LIST)))
###################
### BLACKPARROT ###
###################
VENV_BLACKPARROT_SYNTH = ${root_dir}/venv-blackparrot-synth
BLACKPARROT = ${curr_dir}/black-parrot
BLACKPARROT_PATCHES_DIR = ${curr_dir}/black-parrot-patches/black-parrot/
BLACKPARROT_BASEJUMP = ${BLACKPARROT}/external/basejump_stl/
BLACKPARROT_BASEJUMP_PATCHES_DIR = ${curr_dir}/black-parrot-patches/basejump_stl
BLACKPARROT_CFG ?= e_bp_unicore_cfg
BLACKPARROT_UHDM = ${root_dir}/build/surelog/bp_tethered.${BLACKPARROT_CFG}.none.parse/out/slpp_unit/surelog.uhdm

${VENV_BLACKPARROT_SYNTH}:
virtualenv ${VENV_BLACKPARROT_SYNTH}
(. ${VENV_BLACKPARROT_SYNTH}/bin/activate)
${BLACKPARROT_BASEJUMP}/.gitpatch:
cd ${BLACKPARROT_BASEJUMP} && git apply ${BLACKPARROT_BASEJUMP_PATCHES_DIR}/*.patch && touch $@

uhdm/yosys/synth-blackparrot-build: clean-build | ${VENV_BLACKPARROT_SYNTH}
${BLACKPARROT}/.gitpatch: | ${BLACKPARROT_BASEJUMP}/.gitpatch
cd ${BLACKPARROT}/ && git apply ${BLACKPARROT_PATCHES_DIR}/*.patch && touch $@

${BLACKPARROT_UHDM}: clean-build | ${BLACKPARROT}/.gitpatch
(export PATH=${root_dir}/../image/bin:${PATH} && \
cd ${BLACKPARROT}/bp_top/syn/ && SURELOG_OPTS=-synth $(MAKE) parse.surelog CFG=${BLACKPARROT_CFG} RESULTS_PATH=${root_dir}/build)

uhdm/yosys/synth-blackparrot-build: | ${BLACKPARROT_UHDM}
(export PATH=${root_dir}/../image/bin:${PATH} && \
. ${VENV_BLACKPARROT_SYNTH}/bin/activate && \
cd ${BLACKPARROT}/external/basejump_stl/ && git apply ${curr_dir}/0001-Replace-stream-op.patch && \
cd ${BLACKPARROT}/ && git apply ${curr_dir}/0002-Use-typedef-instead-of-anonymous-enum.patch && \
cd ${BLACKPARROT}/bp_top/syn/ && SURELOG_OPTS=-synth $(MAKE) parse.surelog CFG=e_bp_unicore_cfg && \
cd ${root_dir}/build && \
yosys -p "plugin -i systemverilog" \
-p "read_uhdm ./results/surelog/bp_tethered.e_bp_unicore_cfg.none.parse/out/slpp_unit/surelog.uhdm" \
-p "read_uhdm ${BLACKPARROT_UHDM}" \
-p "synth_xilinx -iopad -family xc7" \
-p "write_edif bp_unicore.edif")
-p "write_edif bp_${BLACKPARROT_CFG}.edif")
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
From 0677d0f5156b5afe8f54286ea690144da0547baa Mon Sep 17 00:00:00 2001
From: Kamil Rakoczy <[email protected]>
Date: Wed, 26 Apr 2023 09:21:38 +0200
Subject: [PATCH 1/3] Replace enum logic with typedef

Signed-off-by: Kamil Rakoczy <[email protected]>
---
bsg_cache/bsg_cache_dma_to_wormhole.v | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/bsg_cache/bsg_cache_dma_to_wormhole.v b/bsg_cache/bsg_cache_dma_to_wormhole.v
index 19e4fcf0..7959eb85 100644
--- a/bsg_cache/bsg_cache_dma_to_wormhole.v
+++ b/bsg_cache/bsg_cache_dma_to_wormhole.v
@@ -137,13 +137,14 @@ module bsg_cache_dma_to_wormhole
);

// send FSM
- enum logic [2:0] {
+ typedef enum logic [2:0] {
SEND_RESET
, SEND_READY
, SEND_ADDR
, SEND_MASK
, SEND_DATA
- } send_state_n, send_state_r;
+ } state_t;
+ state_t send_state_n, send_state_r;


// Check if mask bits are all 1.
--
2.39.0

Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
From 9b0e8a2bf8963357966da8fc8e06472777ac7484 Mon Sep 17 00:00:00 2001
From 5f7f45c5bab2deec9b681a1cf3fdf197c40b77b6 Mon Sep 17 00:00:00 2001
From: Kamil Rakoczy <[email protected]>
Date: Thu, 20 Apr 2023 17:26:12 +0200
Subject: [PATCH] Replace stream-op
Date: Wed, 26 Apr 2023 09:22:04 +0200
Subject: [PATCH 2/3] Replace stream op

Signed-off-by: Kamil Rakoczy <[email protected]>
---
bsg_misc/bsg_scan.v | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/bsg_misc/bsg_scan.v b/bsg_misc/bsg_scan.v
index 063e74ef..c5433edb 100644
index 063e74ef..6d19b277 100644
--- a/bsg_misc/bsg_scan.v
+++ b/bsg_misc/bsg_scan.v
@@ -66,7 +66,9 @@ module bsg_scan #(parameter `BSG_INV_PARAM(width_p)

// streaming operation; reverses bits
if (lo_to_hi_p)
- assign t[0] = {<< {i}};
+ for (genvar i = width_p-1; i >= 0; i--) begin
+ assign t[width_p-1-i] = t[i];
+ for (genvar i = 0; i < $clog2(width_p); i=i+1) begin
+ assign t[$clog2(width_p)-i-1] = t[i];
+ end
else
assign t[0] = i;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
From 638f88f8ea7f28d8f10d502033214ca6cc8cc696 Mon Sep 17 00:00:00 2001
From: Kamil Rakoczy <[email protected]>
Date: Wed, 26 Apr 2023 15:06:28 +0200
Subject: [PATCH 3/3] WIP: start wires from index 0

Signed-off-by: Kamil Rakoczy <[email protected]>
---
bsg_noc/bsg_mesh_stitch.v | 51 ++++++++++++++++++++++-----------------
1 file changed, 29 insertions(+), 22 deletions(-)

diff --git a/bsg_noc/bsg_mesh_stitch.v b/bsg_noc/bsg_mesh_stitch.v
index 6ccb8383..201dce61 100644
--- a/bsg_noc/bsg_mesh_stitch.v
+++ b/bsg_noc/bsg_mesh_stitch.v
@@ -14,15 +14,22 @@ module bsg_mesh_stitch
, x_max_p = "inv"
, y_max_p = "inv"
, nets_p = 1 // optional parameter that allows for multiple networks to be routed together
+ //typedef enum logic[2:0] {P=3'd0, W, E, N, S} Dirs;
+ // recalculate assuming W = 0 and S = 0
+ , parameter logic [2:0] W2 = 0 /*W-W*/
+ , parameter logic [2:0] E2 = E-W
+ , parameter logic [2:0] S2 = 0 /*S-S*/
+ , parameter logic [2:0] N2 = S-N /*S is larger*/
+ , parameter logic [2:0] SW2 = S-W /*S is larger*/
)
- (input [y_max_p-1:0][x_max_p-1:0][nets_p-1:0][S:W][width_p-1:0] outs_i // for each node, each direction
- , output [y_max_p-1:0][x_max_p-1:0][nets_p-1:0][S:W][width_p-1:0] ins_o
+ (input [y_max_p-1:0][x_max_p-1:0][nets_p-1:0][SW:0][width_p-1:0] outs_i // for each node, each direction
+ , output [y_max_p-1:0][x_max_p-1:0][nets_p-1:0][SW:0][width_p-1:0] ins_o

// these are the edge of the greater tile
- , input [E:W][y_max_p-1:0][nets_p-1:0][width_p-1:0] hor_i
- , output [E:W][y_max_p-1:0][nets_p-1:0][width_p-1:0] hor_o
- , input [S:N][x_max_p-1:0][nets_p-1:0][width_p-1:0] ver_i
- , output [S:N][x_max_p-1:0][nets_p-1:0][width_p-1:0] ver_o
+ , input [E2:W2][y_max_p-1:0][nets_p-1:0][width_p-1:0] hor_i
+ , output [E2:W2][y_max_p-1:0][nets_p-1:0][width_p-1:0] hor_o
+ , input [N2:S2][x_max_p-1:0][nets_p-1:0][width_p-1:0] ver_i
+ , output [N2:S2][x_max_p-1:0][nets_p-1:0][width_p-1:0] ver_o
);

genvar r,c,net;
@@ -32,30 +39,30 @@ module bsg_mesh_stitch

for (r = 0; r < y_max_p; r=r+1)
begin: _r
- assign hor_o[E][r][net] = outs_i[r][x_max_p-1][net][E];
- assign hor_o[W][r][net] = outs_i[r][0 ][net][W];
+ assign hor_o[E2-1][r][net] = outs_i[r][x_max_p-1][net][E2-1];
+ assign hor_o[W2][r][net] = outs_i[r][0 ][net][W2];

for (c = 0; c < x_max_p; c=c+1)
begin: _c
- assign ins_o[r][c][net][S] = (r == y_max_p-1)
- ? ver_i[S][c][net]
- : outs_i[(r == y_max_p-1) ? r : r+1][c][net][N]; // ?: for warning
- assign ins_o[r][c][net][N] = (r == 0)
- ? ver_i[N][c][net]
- : outs_i[r ? r-1: 0][c][net][S]; // ?: to eliminate warning
- assign ins_o[r][c][net][E] = (c == x_max_p-1)
- ? hor_i[E][r][net]
- : outs_i[r][(c == x_max_p-1) ? c : (c+1)][net][W]; // ?: for warning
- assign ins_o[r][c][net][W] = (c == 0)
- ? hor_i[W][r][net]
- : outs_i[r][c ? (c-1) :0][net][E]; // ?: to eliminate warning
+ assign ins_o[r][c][net][N2] = (r == y_max_p-1)
+ ? ver_i[N2][c][net]
+ : outs_i[(r == y_max_p-1) ? r : r+1][c][net][S2]; // ?: for warning
+ assign ins_o[r][c][net][S2] = (r == 0)
+ ? ver_i[S2][c][net]
+ : outs_i[r ? r-1: 0][c][net][N2]; // ?: to eliminate warning
+ assign ins_o[r][c][net][E2-1] = (c == x_max_p-1)
+ ? hor_i[E2-1][r][net]
+ : outs_i[r][(c == x_max_p-1) ? c : (c+1)][net][W2]; // ?: for warning
+ assign ins_o[r][c][net][W2] = (c == 0)
+ ? hor_i[W2][r][net]
+ : outs_i[r][c ? (c-1) :0][net][E2-1]; // ?: to eliminate warning
end // block: c
end // block: r

for (c = 0; c < x_max_p; c=c+1)
begin: _c
- assign ver_o[S][c][net] = outs_i[y_max_p-1][c][net][S];
- assign ver_o[N][c][net] = outs_i[0 ][c][net][N];
+ assign ver_o[N2][c][net] = outs_i[y_max_p-1][c][net][N2];
+ assign ver_o[S2][c][net] = outs_i[0 ][c][net][S2];
end
end // block: _n

--
2.39.0

Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
From 84c652451d9eb1fa59eca827c985907e08a7be76 Mon Sep 17 00:00:00 2001
From 4bf24076d9e7c0b6a458c58be0d6881f43c6d770 Mon Sep 17 00:00:00 2001
From: Kamil Rakoczy <[email protected]>
Date: Thu, 20 Apr 2023 17:27:06 +0200
Subject: [PATCH] Use typedef instead of anonymous enum
Date: Wed, 26 Apr 2023 09:17:17 +0200
Subject: [PATCH 1/4] Replace enum logic with typedef

Signed-off-by: Kamil Rakoczy <[email protected]>
---
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
From 0a5300004fc90bae4b0dbc214ff331e5a25cd5a6 Mon Sep 17 00:00:00 2001
From: Kamil Rakoczy <[email protected]>
Date: Wed, 26 Apr 2023 09:17:48 +0200
Subject: [PATCH 2/4] Add workaround for unsupported typespec

Signed-off-by: Kamil Rakoczy <[email protected]>
---
bp_common/src/include/bp_common_bedrock_if.svh | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/bp_common/src/include/bp_common_bedrock_if.svh b/bp_common/src/include/bp_common_bedrock_if.svh
index ac7acf8f..5118d0ee 100644
--- a/bp_common/src/include/bp_common_bedrock_if.svh
+++ b/bp_common/src/include/bp_common_bedrock_if.svh
@@ -196,10 +196,14 @@
`declare_bp_bedrock_header_width(addr_width_mp, mem_fwd_payload_width_lp, mem_fwd) \
`declare_bp_bedrock_header_width(addr_width_mp, mem_rev_payload_width_lp, mem_rev)

+ //declare_bp_bedrock_mem_payload_s macro defines `bp_bedrock_mem_fwd_payload_s` struct,
+ //and creates typedef `bp_bedrock_mem_rev_payload_s` that is equal to
+ //`bp_bedrock_mem_fwd_payload_s` but Surelog doesn't see it. Use
+ //`bp_bedrock_mem_fwd_payload_s` directly for now.
`define declare_bp_bedrock_mem_if(addr_width_mp, did_width_mp, lce_id_width_mp, lce_assoc_mp) \
`declare_bp_bedrock_mem_payload_s(did_width_mp, lce_id_width_mp, lce_assoc_mp); \
`declare_bp_bedrock_header_s(addr_width_mp, bp_bedrock_mem_fwd_payload_s, mem_fwd); \
- `declare_bp_bedrock_header_s(addr_width_mp, bp_bedrock_mem_rev_payload_s, mem_rev) \
+ `declare_bp_bedrock_header_s(addr_width_mp, bp_bedrock_mem_fwd_payload_s, mem_rev) \

`define declare_bp_bedrock_if_widths(addr_width_mp, payload_width_mp, name_mp) \
, localparam ``name_mp``_msg_payload_width_lp = payload_width_mp \
--
2.39.0

Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
From 7c93699a9c0002d110aec5c62843084ece7403ba Mon Sep 17 00:00:00 2001
From: Kamil Rakoczy <[email protected]>
Date: Wed, 26 Apr 2023 15:04:59 +0200
Subject: [PATCH 3/4] WIP: Replace stream operator without reverse

Signed-off-by: Kamil Rakoczy <[email protected]>
---
bp_me/src/v/cce/bp_cce_dir_segment.sv | 2 +-
bp_me/src/v/cce/bp_cce_pending_bits.sv | 4 ++--
bp_me/src/v/cce/bp_cce_spec_bits.sv | 4 ++--
bp_me/src/v/network/bp_me_addr_to_cce_id.sv | 2 +-
bp_top/test/common/bp_nonsynth_host.sv | 2 +-
5 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/bp_me/src/v/cce/bp_cce_dir_segment.sv b/bp_me/src/v/cce/bp_cce_dir_segment.sv
index 94abc422..20394392 100644
--- a/bp_me/src/v/cce/bp_cce_dir_segment.sv
+++ b/bp_me/src/v/cce/bp_cce_dir_segment.sv
@@ -126,7 +126,7 @@ module bp_cce_dir_segment
logic [lg_num_cce_lp-1:0] cce_id_lo;
logic [hash_index_width_lp-1:0] set_id_lo;
// NOTE: reverse the address to use the low order bits for striping cache blocks across CCEs
- wire [lg_sets_lp-1:0] hash_addr_rev = { <<{addr_i[lg_block_size_in_bytes_lp+:lg_sets_lp]}};
+ wire [lg_sets_lp-1:0] hash_addr_rev = addr_i[lg_block_size_in_bytes_lp+:lg_sets_lp]; // TODO: reverse order

bsg_hash_bank
#(.banks_p(num_cce_p) // number of CCE's to spread way groups over
diff --git a/bp_me/src/v/cce/bp_cce_pending_bits.sv b/bp_me/src/v/cce/bp_cce_pending_bits.sv
index 517c79df..94edd948 100644
--- a/bp_me/src/v/cce/bp_cce_pending_bits.sv
+++ b/bp_me/src/v/cce/bp_cce_pending_bits.sv
@@ -62,8 +62,8 @@ module bp_cce_pending_bits
// Address to way group hashing
// The address to use as input starts at addr_offset_p and is lg_cce_way_groups_lp bits in length
logic [hash_idx_width_lp-1:0] r_wg_lo, w_wg_lo;
- wire [lg_cce_way_groups_lp-1:0] r_addr_rev = {<< {r_addr_i[addr_offset_p+:lg_cce_way_groups_lp]}};
- wire [lg_cce_way_groups_lp-1:0] w_addr_rev = {<< {w_addr_i[addr_offset_p+:lg_cce_way_groups_lp]}};
+ wire [lg_cce_way_groups_lp-1:0] r_addr_rev = r_addr_i[addr_offset_p+:lg_cce_way_groups_lp];// TODO: reverse order
+ wire [lg_cce_way_groups_lp-1:0] w_addr_rev = w_addr_i[addr_offset_p+:lg_cce_way_groups_lp];// TODO: reverse order
logic [lg_num_way_groups_lp-1:0] r_wg, w_wg;

bsg_hash_bank
diff --git a/bp_me/src/v/cce/bp_cce_spec_bits.sv b/bp_me/src/v/cce/bp_cce_spec_bits.sv
index c0b87884..f6523067 100644
--- a/bp_me/src/v/cce/bp_cce_spec_bits.sv
+++ b/bp_me/src/v/cce/bp_cce_spec_bits.sv
@@ -58,8 +58,8 @@ module bp_cce_spec_bits

// Address to way group hashing
logic [hash_idx_width_lp-1:0] r_wg_lo, w_wg_lo;
- wire [lg_cce_way_groups_lp-1:0] r_addr_rev = {<< {r_addr_i[addr_offset_p+:lg_cce_way_groups_lp]}};
- wire [lg_cce_way_groups_lp-1:0] w_addr_rev = {<< {w_addr_i[addr_offset_p+:lg_cce_way_groups_lp]}};
+ wire [lg_cce_way_groups_lp-1:0] r_addr_rev = r_addr_i[addr_offset_p+:lg_cce_way_groups_lp];// TODO: reverse order
+ wire [lg_cce_way_groups_lp-1:0] w_addr_rev = w_addr_i[addr_offset_p+:lg_cce_way_groups_lp];// TODO: reverse order
logic [lg_num_way_groups_lp-1:0] r_wg, w_wg;

bsg_hash_bank
diff --git a/bp_me/src/v/network/bp_me_addr_to_cce_id.sv b/bp_me/src/v/network/bp_me_addr_to_cce_id.sv
index d3100ed4..b8cd9e76 100644
--- a/bp_me/src/v/network/bp_me_addr_to_cce_id.sv
+++ b/bp_me/src/v/network/bp_me_addr_to_cce_id.sv
@@ -48,7 +48,7 @@ module bp_me_addr_to_cce_id
// at the cache block granularity
logic [lce_sets_width_p-1:0] hash_addr_li;
logic [lg_num_cce_lp-1:0] cce_dst_id_lo;
- assign hash_addr_li = {<< {paddr_i[block_offset_lp+:lce_sets_width_p]}};
+ assign hash_addr_li = paddr_i[block_offset_lp+:lce_sets_width_p]; //TODO: reverse order
bsg_hash_bank
#(.banks_p(num_cce_p) // number of CCE's to spread way groups over
,.width_p(lce_sets_width_p) // width of address input
diff --git a/bp_top/test/common/bp_nonsynth_host.sv b/bp_top/test/common/bp_nonsynth_host.sv
index 16dd997f..e62db586 100644
--- a/bp_top/test/common/bp_nonsynth_host.sv
+++ b/bp_top/test/common/bp_nonsynth_host.sv
@@ -204,7 +204,7 @@ module bp_nonsynth_host
);

// Convert to little endian
- wire [dword_width_gp-1:0] bootrom_data_reverse = {<<8{bootrom_data_lo}};
+ wire [dword_width_gp-1:0] bootrom_data_reverse = bootrom_data_lo; // TODO: reverse order

logic [dword_width_gp-1:0] bootrom_final_lo;
bsg_bus_pack
--
2.39.0

Loading

0 comments on commit 401ed93

Please sign in to comment.