-
Notifications
You must be signed in to change notification settings - Fork 585
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support feedthroughs/non-ANSI complex ports (IEEE 1800-2017 23.2.2.1) #2844
Comments
Understandable to run older modules. This is old pre-ANSI syntax and leads to a number of including complications including the one you showed where the pin connections go to the same signals. It's therefore very unlikely Verilator will be extended to support this in even the medium term unless you or someone makes an effort to add support. |
|
think this is the common way, but tran isn't supported by Verilator. To support this is possible, but would require some major rework in the tristate resolution, probably take a month of work, if you can dedicate that amount of time it would be great, we can get into how to do it.
might work (untested on other simulators) but alias isn't supported by Verilator. BUT!If you're doing digital/RTL design you shouldn't be doing this anyways. Model it as a normal input/output going in one direction and just assign. If you're doing analog/low level physical design this does rarely come up, but Verilator is unlikely to suite your needs for many other reasons anyways. |
Thank you for the suggestion.
Vivado synthesis does not support Verilog switch-level primitives, such as the following:cmos, nmos, pmos, rcmos, rnmos, rpmos rtran, rtranif0, rtranif1, tran, tranif0, tranif1 This confirmed by run a vivado xsim simulation on it, and I got Primitive "tran" is not supported. But if I really synthesis the module, it seems still accept it and do the right thing. (strange, right?) For the net aliasing, as in UG901 page 283, the net aliasing is not supported in vivado. So for vivado, that non-ANSI port is the only way I can run xsim simulation and synthesis as far as I know, any suggestion is welcome.
Thanks |
I also noticed this issue, with the following module:
that Verilator rejects:
Here is an example containing it (inout_connect.tar.gz). In this case, the use of connecting module is not necessary; the same example, but replacing I had been working with Verilog pre SystemVerilog, where I believed that this was the only notation available for expressing that two inout ports are connected. I had not considered the use of If you don't need named ports, I believe that this form is also available in Verilog:
but Verilator also rejects this:
|
It seems the current version of verilator doesn't support module like this:
There was a discussion
https://forums.xilinx.com/t5/Welcome-Join/synthesizable-verilog-connecting-inout-pins/td-p/284628
And as pointed out there by mcgett, this gramma is in IEEE1364-2005, in section 12.3.3:
module same_port (.a(i), .b(i));
Can you attach an example that runs on other simulators? (Must be openly licensed, ideally in test_regress format.)
When I simply verilator -cc via.v I got
I can confirm iverilog/vivado xsim both can take that grammar and that can be synthesized by vivado.
May we assist you in trying to fix this yourself?
I have not dive into the source of verilator yet, I don't think I can do it.
The text was updated successfully, but these errors were encountered: