Vivado and inline constraints in verilog.

Status
Not open for further replies.

mrflibble

Advanced Member level 5
Joined
Apr 19, 2010
Messages
2,720
Helped
679
Reputation
1,360
Reaction score
652
Trophy points
1,393
Visit site
Activity points
19,551
Regarding constraints inside verilog code (as opposed to ucf/xdc files), how does Vivado handle that? In ISE it worked, but there were some sneaky gotcha's. Is Vivado better in this regard than ISE? Worse? About the same, including same sh!t as usual complete with gotcha's?

I mean the type of constraints where you for example specify an RLOC or BEL for a flip-flop.


Code Verilog - [expand]
1
2
3
4
5
6
7
(* RLOC=X0Y0 *) reg obligatory_flipflop;
(* RLOC=X1Y0 *) reg this_calls_for_another_flipflop;
 
always @(posedge clk) begin
    obligatory_flipflop <= ~obligatory_flipflop;
    this_calls_for_another_flipflop <= ~this_calls_for_another_flipflop;
end



And in ISE there were also types of constraints that would silently fail (raaaawr), so you would think they applied but nooooope. And then you specified the exact same constraint in an UCF entry and that would suddenly be totally acceptable, and give the expected result.

So I was wondering how this is in Vivado?
 

I haven't used location constraints, but I know that the following worked without problems:
Code:
(* dont_touch = "true" *)
(* mark_debug = "true" *)
(* iob = "false" *)
(* shreg_extract = "no" *)
(* async_reg = "true" *)
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…