EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2023-5-17 09:07 编辑 H: m3 X% @, b0 u. c
7 M" b9 N9 e! {7 p
2 {, o: y+ i6 R; A
7 _8 {6 c2 Y) }8 o! l随着FPGA设计复杂程度越来越高,芯片内部逻辑分析功能显得越来越重要。硬件层次上的逻辑分析仪价格十分昂贵,而且操作比较复杂。目前,FPGA芯片的两大供应商都为自己的FPGA芯片提供了软件层面上的逻辑分析仪,可以帮助我们在线分析芯片内部逻辑。而且操作简单方便,但是往往因为某些原因,有些信号在综合的时候就会被优化掉,就可能会导致我们的设计失败,当然在为逻辑分析仪添加观察信号的时候也无法找到该信号。从而对设计、调试人员的工作带来一定的不便。下面就分别以Xilinx公司的逻辑分析仪ChipScope和Altera公司的SignalTap做以下总结:
8 B6 `: |% }! C, R3 m
" q' Z+ [3 F. a" L) X一、使用Xilinx公司的ChipScope' s# ~) |% G2 [
( A- w* l/ @: Q! J: R3 a9 ]
(1) 对于reg型信号,如果被ISE优化掉,一般有可以把这个信号和其他没有被优化的信号进行“与”、“或”等操作,这样就可以达到观察信号的目的。 - @6 ]/ _1 w# Z* Q- n. N
Synplify Pro对wire、reg类型的信号有着不同的综合属性。 ! c9 K& q. I$ S
% W" {# s0 q4 H6 Y; U# J W) `. r4 z4 _" q7 @* c. i2 m: a0 t% Q. @
* Y1 ~5 Z! q2 f% z% H. B1 T; i. \' w0 T2 h- s" A9 D
Altera自带的综合器为了防止某些信号综合器优化掉,也有自己的一套综合约束属性。
) P) Z N3 j% f- X4 P; O$ P
9 Y z# H# E% c" j
! C) u/ Q) a' j$ L% j6 B& F; ~跟reg相关的综合属性,除了/*synthesis noprune*/可用,还有一个/*synthesis preserve*/可用 /*synthesis noprune*/ 避免Quartus II优化掉output 型的reg信号。 9 ~4 Z& d3 S" t" R2 s# F
同时单独的reg信号也可以: (*preserve*) reg [3:0] cnt;防止被优化掉。
$ O0 |% U9 _7 w+ H+ o3 e . s& k! |- Z9 D6 _2 V y7 n3 M
对于wire型信号来说,要想观察此类信号,Altera综合器提供了/*synthesis keep*/ 综合属性。如 wire [7:0] Cnt /*synthesis keep*/; 对于Quartus II 9.0以后的版本也可以使用(“keep”) wire [7:0] Cnt ;的写法。
" R1 }1 f9 z4 ^& z. q( *synthesis, probe_port,keep *) 即可,这种方法同时适应于wire和reg型信号类型。
8 Z* N7 [ i2 l" B1 j2、使用Synplify Pro综合; }) R2 s7 B, t* Q
$ Z$ F% g2 Y7 k' n3 h8 Z4 P" V4 F1、以上的方法也不一定是全部都可以使用,有时候因为版本不对应就会导致信号依然会被优化掉。不过经过轮询之后发现,ISE 12.3以后的版本、Quartus II 9.0之后的版本、Synplify Pro 9.0.1以后的版本都可以使用。 ' A7 R8 Z* @, Z w8 H" N
2、一般情况下,信号经常被优化掉,还是与代码风格或者逻辑设计有冗余有关的,所以还是应该尽量提供代码质量。在不能解决的时候再添加综合约束。 f' Q9 I F+ _8 Y* Q
|