StanfordVLSI / dragonphy2

Open Source PHY v2
Apache License 2.0
21 stars 3 forks source link

Top-level TX integration #132

Closed sgherbst closed 3 years ago

sgherbst commented 3 years ago

Summary

This PR instantiates the transmitter at the top level of DragonPHY and wires it up. This includes additional logic in the digital core to set the PI codes for the TX, as well as a block that can generate four kinds of TX data patterns:

  1. PRBS: intended for a loopback test
  2. Pulse generator: intended for channel characterization. The width of the pulse can be 1-16 UI.
  3. Constant output: intended for DC characterization of the TX output buffer.
  4. Square wave generator, adjustable from 8 GHz down to about 8 kHz. Intended for debugging the TX output bandwidth.

Not included in this PR

  1. System-level test of the TX. This will be added after the block-level test of the TX is complete.
  2. Self-checking capability in the block-level test of the TX data generator. Will be added in a future PR. (For now the test passes if the simulation completes without errors.)

Other details

  1. Added JTAG registers for the TX and its data generator.
  2. Did a preliminary update of the synthesis constraints for the transmitter, but didn't add any constraints within the transmitter itself for the various divided clocks. I'll need input from @CansWang on that, but it can wait until the next PR, since the synthesis test is passing.
  3. Updated mflowgen steps having to do with the phase interpolator and input divider, which are instantiated as black boxes by the transmitter.
  4. Wrapped default_nettype none / default_nettype wire around TX design sources to help catch typos (this will cause the simulator / synthesis tool to error out when an implicit wire is detected). I had to update some IOs to input wire logic or output wire logic to be compatible with this change.
  5. Moved fppi to the vlog/tb folder since it is not a design source.
  6. Removed md/sram_intf_md (note that it ends with _md, not .md). It looks like this file is obsolete.