1 | module SecondOrderSigmaDeltaDac1v01 |
2 | (input clk , |
3 | input clkEna , |
4 | input [MSBI:0] DACin , |
5 | output reg DACout |
6 | ); |
7 | |
8 | parameter MSBI=7 ; |
9 | |
10 | reg signed [MSBI:0] din ; |
11 | reg signed [MSBI+3:0] del1 ; |
12 | reg signed [MSBI+3:0] del2 ; |
13 | reg signed [MSBI+3:0] d_q ; |
14 | |
15 | always @(posedge clk) begin |
16 | if ( clkEna ) begin |
17 | din <= DACin ; |
18 | del1 <= din - d_q + del1 ; |
19 | del2 <= din - d_q + del1 - d_q + del2 ; |
20 | if ( din - d_q + del1 - d_q + del2 > 0 ) |
21 | begin |
22 | d_q <= 11'h 100 ; |
23 | DACout <= 1; |
24 | end |
25 | else |
26 | begin |
27 | d_q <= 11'h 700 ; |
28 | DACout <= 0; |
29 | end |
30 | end |
31 | end |
32 | |
33 | endmodule |
Ich benutze den obigen Code wobei clkEna nach jeweils 16 Takten von clk für einen Takt auf 1 geht. Der Code ergibt timing-violations. Durch ein multi-cycle path constraint möchte ich dem timing-analyser mitteilen, dass alle Pfade in diesem Modul multicycle Pfade sind. Wie mache ich das ? Wie spezifiziere ich insbesondere diese Pfade im SDC File? Wo gibt es gute Beispiele?