1、后仿准备
后仿是带真实反标延迟的仿真。在前仿的基础上加入了延时信息,同时验证设计的时序以及功能都正确,并且确保后仿功能和前仿一致。
后仿所需文件:SDF、网表、库文件以及前仿中的激励文件。
网表和库文件只有一份,sdf文件根据corner不同会有多份。
影响corner的因素包括PVT三个。
- P Process是指Fab在生产过程中工艺、机台等的差异导致芯片的偏差。分为TT SS FF FS SF等这几类情况。
-
SS:Slow NMOS and Slow PMOS
-
FF:Fast NMOS and Fast PMOS
其余的类推,这里的slow和fast指的是载流子迁移的速度。可以通俗的理解为Fast表示芯片速度快。
-
V Voltage 指得是芯片的工作电压。例如tt电压为1V ss的电压就是0.9V ff的电压就是1.1V
-
T Temperature 是指芯片工作的温度。例如tt的温度是0℃ or 25℃。高温就是125℃ 低温一般为-40℃
下表为不同工艺角情况介绍,根据需求选择对应Corner进行后仿真,一般并不需要跑全部corner。
Corner | 描述 | 时序 |
---|---|---|
wc:worst case slow | 低电压高温度慢工艺 | 一般情况下delay最大,setup差 |
wcl:worst case low temperature | 低电压低温度慢工艺 | 温度反转效应时delay最大,setup差 |
lt:low temperature或bc:best case fast | 高电压低温度快工艺 | 一般情况下delay最小,hold差 |
ml:max-leakage | 高电压高温度快工艺 | 温度反转效应时delay最小,hold差 |
tc:typical | 普通电压普通温度普通工艺 | 典型 |
1.1、sdf文件反标
2、后仿case选择
一般不会针对门仿新造 Case,而是采用原有的 Case 进行门仿。相较于 RTL 仿真,门仿跑的很慢,与设计讨论需要门仿Case。
门仿 Case 挑选的大原则为 Case 尽量短,能够覆盖关键 Datapath 及高风险区域,且 RTL 仿真能够 Pass。在以上原则的基础上,门仿 Case 需要覆盖以下几点:
- 完整的 Clock、Reset 初始化配置流程,Bootrom 最好也测一测
- 各个 Clock 频点、Power ON/OFF
- 寄存器访问
- 主要工作模式、典型功能 关键路径、异步路径、外部接口、数据流
- Mbist 等等
3、后仿编译选项
命令 | 释义 |
---|---|
+v2k | 编译支持Verilog—2001语法 |
-full64 | 在64位模式下编译设计,并创建一个64位可执行文件以在64位模式下进行仿真 |
-timescale = <time_unit> / <time_precision> | 如果只有一些源文件包含`timescale编译器指令,而那些未在vcs命令行上首先出现 , 则使用此选项为这些源文件指定时间标度 |
-sverilog | 编译支持SystemVerilog语法 |
+pulse_e / <数字> | 指定标记为错误,并为宽度小于或等于number参数指定的模块路径延迟百分比的任何路径脉冲驱动X |
+pulse_r / <数字> | 拒绝宽度小于模块路径延迟数百分比的任何脉冲 |
+transport_path_delays | 打开I / O路径的传输行为 |
-ntb_opts keyword_argument | 常用参数uvm,-ntb_opts uvm表示加载uvm库文件 |
-j<number_of_processes> | 指定用于并行编译的进程数。 j字符和数字之间没有空格 |
-negdelay | 允许采用 SDF 中的值对 IOPATH 及 IInterconnect 进行负延时反标,不加时负延时为 0 |
+neg_tchk | 支持负延时检查,带 SDF 门仿建议加此选项 |
-sdfretain | 在波形上显示 retain 信息 |
+maxdelays/mindelays | 器件延时采用 sdf 中的最大/小延时 |
+optconfigfile+filename | 添加跟上述 false_path 相匹配的 notimingcheck.cfg 来忽略无需时序检查的异步路径 |
+nocelldefinepli + 0/1/2 | 用于指定VPD文件在VPD文件中记录的有关celldefine编译器指令下定义的网络和寄存器的信息。 0 :使您能够记录在celldefine编译器指令定义的所有模块中或在使用-v或-y编译时选项指定的库中定义的所有模块中,转换时间以及网络和寄存器的值。1 :禁用记录在celldefine编译器指令定义的所有模块中的转换时间以及网络和寄存器的值。2 :禁用在celldefine编译器指令定义的所有模块中或在用-v或-y编译时选项指定的库中定义的所有模块中记录网络和寄存器的转换时间以及网络和寄存器的值,无论这些库中的模块是否在`celldefine编译器指令是否存在。 |