Rerunning the Verilator build without warnings disabled on the new command file now yields 137 warnings:
%Warning-VARHIDDEN: ../orp_soc/rtl/verilog/dbg_interface/dbg_crc8_d1.v:125: Decl aration of signal hides declaration in upper scope: Data %Warning-VARHIDDEN: Use "/* verilator lint_off VARHIDDEN */" and lint_on around source to disable this message. %Warning-VARHIDDEN: ../orp_soc/rtl/verilog/dbg_interface/dbg_crc8_d1.v:111: ... Location of original declaration ...
Verilator warns if a variable or signal declaration has a name
which is identical to one in a surrounding block. There is only one
instance of this here, in the CRC module of the debug unit. The
module declares a function, nextCRC8_D1
, with an
input parameter named Data
at line 125:
function [7:0] nextCRC8_D1; input Data; input [7:0] Crc; ...
This input parameter has the same name as that of one of inputs to this module declared at line 111:
module dbg_crc8_d1 (Data, EnableCrc, Reset, SyncResetCrc, CrcOut, Clk); parameter Tp = 1; input Data; input EnableCrc; ...
This is purely a matter of good design practice. A user reading the
function code, could be mistaken in thinking the variable
Data
referred to the original input signal. For
completeness a performance run is done with the revised command
file, where the problem has been fixed by renaming the function
input parameter.
make verilate COMMAND_FILE=cf-optimized-2.scr \ VFLAGS="-Wno-lint -Wno-COMBDLY -Wno-UNOPTFLAT -language 1364-2001" \ NUM_RUNS=100
As expected, performance is not significantly changed, at 42.66 kHz.