Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)

X_on_violation_option

Altera_Forum
Honored Contributor II
1,641 Views

Hello: 

 

Here's my problem: 

 

I have synchronizers which are used for control signals crossing clock domains.  

Because of this I am getting setup/hold violations. 

 

I want to use the X_ON_VIOLATION_OPTION on the first stage of my synchronizers such that a setup/hold violation will not propagate a "X" in my simulation. 

 

It appears that the X_ON_VIOLATION_OPTION assignment is what I want but when I add this to my project it has no effect (i.e. I still get an "X" in the simulation). 

 

I've tried a few different assignments in the QSF file: 

 

set_instance_assignment -name X_ON_VIOLATION_OPTION OFF -to /pcie_larch_tb/pcie_larch_top_0/pots_mod_core_1_1/sync_redge_det_0/sync_cp2cp_rsh_p1_0/s1_signal_q[0] 

 

set_instance_assignment -name X_ON_VIOLATION_OPTION OFF -to "pots_mod_core:pots_mod_core_1_1|sync_redge_det:sync_redge_det_0|sync_cp2cp_rsh_p1:sync_cp2cp_rsh_p1_0|s1_signal_q*" 

 

Quartus does not give any errors or warnings about the commands I've listed above. 

 

Has anyone used this option and can you tell me what I'm doing wrong. 

 

Also does anyone know how Quartus applies the X_ON_VIOLATION_OPTION OFF? 

For example does it set this option in the netlist, the back annotated delay file etc? 

 

Thanks, 

 

Alan 

0 Kudos
2 Replies
Altera_Forum
Honored Contributor II
863 Views

 

--- Quote Start ---  

Hello: 

 

Here's my problem: 

 

I have synchronizers which are used for control signals crossing clock domains.  

Because of this I am getting setup/hold violations. 

 

I want to use the X_ON_VIOLATION_OPTION on the first stage of my synchronizers such that a setup/hold violation will not propagate a "X" in my simulation. 

 

It appears that the X_ON_VIOLATION_OPTION assignment is what I want but when I add this to my project it has no effect (i.e. I still get an "X" in the simulation). 

 

I've tried a few different assignments in the QSF file: 

 

set_instance_assignment -name X_ON_VIOLATION_OPTION OFF -to /pcie_larch_tb/pcie_larch_top_0/pots_mod_core_1_1/sync_redge_det_0/sync_cp2cp_rsh_p1_0/s1_signal_q[0] 

 

set_instance_assignment -name X_ON_VIOLATION_OPTION OFF -to "pots_mod_core:pots_mod_core_1_1|sync_redge_det:sync_redge_det_0|sync_cp2cp_rsh_p1:sync_cp2cp_rsh_p1_0|s1_signal_q*" 

 

Quartus does not give any errors or warnings about the commands I've listed above. 

 

Has anyone used this option and can you tell me what I'm doing wrong. 

 

Also does anyone know how Quartus applies the X_ON_VIOLATION_OPTION OFF? 

For example does it set this option in the netlist, the back annotated delay file etc? 

 

Thanks, 

 

Alan 

 

--- Quote End ---  

 

 

Hi Alan, 

 

which simulator do use ? If your are using an "advanced" simulator like Modelsim with Verilog, you can use the command line option called "+notimingchecks". I don't know 

how you can handle this in VHDL. 

 

Kind regards 

 

GPK
0 Kudos
Altera_Forum
Honored Contributor II
863 Views

All: 

 

This was one of operator error late at night. 

 

I started over after posting this and set the assignment X_ON_VIOLATION_OPTION on the first registers in my synchronizers.  

 

And it worked. It actually sets a defparam on the actual FF's in the netlist. 

 

I don't know what signals I was selecting last night but they were not the right ones. 

 

Alan
0 Kudos
Reply