4.1I XC400 0XL/斯巴达PAR路由器复制寄存器作为“输出到输出路由TURUS”。-Xilinx-AMD社区-FPGA CPLD-ChipDebug

4.1I XC400 0XL/斯巴达PAR路由器复制寄存器作为“输出到输出路由TURUS”。

描述

关键字:复制、复制、触发器、寄存器、FF、同步、异步、路由、路由

紧迫性:标准

一般描述:
PAR有时会复制触发器来驱动单独的网段。这被认为是一个“输出到输出路径”。当输入网络是异步的时,这可能是一个问题,因为触发器有可能在输入改变时被计时,并且两个FFS可以以不同的状态结束。

这个问题影响所有4000个派生部分,包括斯巴达和斯巴达XL。

解决方案

下面的Perl脚本可以用来检测XC400 0x*设计中重复的寄存器的出现。被路由的.NCD文件用作命令行参数。脚本运行时必须存在一个有效的Xilinx环境。可能需要将第一行修改到系统的正确位置PURL5。

注意:已经发现,在CLBs包含多个路由TURUS的情况下,该脚本不能给出准确的结果。XDL的修补程序可用以更正。这个。见(赛灵思解答13636)详情。

样品输出:
SWISX〔186〕DuPuffLop.P.Test.NCD

寄存器已被复制到网络“完成”,这是由CLB“Actuvion”在站点CLBL R9C14驱动:

DupFuop.PL:

哎呀!/urr/Studio/bin /PrL5

@ NCDL根=分裂(/\,$ARGV〔0〕);
‘xdl -nopiPS-nCD2xdl $ nCDL根[0 ];

打开(文件)“$NCDLRORT ROOT(0).XDL);
而(& lt;文件& gt){
乔姆斯;
@字段=拆分(/\s+/);
如果($field(0)eq”in ST“& & and $$字段[2 ] eq”\“CLB \”){
$ CopyNox= $字段〔1〕;
$SITEYNAMED=$字段〔6〕;
}

如果(/RouthUng-XQ-YQ/){

打开(FILE2,$$NCDLRORT ROOT(0).XDL);
而(& lt;文件2和gt){
乔姆斯;
@字段DS2=分裂(/s+/);
如果($Fields2(0)eq“net”){
$NET= $FELDS2(1);
}
如果($Fields2(1)eq”超出“& & & $$FELDS2(2)EQ $ CopyNoNo.&($FELDS2)〔3〕EQ〕YQ”$$Fields2(3)EQ“XQ”){
$NETYNAME= $Net;
}
}

打印“\n”;
打印一个寄存器已被复制为$NET$NEX,\n;
打印,它是由CLB $CopyN名字在站点$SITEYNAMEST.\N驱动的;
打印“\n”;

}
}

出口;

已经创建了一个环境变量(CMuBuffDEXXQYQ),它禁止使用CLB触发器输出来输出到输出路由TURUS。

设置变量:

工作站:
SqEnv CM-ExpuldEXXQYQ

个人计算机:
设置CMuBuffDEXXQYQ=真

可以通过使用映射约束(BLKNM、RLoC等)来防止针对特定触发器的复制,以确保FF总是用另一FF填充到CLB中。如果CLB中没有未使用的FF BEL,则复制不会发生。这项工作比环境变量的工作更可取,因为它不妨碍所有触发器的复制,而只是关键触发器的复制。

请登录后发表评论

    没有回复内容