Lattice Diamond调用ModelSim布线后时序仿真SDF实例匹配报错问题
报错核心原因
SDF反标时的实例层次路径不匹配:
你当前vsim命令中-sdfmax /genericIOSatelite_TB/DUT0=xxx.sdf的作用是将SDF内定义的所有实例路径映射到测试台的DUT0实例下,即SDF中写的INSTANCE SLICE_303,ModelSim会去/genericIOSatelite_TB/DUT0/SLICE_303路径下查找对应实例。出现报错是因为实际层次路径和预期不匹配,最常见的情况是Lattice导出的VO时序网表自带一层顶层模块结构,SLICE_303的实际完整路径多了一层顶层模块名前缀,导致路径匹配失败。
解决方案
按优先级依次尝试:
- 修改
vsim命令的SDF反标路径,补全VO网表的顶层模块前缀。首先查看VO网表第一行的module定义获取顶层模块名,假设模块名为genericIOSatelite,就将-sdfmax参数修改为:
-sdfmax /genericIOSatelite_TB/DUT0/genericIOSatelite=C:/Users/jonas/OneDrive/Projects/ModelRailway/GenericJMRIdecoder/hardware/Satelites_CRC_2/impl1/genericIOSatelite_impl1_vo.sdf
- 若仍有同类可屏蔽报错,在
vsim命令后追加参数跳过非致命报错,保证仿真正常运行:-sdfnowarn +ignore_initial_delays -nowarn SDF-3250 - 确认器件库链接完整,编译VO网表时追加Diamond安装路径下对应器件的仿真库参数,示例如下(路径替换为你本地Diamond的实际安装路径):
vlog -v C:/lscc/diamond/3.12/cae_library/simulation/verilog/machxo2/*.v +incdir+C:/Users/jonas/OneDrive/Projects/ModelRailway/GenericJMRIdecoder/hardware/Satelites_CRC_2/impl1 -work work "C:/Users/jonas/OneDrive/Projects/ModelRailway/GenericJMRIdecoder/hardware/Satelites_CRC_2/impl1/genericIOSatelite_impl1_vo.vo"
- 后续需要给3个DUT同时加时序反标时,给每个DUT实例各加一条
-sdfmax参数即可。
133MHz时钟时序验证补充建议
- 仿真前先在Lattice Diamond中完成全量时序分析,解决所有建立/保持时间违例后再跑仿真,避免亚稳态干扰功能验证
- 仿真时仅添加必要观测信号到波形窗口,可大幅降低仿真耗时
内容的提问来源于stack exchange,提问作者Jonas
相关产品推荐
相关产品推荐

