aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/smtbmc/axicheck.v
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/smtbmc/axicheck.v')
-rw-r--r--scripts/smtbmc/axicheck.v61
1 files changed, 42 insertions, 19 deletions
diff --git a/scripts/smtbmc/axicheck.v b/scripts/smtbmc/axicheck.v
index 0afe41b..80eda48 100644
--- a/scripts/smtbmc/axicheck.v
+++ b/scripts/smtbmc/axicheck.v
@@ -34,8 +34,7 @@ module testbench (
.ENABLE_COUNTERS64(1),
.ENABLE_REGS_16_31(1),
.ENABLE_REGS_DUALPORT(1),
- .TWO_STAGE_SHIFT(1),
- .BARREL_SHIFTER(0),
+ .BARREL_SHIFTER(1),
.TWO_CYCLE_COMPARE(0),
.TWO_CYCLE_ALU(0),
.COMPRESSED_ISA(0),
@@ -64,26 +63,50 @@ module testbench (
.mem_axi_rdata (mem_axi_rdata )
);
- reg expect_bvalid_0 = 0;
- reg expect_bvalid_1 = 0;
- reg expect_rvalid = 0;
+ reg expect_bvalid_aw = 0;
+ reg expect_bvalid_w = 0;
+ reg expect_rvalid = 0;
+
+ reg [3:0] timeout_aw = 0;
+ reg [3:0] timeout_w = 0;
+ reg [3:0] timeout_b = 0;
+ reg [3:0] timeout_ar = 0;
+ reg [3:0] timeout_r = 0;
+ reg [3:0] timeout_ex = 0;
+
+ always @(posedge clk) begin
+ timeout_aw <= !mem_axi_awvalid || mem_axi_awready ? 0 : timeout_aw + 1;
+ timeout_w <= !mem_axi_wvalid || mem_axi_wready ? 0 : timeout_w + 1;
+ timeout_b <= !mem_axi_bvalid || mem_axi_bready ? 0 : timeout_b + 1;
+ timeout_ar <= !mem_axi_arvalid || mem_axi_arready ? 0 : timeout_ar + 1;
+ timeout_r <= !mem_axi_rvalid || mem_axi_rready ? 0 : timeout_r + 1;
+ timeout_ex <= !{expect_bvalid_aw, expect_bvalid_w, expect_rvalid} ? 0 : timeout_ex + 1;
+ restrict(timeout_aw != 15);
+ restrict(timeout_w != 15);
+ restrict(timeout_b != 15);
+ restrict(timeout_ar != 15);
+ restrict(timeout_r != 15);
+ restrict(timeout_ex != 15);
+ restrict(!trap);
+
+ end
always @(posedge clk) begin
if (resetn) begin
if (!$past(resetn)) begin
assert(!mem_axi_awvalid);
- assert(!mem_axi_wvalid);
- assume(!mem_axi_bvalid);
+ assert(!mem_axi_wvalid );
+ assume(!mem_axi_bvalid );
assert(!mem_axi_arvalid);
- assume(!mem_axi_rvalid);
+ assume(!mem_axi_rvalid );
end else begin
// Only one read/write transaction in flight at each point in time
- if (expect_bvalid_0) begin
+ if (expect_bvalid_aw) begin
assert(!mem_axi_awvalid);
end
- if (expect_bvalid_1) begin
+ if (expect_bvalid_w) begin
assert(!mem_axi_wvalid);
end
@@ -91,20 +114,20 @@ module testbench (
assert(!mem_axi_arvalid);
end
- expect_bvalid_0 = expect_bvalid_0 || (mem_axi_awvalid && mem_axi_awready);
- expect_bvalid_1 = expect_bvalid_1 || (mem_axi_wvalid && mem_axi_wready);
- expect_rvalid = expect_rvalid || (mem_axi_arvalid && mem_axi_arready);
+ expect_bvalid_aw = expect_bvalid_aw || (mem_axi_awvalid && mem_axi_awready);
+ expect_bvalid_w = expect_bvalid_w || (mem_axi_wvalid && mem_axi_wready );
+ expect_rvalid = expect_rvalid || (mem_axi_arvalid && mem_axi_arready);
- if (expect_bvalid_0 || expect_bvalid_1) begin
+ if (expect_bvalid_aw || expect_bvalid_w) begin
assert(!expect_rvalid);
end
if (expect_rvalid) begin
- assert(!expect_bvalid_0);
- assert(!expect_bvalid_1);
+ assert(!expect_bvalid_aw);
+ assert(!expect_bvalid_w);
end
- if (!expect_bvalid_0 || !expect_bvalid_1) begin
+ if (!expect_bvalid_aw || !expect_bvalid_w) begin
assume(!mem_axi_bvalid);
end
@@ -113,8 +136,8 @@ module testbench (
end
if (mem_axi_bvalid && mem_axi_bready) begin
- expect_bvalid_0 = 0;
- expect_bvalid_1 = 0;
+ expect_bvalid_aw = 0;
+ expect_bvalid_w = 0;
end
if (mem_axi_rvalid && mem_axi_rready) begin