You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Author Name: Luke Yang
Original Redmine Issue: 937 from https://www.veripool.org
Original Date: 2015-06-25
Original Assignee: Wilson Snyder (@wsnyder)
I have a sufficiently complex design, and I ran it through Verilator. Verilator breaks when it's emitting files, because the file name is too long. (On Linux the file name length limit is 255 characters.) It's one of the {prefix}{each_verilog_module}.h/cpp files. Apparently stuffs a lot of parameters into the name of the final net lists and use these names as file names.
Precisely, it breaks at V3OutFile::V3OutFile(const string&, V3OutFormatte::Language), where a call to V3File::new_fopen_w() (which calls fopen()) returned with a failure.
I had to intercept the open() and stat() system calls and hash the file names (coming from Verilator) that are too long.
It might be worth your consideration to choose a more space-efficient encoding when naming the final net lists or output files. Right now it's all hard-coded with raw module names and parameter values.
The text was updated successfully, but these errors were encountered:
Original Redmine Comment
Author Name: Wilson Snyder (@wsnyder)
Original Date: 2015-07-06T01:40:53Z
I started a bunch of work on hashing filenames, but realized then the parameter code already should not allow names longer than 30 characters due to the parameters alone. Can you please provide an example of one of the long generated names? Thanks.
I believe the issue was not caused by Verilator's treatment of parameters, but another tool's. We were writing out the netlist of a design and the tool we were using to do this flattened parameter values into each instance's module name. So the root issue is that Verilator can't handle really long module names.
Author Name: Luke Yang
Original Redmine Issue: 937 from https://www.veripool.org
Original Date: 2015-06-25
Original Assignee: Wilson Snyder (@wsnyder)
I have a sufficiently complex design, and I ran it through Verilator. Verilator breaks when it's emitting files, because the file name is too long. (On Linux the file name length limit is 255 characters.) It's one of the {prefix}{each_verilog_module}.h/cpp files. Apparently stuffs a lot of parameters into the name of the final net lists and use these names as file names.
Precisely, it breaks at V3OutFile::V3OutFile(const string&, V3OutFormatte::Language), where a call to V3File::new_fopen_w() (which calls fopen()) returned with a failure.
I had to intercept the open() and stat() system calls and hash the file names (coming from Verilator) that are too long.
It might be worth your consideration to choose a more space-efficient encoding when naming the final net lists or output files. Right now it's all hard-coded with raw module names and parameter values.
The text was updated successfully, but these errors were encountered: