ddr3 mig 的仿真中遇到的疑问
问题1:always @(posedge clk) occ_cnt_r <= #TCQ occ_cnt_ns;
这种我知道是在仿真中才会生效?但是为什么要延时呢?延时了 仿真和 真实的布局布线的结果 不就不一致了吗? 请问,仿真中延时的作用是什么?
问题2:
`ifdef MC_SVA
rd_data_buffer_full: cover property (@(posedge clk) (~rst && rd_buf_full));
rd_data_buffer_inc_dec_15: cover property (@(posedge clk)
(~rst && rd_accepted && free_rd_buf && (occ_cnt_r == 'hf)));
rd_data_underflow: assert property (@(posedge clk)
(rst || !((occ_cnt_r == 'b0) && (occ_cnt_ns == 'h1f))));
rd_data_overflow: assert property (@(posedge clk)
(rst || !((occ_cnt_r == 'h10) && (occ_cnt_ns == 'h11))));
`endif
这是什么语法啊?看不太懂
1,首先仿真是没有延时的,而布局布线后是有延时的;所以在代码中认为加入延时,就是为了在仿真中模拟实际应用的情况,但也仅仅是模拟,而不是真实;
2,首先你在代码中如果有如下语句:‘define MC_SCA,那么问题中的代码就会执行,否则不执行;就是说'ifdef...'endif是要和'define预定义宏命令配合使用的
问题1 我理解了这个意思,`timescale 1 ps / 1 ps, parameter TCQ = 100,是在模拟布局布线延迟。谢谢!
问题2:条件编译这个知道,只是下面的cover property 不知道那些语句有什么用?
rd_data_buffer_full: cover property (@(posedge clk) (~rst && rd_buf_full));
rd_data_buffer_inc_dec_15: cover property (@(posedge clk)
(~rst && rd_accepted && free_rd_buf && (occ_cnt_r == 'hf)));
rd_data_underflow: assert property (@(posedge clk)
(rst || !((occ_cnt_r == 'b0) && (occ_cnt_ns == 'h1f))));
rd_data_overflow: assert property (@(posedge clk)
(rst || !((occ_cnt_r == 'h10) && (occ_cnt_ns == 'h11))));
这个 我也看不懂 没见过
