EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2023-5-17 09:07 编辑
% ?2 r" y% ~2 a" K l) ?% ~) b
. H7 U: Q ^0 u0 ?4 B; S1 t; x( K8 V, m4 [/ I6 s
& `1 f' E1 g7 U% A) g0 G随着FPGA设计复杂程度越来越高,芯片内部逻辑分析功能显得越来越重要。硬件层次上的逻辑分析仪价格十分昂贵,而且操作比较复杂。目前,FPGA芯片的两大供应商都为自己的FPGA芯片提供了软件层面上的逻辑分析仪,可以帮助我们在线分析芯片内部逻辑。而且操作简单方便,但是往往因为某些原因,有些信号在综合的时候就会被优化掉,就可能会导致我们的设计失败,当然在为逻辑分析仪添加观察信号的时候也无法找到该信号。从而对设计、调试人员的工作带来一定的不便。下面就分别以Xilinx公司的逻辑分析仪ChipScope和Altera公司的SignalTap做以下总结:
0 ?& m1 }* q# t& Y+ }
0 G) k, K% \# `/ e( K( e一、使用Xilinx公司的ChipScope9 q! N9 f/ L6 g$ N, n. `/ u- l8 k+ _
9 R5 I8 z) z; [# a(1) 对于reg型信号,如果被ISE优化掉,一般有可以把这个信号和其他没有被优化的信号进行“与”、“或”等操作,这样就可以达到观察信号的目的。
# f- Y8 y( x# U" F& w( w8 D( y* p, ySynplify Pro对wire、reg类型的信号有着不同的综合属性。
3 L% b3 m5 E6 K2 S9 U9 x0 ^ L: Q% C
! E2 R! P `$ k. i, Y
2 z0 H5 f( I2 d% k$ m
: T! @8 r! _3 E7 P$ G. bAltera自带的综合器为了防止某些信号综合器优化掉,也有自己的一套综合约束属性。 / k8 s/ a+ B& A% a' X- U% ~
+ D" Q2 a+ |* d1 j
( i9 V8 k& w$ b跟reg相关的综合属性,除了/*synthesis noprune*/可用,还有一个/*synthesis preserve*/可用 /*synthesis noprune*/ 避免Quartus II优化掉output 型的reg信号。
1 ]& N# Q" @; F/ [6 t8 x& U同时单独的reg信号也可以: (*preserve*) reg [3:0] cnt;防止被优化掉。
4 b! q8 f; S" }8 ~* p 3 H+ z5 j+ U3 t( T/ f
对于wire型信号来说,要想观察此类信号,Altera综合器提供了/*synthesis keep*/ 综合属性。如 wire [7:0] Cnt /*synthesis keep*/; 对于Quartus II 9.0以后的版本也可以使用(“keep”) wire [7:0] Cnt ;的写法。 0 {% ^' B4 j8 q& V8 R2 ?
( *synthesis, probe_port,keep *) 即可,这种方法同时适应于wire和reg型信号类型。
7 |& m& O1 }* k: T- [% E% P! N2 W: D$ Y2、使用Synplify Pro综合
) F r& X* Y: Z; U1 V9 q6 J( K d* Q) C% e, z) X. @) k
1、以上的方法也不一定是全部都可以使用,有时候因为版本不对应就会导致信号依然会被优化掉。不过经过轮询之后发现,ISE 12.3以后的版本、Quartus II 9.0之后的版本、Synplify Pro 9.0.1以后的版本都可以使用。 4 o, V: R( _& A& B/ Z" B% f
2、一般情况下,信号经常被优化掉,还是与代码风格或者逻辑设计有冗余有关的,所以还是应该尽量提供代码质量。在不能解决的时候再添加综合约束。 0 R( A( m I* R S
|