#**Error:(vsim-SDF-3894)modelsim_test_v.sdo:CompiledSDFfilewasnotfound.
(2022-10-19 02:05:36)| 分类: 硬件 |
sdo文件的重复加载和存放位置。在QuartusII中可以指定生成布局布线后的网表及对应的SDF文件。生成的网表文件以.vo或.vho为类型,SDF文件以.sdo为类型。在完成对.vo或.vho文件的编译后,就可以按照上面的例子给出的命令格式启动时序仿真。这里,假设SDF文件保存在Modelsim的仿真工作目录下。
在加载过程中,会看到如下的打印信息:
...
# Loading
instances from myasic_8_1200mv_85c_v_slow.sdo
# Loading
instances from myasic_8_1200mv_85c_v_slow.sdo
...
# Loading
timing data from myasic_8_1200mv_85c_v_slow.sdo
# Loading
timing data from myasic_8_1200mv_85c_v_slow.sdo
...
# ** Note:
(vsim-3587) SDF Backannotation Successfully
Completed.
# Time: 0
ps Iteration: 0 Region:
/testbench File: testbench.v
在上述过程中,SDF文件被加载了两次。第一次是按照vsim命令指定的参数进行的,第二次是按照.vo文件中的
// synopsys
translate_off
initial
$sdf_annotate("myasic_8_1200mv_85c_v_slow.sdo");
// synopsys
translate_on
语句进行的。
加载两次并不是我们的本意。采用vsim命令或者.vo文件中的$sdf_annotate都可以实现延迟参数的载入。不过,由于vsim命令方式支持更多的配置参数,建议注释掉.vo中的$sdf_annotate语句,按照vsim命令中更具体灵活的参数进行。
在上述的两种加载方式中,SDF文件的存放位置都是相对于Modelsim当前工作目录的相对路径。如果把myasic_8_1200mv_85c_v_slow.sdo文件存放在工作目录下的netlists目录中,上述的vsim命令和$sdf_annotate语句就需要修改为:
vsim -sdfmax
/testbench/dut=netlists/myasic_8_1200mv_85c_v_slow.sdo
testbench
和
// synopsys
translate_off
initial
$sdf_annotate("netlists/myasic_8_1200mv_85c_v_slow.sdo");
// synopsys
translate_on
如果没有注释掉.vo文件中的$sdf_annotate语句,就需要在vsim命令和.vo文件中同步更新SDF文件路径。如果遗忘了修改.vo文件,只修改了vsim命令参数,就会造成$sdf_annotate语句加载失败,产生错误,仿真无法进行下去:
...
# ** Error:
(vsim-SDF-3894) myasic_8_1200mv_85c_v_slow.sdo: Compiled SDF file
was not found.
...
# ** Error:
(vsim-7) Failed to open SDF file "myasic_8_1200mv_85c_v_slow.sdo"
in read mode.
# No such
file or directory. (errno = ENOENT)
# ** Error:
(vsim-SDF-3445) Failed to parse SDF file
"myasic_8_1200mv_85c_v_slow.sdo".
# Time: 0
ps Iteration: 0 Region:
/testbench File: testbench.v
这也是我建议注释掉.vo文件中$sdf_annotate语句的原因。
语句进行的。
和

加载中…