问题描述
当运行接收器和源网表的NGDBuild仿真时,不使用COE文件中指定的日历的初始内容。
使用gen_sim_models脚本生成后NGDBuild仿真文件。
解决/修复方法
解决/修复方法1:
在SPI-4.2版本中,可以在CORE Generator系统操作期间初始化Sink和Source日历。初始化日历时,CORE Generator系统将日历序列(在COE文件中指定)转换为实现约束,并将这些约束放在UCF文件中(有关详细信息,请参阅SPI-4.2用户指南,日历COE文件格式) )。在实现期间,UCF日历约束用于初始化具有所需序列的Sink和Source日历块RAM。
通过向UCF文件添加UCF日历约束,Sink和Source核心的Block RAM现在将包含正确的日历序列。但是,必须手动更新Sink和Source内核的门级仿真文件以反映此编程。接收器和源核心的门级仿真文件由gen_sim_models脚本生成,可在以下目录中使用:
<PROJ> / <COMPONENT_NAME> /测试/ VHDL
要更改仿真模型以匹配物理实现,必须执行以下步骤。请注意,以下步骤仅适用于SPI-4.2版本中提供的接收器或源门级仿真模型(即<component_name> _pl4_snk_top.vhd或<component_name> _pl4_src_top.vhd或类似文件。如果整个环回设计是运行NGDBuild,或整个用户设计通过NGDBuild运行,然后运行NetGen,然后此门级网表将包含正确初始化的日历序列,不需要进一步的步骤。)
1.生成或修改包含Sink和Source日历初始化值的顶级UCF文件。下面针对SPI-4.2内核显示了4通道Sink内核配置的示例(请注意,未使用的条目可以初始化为0,也可以不使用,这也将值默认为0):
INST?<component_name> _pl4_snk_top0 / U0 / cal0 / CalRAM / BlockRam?
INIT_00 = 00000000000000000000000000000000000000000000000000000000000003020100;
2.将UCF日历约束复制到名为与SPI-4.2 Core ngc文件同名的临时UCF文件中。例如,如果生成的接收网表是ch4_pl4_snk_top.ngc,则应使用名称ch4_pl4_snk_top.ucf创建新的UCF。然后应将pl4_wrapper.ucf的日历初始化部分复制到此新的UCF文件中,并且顶级实例名称(<component_name> _pl4_snk_top0 /用于Sink Core,<component_name> _pl4_src_top0 /用于源Core)需要除去。对于上面的示例,将删除?ch4_pl4_snk_top0 /“,以便文件显示为:
INST?U0 / cal0 / CalRAM / BlockRam?
INIT_00 = 00000000000000000000000000000000000000000000000000000000000003020100;
3.验证SPI-4.2核心网表和相应的新UCF文件是否在同一目录中,然后运行NGDBuild:
> ngdbuild ch4_pl4_snk_top
4.生成门级仿真网表。这是通过运行NetGen完成的,如下所示:
> netgen -sim -ofmt vhdl -xon false ch4_pl4_snk_top.ngd
5.生成的门级仿真网表将包含初始化的日历加载逻辑。使用NetGen的输出替换位于“<proj> / <component_name> / test / vhdl”目录中的门级网表(由gen_sim_models脚本创建)。
没有回复内容