在QuartusII下进行编译和仿真的时候,会出现一堆warning,有的可以忽略,有的却需要注意,虽然按F1可以了解关于该警告的帮助,但有时候帮助解释的仍然不清楚,大家群策群力,把自己知道和了解的一些关于警告的问题都说出来讨论一下,免得后来的人走弯路.
1 {' ?. [ ~7 h! A, y/ d7 i
下面是我收集整理的一些,有些是自己的经验,有些是网友的,希望能给大家一点帮助,如有不对的地方,请指正,如果觉得好,请版主给点威望吧,谢谢
: V+ B+ R& l ~* a! A
" a2 k M8 Z4 {0 p% Y1.Found clock-sensitive change during active clock edge at time <time> on register "<name>"
1 T$ _" a2 S) Y: ~% m) f
原因:vector source file中时钟敏感信号(如:数据,允许端,清零,同步加载等)在时钟的边缘同时变化。而时钟敏感信号是
, Z k+ z* h( k" ]: l% g
不能在时钟边沿变化的。其后果为导致结果不正确。
* S! e' A5 m" `0 L$ ]措施:编辑vector source file
7 b+ w' x) [% l( r+ ~
2.Verilog HDL assignment warning at <location>: truncated value with size <number> to match size of target (<number>
. x5 Q" r9 L+ M原因:在HDL设计中对目标的位数进行了设定,如:reg[4:0] a;而默认为32位,将位数裁定到合适的大小
: N% U$ Y) f/ I$ |8 {$ T
措施:如果结果正确,无须加以修正,如果不想看到这个警告,可以改变设定的位数
1 @- G7 E7 e! J& B q/ g3.All reachable assignments to data_out(10) assign '0', register removed by optimization
2 p y2 {( I! l' D+ d+ Q8 \
原因:经过综合器优化后,输出端口已经不起作用了
7 ^, r1 }( K7 ?. P3 s
4.Following 9 pins have nothing, GND, or VCC driving datain port -- changes to this connectivity may change fitting results
4 R( e! @# h/ p0 W- d0 ]$ J6 q. H$ H3 k原因:第9脚,空或接地或接上了电源
+ F8 A; v1 p E
措施:有时候定义了输出端口,但输出端直接赋‘0’,便会被接地,赋‘1’接电源。如果你的设计中这些端口就是这样用的,那便可以不理会这些warning
" X5 y( `' r7 h( ^2 j5.Found pins functioning as undefined clocks and/or memory enables
1 e! D O$ n6 l9 |; T原因:是你作为时钟的PIN没有约束信息。可以对相应的PIN做一下设定就行了。主要是指你的某些管脚在电路当中起到了时钟管脚的
4 E0 o9 d" f. Y- i2 t2 o$ k
作用,比如flip-flop的clk管脚,而此管脚没有时钟约束,因此QuartusII把“clk”作为未定义的时钟。
& r* N% L$ D/ R; _措施:如果clk不是时钟,可以加“not clock”的约束;如果是,可以在clock setting当中加入;在某些对时钟要求不很高的情况下,可以忽略此警告或在这里修改:Assignments>Timing analysis settings...>Individual clocks...>...
3 t$ p! y/ n1 c! \" @" u注意在Applies to node中只用选择时钟引脚一项即可,required fmax一般比所要求频率高5%即可,无须太紧或太松。
, |! g5 C" d. q+ X8 Y9 V- i3 D6.Timing characteristics of device EPM570T144C5 are preliminary
# s8 k n) f" C. E& z S: y
原因:因为MAXII 是比較新的元件在 QuartusII 中的時序並不是正式版的,要等 Service Pack
* E/ U/ A" d4 u% M- ]2 R0 U
措施:只影响 Quartus 的 Waveform
; T1 m' u0 s6 t2 `+ d
7.Warning: Clock latency analysis for PLL offsets is supported for the current device family, but is not enabled
& I1 u- y% u, j# L
措施:将setting中的timing Requirements&Option-->More Timing Setting-->setting-->Enable Clock Latency中的on改成OFF
2 _$ z+ S9 o- ^- p/ |; ^- a6 S- t* m# ?6 W- H- n, s
8.Found clock high time violation at 14.8 ns on register "|counter|lpm_counter:count1_rtl_0|dffs[11]"
& T. J8 X- T$ R$ k
原因:违反了steup/hold时间,应该是后仿真,看看波形设置是否和时钟沿符合steup/hold时间
* x/ l4 U" J8 v/ @& g措施:在中间加个寄存器可能可以解决问题
! @. p; m- b9 Z" C8 T# }% C+ l, G
9.warning: circuit may not operate.detected 46 non-operational paths clocked by clock clk44 with clock skew larger than data delay
1 e: i$ s. N+ g0 k5 T8 t' ]原因:时钟抖动大于数据延时,当时钟很快,而if等类的层次过多就会出现这种问题,但这个问题多是在器件的最高频率中才会出现
s$ T0 C6 L0 G$ `& e4 L( p措施:setting-->timing Requirements&Options-->Default required fmax 改小一些,如改到50MHZ
$ E6 t; q& G! p& c+ f% E& d10.Design contains <number> input pin(s) that do not drive logic
) \3 P6 Q$ V# a& |" ^0 @% L5 w" Q
原因:输入引脚没有驱动逻辑(驱动其他引脚),所有的输入引脚需要有输入逻辑
, h2 l' e* b+ i2 m! Q' j* B
措施:如果这种情况是故意的,无须理会,如果非故意,输入逻辑驱动.
/ ]0 j$ M( F' r9 T
11.Warning:Found clock high time violation at 8.9ns on node 'TEST3.CLK'
( C z" B. O- N* P" h
原因:FF中输入的PLS的保持时间过短
$ @/ u6 U; x' e- k% V9 _* Q! c# l
措施:在FF中设置较高的时钟频率
4 ^8 Q9 v: S2 H+ P. D! a12.Warning: Found 10 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew
- J' ^1 F0 x! m/ q' q
原因:如果你用的
cpld 只有一组全局时钟时,用全局时钟分频产生的另一个时钟在布线中当作信号处理,不能保证低的时钟歪斜(SKEW)。会造成在这个时钟上工作的时序电路不可靠,甚至每次布线产生的问题都不一样。
! ~# O6 ^( y: \+ a7 [9 h& r3 _措施:如果用有两组以上全局时钟的 芯片,可以把第二个全局时钟作为另一个时钟用,可以解决这个问题。
FPGA
- a/ l$ n, ^( O* n13.Critical Warning: Timing requirements were not met. See Report window for details.
% q3 g. z) x; R7 [- b: N8 a. u原因:时序要求未满足,
9 e) Y q' ?' ^% s0 A; H0 J
措施:双击Compilation Report-->Time Analyzer-->红色部分(如clock setup:'clk'等)-->左键单击list path,查看fmax的SLACK REPORT再根据提示解决,有可能是程序的算法问题或fmax设置问题
9 T" o# o! J3 ~0 W, d
14.Warning: Can't find signal in vector source file for input pin |whole|clk10m
! {; _* C7 Y+ l% y. I原因:这个时因为你的波形仿真文件( vector source file )中并没有把所有的输入信号(input pin)加进去, 对于每一个输入都需要有激励源的
6 L5 B$ U7 k$ I# r$ q- J15.Can't achieve minimum setup and hold requirement <text> along <number> path(s). See Report window for details.
3 c2 j9 l' ~4 F" H* K" G5 `
原因:时序分析发现一定数量的路径违背了最小的建立和保持时间,与时钟歪斜有关,一般是由于多时钟引起的
* g; t- U1 u2 J8 s+ \' M措施:利用Compilation Report-->Time Analyzer-->红色部分(如clock hold:'clk'等),在slack中观察是hold time为负值还是setup time 为负值,然后在:Assignment-->Assignment Editor-->To中增加时钟名(from node finder),Assignment Name中增加和多时钟有关的Multicycle 和Multicycle Hold选项,如hold time为负,可使Multicycle hold的值>multicycle,如设为2和1。
* {* {6 T) {. n" H- _+ Q" j& }4 `6 k16: Can't analyze file -- file E://quartusii/*/*.v is missing
2 n3 U. K; Q3 x原因:试图编译一个不存在的文件,该文件可能被改名或者删除了
# H* c5 K9 r8 D+ [5 c, B9 `+ r措施:不管他,没什么影响
: m+ M1 t+ T! `: H
17.Warning: Can't find signal in vector source file for input pin |whole|clk10m
: r5 ^4 r" W# R' o( L原因:因为你的波形仿真文件( vector source file )中并没有把所有的输入信号(input pin)加进去, 对于每一个输入都需要有激励源的
: y' o: ?9 E- r# P0 z A
18.Error: Can't name logic function scfifo0 of instance "inst" -- function has same name as current design file
' S% A4 C- O1 i7 C$ @
原因:模块的名字和project的名字重名了
$ J! Y5 D' I E1 T" g
措施:把两个名字之一改一下,一般改模块的名字
7 ]* s. r6 {* e19.Warning: Using design file lpm_fifo0.v, which is not specified as a design file for the current project, but contains definitions for 1 design units and 1 entities in project Info: Found entity 1: lpm_fifo0
3 v {9 d& m6 u$ R% N' n$ A
原因:模块不是在本项目生成的,而是直接copy了别的项目的原理图和源程序而生成的,而不是用QUARTUS将文件添加进本项目
, g/ {) `8 t% J* S) S# N G9 E1 r* a措施:无须理会,不影响使用
/ N, N3 h, S; j' b2 U20.Timing characteristics of device <name> are preliminary
: A+ M, G1 ]. i4 ?6 d原因:目前版本的QuartusII只对该器件提供初步的时序特征分析
2 O0 v$ m; e# ?: A# X9 W
措施:如果坚持用目前的器件,无须理会该警告。关于进一步的时序特征分析会在后续版本的Quartus得到完善。
8 W5 P; J+ f; ~4 l c2 t21.Timing Analysis does not support the analysis of latches as synchronous elements for the currently selected device family
& c% |4 A: D9 h, w2 f原因:用analyze_latches_as_synchronous_elements setting可以让Quaruts II来分析同步锁存,但目前的器件不支持这个特性
0 `0 R: ^' N3 m5 U7 I$ U& ^# I措施:无须理会。时序分析可能将锁存器分析成回路。但并不一定分析正确。其后果可能会导致显示提醒用户:改变设计来消除锁存器,但实际其实无关紧要
( k7 e b w/ p' K22.Warning:Found xx output pins without output pin load capacitance assignment
! r3 H8 U/ \1 C6 |' h
原因:没有给输出管教指定负载电容
& Z2 q2 T# d) b, _/ i
解决方法:该功能用于估算TCO和功耗,可以不理会,也可以在Assignment Editor中为相应的输出管脚指定负载电容,以消除警告
& `/ G, P( {0 _: d" H. V& u0 g1 Warning: VHDL Process Statement warning at random.vhd(18): signal reset is in statement, but is not in sensitivity list
, s& I0 X& X5 d8 X, s. A# _
8 |9 L3 o+ B1 t/ T ?+ V; [
----没把singal放到process()中
/ @% ~7 q4 o+ \1 m- K0 Q
2 Warning: Found pins ing as undefined clocks and/or memory enables
5 Q4 d# o- u& |; b: T
Info: Assuming node CLK is an undefined clock
) a/ `, q! v5 U* C+ y
" H' G0 W1 [: N+ e8 D-=-----可能是说设计中产生的触发器没有使能端
6 D( Z1 v, d K j; q7 F) ^) r3 Error: VHDL Inte
RFace Declaration error in clk_gen.vhd(29): interface object "clk_scan" of mode out cannot be read. Change object mode to buffer or inout.
. B# K R7 [' \+ ^------信号类型设置不对,out当作buffer来定义
) Y# D: \8 ^* h3 |( y# t4 Error: Node instance "clk_gen1" instantiates undefined entity "clk_gen"
1 D1 v) Q0 l' c4 O* p" u6 D4 u
-------引用的例化元件未定义实体--entity "clk_gen"
9 O: i. |9 z) s/ P m8 _
5 Warning: Found 2 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew
3 l7 {: S% J3 L( N+ ?2 dInfo: Detected ripple clock "clk_gen:clk_gen1|clk_incr" as buffer
" p! S" a" w( W* c7 h
Info: Detected ripple clock "clk_gen:clk_gen1|clk_scan" as buffer
: q* N9 O% ?# l2 V6 h6 } o H6 Warning: VHDL Process Statement warning at ledmux.vhd(15): signal or variable "dataout" may not be assigned a new in every possible path through the Process Statement. Signal or variable "dataout" holds its previous in every path with no new assignment, which may create a combinational loop in the current design.
3 o9 J. C7 E1 n% I6 A8 I m2 d0 h
7 Warning: VHDL Process Statement warning at divider_10.vhd(17): signal "cnt" is read inside the Process Statement but isn't in the Process Statement's sensivitity list
9 Y3 \& t/ {: G( Q7 J( n4 F -----缺少敏感信号
7 ?) @& Z8 Y3 r' C7 o! S7 `+ l' R
8 Warning: No clock transition on "counter_bcd7:counter_counter_clk|q_sig[3]" register
& U* c7 X+ {5 @: _/ Y9 Warning: Reduced register "counter_bcd7:counter_counter_clk|q_sig[3]" with stuck clock port to stuck GND
+ t8 M" ]% Q) B
10 Warning: Circuit may not operate. Detected 1 non-operational path(s) clocked by clock "class[1]" with clock skew larger than data delay. See Compilation Report for details.
* `; [/ E& D5 V: C
11 Warning: Circuit may not operate. Detected 1 non-operational path(s) clocked by clock "sign" with clock skew larger than data delay. See Compilation Report for details.
5 `* D- W6 K8 ^+ V+ w3 E3 W12 Error: VHDL error at counter_clk.vhd(90): actual port "class" of mode "in" cannot be associated with formal port "class" of mode "out"
7 `; E8 n D9 h' y/ v6 w------两者不能连接起来
- Z W2 f2 N# W4 e5 r- R3 M
13 Warning: Ignored node in vector source file. Can't find corresponding node name "class_sig[2]" in design.
3 @' u$ [" D% X/ c- G& r+ s
------没有编写testbench文件,或者没有编辑输入变量的值 testbench里是元件申明和映射
$ \' j* n8 A0 D% k
14 Error: VHDL Binding Indication error at freqdetect_top.vhd(19): port "class" in design entity does not have std_logic_vector type that is specified for the same generic in the associated component
$ u5 L- d- g" B3 A---在相关的元件里没有当前文件所定义的类型
3 O3 F5 j* R. i
15 Error: VHDL error at tongbu.vhd(16): can't infer register for signal "gate" because signal does not hold its outside clock edge
5 [3 e& U; b8 M t2 o8 E16 Warning: Found clock high time violation at 1000.0 ns on register "|fcounter|lpm_counter:temp_rtl_0|dffs[4]"
8 ^7 f5 [& ]/ O) W' d
17 Warning: Compiler packed, optimized or synthesized away node "temp[19]". Ignored vector source file node.
, d: \2 x: x c; i$ T5 I4 w
---"temp[19]"被优化掉了
% u0 x+ g0 c- N, \$ @ P7 V3 T18 Warning: Reduced register "gate~reg0" with stuck data_in port to stuck GND
3 o8 m2 }1 W# `) e* D+ f
19 Warning: Design contains 2 input pin(s) that do not drive logic
g0 z6 w& B0 d4 d4 H; n
Warning: No output dependent on input pin "clk"
: m- W3 Q+ R5 \: J
Warning: No output dependent on input pin "sign"
" p) G- J8 u% F1 V1 A5 Z, G/ \------输出信号与输入信号无关,
) y/ H5 w% i& k* _) M. u20 Warning: Found clock high time violation at 16625.0 ns on register "|impulcomp|gate1"
6 s4 s7 I1 t+ }8 a8 Z$ n
21 Error: VHDL error at impulcomp.vhd(19): can't implement clock enable condition specified using binary operator "or"
. m- `, T9 p2 f- x# a( _
22 Error: VHDL Association List error at period_counter.vhd(38): actual parameter assigned to formal parameter "al
ARM", but formal parameter is not declared
' y# K$ z9 \2 u2 X6 a4 @7 [! e1 L-------连接表错误,形参"alarm"赋值给实参,形参没定义,可能是形参与实参的位置颠倒了,规定形参在实参之前。
/ n+ A/ c$ n5 Y6 v& b9 ~2 n! S
23 Error: Ignored construct behavier at period_counter.vhd(15) because of previous errors
" \& S& ~7 n. Q5 t" G6 G x$ [
--------因为前一个错误而导致的错误
) }0 ?8 h$ Z* z: ?- {- o
24 Error: VHDL error at period_counter.vhd(38): type of identifier "alarm" does not agree with its usage as std_logic type
% u# k# V$ Q7 i' N7 N--------"alarm"的定义类型与使用的类型不一致
) P) @. {2 i2 Y) X6 Z25 Error: VHDL error at shift_reg.vhd(24): can't synthesize logic for statement with conditions that test for the edges of multiple clocks
C0 ]5 h& y) c/ y# `; Q
-------同一进程中含有两个或多个if(edge)条件,(一个进程中之能有一个时钟沿)
) V) y9 F0 A( U0 T `" A26 Error: Can't resolve multiple constant drivers for net "datain_reg[22]" at shift_reg.vhd(19)
0 F: y' S' @/ M5 T! F; ]% {, {8 f
27 can't infer register for signal "num[0]" because signal does not hold its outside clock edge
$ U+ Y; i9 f3 m/ `28Error: Can't elaborate top-level user hierarchy
) Z% d& `: ?2 ?- C+ h$ W
29 Error: Can't resolve multiple constant drivers for net "cs_in" at led_key.vhd(32) ----------有两个以上赋值语句,不能确定“cs_in”的值,
4 y$ |( j; v; A; [7 f# Y2 c30 Warning: Ignored node in vector source file. Can't find corresponding node name "over" in design.
7 @3 T' r# y6 X: d8 J---------------在源文件中找不到对应的节点“over”。
: J7 |$ Q; s4 `2 @
31 Error: Can't access JTAG chain
; g' X" L! i* w 无法找到下载链
7 K, N' Q* R/ T6 ]; P5 L' O) a( D
32 Info: Assuming node "clk" is an undefined clock
% h4 p) G& T6 n* p8 v/ \* w+ ]5 z- i) r7 ]3 j
1.Found clock-sensitive change during active clock edge at time
* K8 d. g; B( L# r9 ^
<time> on register "<name>"
. I1 ?' ~. Z% L7 R原因:vector source file中时钟敏感信号(如:数据,允许端,清零,同步加
9 B* m$ |+ z% G! U载等)在时钟的边缘同时变化。而时钟敏感信号是不能在时钟边沿变化的。其后
! G: ^( c" a7 z& `& U
果为导致结果不正确。
4 n0 \& n: ~' g3 H措施:编辑vector source file
8 \6 E1 j% K- \1 B" l; r" y9 i; C0 \# b
2.Verilog HDL assignment warning at <location>: truncated
: s* g, q/ {% D+ V0 ~$ _
with size <number> to match size of target (<number>
& [! P) b- E; W/ P" f' ~6 E/ x
原因:在HDL设计中对目标的位数进行了设定,如:reg[4:0] a;而默认为32位,
% N z( P& |5 H" d/ ^! N将位数裁定到合适的大小
& q4 p1 i) b! K# ~+ y* o措施:如果结果正确,无须加以修正,如果不想看到这个警告,可以改变设定的位数
0 A" B2 U9 |$ `6 u8 a& L
# H! s4 R1 D6 t; ]9 s3.All reachable assignments to data_out(10) assign '0', register
6 N, [8 S8 D/ qremoved by optimization
2 r8 G5 O2 u* n: T& E
原因:经过综合器优化后,输出端口已经不起作用了
) u2 f' ^" q/ X
2 W% A N' f8 \ B& A) T+ S4.Following 9 pins have nothing, GND, or VCC driving datain port --
& }3 J2 t6 ]* f) Y! V
changes to this connectivity may change fitting results
?, B s# X3 z; _: g原因:第9脚,空或接地或接上了电源
- V' e! M3 f9 k) g7 z5 R
措施:有时候定义了输出端口,但输出端直接赋‘0’,便会被接地,赋‘1’接电源。
2 ]+ m7 I3 l8 a; k
如果你的设计中这些端口就是这样用的,那便可以不理会这些warning
' {: f% I9 u4 @2 Z9 c: m0 O' Q" L6 L0 u% I) I2 O$ H2 ~* F
5.Found pins ing as undefined clocks and/or memory enables
& a- c _, Q3 o( t! a* Q) |
原因:是你作为时钟的PIN没有约束信息。可以对相应的PIN做一下设定就行了。
8 Q" j2 K7 {3 F6 N( W4 d
主要是指你的某些管脚在电路当中起到了时钟管脚的作用,比如flip-flop的clk管脚,而此管脚没有时钟约束,因此QuartusII把“clk”作为未定义的时钟。
- @8 }6 i# U7 v! O0 D9 P
措施:如果clk不是时钟,可以加“not clock”的约束;如果是,可以在clock
2 v j. V% _% \4 N5 asetting当中加入;在某些对时钟要求不很高的情况下,可以忽略此警告或在这里修改:Assignments>Timing analysis settings...>Individual clocks...>...
( n2 W- }6 M7 Z1 x
+ X1 d: H Y4 R0 j6.Timing characteristics of device EPM570T144C5 are preliminary
! |3 W! b* U7 |
原因:因为MAXII 是比較新的元件在 QuartusII 中的時序并不是正式版的,要等 Service Pack
$ b) n$ I$ W2 ^" ^$ G' d8 m
措施:只影响 Quartus 的 Waveform
2 F9 a( V4 i: Q
) M1 u$ S1 j$ W2 R* P& ~
7.Warning: Clock latency analysis for PLL offsets is supported for the current device family, but is not enabled
: r' g6 B8 q9 X5 z( j措施:将setting中的timing Requirements&Option-->More Timing
( Y4 P( M+ |" |3 R( \1 i1 ]
Setting-->setting-->Enable Clock Latency中的on改成OFF
) y" n' p5 b# P3 K) y6 B1 {' v3 `' |
6 _9 c6 n5 |( g- g% O f8.Found clock high time violation at 14.8 ns on register
8 s1 W' O: `4 N
"|counter|lpm_counter:count1_rtl_0|dffs[11]"
7 w1 q; W a0 @4 ~
原因:违反了steup/hold时间,应该是后仿真,看看波形设置是否和时钟沿符合steup/hold时间
# ^5 ^% R" f$ j4 u+ V
措施:在中间加个寄存器可能可以解决问题
4 f, j% y: @1 Q7 p/ U6 [0 f2 ^
- o' A& m6 l& l: Q+ r M' d9.warning: circuit may not operate.detected 46 non-operational
5 e! I X* V0 P9 |; hpaths clocked by clock clk44 with clock skew larger than data delay
1 X/ X1 O* g& a
原因:时钟抖动大于数据延时,当时钟很快,而if等类的层次过多就会出现这种问题,但这个问题多是在器件的最高频率中才会出现
9 A q# `* ~7 q2 x" @% L
措施:setting-->timing Requirements&Options-->Default required
1 U' m6 Q8 D: I2 [ d# @2 Cfmax 改小一些,如改到50MHZ
( j p& ]: J8 E% S. x) v2 J* U6 n6 F
6 X/ m: q4 Q) x6 o) K1 ?2 _! n8 q10.Design contains <number> input pin(s) that do not drive logic
* m& \5 G0 s* c7 a4 u8 f; {4 u
原因:输入引脚没有驱动逻辑(驱动其他引脚),所有的输入引脚需要有输入逻辑
! {6 D% L" E* q% H. u$ ?& c措施:如果这种情况是故意的,无须理会,如果非故意,输入逻辑驱动.
1 F( K6 B9 ?! V
, [, ~/ q5 U" x11.Warning:Found clock high time violation at 8.9ns on node
3 F' y+ e9 H3 h* v& b- F'TEST3.CLK'
1 Z) _" u( |% m
原因:FF中输入的PLS的保持时间过短
7 f' i- d" y2 H, |# g# D8 Y4 {措施:在FF中设置较高的时钟频率
# J! x' f1 H3 N* U5 k, y8 w% I/ ?& S, r- P6 j
12.Warning: Found 10 node(s) in clock paths which may be acting as
8 { A# R" L- M, }5 s& p# S7 {( K$ j5 O
ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in
) W6 u7 M ^2 `1 b. Qclock skew
+ l4 F9 m5 i' j+ @6 ^1 v3 e6 {
原因:如果你用的 CPLD 只有一组全局时钟时,用全局时钟分频产生的另一个时钟在布线中当作信号处理,不能保证低的时钟歪斜(SKEW)。会造成在这个时钟上工作的时序电路不可靠,甚至每次布线产生的问题都不一样。
2 P5 {) a, h; s4 D+ E, Z
措施:如果用有两组以上全局时钟的 FPGA 芯片,可以把第二个全局时钟作为另一个时钟用,可以解决这个问题。
4 N' A. p0 i \& H" m( H0 p
& B! C p/ D8 V/ ~13.Critical Warning: Timing requirements were not met. See Report
& U( m6 [; P, ?, ^window for details.
8 h5 n# |( d7 J$ f8 i
原因:时序要求未满足,
& k! u. C3 i* R4 n
措施:双击Compilation Report-->Time Analyzer-->红色部分(如clock setup:'clk'等)-->左键单击list path,查看fmax的SLACK REPORT再根据提示解决,有可能是程序的算法问题
; I) z3 b/ z! |, D1 L
! T/ Y8 `: G8 F1 X14.Can't achieve minimum setup and hold requirement <text> along
. ^3 z- M5 J4 Z7 p' C<number> path(s). See Report window for details.
. C5 x% y, |, a2 A1 x# w' P$ p) P" D
原因:时序分析发现一定数量的路径违背了最小的建立和保持时间,与时钟歪斜有关,一般是由于多时钟引起的
3 S: K4 ]) e# q+ Y) G措施:利用Compilation Report-->Time Analyzer-->红色部分(如clock hold:'clk'等),在slack中观察是hold time为负值还是setup time 为负值,
4 {% ?. y- `0 C+ S
然后在:Assignment-->Assignment Editor-->To中增加时钟名(from node finder),Assignment Name中增加和多时钟有关的Multicycle 和Multicycle Hold选项,如hold time为负,可使Multicycle hold的值>multicycle,如设为2和1。
/ t4 s# B q$ ?" z7 a/ p
$ m, h3 b& ]- z% {+ o% Y* N15: Can't analyze file -- file E://quartusii/*/*.v is missing
8 c: `& A& Q! y% i( R原因:试图编译一个不存在的文件,该文件可能被改名或者删除了
" ]9 O+ X8 Y' H
措施:不管他,没什么影响
6 g1 h. R0 J% U; G% w6 {( [$ n1 p+ i4 o
16.Warning: Can't find signal in vector source file for input pin
: U& x+ u. J6 \9 R# @% \, K& W5 ^
|whole|clk10m
# `5 ^: y! ?, J1 f$ H7 X原因:因为你的波形仿真文件( vector source file )中并没有把所有的输入
9 t3 @! Y4 T1 x3 _$ I( ^& r
信号(input pin)加进去,对于每一个输入都需要有激励源的
' L$ K. b. W1 n% P! v. M% m
- o3 ?' N; S2 N' K2 @. |17.Error: Can't name logic scfifo0 of instance "inst" --
9 p/ H j2 B8 e: g* K6 A: ghas same name as current design file
+ I, G3 N" I6 c( |& K! r( w. V8 w
原因:模块的名字和project的名字重名了
2 m, H. r' Z1 z8 B9 W/ h; j
措施:把两个名字之一改一下,一般改模块的名字
5 v% S- _) T) y3 i
: {5 _2 m) Z3 w3 S. g7 q$ v% U
18.Warning: Using design file lpm_fifo0.v, which is not specified as a
- e/ J0 L7 |) Udesign file for the current project, but contains definitions for 1 design
7 @, d! `! k6 f7 P$ h2 T3 vunits and 1 entities in project Info: Found entity 1: lpm_fifo0
. C j+ Y; ^) A( M$ L5 \9 T; o
原因:模块不是在本项目生成的,而是直接copy了别的项目的原理图和源程序而生成的,而不是用QUARTUS将文件添加进本项目
" u: I% u3 i5 k4 x2 T( P措施:无须理会,不影响使用
$ j% ~6 G8 c' s/ V' I: `
3 k% ~( p- d, q: c( }$ U! B19.Timing characteristics of device <name> are preliminary
, Y6 j: n+ u* K' `% \ [# I
原因:目前版本的QuartusII只对该器件提供初步的时序特征分析
7 j V( z2 t( R: m/ [3 W措施:如果坚持用目前的器件,无须理会该警告。关于进一步的时序特征分析会在后续版本的Quartus得到完善。
9 n- I l$ @% _- R
) [" s8 o" X- Z% P
20.Timing Analysis does not support the analysis of latches as
* g) O" W6 @9 E
synchronous elements for the currently selected device family
- {4 W6 D( V6 h/ s1 _) K! V- y/ T
原因:用analyze_latches_as_synchronous_elements setting可以让Quaruts II来分析同步锁存,但目前的器件不支持这个特性
7 i' m% ^0 L( |. I( I
措施:无须理会。时序分析可能将锁存器分析成回路。但并不一定分析正确。其后果可能会导致显示提醒用户:改变设计来消除锁 存器
8 O3 y5 D: O# V6 |, R/ A21.Warning:Found xx output pins without output pin load capacitance
* L2 {* f% K4 T' f! G D% xassignment(网友:gucheng82提供)
m9 R, K- Y7 S: I- \) ^原因:没有给输出管教指定负载电容
7 z9 x5 P( X/ h/ k' c% `2 l
措施:该功能用于估算TCO和功耗,可以不理会,也可以在Assignment Editor中为相应的输出管脚指定负载电容,以消除警告
; ^8 P% W. S; ^6 R
: ~1 U C/ W: f
22.Warning: Found 6 node(s) in clock paths which may be acting as
$ k( T: q; M+ l) ~6 L! w/ n
ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in
/ e* }* k9 V# g. S3 c( C
clock skew
. u) a% \3 N" v! x/ b7 p
原因:使用了行波时钟或门控时钟,把触发器的输出当时钟用就会报行波时钟,将组合逻辑的输出当时钟用就会报门控时钟
9 \4 d6 a/ D. E! f措施:不要把触发器的输出当时钟,不要将组合逻辑的输出当时钟,如果本身如此设计,则无须理会该警告
7 V$ a- ^. M& z
+ C8 B: N9 O6 G2 x23.Warning (10268): Verilog HDL information at lcd7106.v(63):
# x" }1 V. ~! ]% X7 S- N1 B* LAlways Construct contains both blocking and non-blocking
- a! S; |8 G* j. I; Bassignments
_% Q( F; @1 t2 w8 {原因: 一个always模块中同时有阻塞和非阻塞的赋值