add delay in verilog
issue 1 (root cause is relative to inertial delay and update in below)
I found the waveform in delay 13ns is incorrect.
issue 2 Serial_Data_Out_delay with glitch
I also implement a module name dly_line to simulation the behavior for delay.
- I found the input source impact the result.
- When I input ioclk then the result is ok.
- When I input Serial_Data_Out then the result in Serial_Data_Out_delay with glitch.

issue 3 (root cuase is the same as issue 1)
There are another issue in assign with delay
- ioclk_by_assign_3ns is ok
- ioclk_by_assign_8ns is incorrect
- ioclk_by_assign_13ns is incorrect
result
below net result is not meet my expectation. Why???
- Serial_Data_Out_by_assign_13ns
- ioclk_by_assign_8ns
- ioclk_by_assign_13ns
- Serial_Data_Out_delay

code - fsic_io_serdes_m2.v
code - delay_line.v
testbench
root cause
issue 1: assign delay time issue
- only delay 1ns to 5ns is correct, when delay time > 5ns then result is incorrect.

root cause of issue 1
- the ioclok pulse width is 5ns then verilog filter the pulse when in Inertial delay models(default)
reference
http://twins.ee.nctu.edu.tw/courses/ip_core_04/resource_pdf/cummings_final.pdf
solution
- use 2 or more stages to assign delay time.

Or
- use transport delay model(I don't know how to do in verilog), I do a lot of serach but not found example in vivado.
reference
https://www.xilinx.com/support/documents/sw_manuals/xilinx2022_1/ug900-vivado-logic-simulation.pdf

root cause issue 2: Serial_Data_Out_delay with glitch
update testbench code then pass
code with issue
method 1 : using @(posedge coreclk_tx);
method 2 : using Non-block assigment
method 3 : both method 1 and method 2
