Comments for masterFIP GW review <2017-03-16 Thu>

1 Project/Synthesis/PAR

  • [+] 3943 warnings during synthesis
  • [+] ucf: "TS_U_Node_Template_U_GN4124_Core_cmp_clk_in_feedback" points to non-existing node 'U_Node_Template/U_GN4124_Core/cmp_clk_in/feedback'.
  • [-] 120+ warnings about missing/duplicates files when we first open the .xise project file, and the messages keep reappearing while we use the tool
  • [-] Project hierarchy shows too many unused files (not under spec_masterfip_mt entity)
  • [-] running hdlmake in syn/spec does not work
  • [-] many (~50) synthesis-generated files not git-ignored
  • [-] if not a build script for wbgen, at least a README with how you expect the wbgen2 command to be invoked should be provided

2 Simulation

  • [!] Error: (vcom-19) Failed to access library 'nanofip_lib' at "nanofip_lib" (Modelsim SE-64 10.2a, Linux) This is due to case-sensitivity in Linux. Solution: replace "vlib nanoFIP_lib" with "vlib nanofip_lib" or, alternatively, replace "vcom -work nanofip_lib" with "vcom -work nanoFIP_lib"
  • [!] Error: (vcom-7) Failed to open design unit file "../../sim/spec/testbench/nanofip_lib/*" in read mode. Again, this is due to case-sensitivity in Linux, since the folder commited in git is actually sim/spec/testbench/nanoFIP_lib
  • [+] Trying to step into the code with Modelsim produces: Error opening /opt/Xilinx/14.7/ISE_DS/ISE/vhdl/src/unisims/primitive/PLL_ADV.vhd. This path does not exist in my system.
  • [+] Fix warnings "numeric_std.to_integer metavalue detected, returning 0" (alternatively, use "set NumericStdNoWarnings 1" after the call to vsim in your do files, suboptimal solution because it might also hide useful metavalue warnings)
  • [-] After clearing the metavalue warnings, have a look also at the remaining warnings
  • [-] Some signals are always 'X', if they are not useful in simulation, just remove them
  • [-] group signal waveforms
  • [-] split compilation (vcom) from running in separate "do" files, invoke them both from a top do file (eg. compile.do + run.do => sim.do)
  • [-] many (~100) simulation-generated files not git-ignored
  • [?] Do you need the "vlog $env(XILINX)/verilog/src/glbl.v"? If not, remove it, otherwise users might get the error "can't read "env(XILINX)": no such variable" if they haven't set this environment variable.

3 Design

  • [?] rtl: is leds_manager.vhd used at all? what about carrier_info.vhd, free_counter.vhd, and perhaps others? If not, it's better to delete them from the repository.
  • [?] rtl: why is wf_package.vhd declared here AND in ip-cores/nanofip?
  • [?] top: is synthesis_descriptor.vhd used?
  • [*] the whole nanofip as ip-core of masterfip seems a bit counter-intuitive. If there are things used by both, the should belong to a "fip" project, and both nano- and master- should use them.

3.1 masterFIP_pkg

  • [-] constants should have lower case "c" (I think)

3.2 spec_masterfip_mt

3.2.1 fmc_masterFIP_core

  • [-] it would be nice to have a bit more hierachy in this module, with less low-level processes and modules lying around (eg. counter modules, assignments to wb registers) , to highlight the high-level structure of the core.
  • [?] why do you use two decreasing counter modules (wf_decr_counter and decr_counter)?
  • [?] why is speed_X_i not a 2-bit vector?
  • [?] would it be interesting for diagnostics to monitor if/when counters overflow?
  • [?] why is reg_to_mt.fd_wdg_tstamp_i one bit larger than macrocyc_cnt?
  • [*] cmp_ext_sync_deglitch_p_detect and cmp_fd_wdgn_deglitch_p_detect introduce one unnecessary FF/latency cycle
  • [*] we should introduce generic up/down counters to general-cores
  1. masterfip_tx
    • [-] synch_signals process could be replaced by 2x gc_sync_ffs
    • [?] more importantly, why do you resync these two signals?
  2. masterfip_rx
    • [?] can't you use general-cores for cmp_rx_deglitcher? (perhaps think about it also in nanofip project)
    • [?] did you make up your mind about what to connect to nfip_rst_i port of cmp_rx_deglitcher? if yes, remove the inline comment

4 Legend

  • [!] = fatal
  • [+] = important
  • [-] = minor
  • [?] = question
  • [*] = note

Author: Dimitrios Lampridis

Created: 2017-03-16 Thu 12:14

Emacs 24.5.1 (Org mode 8.2.10)

Validate