在某些情况下,手动增加或控制网络延迟是有用的,以提高保持时间或调整两个网之间的偏差。为了向网络添加延迟,需要向网络添加一个或多个缓冲器。还需要添加属性和偏好,以确保在合成和映射过程中缓冲区不会被移除。
下面是示例代码:
在Verilog中:
模块ADDIDEL(DIN,DOUT);
输入DIN;
输出输出;
线BUF1/*合成SythCube=1 NoMeGe= =“*//;
线Buf2/*合成SythRead=1 NoMeGe= =“*//;
Buffa DEL1(.Z(BUF1),A(DIN))/*合成LOC=“R3C3d”*/;
BuffaDel2(.Z(BuF2),A(BuF1))/*合成LOC=“R3C4D”*/;
指定DOU= BUF2;
终端模块
模块BUFBA(Z,A);
输出Z;
α输入A;
终端模块/缓冲器
在VHDL:
图书馆IEEE;
使用IEEE.STDYLogiC1164。
使用IEEE.STDLogLogic UNSIGNED;
实体AdjdIDEL是
端口(DIN):在STDYLogic中;
第二类:
结束实体AdjdEL;
AdjdEL的体系结构RTL
组件BUFBA
端口(
第二类:STD逻辑;
αz z:Out-StdLogic
;
端部元件;
信号BUF1:STDYLogic;
信号BUF2:STDYLogic;
属性同步保持:布尔;
BUF1、BUF2:信号的属性同步保持正确;
属性名称:字符串;
BUF1、BUF2信号的属性名为“”;
属性LOC:字符串;
DEL1的属性LOC:标签为“R3C3D”;
DEL2的属性LOC:标签是“R3C4D”;
开始
Del1:BUFBA端口映射(A= & Gt;DIN,Z=& Gt;BUF1);
Del2:BUFBA港口地图(A=& Gt;BUF1,Z= & GT;BUF2);
DUF&L.BUF2;
终端体系结构RTL;
在代码中,模块“BUFBA”是缓冲区的格子基元。
“同步保持”属性是在优化和合成过程中保持指定净完好的综合属性。
“NoMeGe”偏好是防止网络在MAP中被吸收为逻辑块的格偏好。
LOC首选项用于锁定缓冲器的位置。
在上面的示例中,添加了两个缓冲区。所使用的缓冲器的数量取决于需要添加多少延迟。锁定缓冲器的位置允许路由延迟控制的一些措施。两个缓冲器的位置越接近,路由延迟越小。真正的延迟可以在位置和路径跟踪报告中找到,参见下面的示例:
名字 | 扇出 | Delay(NS) | 现场 | 资源 |
---|---|---|---|---|
帕迪亚德尔 | — | 零点五零八 | C4.PAD | C4.PADI DIN |
路线 | 一 | 零点九一一 | C4.PADDI | R3C3D.C0 |
科托菲德尔 | — | 零点一七九 | R3C3D.C0到 | R3C3D.F0 SLICE1 |
路线 | 一 | 零点四零九 | R3C3D.F0到 | R3C4D.D0BUF1 |
科托菲德尔 | — | 零点一七九 | R3C4D.C0到 | R3C4D.F0 SLICE0 0 |
路线 | 一 | 零点七五三 | R3C3D.F0到 | C3.PADDO BUF2 |
多巴德德尔 | — | 二点三五九 | C3.PADDO | C3 Pad Dout |
上述资源信息中的SLICEH1和SLICEY0包含两个缓冲器(即,BUF1和BUF2)。并且在上述延迟信息中添加相应的LUT和路由延迟。
没有回复内容