UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Observer pablo_trujillo
Observer
3,203 Views
Registered: ‎02-02-2017

safe_implementation does not work

Hello all,

I have 2 hdl with one fsm each one. In xst options, I have safe implementation switched to yes. In hdl code, I wrote this lines in both codes.

(* SAFE_IMPLEMENTATION="YES", SAFE_RECOVERY_STATE = "IDLE" *) 
reg [`STATE_WIDTH-1:0] state, next_state;

in synthesis report of the first hdl, I have this

Set property "SAFE_IMPLEMENTATION = YES" for signal <state>.
Set property "SAFE_RECOVERY_STATE = 22" for signal <state>.
Set property "SAFE_IMPLEMENTATION = YES" for signal <next_state>.
Set property "SAFE_RECOVERY_STATE = 22" for signal <next_state>.
....
-----------------------------------------------------------------------
| States             | 15                                             |
| Transitions        | 64                                             |
| Inputs             | 27                                             |
| Outputs            | 20                                             |
| Clock              | CLOCK (rising_edge)                            |
| Reset              | RESET (positive)                               |
| Reset type         | synchronous                                    |
| Reset State        | 010110                                         |
| Recovery State     | 010110                                         |
| Encoding           | auto                                           |
| Implementation     | BRAM                                           |
-----------------------------------------------------------------------

So, this FSM has been implemented with safe_implementation, but in the second one, I have this in synthesis report.

Set property "SAFE_IMPLEMENTATION = YES" for signal <state>.
Set property "SAFE_RECOVERY_STATE = 22" for signal <state>.
Set property "SAFE_IMPLEMENTATION = YES" for signal <next_state>.
Set property "SAFE_RECOVERY_STATE = 22" for signal <next_state>.
....
-----------------------------------------------------------------------
| States             | 15                                             |
| Transitions        | 79                                             |
| Inputs             | 31                                             |
| Outputs            | 20                                             |
| Clock              | CLOCK (rising_edge)                            |
| Reset              | RESET (positive)                               |
| Reset type         | synchronous                                    |
| Reset State        | 010110                                         |
| Encoding           | auto                                           |
| Implementation     | BRAM                                           |
-----------------------------------------------------------------------

No mention to Recovery State.. so, this FSM has not been implemented safe_implementation. I don't know why because all propierties seems to be enabled for this mode... thanks in advance!

0 Kudos
4 Replies
Observer pablo_trujillo
Observer
3,181 Views
Registered: ‎02-02-2017

Re: safe_implementation does not work

I've notice there is a warning before module instantiation:

Xst:2144 - The value of attribute <SAFE_RECOVERY_STATE> (IDLE) does not match fsm state <state> size (6).

so, i've change the IDLE declaration to 6'b010110 and I have this

Xst:2144 - The value of attribute <SAFE_RECOVERY_STATE> (6'b010110) does not match fsm state <state> size (6).

I don't understand what the value does not match if they are the same width...

Thanks!

 

0 Kudos
Observer pablo_trujillo
Observer
3,109 Views
Registered: ‎02-02-2017

Re: safe_implementation does not work

Hello all,

I still working with this issue... what reasons can avoid a safe implementation of a fsm in XST?

 

Thanks in advance!

0 Kudos
Moderator
Moderator
3,081 Views
Registered: ‎07-21-2014

Re: safe_implementation does not work

@pablo_trujillo

 

Which device was targeted? If older than 6-Series, try to enable the new_parser and let us know the results.

Also, please share the FSM full code here for us to test the RTL at our end.

 

Thanks,
Anusheel
-----------------------------------------------------------------------------------------------
Search for documents/answer records related to your device and tool before posting query on forums.
Search related forums and make sure your query is not repeated.

Please mark the post as an answer "Accept as solution" in case it helps to resolve your query.
Helpful answer -> Give Kudos
-----------------------------------------------------------------------------------------------

0 Kudos
Observer pablo_trujillo
Observer
3,005 Views
Registered: ‎02-02-2017

Re: safe_implementation does not work

I finally fixed the issue. I've notice that code didn't change from version that works correctly, so, the problem must been in top module. In this new code version, i've added a fsm in top. if I comment this fsm, XST sinthesize in safe mode the main fsm... i don't know why. So, I included a new module with the fsm that was in top, and then all fsm have been syntesized safely... Thanks for response :)

 

regards!

0 Kudos