问题描述
用于PCI Express的Block Plus端点应该在仿真中以大约250微秒的速度链接(trn_lnk_up_n = 0)。
已经发现,在某些情况下,链接可能需要大约400微秒。
注意:如果您使用的是v1.9.1,请参阅(Xilinx答复32031)
解决/修复方法
在仿真电气空闲时,GTP / GTX仿真模型已更新为不驱动X.
使用10.1sp3或更高版本时,没有必要包含此解决方法。
但是,如果使用Verilog仿真x1内核,则board.v文件中可能存在错误,可能会导致某些问题。
从v1.7 Core版本开始,Verilog版本更新了代码,以解决驱动X的GTP / GTX模型的原始问题。
但是,x1 board.v文件不正确,应进行修改以减少仿真时间。
当前文件包含以下分配:
.pci_exp_rxn(((cor_pci_exp_txn [0] === 1’b1)&&(cor_pci_exp_txp [0] === 1’b1))?1’bx:cor_pci_exp_txn [0]),
.pci_exp_rxp(((cor_pci_exp_txn [0] === 1’b1)&&(cor_pci_exp_txp [0] === 1’b1))?1’bx:cor_pci_exp_txp [0])
这些作业应更改为:
.pci_exp_rxn(((cor_pci_exp_txn [0] === 1’bx )&&(cor_pci_exp_txp [0] === 1’bx ))? 1’b1 :cor_pci_exp_txn [0]),
.pci_exp_rxp(((cor_pci_exp_txn [0] === 1’bx )&&(cor_pci_exp_txp [0] === 1’bx ))? 1’b1 :cor_pci_exp_txp [0])
不更改x1 board.v文件中的这些行可能会导致比正常仿真时间更长的时间。
使用第三方BFM
从GTP [X] RESET置为无效后,GTP / GTX模型仍将驱动总线上的X,直到RESETDONE置位,如图所示。
这在sys_reset_n deasserts后立即发生。
如果这会导致您的BFM模型出现问题,那么可能会将其保持在复位状态,直到RESETDONE断言或向上面添加类似的解决方案,直到核心实例化以及BFM和DUT之间的连接。
的Verilog
这是Verilog的一个例子。
将其复制为使用中的多个通道。
BFM_INST:MY_BFM(
.BFM_rxn(((cor_pci_exp_txn === 1’bx)&&(cor_pci_exp_txp === 1’bx))?1’b1:cor_pci_exp_txn),
.BFM_rxp(((cor_pci_exp_txn === 1’bx)&&(cor_pci_exp_txp === 1’bx))?1’b1:cor_pci_exp_txp),
等等…
);
VHDL
以下是VHDL x1的类似示例:
signal cor_pci_exp_txn_fix:std_logic_vector;
signal cor_pci_exp_txp_fix:std_logic_vector;
BFM_INST:MY_BFM端口图(
BFM_rxn => cor_pci_exp_txn_fix,
BFM_rxp => cor_pci_exp_txp_fix,
等等…
);
进程(cor_pci_exp_txn,cor_pci_exp_txp)
开始
if(((cor_pci_exp_txn =’X’)或(cor_pci_exp_txn =’U’))和((cor_pci_exp_txp =’X’)或(cor_pci_exp_txp =’U’)))
cor_pci_exp_txn_fix <=’1′;
cor_pci_exp_txp_fix <=’1′;
其他
cor_pci_exp_txn_fix <= cor_pci_exp_txn;
cor_pci_exp_txp_fix <= cor_pci_exp_txp;
万一;
结束过程;
注意:这不会影响Xilinx DSPORT的仿真,因为在此期间DSPORT仍然会经历其复位序列。
修订记录
03/02/2009 – 更新以反映固定的GTP / GTX模型和第三方BFM信息。
2008年3月23日 – 更新以反映10.1版本的v1.6.1。
11/14/2007 – 添加了VHDL解决方案。
2007年9月18日 – AR的首次发布。
没有回复内容