does the linter also checks for verilog files incl...
# openlane
h
does the linter also checks for verilog files included in the blackbox? We have openram memories that have delay and hold timing constructs. Verilator is complaining:
Copy code
[ERROR]: Timing constructs found in the RTL. Please remove them or wrap them around an ifdef. It heavily unrecommended to rely on timing constructs for synthesis.
[ERROR]: Step 0 (verilator_lint_check) failed with error:
-code 1 -level 0 -errorcode NONE -errorinfo {
    while executing
"throw_error"
    (procedure "run_verilator" line 50)
    invoked from within
"run_verilator"
    (procedure "run_verilator_step" line 3)
    invoked from within
"run_verilator_step"} -errorline 1
m
I submitted a bug for this in our class last quarter: https://github.com/The-OpenROAD-Project/OpenLane/pull/1836
Maybe they undid the option?
h
I see the issue closed by @donn however, I still get this. I don't see the reason for checking synthesis related constructs on blackbox verilog files.
m
Can you confirm the option is still there and did not get removed?
h
I still see this error message in the log file:
Copy code
%Error-NEEDTIMINGOPT: /home/hadirkhan/chipignite/openram_testchip2/openlane/user_project_wrapper/../../verilog/rtl/sky130_sram_1kbyte_1rw1r_32x256_8.v:57:5: Use --timing or --no-timing to specify how delays should be handled
                                                                                                                                                           : ... In instance user_project_wrapper.SRAM2.bank1
   57 |     #(T_HOLD) dout0 = 32'bx;
d
@Kareem Farid
m
@Hadir Khan look at the commit and see if the --timing argument is still given to verilator.
Did someone remove the option?
h
@Matthew Guthaus did it work for you students before? I see verilator called like this:
Copy code
try_exec bash -c "verilator \
        --lint-only \
        -Wall \
        --Wno-DECLFILENAME \
        --top-module $::env(DESIGN_NAME) \
        $arg_list"
m
The option has been removed then. It did work when the option is added.
Can you search for it in the issues?
h
m
I made a PR that added "--timing" to verilator.
It looks like they removed it when they merged the commits. @Kareem Farid
You can re-open an issue
k
So far we completely disallow timing constructs. You can also see the following message printed
Timing constructs found in the RTL. Please remove them or wrap them around an ifdef. It heavily unrecommended to rely on timing constructs for synthesis.
d
@Kareem Farid what about black-box files?
k
For now they are fully included to avoid undefined module errors. We are looking at other solutions
d
Oooh right now I remember The key issue is Verilator does not “blackbox” modules— and not importing them would cause “module not found” errors
So we’re in an awkward situation- for now, just disable linting until Verilator is patched or something of the sort
h
alright 👍
m
@Hadir Khan Just to confirm, you should still run lint checking for other things but disable the timing by giving verilator the --timing option.
otherwise, you are missing a lot of other potential problems.
h
Yes that’s what I am doing. I’m replicating your PR
🙌 1