[IC后仿] IC后仿基本流程与注意事项

1- 前言

📓 记录IC后仿的流程与注意事项

2- 后仿运行前

后仿前期准备 库文件、网表、sdf、makefile

1️⃣库文件,网表更新在filelist中

##库文件
/home/xx/xx.v  
##网表文件
/home/xx/xx.v

2️⃣ SDF文件反标在dut_top中

...
initial begin
  $sdf_annotate ("/home/xx/post_sim/Digital_top_worst.sdf",dut,,"worst_sdf.log","MAXIMUM","1.0:1.0:1.0",);
end

  Digital_top dut(
  /*input             */  .clk                (clk                ),
  /*input             */  .por_rst            (rstb               ),
...
  • $sdf_annotate 是 Verilog 的系统任务,专门用于加载 SDF 文件中的时序信息。这些时序信息包括路径延迟、建立时间、保持时间等,通常用于后仿真;

    $sdf_annotate("①sdf_file.sdf", ②dut_instance, ③NULL, ④"sdf_annotation.log", ⑤"MINIMUM", ⑥"1.0:1.0:1.0", ⑦"1.0:1.0:1.0");
    

    $sdf_annotate 的6个参数:

    1、SDF文件路径;

    2、 模块实例名;

    3、 标志位(Optional, NULL 默认),写作 NULL,表示不对SDF指定任何特殊操作;

    4、 日志文件路径,记录反标是否成功;

    5、 延迟模式(Optional,默认是TYPICAL):SDF 文件中的延迟通常包含三类:

    "MINIMUM":最小延迟值。

    "TYPICAL":典型延迟值(默认值)。

    "MAXIMUM":最大延迟值

    6、 比例因子(Optional,默认是1.0:1.0:1.0);

    7、延迟标志(Optional, 1.0:1.0:1.0 默认);

3️⃣增加Makefile选项(以verdi为例)

​ 1、编译和仿真阶段都要加上+vcs+initreg+random1

​ 2、编译阶段加上 +neg_tchk +sdfverbose

+neg_tchk negative timing check是一个在仿真过程中控制负时序检查的选项,允许仿真器忽略负的时序检查结果,从而减少不必要的警告或错误

+sdfverbose 用于在 SDF 文件注释过程中提供更详细的信息输出

image-20240912180023008

3- 后仿运行中

通过运行make run tc=xx等命令运行前仿时的testcase;

🤔前仿/后仿共用同一套testbench和testcase时,一定要注意以下问题:

  • TB所有变量声明后给上初值;
  • TB/TC所有的信号驱动由interface clock blocking 驱动;
  • 所有dut intput 在TB连接时,给初值,不要floating;

4- 后仿运行后

运行后,主要任务为分析结果,确定是否存在x态,追踪产生原因。

⭐️在后仿中产生x态的主要原因:

  • 建立/保持时间不符合要求;

  • DUT 输入端口没有赋初始值(floating状态/Z高阻态),Z经过触发器输出X ;

  • 寄存器初始化未成功;


  1. https://blog.csdn.net/qq_16423857/article/details/122649458 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值