cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Observer
Observer
3,379 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
Highlighted
Observer
Observer
3,357 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
Highlighted
Observer
Observer
3,285 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
Highlighted
Moderator
Moderator
3,257 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
Observer
3,181 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