M1、VIEW综合:总线命名和位置和布线总线重构-Xilinx-AMD社区-FPGA CPLD-ChipDebug

M1、VIEW综合:总线命名和位置和布线总线重构

描述

关键词:EDIF,EDIFNETO,VIEW综合,总线引脚,NGD2VHDL

紧迫性:标准

当EDFF网表由VIEWLogic的EdfNeto编写时,所有总线信号
引脚扩展。个人信号和PIN名称由
扩展不包含任何特殊字符来分隔总线索引。
例如,一个名为B[3:0]的总线被翻译成4个信号:B3、B2、B1、B0。

NGD2VHDL只能在使用分隔字符的情况下重构矢量。
信号名称。没有定界符,结果是不可预测的。为了
例如,一个名为CaCe2[3:0]的总线将被夷平为CHACE23到CACEE20,
并可能重建为高速缓存[23∶20]。因此,这是不可取的。
在没有索引分隔符的情况下更改NGD2VHDL以重构向量。

一个更好的解决方案是VIEWLogic的EdfNeto编写总线分隔符。
或使用端口阵列结构。事实上,VIEW正在计划支持这一点。
WorkVIEW Office的未来版本中的功能。

解决方案

利用不同的测试向量进行事后和路径时序仿真
和不同的测试标准比功能仿真,因此用户是
已经负担了书写和维护多个测试台。它是
不幸的是,用户还需要用总线写测试台。
非总线实体。下面的例子将有助于
过程。

步骤1:在SaveWAVE的初始设置中定义库搜索顺序
VSLB.IN文件。而不是使用建议的用户文件.LIB文件
项目区域,定义两个库的前和后位置和路由VHDL。
例如,Funtual.Lab&Time.LIB,或Bay.Lab&Po.Lee。LIB。然后
在分析原始总线VHDL时,确保第一个用户库
是工作库,当分析第二个非总线VHDL时
用户库是工作库。当测试台实例化
顶级组件必须区分两个组件
相同的名称,但不同的端口结构。如果这些顶级组件是
分析到同一个库中,最近分析的将覆盖
实体已经在库中,即使它们有不同的体系结构。

步骤2:在TestObjist.VHDL文件中声明这两个库。例如:

库功能;

库计时;

库IEEE;

步骤3:在架构子句中同时包含组件声明
试验台架。实例化、驱动和测试这两个组件。

示例:通过该流获取8位寄存器:

源VHDL文件,Rig.VHD,通过VIEW综合编译生成
WRR/R. 1。在EdfNeto之后,ReG.EDN被创建并被带到Xilinx M1。
设计管理器。以文件Rev·V/VEα/XC400 0xE.NGD(用
当前版本和版本,并将其重命名为ReGIPPr.NGD。运行NGD2VHDL到
创建ReGIPPr.VHD。

由程序NGD2VHDL、版本M1.4.4生成的Xilinx VHDL
-日期:1976年8月06日13:25:03 1997
——设计文件:ReGuIPPr.NGD
-器件:XC400 0EX
ROC细胞—–
——配置单元的复位模型

库IEEE;
使用IEEE.STDYLogiCy1164.ALL;
使用IEEE.VITALL TimeIn。

实体ROC
泛型(StaseEnPATS:String:= *);
宽度:时间=0纳秒;
端口(O:输出Stdululgic=‘1’);
ROC的属性ValaleLe0.0:实体是真实的;
结束ROC;

ROC建筑
Rosiv V的属性VITALL 0:建筑是真实的;
开始
一枪:过程
开始
如果(宽度lt=0 ns)那么
断言虚假报告
“***错误:必须指定宽度的正值***”
严重失败;
其他的
等待宽度;
o’lt=“1”;用“1”改变
如果结束;
等待;
结束过程一枪;
结束摇滚;

ROC的配置
摇滚乐
结束;
结束;
细胞TOC
配置单元上的三态模型
库IEEE;
使用IEEE.STDYLogiCy1164.ALL;
使用IEEE.VITALL TimeIn。

实体TOC是
泛型(StaseEnPATS:String:=“*”);
端口(O:输出Stdululgic=‘0’);
TOC的属性VITALLIOLIOL0:实体是真实的;
结束TOC;

TOC的体系结构
TojIV的属性VITALLIOL0:建筑是真实的;
开始
一枪:过程
开始
等待;
结束过程一枪;
结束;

TOC的配置
为托克夫
结束;
末端CFGO;
库IEEE;
使用IEEE.STDYLogiCy1164.ALL;
库;
使用SimPrim.VCuthTunes;
使用SimPrim.VPACKAG.ALL;
实体注册是
端口(
重置:在STDYLogic中:=“x”;
Q7:输出STDYLogic;
Q6:输出STDYLogic;
Q5:输出STDYLogic;
Q4:输出STDYLogic;
Q3:输出STDYLogic;
Q2:输出STDYLogic;
Q1:输出STDYLogic;
Q0:输出STDYLogic;
D7:在STDYLogic中:=“x”;
D6:在STDYLogic中:=“x”;
D5:在STDYLogic中:=“x”;
D4:在STDYLogic中:=“x”;
D3:在STDYLogic中:=“x”;
D2:在STDYLogic中:=“x”;
D1:在STDYLogic中:=“x”;
D0:在STDYLogic中:=“x”;
CLK:在STDYLogic中:=“x”

结束寄存器;

Reg的体系结构
组件ROC
端口(O:输出);
端部元件;
组件TOC
端口(O:输出);
端部元件;
信号FPNYLCK,FPNYD0,FPNYD1,FPNYD2,FPNYD3,FPNYD4,FPNYD5,FPNYD6
,FPNYD7,FPNYQ0,FPNYQ1,FPNYQ2,FPNYQ3,FPNYQ4,FPNYQ5,FPNQQ6,
FPNYQ7,FPNY复位,GSR,VLuyqQ1188GSRIVor,VLuyqQ11Y1GGSRIOR,或
VLuqq11Y4GrSuor,VLuyqQ11Y3GGSRIOR,VLuyqQ11Y2GGSRIOR,VLuyqQ11Y5GGSRIOR或
VLuqq1Y66GrSuor,VLuqq11y7GrSuor,QY1I16GTSUTI,GTS,QY1I26GTSUTI,
QY1I17GTSUTI,QY1I23 GTSUTI,QY1I22GTSUTI,QY1I32 GTSUTI,
QY1I33,GTSUTI,QY1I19GTSUTI,QY1I16GTS3TIL2IIN,QY1I26GTSGTIL2I2IN
,QY1I17GTSGTILY2IIN,QY1I23 GTS3 TILI2IVIN,QY1I22GTS3TIL22IVIN,
QY1I32、GTS3、TIIL2IIN、QY1I33、GTS3TIL2IIN、QY1I19GTSGTIIL2IIN、GND,
VDD,NGD2VHDLXXY5Y0:STDYLogic;
开始
QY1I7: XY-BUF
端口映射(i=& gt;d2,o=& gt;fpnyd2);
QY1I33:XYBUF
端口映射(i=& gt;fpnnq6,o=& gt;qy1i3q-gtssi-iii);
GNDY5: x0-零
端口映射(O= & Gt;NGD2VHDLXXY5Y0);
VLUQYQY1Y8: XYFF
端口映射(i=& gt;fpnyd0,CLK=& gt;fpnY-CLK,CE=& gt;vDD,SET=& gt;GND;
RST=& gt;vLuqq1l88GrSuor或O= & gt;fpnqq0);
QY1I45:XY-CKBUF
端口映射(i=& gt;CLK,o=& gt;fpnN-CLK);
QY1I12: XY-BUF
端口映射(i=& gt;d3,o=& gt;fpnyd3);
QY1I15: XYBUF
端口映射(i=& gt;d4,o=& gt;fpnyd4);
QY1I16: XY-BUF
端口映射(i=& gt;fpnnq0,o=& gt;qy1i16gGSt3);
QY1I17: XY-BUF
端口映射(i=& gt;fpnnq4,o=& gt;qy1i17ggst3);
QY1I18: XYBUF
端口映射(i=& gt;d5,o=& gt;fpnyd5);
QY1I19: XYBUF
端口映射(i=& gt;fpnyq5,o=& gt;qy1i19ggst3);
QY1I22: XY-BUF
端口映射(i=& gt;fpnnq2,o=& gt;qy1i22gtssi3);
QY1I23:XYBUF
端口映射(i=& gt;fpnnq3,o=& gt;qy1i23μgst3);
QY1I26: XY-BUF
端口映射(i=& gt;fpnnq1,o=& gt;qy1i26ggst3);
VLUQYQY1Y1:XYFF
端口映射(i=& gt;fpnn.d7,CLK=& gt;fpnY-CLK,CE=& gt;vDD,SET=& gt;GND;
RST=& gt;vLuqq11y1gGSror或O= & gt;fpnqq7);
QY1I29:XYBUF
端口映射(i=& gt;d7,o=& gt;fpnn.d7);
QY1I30: XYBUF
端口映射(i=& gt;d6,o=& gt;fpnn.d6);
QY1I32:XYBUF
端口映射(i=& gt;fpnnq7,o=& gt;qy1i3xgtsg-三);
VLUQYQY1Y4: XYFF
端口映射(i=& gt;fpnyd4,CLK=& gt;fpnY-CLK,CE=& gt;vDD,SET=& gt;GND;
RST=& gt;vLuqq11y4GrSuor或O= & gt;fpnqq4);
QY1I4: XY-BUF
端口映射(i=& gt;d0,o=& gt;fpnyd0);
QY1I40: XYBUF
端口映射(i=& gt;复位,o=& gt;fpnnRead);
VLUQYQY1Y3:XYFF
端口映射(i=& gt;fpnyd5,CLK=& gt;fpnY-CLK,CE=& gt;vDD,SET=& gt;GND;
RST=& gt;vLuqq11y3GrSuor或O= & gt;fpnqq5);
VLUQYQ1LY2: XYFF
端口映射(i=& gt;fpnn.d6,CLK=& gt;fpnY-CLK,CE=& gt;vDD,SET=& gt;GND;
RST=& gt;vLuqq11y2GrSuor或O= & gt;fpnnq6);
VLUQYQY1Y5: XYFF
端口映射(i=& gt;fpnyd3,CLK=& gt;fpnY-CLK,CE=& gt;vDD,SET=& gt;GND;
RST=& gt;vLuqq11y5GrSuor或O= & gt;fpnnq3);
VLUQYQ1LY6: XYFF
端口映射(i=& gt;fpnyd2,CLK=& gt;fpnY-CLK,CE=& gt;vDD,SET=& gt;GND;
RST=& gt;vLuqq1l66GrSuor或O= & gt;fpnqq2);
VLUQYQ1LY7: XYFF
端口映射(i=& gt;fpnyd1,CLK=& gt;fpnY-CLK,CE=& gt;vDD,SET=& gt;GND;
RST=& gt;vLuqq11y7GrSuor或O= & gt;fpnqq1);
QY1I6: XY-BUF
端口映射(i=& gt;d1,o=& gt;fpnyd1);
VDDYONE:XYONE
端口映射(O= & Gt;VDD);
VLuqq1Y88GGSRORY48:XYOR2
端口映射(i0= & gt;fpn-重置,i1= & gt;gsR,o= & gt;vluqq11y8gssior);
VLuqq11Y1GsRyOR49:XYOR2
端口映射(i0= & gt;fpn-重置,i1= & gt;gsR,o= & gt;vluqq11y1gsRuor);
VLuqq11Y4GrSrOR50:XYOR2
端口映射(I0=& gt;fpnnRead,i1= & gt;gsR,o=& gt;vluqq11y4gsRuor);
VLuqq11Y3GrSrOR551:XYOR2
端口映射(I0=& gt;fpnnRead,i1= & gt;gsR,o= & gt;vluqq11y3gsRuor);
VLuqq11y2GGSROR52: XYOR2
端口映射(I0=& gt;fpnnRead,i1= & gt;gsR,o= & gt;vluqq11y2gsRuor);
VLuqq11y5GrSrOR53:XYOR2
端口映射(I0=& gt;fpnnRead,i1= & gt;gsR,o=& gt;vluqq11y5gsRuor);
VLuqq1Y66GGSROR54:XYOR2
端口映射(I0=& gt;fpnnRead,i1= & gt;gsR,o=& gt;vluqq11y6gsRuor);
VLuqq11y7GrSrOR555:XYOR2
端口映射(I0=& gt;fpnnRead,i1= & gt;gsR,o=& gt;vluqq11y7gsRuor);
QY1I16GTSGTILY56:XH-TIL
端口映射(i=& gt;qy1i16ggst3,o=& gt;q0,CTL=& gt;qy1i16gtsgTrimi2yIn);
QY1I26GTSGTIILY57:XY-TIL
端口映射(i=& gt;qy1i26ggts-三,O=& gt;q1,CTL=& gt;qy1i26gtsgTrimi2yIn);
QY1I17GTSGTILY58: XH-TIL
端口映射(i=& gt;q11i17ggsTr3,O=& gt;q4,CTL=& gt;qy1i17ggtsTrI22yIn);
QY1I23 GTS3 Trime59: XyTi
端口映射(i=& gt;qy1i23,gtsTr3,O=& gt;q3,CTL=& gt;qy1i23,gtsg-三重2iNv);
QY1I22GTS3TIL6060:XY-TIL
端口映射(i=& gt;qy1i22gtssi3,o=& gt;q2,CTL=& gt;qy1i22gtssTrI22iIn);
QY1I32 GTS3 Trime61:XyTi
端口映射(i=& gt;qy1i32,gtsTr-三,O=& gt;q7,CTL=& gt;qy1i3xgtsgTri22yIn);
QY1I33 GTS3 Trime62: XyTi
端口映射(i=& gt;qy1i33,gtsTr-三,O=& gt;q6,CTL=& gt;qy1i33,gtsg-三重2iNv);
QY1I19GTSGTILY63:XY-TRI
端口映射(i=& gt;qy1i19ggsTr3,O=& gt;q5,CTL=& gt;qy1i19gtsxTri22iNv);
QY1I16GTS3TILI2IVIN 64:XY-IV
端口映射(i=& gt;gts,o=& gt;qy1i16gtsxTrimi2yIn);
QY1I26GTSGTILI2IIN UNIX65:XY-IV
端口映射(i=& gt;gts,o=& gt;qy1i26gtsgTrimi2yIn);
QY1I17GTS3TILY2IVIN 66:XY-IV
端口映射(i=& gt;gts,o=& gt;qy1i17ggts3Tri2xIn);
QY1I23 GTS3TrII2IVIN 67:XY-IV
端口映射(i=& gt;gts,o=& gt;qy1i23,gtsgTrimi2yIn);
QY1I22GTS3TILI2IVIN 68:XY-IV
端口映射(i=& gt;gts,o=& gt;qy1i22gtsgTrimi2yIn);
QY1I32 GTS3TILI2IVIN 69: XY-IV
端口映射(i=& gt;gts,o=& gt;qy1i3xgtsgTrimi2yIn);
QY1I33 GTS3TIL2IVIN 70:XY-IV
端口映射(i=& gt;gts,o=& gt;qy1i33,gtsgTrimi2yIn);
QY1I19GTS3TILY2IVIN 71: XY-IV
端口映射(i=& gt;gts,o=& gt;qy1i19gtsxTrimi2yIn);
GNDY72: x0-零
端口映射(O=& GT;GND);
ROC:ROKGNGD2VHDL
端口映射(O=& Gt;GSR);
TOGNGD2VHDL:TOC
端口映射(O=& GT;GTS);
端部结构;

驱动这两种仿真的测试平台在这里被注释:

RG.VHD中8位寄存器测试台的实例
——Philip Labee,Xilinx公司,1997年7月29日
——
————Test-Boo.VHD

库功能;
库计时;
库IEEE;
库综合体;
使用IEEE.STDYLogiCy1164.ALL;
使用VHDL综合器。

实体ReGyTestRestin是Read检验;
—–

ReGuestTest:结构测试

端口之前的组件ReGig(
重置:在STDYLogic中;
CLK:在STDYLogic中;
D:在STdLogLogic向量(7下降到0);
问:出StdLogLogic向量(7下降到0);
端部元件;

端口后的组件ReGIX(
重置:在STDYLogic中;
Q7:输出STDYLogic;
Q6:输出STDYLogic;
Q5:输出STDYLogic;
Q4:输出STDYLogic;
Q3:输出STDYLogic;
Q2:输出STDYLogic;
Q1:输出STDYLogic;
Q0:输出STDYLogic;
D7:在STDYLogic中;
D6:在STDYLogic中;
D5:在STDYLogic中;
D4:在STDYLogic中;
D3:在STDYLogic中;
D2:在STDYLogic中;
D1:在STDYLogic中;
D0:在STDYLogic中;
CLK:在STDYLogic中;
端部元件;

对于FrimeSimule:ReGube在使用实体函数之前。
对于PPROFUNC:ReGuin使用实体定时。

信号ByTEXIN,BytEXOUT:STDYLogLogic向量(7下降到0);
信号BIN 7、BIN 6、BIN 5、BIN 4、
BIN 3,BIN 2,BIN 1,BIN 0:STDYLogic;
信号BOTY7,BoTy6,BoTy5,BoTy4,
BoTy3,BoTy2,BoTy1,BooTo0:STDyLogic;
信号RST,时钟:STDYLogic;
信号启动停止:STDYLogic;

开始
函数映射:端口映射之前的ReGig(RST,时钟,BytEyin,ByTeExOUT);
PPROFUNC:ReGIX后端口映射(RST,BooTy7,BoTo6,BoTy5,BoTy4,
BoTy3,BoTy2,BoTy1,BooTy0,
宾尼7,宾尼6,宾厄5,宾尼4,
宾尼3,宾厄2,宾厄1,宾厄0,钟);

RST和lt=“0”,“1”在10 ns之后,“0”在20 ns之后;
时钟和lt=“0”,“1”在100 ns之后,“0”在200 ns之后;
在220纳秒之后STARTHYSTORT=“1”,“0”;

刺激过程:(启动停止)
开始
ByTEXIN & lt=“01001000”;
如果(StastStute= ‘0’和StestOpTest’事件)
断言(ByTEXIN=ByTyOXOUT)
报告“功能不匹配”严重警告;

断言错误
报告“完成”严重警告;
如果结束;
结束过程刺激;

刺激过程:(启动停止)
开始
宾尼7& lt;=“0”;宾尼6和lt=“0”;宾尼5和lt;=“0”;宾尼4和lt;=“0”;
BiNi3<=“0”;宾尼2和lt;=“0”;宾尼1和lt;=“0”;宾尼0和lt;=“0”;

如果(StastStute= ‘0’和StestOpTest’事件)
断言(BiNi7= BooTy7和BiNi6= BoTo.6和BiNi5= BoTy5和BiNe4=BoTy4)
和BiNi3= BoToS3和BiNi2= BoToS2和BiNi1= BoToS1和BiNi0= BoToS0)
报告“岗位和布线功能不匹配”严重警告;

断言错误
报告“完成”严重警告;
如果结束;
结束过程刺激;

结束测试;

-在TestBooList.VHD中实例化的8位寄存器的示例
——Philip Labee,Xilinx公司,1997年7月29日
——
————————————————————————

库IEEE;
库综合体;
使用IEEE.STDYLogiCy1164.ALL;
使用VHDL综合器。

实体注册是
端口(复位,CLK:在STDYLogic中;
D:在STdLogLogic向量(7下降到0);
问:出StdLogLogic向量(7下降到0);
结束寄存器;
—–
Reg的体系结构行为
开始
进程(CLK,复位)
开始
如果(重置=‘1’)
“00000000”;
然后,ELSIF(CLK=‘1’和CLK’事件)
q=D;
如果结束;
结束过程;
结束行为;

请登录后发表评论

    没有回复内容