Hi,
I'm struggling with several issues integrating my own verilog code into my design. After days of google search I seems cannot find the right answer to my problem. I browsed through the HW tutorial topics but they do not seem to cover PL only IPs. Could you provide some insights or direction for me to look at?
My goal is to receive data from external LVDS parallel transmitter and buffer the data into DDR3 memory. Currently I decided to test the deserializer and encoded sync detector first before moving onto AXI-DMA buffering. I already have a verilog file with satisfactory behavior simulation done. But now I want to get timing simulation, package it into an IP and testing it on PL without buffering data. (Essentially making uZed only using FPGA part)
So here's a list of problem:
1. How to make ports in a module internal to FPGA?
When I run synthesis and implementing, vivado automatically assign all my ports to a package pin. And of course, a lot of errors are generated due to this. Is there a way I can make only the differential inputs to package pins while leaving the rest as buses or lines to FPGA?
2. Timing sim with external hardware behavior
The vendor provides a verilog emulator simulating the LVDS emitter. But it's not synthesizable since it's external hardware. Is there a way to feed the behavior sim from the emulator and check the timing sim of my receiver code?
3. Flip P/N for differential pair
Due to PCB layout constraints, all my pairs are swapped. I know applying a XOR mask would solve data pair swap problem. But what about CLK pair? Is there a built in inverter for BUFR or differential clock input buffer?
I know this is quite long but I would greatly appreciate your help!