diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ba0c86..22b2408 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: name: Check license runs-on: ubuntu-latest steps: - - uses: pulp-platform/pulp-actions/lint-license@v2 + - uses: pulp-platform/pulp-actions/lint-license@v2.5.1 with: license: | Copyright (\d{4}(-\d{4})?\s)?ETH Zurich and University of Bologna. @@ -27,7 +27,7 @@ jobs: lint-verilog: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v7 - uses: chipsalliance/verible-linter-action@main with: paths: | @@ -42,7 +42,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Mirror and check - uses: pulp-platform/pulp-actions/gitlab-ci@v2 + uses: pulp-platform/pulp-actions/gitlab-ci@v2.5.1 # Skip on forks or pull requests from forks due to missing secrets. if: > github.repository == 'pulp-platform/obi' && diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 55f8cf4..d5417b7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,7 @@ stages: - sim variables: - VSIM: "questa-2022.3 vsim" + VSIM: "questa-2026.1 vsim" build: stage: build diff --git a/src/obi_demux.sv b/src/obi_demux.sv index fa9c37d..3b73d12 100644 --- a/src/obi_demux.sv +++ b/src/obi_demux.sv @@ -41,25 +41,25 @@ module obi_demux #( logic sbr_port_gnt; logic sbr_port_rready; logic rsp_phase_stalled; + logic [NumMgrPorts-1:0] mgr_reqs; + logic [NumMgrPorts-1:0] mgr_connect; select_t select_d, select_q; always_comb begin : proc_req select_d = select_q; cnt_up = 1'b0; - for (int i = 0; i < NumMgrPorts; i++) begin - mgr_ports_req_o[i].req = 1'b0; - mgr_ports_req_o[i].a = '0; - end + mgr_reqs = '0; + mgr_connect = '0; sbr_port_gnt = 1'b0; if (!overflow) begin // R-4.1.1: block source changes while a stalled R phase is active if (sbr_port_select_i == select_q || (!rsp_phase_stalled && (in_flight == '0 || (in_flight == 1 && cnt_down)))) begin - mgr_ports_req_o[sbr_port_select_i].req = sbr_port_req_i.req; - mgr_ports_req_o[sbr_port_select_i].a = sbr_port_req_i.a; - sbr_port_gnt = mgr_ports_rsp_i[sbr_port_select_i].gnt; + mgr_reqs[sbr_port_select_i] = sbr_port_req_i.req; + mgr_connect[sbr_port_select_i] = 1'b1; + sbr_port_gnt = mgr_ports_rsp_i[sbr_port_select_i].gnt; end end @@ -69,6 +69,11 @@ module obi_demux #( end end + for (genvar i = 0; i < NumMgrPorts; i++) begin : gen_req_assign + assign mgr_ports_req_o[i].req = mgr_reqs[i]; + assign mgr_ports_req_o[i].a = mgr_connect[i] ? sbr_port_req_i.a : '0; + end + assign sbr_port_rsp_o.gnt = sbr_port_gnt; assign sbr_port_rsp_o.r = mgr_ports_rsp_i[select_q].r; assign sbr_port_rsp_o.rvalid = mgr_ports_rsp_i[select_q].rvalid;