verilog-to-routing/vtr-verilog-to-routing

System Verilog support is broken due to compilation error in F4PGA plugin

MohamedElgammal opened this issue · 7 comments

The System Verilog support is broken as it requires enabling YOSYS_F4PGA_PLUGINS and doing so gets a compilation error as follows:

vtr-verilog-to-routing/libs/EXTERNAL/yosys-f4pga-plugins/systemverilog-plugin/third_party/yosys/simplify.cc:155:8: error: ‘struct Yosys::AST::AstNode’ has no member named ‘multirange_dimensions’ 155 | node->multirange_dimensions.push_back(rnode->range_right); | ^~~~~~~~~~~~~~~~~~~~~ .../vtr-verilog-to-routing/libs/EXTERNAL/yosys-f4pga-plugins/systemverilog-plugin/third_party/yosys/simplify.cc:156:8: error: ‘struct Yosys::AST::AstNode’ has no member named ‘multirange_dimensions’

@soheilshahrouz : in case you feel like a tour of some yosys + C++ stuff ...

Isn't the systemverilog plugin called synlig for a while now ? I suspect this pulls in a somewhat old version...

I have been testing Synlig for integration, and so far it appears to be a suitable tool for SystemVerilog, rather than using it as just a standalone parser and elaborator, like Surlog. I will provide updates here along with some screenshots of my progress asap.

image_2024-11-24_13-59-09

@vaughnbetz I executed some SystemVerilog designs of the VTR flow benchmark. It passed from Synlig, Parmys, Yosys, and VPR end-to-end successfully. It seems OK, but it takes more time to integrate fully. I am trying to solve it.

That's good news! Thanks @amirarjmand93.

I am writing to provide an update regarding the integration of Synlig.

#1
It seems that a race condition is causing a nondeterministic situation, leading to errors with some nested submodules during the synchronization and update process. In some cases, I encounter no errors with the same configuration.

#2
Sometimes, I encounter the error (RPC failed) and similar issues when cloning(non-fatal error), even though the network is functioning well and the Postbuffer size has been increased.

image_2024-12-03_14-20-21

It's in progress.

The clone error sounds like a timeout/disconnect issue with the chipsalliance repo. Adding @hzeller in case he knows why that repo is disconnecting before the clone is done. @amirarjmand93 : I imagine we could switch from a submodule to a subtree for this dependency if necessary, as I believe a subtree would actually put the files in the VTR repo, and hence cloning should happen from our repo and hopefully be robust.