sva日常学习0

1. 反压期间保持 VALID 和数据稳定

property p_axi_payload_hold_when_stalled;

@(posedge clk) disable iff (!rst_n)

(valid && !ready) |=> valid && $stable({data, strb, last, id, user});

endproperty

assert property (p_axi_payload_hold_when_stalled);

2. ## 延迟 ------ APB Setup → Access 时序检查

(psel && !penable)

|=>(psel && penable && stable(paddr) \&\& stable(pwrite));

3. 重复运算符 \*N ------ AXI 连续反压检查

(WVALID && !WREADY)|=>WVALID\*1:3;

req |=> busy\*2:4 ##1 done;

当 req 信号在某个时钟周期有效,下一个时钟开始, busy 需要持续保持高电平2~4个时钟;

busy结束之后,再等待1个时钟周期, done 必须拉高。

4.请求时记住 X,响应时检查 X

可以想到这个模板:

property p_req_rsp_match;

logic WIDTH-1:0 saved_value;

@(posedge clk)

disable iff (!rst_n)

(req_fire,

saved_value = req_value)

|->

##MIN:MAX

(rsp_fire &&

rsp_value == saved_value);

endproperty

5.动态延迟

当 dma_req 出现时,读取当时的 timeout_cfg。dma_ack 必须在 1 到 timeout_cfg 个周期内返回。局部变量 + 重复 sequence + 计数递减 + first_match(),一种典型思路:

property p_dma_dynamic_timeout;

int cnt;

@(posedge clk)

disable iff (!rst_n)

(dma_req, cnt = timeout_cfg)

|->

first_match(

(##1 !dma_ack, cnt = cnt - 1)\*0:$

##1 (dma_ack && cnt >= 0)

);

endproperty

相关推荐
不会武功的火柴3 个月前
SystemVerilog语法(11)-面向对象编程下篇
面向对象·fpga·systemverilog·ic验证
Ether IC Verifier3 个月前
SystemVerilog 数据类型详解
php·systemverilog·uvm·ic验证
Ether IC Verifier3 个月前
IC 验证工程师新手入门指南
systemverilog·ic验证·dpu
暴风雨中的白杨3 个月前
cocotb环境安装
ic验证·cocotb
不会武功的火柴3 个月前
SystemVerilog语法(8)-有限状态机(FSM)
嵌入式硬件·fpga开发·自动化·ic验证·rtl·uvm方法学
不会武功的火柴3 个月前
SystemVerilog语法(7)-接口(interface)
嵌入式硬件·fpga开发·仿真·ic验证·rtl
不会武功的火柴3 个月前
ModelSim入门实战(三): 批处理一键仿真与波形调试
嵌入式硬件·fpga·仿真·modelsim·ic验证·rtl
xwz_new3 个月前
浅谈NOC
ic验证
xwz_new3 个月前
浅谈SOC
ic验证