Closed sgherbst closed 4 years ago
Merging #104 into master will increase coverage by
0.41%
. The diff coverage is14.28%
.
@@ Coverage Diff @@
## master #104 +/- ##
==========================================
+ Coverage 23.11% 23.53% +0.41%
==========================================
Files 32 32
Lines 2059 2065 +6
==========================================
+ Hits 476 486 +10
+ Misses 1583 1579 -4
Impacted Files | Coverage Δ | |
---|---|---|
dragonphy/fpga_models/chan_core.py | 0.00% <0.00%> (ø) |
|
dragonphy/fpga_models/clk_delay_core.py | 0.00% <0.00%> (ø) |
|
dragonphy/fpga_models/osc_model_core.py | 0.00% <0.00%> (ø) |
|
dragonphy/fpga_models/rx_adc_core.py | 0.00% <0.00%> (ø) |
|
dragonphy/fpga_models/tx_core.py | 0.00% <0.00%> (ø) |
|
dragonphy/views.py | 80.37% <ø> (+0.93%) |
:arrow_up: |
dragonphy/adapt_fir.py | 25.00% <50.00%> (+9.61%) |
:arrow_up: |
dragonphy/anasymod.py | 86.56% <60.00%> (-4.82%) |
:arrow_down: |
... and 1 more |
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact)
,ø = not affected
,? = missing data
Powered by Codecov. Last update fb4d493...3eac8dd. Read the comment docs.
Summary
This PR incorporates auto-generated emulation models for channel dynamics, ADCs, and PIs, and includes a working loopback emulation test that exercises the MM-CDR, FFE, PRBS checker, and JTAG interface.
Details
I thought it would be good to highlight changes in the
chip_src
folder since those files are used in synthesis of the real chip, and therefore should have a higher level of scrutiny:vlog/chip_src/analog_core/analog_core.sv
:clk_div
andclk_adc
have special treatment for emulation, sinceclk_div
is a bus of clock value signals (i.e. "regular" digital signals), whileclk_adc
is a true clock signal on the FPGA clock fabric (i.e. "special" digital signal). In CPU simulation and ASIC synthesis, there is no such a distinction.termination
andbiasgen
are ifdef'd out for emulation, since Vivado doesn't do well with empty modules that are not black boxes (it is surprisingly hard to convince Vivado that we really want those modules to be empty)vlog/chip_src/digital_core/digital_core.sv
:freq_divider
block that drivesclk_avg
is replaced with an assignment ofclk_avg
to "0", since the generated clockclk_avg
was causing hold time issues. I think we should replaceclk_avg
with a clock enable signal in the future; this would be a good thing for both FPGA emulation and ASIC synthesis. Then we would only have one clock signal in the digital core, which isclk_adc
.generate
statement to unpack the lower 16 values ofadcout_unfolded
into its own unpacked array, which is then passed to DSP and comparator blocks.weight_manager
anddsp_backend
instances have some constants replaced by parameters from packages to make it easier to rescale the FFE and MLSD blocks.vlog/chip_src/jtag/jtag.sv
disable_product
is set to a width of10
, but the width ofddbg_intf_i.disable_product
may be10
or4
depending on whether we're running synthesis of the ASIC or FPGA emulator. It was not clear to me that was a simple way to get that particular constant into the Markdown file, so I updated the way those signals are assigned from the raw JTAG interface to avoid a width mismatch. (For FPGA emulation, the top 6 signals end up not being used for anything, but that is OK)vlog/chip_src/weight_manager/wme_debug_intf.sv