cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
pablo_trujillo
Observer
Observer
3,533 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
Reply
4 Replies
pablo_trujillo
Observer
Observer
3,511 Views
Registered: ‎02-02-2017

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
Reply
pablo_trujillo
Observer
Observer
3,439 Views
Registered: ‎02-02-2017

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
Reply
anusheel
Moderator
Moderator
3,411 Views
Registered: ‎07-21-2014

@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
Reply
pablo_trujillo
Observer
Observer
3,335 Views
Registered: ‎02-02-2017

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
Reply