feat: replace ribp interface with apb4 interface across multiple formal modules and update related file lists

This commit is contained in:
maksyuki committed 2026-08-16 21:53:11 +08:00
1 parent 6eedacd2f7
commit 4b8bf938cd
12 files changed
+202 -141

No files matched your search

+10 -2
View File
@@ -31,6 +31,7 @@ module bus_formal_design (
); );
ribp_if mgmt_ribp (); ribp_if mgmt_ribp ();
rib_if mgmt_rib ();
rib_if user_rib (); rib_if user_rib ();
rib_if dma_rib (); rib_if dma_rib ();
rib_if rib (); rib_if rib ();
@@ -188,10 +189,17 @@ module bus_formal_design (
assign rib_cmd_len = rib.cmd_len; assign rib_cmd_len = rib.cmd_len;
assign apb_valid = apb_rib.cmd_valid; assign apb_valid = apb_rib.cmd_valid;
ribp2rib u_mgmt_ribp2rib (
.clk_i (clk_i),
.rst_n_i(rst_n_i),
.ribp (mgmt_ribp),
.rib (mgmt_rib)
);
rib_bus u_dut ( rib_bus u_dut (
.clk_i (clk_i), .clk_i (clk_i),
.rst_n_i (rst_n_i), .rst_n_i (rst_n_i),
.mgmt_ribp (mgmt_ribp), .mgmt_rib (mgmt_rib),
.user_rib (user_rib), .user_rib (user_rib),
.dma_rib (dma_rib), .dma_rib (dma_rib),
.user_bus_enable_i(1'b1), .user_bus_enable_i(1'b1),
@@ -210,7 +218,7 @@ module bus_formal_design (
.perf_mgmt_wait_o (), .perf_mgmt_wait_o (),
.perf_user_wait_o (), .perf_user_wait_o (),
.perf_dma_wait_o (), .perf_dma_wait_o (),
.perf_ribp_wait_o (), .perf_apb4_wait_o (),
.perf_apb_wait_o (), .perf_apb_wait_o (),
.perf_sdram_wait_o(), .perf_sdram_wait_o(),
.perf_psram_wait_o(), .perf_psram_wait_o(),
+22 -16
View File
@@ -22,11 +22,14 @@ module clint_formal_design (
// verilog_format: on // verilog_format: on
); );
ribp_if ribp (); apb4_if apb4 (
(* anyseq *)logic f_rib_valid; .pclk (clk_i),
(* anyseq *)logic [31:0] f_rib_addr; .presetn(rst_n_i)
(* anyseq *)logic [31:0] f_rib_wdata; );
(* anyseq *)logic [ 3:0] f_rib_wstrb; (* anyseq *)logic f_apb_sel;
(* anyseq *)logic [31:0] f_apb_addr;
(* anyseq *)logic [31:0] f_apb_wdata;
(* anyseq *)logic [ 3:0] f_apb_pstrb;
(* anyseq *)logic f_tick; (* anyseq *)logic f_tick;
logic s_mtime_load; logic s_mtime_load;
logic [63:0] s_mtime_load_value; logic [63:0] s_mtime_load_value;
@@ -35,17 +38,20 @@ module clint_formal_design (
logic [63:0] s_mtimecmp [0:1]; logic [63:0] s_mtimecmp [0:1];
logic [ 1:0] s_timer_irq; logic [ 1:0] s_timer_irq;
assign ribp.valid = f_rib_valid; assign apb4.psel = f_apb_sel;
assign ribp.addr = f_rib_addr; assign apb4.penable = f_apb_sel;
assign ribp.wdata = f_rib_wdata; assign apb4.pwrite = |f_apb_pstrb;
assign ribp.wstrb = f_rib_wstrb; assign apb4.paddr = f_apb_addr;
assign apb4.pwdata = f_apb_wdata;
assign apb4.pstrb = f_apb_pstrb;
assign apb4.pprot = 3'b000;
assign rib_valid = ribp.valid; assign rib_valid = apb4.psel;
assign rib_addr = ribp.addr; assign rib_addr = apb4.paddr;
assign rib_wdata = ribp.wdata; assign rib_wdata = apb4.pwdata;
assign rib_wstrb = ribp.wstrb; assign rib_wstrb = apb4.pstrb;
assign rib_ready = ribp.ready; assign rib_ready = apb4.pready;
assign rib_resp_err = ribp.resp_err; assign rib_resp_err = apb4.pslverr;
assign tick = f_tick; assign tick = f_tick;
assign mtime = s_mtime; assign mtime = s_mtime;
assign mtime_load = s_mtime_load; assign mtime_load = s_mtime_load;
@@ -60,7 +66,7 @@ module clint_formal_design (
) u_clint_reg ( ) u_clint_reg (
.clk_i (clk_i), .clk_i (clk_i),
.rst_n_i (rst_n_i), .rst_n_i (rst_n_i),
.ribp (ribp), .apb4 (apb4),
.mtime_i (s_mtime), .mtime_i (s_mtime),
.mtime_load_o (s_mtime_load), .mtime_load_o (s_mtime_load),
.mtime_load_value_o(s_mtime_load_value), .mtime_load_value_o(s_mtime_load_value),
+21 -15
View File
@@ -15,30 +15,36 @@ module dvp_formal_design (
output logic [ 6:0] intr_enable, output logic [ 6:0] intr_enable,
output logic irq output logic irq
); );
ribp_if rib (); apb4_if apb4 (
(* anyseq *) logic f_rib_valid; .pclk (clk_i),
(* anyseq *) logic [31:0] f_rib_addr, f_rib_wdata; .presetn(rst_n_i)
(* anyseq *) logic [3:0] f_rib_wstrb; );
(* anyseq *) logic f_apb_sel;
(* anyseq *) logic [31:0] f_apb_addr, f_apb_wdata;
(* anyseq *) logic [3:0] f_apb_pstrb;
(* anyseq *) logic f_active, f_fifo_empty, f_fifo_full; (* anyseq *) logic f_active, f_fifo_empty, f_fifo_full;
(* anyseq *)logic [ 5:0] f_error_flags; (* anyseq *)logic [ 5:0] f_error_flags;
(* anyseq *)logic [127:0] f_frame_stats; (* anyseq *)logic [127:0] f_frame_stats;
(* anyseq *)logic f_frame_stats_valid; (* anyseq *)logic f_frame_stats_valid;
assign rib.valid = f_rib_valid; assign apb4.psel = f_apb_sel;
assign rib.addr = f_rib_addr; assign apb4.penable = f_apb_sel;
assign rib.wdata = f_rib_wdata; assign apb4.pwrite = |f_apb_pstrb;
assign rib.wstrb = f_rib_wstrb; assign apb4.paddr = f_apb_addr;
assign rib_valid = rib.valid; assign apb4.pwdata = f_apb_wdata;
assign rib_addr = rib.addr; assign apb4.pstrb = f_apb_pstrb;
assign rib_wdata = rib.wdata; assign apb4.pprot = 3'b000;
assign rib_wstrb = rib.wstrb; assign rib_valid = apb4.psel;
assign rib_ready = rib.ready; assign rib_addr = apb4.paddr;
assign rib_resp_err = rib.resp_err; assign rib_wdata = apb4.pwdata;
assign rib_wstrb = apb4.pstrb;
assign rib_ready = apb4.pready;
assign rib_resp_err = apb4.pslverr;
assign intr_state = u_dut.s_intr_stat_q; assign intr_state = u_dut.s_intr_stat_q;
assign intr_enable = u_dut.s_intr_en_q; assign intr_enable = u_dut.s_intr_en_q;
dvp_reg u_dut ( dvp_reg u_dut (
.clk_i (clk_i), .clk_i (clk_i),
.rst_n_i (rst_n_i), .rst_n_i (rst_n_i),
.ribp (rib), .apb4 (apb4),
.active_i (f_active), .active_i (f_active),
.fifo_empty_i (f_fifo_empty), .fifo_empty_i (f_fifo_empty),
.fifo_full_i (f_fifo_full), .fifo_full_i (f_fifo_full),
+8 -6
View File
@@ -31,6 +31,7 @@ def target_defines(target: str) -> list[str]:
def source_files(target: str) -> list[Path]: def source_files(target: str) -> list[Path]:
common = [ common = [
COMMON_RTL / "interface/axi4_if.sv", COMMON_RTL / "interface/axi4_if.sv",
COMMON_RTL / "interface/apb4_if.sv",
COMMON_RTL / "interface/ribp_if.sv", COMMON_RTL / "interface/ribp_if.sv",
COMMON_RTL / "interface/ram_if.sv", COMMON_RTL / "interface/ram_if.sv",
COMMON_RTL / "utils/register.sv", COMMON_RTL / "utils/register.sv",
@@ -106,7 +107,7 @@ def source_files(target: str) -> list[Path]:
] ]
if target == "ws2812": if target == "ws2812":
return [ return [
COMMON_RTL / "interface/ribp_if.sv", COMMON_RTL / "interface/apb4_if.sv",
COMMON_RTL / "utils/register.sv", COMMON_RTL / "utils/register.sv",
COMMON_RTL / "utils/fifo.sv", COMMON_RTL / "utils/fifo.sv",
SERIAL / "ws2812_if.sv", SERIAL / "ws2812_if.sv",
@@ -117,7 +118,7 @@ def source_files(target: str) -> list[Path]:
] ]
if target == "uart": if target == "uart":
return [ return [
COMMON_RTL / "interface/ribp_if.sv", COMMON_RTL / "interface/apb4_if.sv",
COMMON_RTL / "cdc/cdc_sync.sv", COMMON_RTL / "cdc/cdc_sync.sv",
COMMON_RTL / "utils/register.sv", COMMON_RTL / "utils/register.sv",
COMMON_RTL / "utils/edge_det.sv", COMMON_RTL / "utils/edge_det.sv",
@@ -134,7 +135,7 @@ def source_files(target: str) -> list[Path]:
] ]
if target == "i2c": if target == "i2c":
return [ return [
COMMON_RTL / "interface/ribp_if.sv", COMMON_RTL / "interface/apb4_if.sv",
COMMON_RTL / "utils/register.sv", COMMON_RTL / "utils/register.sv",
COMMON_RTL / "utils/fifo.sv", COMMON_RTL / "utils/fifo.sv",
COMMON_RTL / "cdc/cdc_sync.sv", COMMON_RTL / "cdc/cdc_sync.sv",
@@ -147,7 +148,7 @@ def source_files(target: str) -> list[Path]:
] ]
if target == "timer": if target == "timer":
return [ return [
COMMON_RTL / "interface/ribp_if.sv", COMMON_RTL / "interface/apb4_if.sv",
COMMON_RTL / "utils/register.sv", COMMON_RTL / "utils/register.sv",
COMMON_RTL / "clkrst/counter.sv", COMMON_RTL / "clkrst/counter.sv",
PERIPHERAL / "timer_core.sv", PERIPHERAL / "timer_core.sv",
@@ -157,7 +158,7 @@ def source_files(target: str) -> list[Path]:
] ]
if target == "clint": if target == "clint":
return [ return [
COMMON_RTL / "interface/ribp_if.sv", COMMON_RTL / "interface/apb4_if.sv",
COMMON_RTL / "utils/register.sv", COMMON_RTL / "utils/register.sv",
COMMON_RTL / "clkrst/counter.sv", COMMON_RTL / "clkrst/counter.sv",
PERIPHERAL / "clint_if.sv", PERIPHERAL / "clint_if.sv",
@@ -168,7 +169,8 @@ def source_files(target: str) -> list[Path]:
] ]
if target == "dvp": if target == "dvp":
return [ return [
COMMON_RTL / "interface/ribp_if.sv", COMMON_RTL / "utils/register.sv", COMMON_RTL / "interface/apb4_if.sv",
COMMON_RTL / "utils/register.sv",
ROOT / "rtl/ip/multimedia/dvp_define.svh", ROOT / "rtl/ip/multimedia/dvp_define.svh",
ROOT / "rtl/ip/multimedia/dvp_reg.sv", ROOT / "rtl/ip/multimedia/dvp_reg.sv",
SCRIPT_DIR / "dvp_formal.sv", SCRIPT_DIR / "dvp_formal.sv",
+23 -17
View File
@@ -30,14 +30,17 @@ module gpio_formal_design (
// verilog_format: on // verilog_format: on
); );
ribp_if ribp (); apb4_if apb4 (
.pclk (clk_i),
.presetn(rst_n_i)
);
gpio_if #(4) gpio (); gpio_if #(4) gpio ();
user_gpio_if #(4) user_gpio (); user_gpio_if #(4) user_gpio ();
(* anyseq *)logic f_ribp_valid; (* anyseq *)logic f_apb_sel;
(* anyseq *)logic [31:0] f_ribp_addr; (* anyseq *)logic [31:0] f_apb_addr;
(* anyseq *)logic [31:0] f_ribp_wdata; (* anyseq *)logic [31:0] f_apb_wdata;
(* anyseq *)logic [ 3:0] f_ribp_wstrb; (* anyseq *)logic [ 3:0] f_apb_pstrb;
(* anyseq *)logic [ 3:0] f_gpio_di; (* anyseq *)logic [ 3:0] f_gpio_di;
(* anyseq *)logic [ 3:0] f_alt0_do; (* anyseq *)logic [ 3:0] f_alt0_do;
(* anyseq *)logic [ 3:0] f_alt0_oe; (* anyseq *)logic [ 3:0] f_alt0_oe;
@@ -46,10 +49,13 @@ module gpio_formal_design (
(* anyseq *)logic [ 3:0] f_user_do; (* anyseq *)logic [ 3:0] f_user_do;
(* anyseq *)logic [ 3:0] f_user_oe; (* anyseq *)logic [ 3:0] f_user_oe;
assign ribp.valid = f_ribp_valid; assign apb4.psel = f_apb_sel;
assign ribp.addr = f_ribp_addr; assign apb4.penable = f_apb_sel;
assign ribp.wdata = f_ribp_wdata; assign apb4.pwrite = |f_apb_pstrb;
assign ribp.wstrb = f_ribp_wstrb; assign apb4.paddr = f_apb_addr;
assign apb4.pwdata = f_apb_wdata;
assign apb4.pstrb = f_apb_pstrb;
assign apb4.pprot = 3'b000;
assign gpio.di_i = f_gpio_di; assign gpio.di_i = f_gpio_di;
assign gpio.alt0_do_i = f_alt0_do; assign gpio.alt0_do_i = f_alt0_do;
assign gpio.alt0_oe_i = f_alt0_oe; assign gpio.alt0_oe_i = f_alt0_oe;
@@ -58,12 +64,12 @@ module gpio_formal_design (
assign user_gpio.do_o = f_user_do; assign user_gpio.do_o = f_user_do;
assign user_gpio.oe_o = f_user_oe; assign user_gpio.oe_o = f_user_oe;
assign ribp_valid = ribp.valid; assign ribp_valid = apb4.psel;
assign ribp_ready = ribp.ready; assign ribp_ready = apb4.pready;
assign ribp_resp_err = ribp.resp_err; assign ribp_resp_err = apb4.pslverr;
assign ribp_addr = ribp.addr; assign ribp_addr = apb4.paddr;
assign ribp_wdata = ribp.wdata; assign ribp_wdata = apb4.pwdata;
assign ribp_wstrb = ribp.wstrb; assign ribp_wstrb = apb4.pstrb;
assign gpio_oe = gpio.oe_o; assign gpio_oe = gpio.oe_o;
assign gpio_do = gpio.do_o; assign gpio_do = gpio.do_o;
assign user_oe = user_gpio.oe_o; assign user_oe = user_gpio.oe_o;
@@ -80,7 +86,7 @@ module gpio_formal_design (
assign intr_state = u_dut.u_gpio_reg.s_intr_state_q; assign intr_state = u_dut.u_gpio_reg.s_intr_state_q;
assign irq = gpio.irq_o; assign irq = gpio.irq_o;
ribp_gpio #( apb4_gpio #(
.PinNum (4), .PinNum (4),
.UserBaseAddr (32'h1000_0000), .UserBaseAddr (32'h1000_0000),
.AdminBaseAddr(32'h1001_4000), .AdminBaseAddr(32'h1001_4000),
@@ -90,7 +96,7 @@ module gpio_formal_design (
) u_dut ( ) u_dut (
.clk_i (clk_i), .clk_i (clk_i),
.rst_n_i (rst_n_i), .rst_n_i (rst_n_i),
.ribp (ribp), .apb4 (apb4),
.gpio (gpio), .gpio (gpio),
.user_gpio(user_gpio) .user_gpio(user_gpio)
); );
+23 -17
View File
@@ -33,29 +33,35 @@ module i2c_formal_design (
// verilog_format: on // verilog_format: on
); );
ribp_if ribp (); apb4_if apb4 (
.pclk (clk_i),
.presetn(rst_n_i)
);
i2c_if i2c (); i2c_if i2c ();
(* anyseq *)logic f_rib_valid; (* anyseq *)logic f_apb_sel;
(* anyseq *)logic [31:0] f_rib_addr; (* anyseq *)logic [31:0] f_apb_addr;
(* anyseq *)logic [31:0] f_rib_wdata; (* anyseq *)logic [31:0] f_apb_wdata;
(* anyseq *)logic [ 3:0] f_rib_wstrb; (* anyseq *)logic [ 3:0] f_apb_pstrb;
(* anyseq *)logic f_scl; (* anyseq *)logic f_scl;
(* anyseq *)logic f_sda; (* anyseq *)logic f_sda;
assign ribp.valid = f_rib_valid; assign apb4.psel = f_apb_sel;
assign ribp.addr = f_rib_addr; assign apb4.penable = f_apb_sel;
assign ribp.wdata = f_rib_wdata; assign apb4.pwrite = |f_apb_pstrb;
assign ribp.wstrb = f_rib_wstrb; assign apb4.paddr = f_apb_addr;
assign apb4.pwdata = f_apb_wdata;
assign apb4.pstrb = f_apb_pstrb;
assign apb4.pprot = 3'b000;
assign i2c.scl_i = f_scl; assign i2c.scl_i = f_scl;
assign i2c.sda_i = f_sda; assign i2c.sda_i = f_sda;
assign rib_valid = ribp.valid; assign rib_valid = apb4.psel;
assign rib_addr = ribp.addr; assign rib_addr = apb4.paddr;
assign rib_wdata = ribp.wdata; assign rib_wdata = apb4.pwdata;
assign rib_wstrb = ribp.wstrb; assign rib_wstrb = apb4.pstrb;
assign rib_ready = ribp.ready; assign rib_ready = apb4.pready;
assign rib_resp_err = ribp.resp_err; assign rib_resp_err = apb4.pslverr;
assign command_count = u_dut.u_i2c_reg.s_cmd_count; assign command_count = u_dut.u_i2c_reg.s_cmd_count;
assign rx_count = u_dut.u_i2c_reg.s_rx_count; assign rx_count = u_dut.u_i2c_reg.s_rx_count;
assign error_status = u_dut.u_i2c_reg.s_err_stat_q; assign error_status = u_dut.u_i2c_reg.s_err_stat_q;
@@ -73,12 +79,12 @@ module i2c_formal_design (
assign sda_oe = i2c.sda_oe_o; assign sda_oe = i2c.sda_oe_o;
assign irq = i2c.irq_o; assign irq = i2c.irq_o;
ribp_i2c u_dut ( apb4_i2c u_dut (
.clk_i (clk_i), .clk_i (clk_i),
.rst_n_i (rst_n_i), .rst_n_i (rst_n_i),
.dma_tx_stall_o(tx_dma_stall), .dma_tx_stall_o(tx_dma_stall),
.dma_rx_stall_o(rx_dma_stall), .dma_rx_stall_o(rx_dma_stall),
.ribp (ribp), .apb4 (apb4),
.i2c (i2c) .i2c (i2c)
); );
+23 -17
View File
@@ -38,14 +38,17 @@ module sysctrl_formal_design (
output logic [ 7:0] test_code output logic [ 7:0] test_code
); );
ribp_if rib (); apb4_if apb4 (
.pclk (clk_i),
.presetn(rst_n_i)
);
sysctrl_if sysctrl (); sysctrl_if sysctrl ();
pll_ctrl_if pll_ctrl (); pll_ctrl_if pll_ctrl ();
(* anyseq *)logic f_rib_valid; (* anyseq *)logic f_apb_sel;
(* anyseq *)logic [31:0] f_rib_addr; (* anyseq *)logic [31:0] f_apb_addr;
(* anyseq *)logic [31:0] f_rib_wdata; (* anyseq *)logic [31:0] f_apb_wdata;
(* anyseq *)logic [ 3:0] f_rib_wstrb; (* anyseq *)logic [ 3:0] f_apb_pstrb;
(* anyseq *)logic f_pll_req_ready; (* anyseq *)logic f_pll_req_ready;
(* anyseq *)logic [ 2:0] f_pll_active_sel; (* anyseq *)logic [ 2:0] f_pll_active_sel;
(* anyseq *)logic f_pll_active_valid; (* anyseq *)logic f_pll_active_valid;
@@ -59,10 +62,13 @@ module sysctrl_formal_design (
(* anyseq *)logic [ 3:0] f_fault_wstrb; (* anyseq *)logic [ 3:0] f_fault_wstrb;
(* anyseq *)logic f_fault_reserved; (* anyseq *)logic f_fault_reserved;
assign rib.valid = f_rib_valid; assign apb4.psel = f_apb_sel;
assign rib.addr = f_rib_addr; assign apb4.penable = f_apb_sel;
assign rib.wdata = f_rib_wdata; assign apb4.pwrite = |f_apb_pstrb;
assign rib.wstrb = f_rib_wstrb; assign apb4.paddr = f_apb_addr;
assign apb4.pwdata = f_apb_wdata;
assign apb4.pstrb = f_apb_pstrb;
assign apb4.pprot = 3'b000;
assign sysctrl.user_bus_idle_i = 1'b1; assign sysctrl.user_bus_idle_i = 1'b1;
assign sysctrl.fault_access_i = 1'b0; assign sysctrl.fault_access_i = 1'b0;
assign sysctrl.fault_master_i = '0; assign sysctrl.fault_master_i = '0;
@@ -70,7 +76,7 @@ module sysctrl_formal_design (
assign sysctrl.perf_mgmt_wait_i = '0; assign sysctrl.perf_mgmt_wait_i = '0;
assign sysctrl.perf_user_wait_i = '0; assign sysctrl.perf_user_wait_i = '0;
assign sysctrl.perf_dma_wait_i = '0; assign sysctrl.perf_dma_wait_i = '0;
assign sysctrl.perf_ribp_wait_i = '0; assign sysctrl.perf_apb4_wait_i = '0;
assign sysctrl.perf_apb_wait_i = '0; assign sysctrl.perf_apb_wait_i = '0;
assign sysctrl.perf_sdram_wait_i = '0; assign sysctrl.perf_sdram_wait_i = '0;
assign sysctrl.perf_psram_wait_i = '0; assign sysctrl.perf_psram_wait_i = '0;
@@ -85,11 +91,11 @@ module sysctrl_formal_design (
assign pll_ctrl.rsp_valid_i = f_pll_rsp_valid; assign pll_ctrl.rsp_valid_i = f_pll_rsp_valid;
assign pll_ctrl.capable_i = f_pll_capable; assign pll_ctrl.capable_i = f_pll_capable;
assign rib_valid = rib.valid; assign rib_valid = apb4.psel;
assign rib_addr = rib.addr; assign rib_addr = apb4.paddr;
assign rib_wdata = rib.wdata; assign rib_wdata = apb4.pwdata;
assign rib_wstrb = rib.wstrb; assign rib_wstrb = apb4.pstrb;
assign rib_ready = rib.ready; assign rib_ready = apb4.pready;
assign ip_sel = sysctrl.ip_sel_o; assign ip_sel = sysctrl.ip_sel_o;
assign core_sel = u_dut.u_sysctrl_core.s_sysctrl_coresel_q; assign core_sel = u_dut.u_sysctrl_core.s_sysctrl_coresel_q;
assign user_reset = {{(32 - `USER_CORE_COUNT) {1'b0}}, u_dut.u_sysctrl_core.s_user_reset_q}; assign user_reset = {{(32 - `USER_CORE_COUNT) {1'b0}}, u_dut.u_sysctrl_core.s_user_reset_q};
@@ -117,14 +123,14 @@ module sysctrl_formal_design (
assign test_pass = sysctrl.test_pass_o; assign test_pass = sysctrl.test_pass_o;
assign test_code = sysctrl.test_code_o; assign test_code = sysctrl.test_code_o;
ribp_sysctrl u_dut ( apb4_sysctrl u_dut (
.clk_i (clk_i), .clk_i (clk_i),
.rst_n_i (rst_n_i), .rst_n_i (rst_n_i),
.fault_valid_i (f_fault_valid), .fault_valid_i (f_fault_valid),
.fault_addr_i (f_fault_addr), .fault_addr_i (f_fault_addr),
.fault_wstrb_i (f_fault_wstrb), .fault_wstrb_i (f_fault_wstrb),
.fault_reserved_i(f_fault_reserved), .fault_reserved_i(f_fault_reserved),
.ribp (rib), .apb4 (apb4),
.sysctrl (sysctrl), .sysctrl (sysctrl),
.pll_ctrl (pll_ctrl) .pll_ctrl (pll_ctrl)
); );
+23 -17
View File
@@ -29,25 +29,31 @@ module timer_formal_design (
// verilog_format: on // verilog_format: on
); );
ribp_if rib (); apb4_if apb4 (
.pclk (clk_i),
.presetn(rst_n_i)
);
(* anyseq *)logic f_rib_valid; (* anyseq *)logic f_apb_sel;
(* anyseq *)logic [31:0] f_rib_addr; (* anyseq *)logic [31:0] f_apb_addr;
(* anyseq *)logic [31:0] f_rib_wdata; (* anyseq *)logic [31:0] f_apb_wdata;
(* anyseq *)logic [ 3:0] f_rib_wstrb; (* anyseq *)logic [ 3:0] f_apb_pstrb;
(* anyseq *)logic f_debug_halted; (* anyseq *)logic f_debug_halted;
assign rib.valid = f_rib_valid; assign apb4.psel = f_apb_sel;
assign rib.addr = f_rib_addr; assign apb4.penable = f_apb_sel;
assign rib.wdata = f_rib_wdata; assign apb4.pwrite = |f_apb_pstrb;
assign rib.wstrb = f_rib_wstrb; assign apb4.paddr = f_apb_addr;
assign apb4.pwdata = f_apb_wdata;
assign apb4.pstrb = f_apb_pstrb;
assign apb4.pprot = 3'b000;
assign rib_valid = rib.valid; assign rib_valid = apb4.psel;
assign rib_addr = rib.addr; assign rib_addr = apb4.paddr;
assign rib_wdata = rib.wdata; assign rib_wdata = apb4.pwdata;
assign rib_wstrb = rib.wstrb; assign rib_wstrb = apb4.pstrb;
assign rib_ready = rib.ready; assign rib_ready = apb4.pready;
assign rib_resp_err = rib.resp_err; assign rib_resp_err = apb4.pslverr;
assign debug_halted = f_debug_halted; assign debug_halted = f_debug_halted;
assign active = u_dut.s_en; assign active = u_dut.s_en;
assign debug_frozen = u_dut.s_debug_frozen; assign debug_frozen = u_dut.s_debug_frozen;
@@ -62,11 +68,11 @@ module timer_formal_design (
assign intr_state = u_dut.u_timer_reg.s_intr_state_q; assign intr_state = u_dut.u_timer_reg.s_intr_state_q;
assign intr_enable = u_dut.u_timer_reg.s_intr_en_q; assign intr_enable = u_dut.u_timer_reg.s_intr_en_q;
ribp_timer u_dut ( apb4_timer u_dut (
.clk_i (clk_i), .clk_i (clk_i),
.rst_n_i (rst_n_i), .rst_n_i (rst_n_i),
.debug_halted_i(f_debug_halted), .debug_halted_i(f_debug_halted),
.ribp (rib), .apb4 (apb4),
.irq_o (irq) .irq_o (irq)
); );
+23 -17
View File
@@ -37,29 +37,35 @@ module uart_formal_design (
// verilog_format: on // verilog_format: on
); );
ribp_if ribp (); apb4_if apb4 (
.pclk (clk_i),
.presetn(rst_n_i)
);
uart_if uart (); uart_if uart ();
(* anyseq *)logic f_rib_valid; (* anyseq *)logic f_apb_sel;
(* anyseq *)logic [31:0] f_rib_addr; (* anyseq *)logic [31:0] f_apb_addr;
(* anyseq *)logic [31:0] f_rib_wdata; (* anyseq *)logic [31:0] f_apb_wdata;
(* anyseq *)logic [ 3:0] f_rib_wstrb; (* anyseq *)logic [ 3:0] f_apb_pstrb;
(* anyseq *)logic f_uart_rx; (* anyseq *)logic f_uart_rx;
(* anyseq *)logic f_uart_cts_n; (* anyseq *)logic f_uart_cts_n;
assign ribp.valid = f_rib_valid; assign apb4.psel = f_apb_sel;
assign ribp.addr = f_rib_addr; assign apb4.penable = f_apb_sel;
assign ribp.wdata = f_rib_wdata; assign apb4.pwrite = |f_apb_pstrb;
assign ribp.wstrb = f_rib_wstrb; assign apb4.paddr = f_apb_addr;
assign apb4.pwdata = f_apb_wdata;
assign apb4.pstrb = f_apb_pstrb;
assign apb4.pprot = 3'b000;
assign uart.rx_i = f_uart_rx; assign uart.rx_i = f_uart_rx;
assign uart.cts_n_i = f_uart_cts_n; assign uart.cts_n_i = f_uart_cts_n;
assign rib_valid = ribp.valid; assign rib_valid = apb4.psel;
assign rib_addr = ribp.addr; assign rib_addr = apb4.paddr;
assign rib_wdata = ribp.wdata; assign rib_wdata = apb4.pwdata;
assign rib_wstrb = ribp.wstrb; assign rib_wstrb = apb4.pstrb;
assign rib_ready = ribp.ready; assign rib_ready = apb4.pready;
assign rib_resp_err = ribp.resp_err; assign rib_resp_err = apb4.pslverr;
assign tx_count = u_dut.u_uart_reg.s_tx_count; assign tx_count = u_dut.u_uart_reg.s_tx_count;
assign rx_count = u_dut.u_uart_reg.s_rx_count; assign rx_count = u_dut.u_uart_reg.s_rx_count;
assign error_status = u_dut.u_uart_reg.s_err_stat_q; assign error_status = u_dut.u_uart_reg.s_err_stat_q;
@@ -81,12 +87,12 @@ module uart_formal_design (
assign rts_n = uart.rts_n_o; assign rts_n = uart.rts_n_o;
assign irq = uart.irq_o; assign irq = uart.irq_o;
ribp_uart u_dut ( apb4_uart u_dut (
.clk_i (clk_i), .clk_i (clk_i),
.rst_n_i (rst_n_i), .rst_n_i (rst_n_i),
.dma_tx_stall_o(tx_dma_stall), .dma_tx_stall_o(tx_dma_stall),
.dma_rx_stall_o(rx_dma_stall), .dma_rx_stall_o(rx_dma_stall),
.ribp (ribp), .apb4 (apb4),
.uart (uart) .uart (uart)
); );
+23 -17
View File
@@ -29,25 +29,31 @@ module ws2812_formal_design (
output logic [ 3:0] intr_enable output logic [ 3:0] intr_enable
); );
ribp_if rib (); apb4_if apb4 (
.pclk (clk_i),
.presetn(rst_n_i)
);
ws2812_if ws2812 (); ws2812_if ws2812 ();
(* anyseq *)logic f_rib_valid; (* anyseq *)logic f_apb_sel;
(* anyseq *)logic [31:0] f_rib_addr; (* anyseq *)logic [31:0] f_apb_addr;
(* anyseq *)logic [31:0] f_rib_wdata; (* anyseq *)logic [31:0] f_apb_wdata;
(* anyseq *)logic [ 3:0] f_rib_wstrb; (* anyseq *)logic [ 3:0] f_apb_pstrb;
assign rib.valid = f_rib_valid; assign apb4.psel = f_apb_sel;
assign rib.addr = f_rib_addr; assign apb4.penable = f_apb_sel;
assign rib.wdata = f_rib_wdata; assign apb4.pwrite = |f_apb_pstrb;
assign rib.wstrb = f_rib_wstrb; assign apb4.paddr = f_apb_addr;
assign apb4.pwdata = f_apb_wdata;
assign apb4.pstrb = f_apb_pstrb;
assign apb4.pprot = 3'b000;
assign rib_valid = rib.valid; assign rib_valid = apb4.psel;
assign rib_addr = rib.addr; assign rib_addr = apb4.paddr;
assign rib_wdata = rib.wdata; assign rib_wdata = apb4.pwdata;
assign rib_wstrb = rib.wstrb; assign rib_wstrb = apb4.pstrb;
assign rib_ready = rib.ready; assign rib_ready = apb4.pready;
assign rib_resp_err = rib.resp_err; assign rib_resp_err = apb4.pslverr;
assign dat = ws2812.dat_o; assign dat = ws2812.dat_o;
assign irq = ws2812.irq_o; assign irq = ws2812.irq_o;
assign busy = u_dut.s_busy; assign busy = u_dut.s_busy;
@@ -65,10 +71,10 @@ module ws2812_formal_design (
assign intr_state = u_dut.u_ws2812_reg.s_intr_state_q; assign intr_state = u_dut.u_ws2812_reg.s_intr_state_q;
assign intr_enable = u_dut.u_ws2812_reg.s_intr_en_q; assign intr_enable = u_dut.u_ws2812_reg.s_intr_en_q;
ribp_ws2812 u_dut ( apb4_ws2812 u_dut (
.clk_i (clk_i), .clk_i (clk_i),
.rst_n_i(rst_n_i), .rst_n_i(rst_n_i),
.ribp (rib), .apb4 (apb4),
.ws2812 (ws2812) .ws2812 (ws2812)
); );
+1
View File
@@ -97,6 +97,7 @@ FORMAL_SOURCE_FILES := $(RTL_PATH)/formal/bus_formal.sv \
$(ROOT_PATH)/rtl/managed/clusterip/common/rtl/clkrst/counter.sv \ $(ROOT_PATH)/rtl/managed/clusterip/common/rtl/clkrst/counter.sv \
$(RTL_PATH)/top/rcu.sv \ $(RTL_PATH)/top/rcu.sv \
$(RTL_PATH)/top/pll_rcu_controller.sv \ $(RTL_PATH)/top/pll_rcu_controller.sv \
$(ROOT_PATH)/rtl/managed/clusterip/common/rtl/interface/apb4_if.sv \
$(ROOT_PATH)/rtl/managed/clusterip/common/rtl/interface/ribp_if.sv \ $(ROOT_PATH)/rtl/managed/clusterip/common/rtl/interface/ribp_if.sv \
$(ROOT_PATH)/rtl/managed/clusterip/common/rtl/interface/apb4_pure_if.sv \ $(ROOT_PATH)/rtl/managed/clusterip/common/rtl/interface/apb4_pure_if.sv \
$(ROOT_PATH)/rtl/managed/clusterip/common/rtl/cdc/cdc_sync.sv \ $(ROOT_PATH)/rtl/managed/clusterip/common/rtl/cdc/cdc_sync.sv \
+2
View File
@@ -267,12 +267,14 @@ def test_formal_filelists_are_scoped_to_the_protocol_duts(tmp_path: Path) -> Non
assert ROOT / "rtl/mini/top/pll_rcu_controller.sv" in pll_rcu.files assert ROOT / "rtl/mini/top/pll_rcu_controller.sv" in pll_rcu.files
assert ROOT / "rtl/managed/clusterip/common/rtl/cdc/cdc_2phase.sv" in pll_rcu.files assert ROOT / "rtl/managed/clusterip/common/rtl/cdc/cdc_2phase.sv" in pll_rcu.files
assert ROOT / "rtl/managed/clusterip/common/rtl/clkrst/rst_sync.sv" in pll_rcu.files assert ROOT / "rtl/managed/clusterip/common/rtl/clkrst/rst_sync.sv" in pll_rcu.files
assert ROOT / "rtl/managed/clusterip/common/rtl/interface/apb4_if.sv" in gpio.files
assert ROOT / "rtl/ip/peripheral/gpio_core.sv" in gpio.files assert ROOT / "rtl/ip/peripheral/gpio_core.sv" in gpio.files
assert ROOT / "rtl/ip/peripheral/gpio_reg.sv" in gpio.files assert ROOT / "rtl/ip/peripheral/gpio_reg.sv" in gpio.files
assert ROOT / "rtl/ip/peripheral/apb4_gpio.sv" in gpio.files assert ROOT / "rtl/ip/peripheral/apb4_gpio.sv" in gpio.files
assert ROOT / "rtl/ip/peripheral/user_gpio_if.sv" in gpio.files assert ROOT / "rtl/ip/peripheral/user_gpio_if.sv" in gpio.files
assert ROOT / "rtl/managed/clusterip/common/rtl/cdc/cdc_sync.sv" in gpio.files assert ROOT / "rtl/managed/clusterip/common/rtl/cdc/cdc_sync.sv" in gpio.files
assert ROOT / "rtl/mini/formal/gpio_formal.sv" in gpio.files assert ROOT / "rtl/mini/formal/gpio_formal.sv" in gpio.files
assert ROOT / "rtl/managed/clusterip/common/rtl/interface/apb4_if.sv" in ws2812.files
assert ROOT / "rtl/ip/serial/apb4_ws2812.sv" in ws2812.files assert ROOT / "rtl/ip/serial/apb4_ws2812.sv" in ws2812.files
assert ROOT / "rtl/managed/clusterip/common/rtl/utils/fifo.sv" in ws2812.files assert ROOT / "rtl/managed/clusterip/common/rtl/utils/fifo.sv" in ws2812.files
assert ROOT / "rtl/mini/formal/ws2812_formal.sv" in ws2812.files assert ROOT / "rtl/mini/formal/ws2812_formal.sv" in ws2812.files